You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
4.6 KiB
150 lines
4.6 KiB
/// <reference types="node" /> |
|
import { Duplex } from 'stream'; |
|
import { Socket, SocketConnectOpts } from 'net'; |
|
import { RequireOnlyOne } from './util'; |
|
declare const DEFAULT_TIMEOUT = 30000; |
|
declare type SocksProxyType = 4 | 5; |
|
declare const ERRORS: { |
|
InvalidSocksCommand: string; |
|
InvalidSocksCommandForOperation: string; |
|
InvalidSocksCommandChain: string; |
|
InvalidSocksClientOptionsDestination: string; |
|
InvalidSocksClientOptionsExistingSocket: string; |
|
InvalidSocksClientOptionsProxy: string; |
|
InvalidSocksClientOptionsTimeout: string; |
|
InvalidSocksClientOptionsProxiesLength: string; |
|
InvalidSocksClientOptionsCustomAuthRange: string; |
|
InvalidSocksClientOptionsCustomAuthOptions: string; |
|
NegotiationError: string; |
|
SocketClosed: string; |
|
ProxyConnectionTimedOut: string; |
|
InternalError: string; |
|
InvalidSocks4HandshakeResponse: string; |
|
Socks4ProxyRejectedConnection: string; |
|
InvalidSocks4IncomingConnectionResponse: string; |
|
Socks4ProxyRejectedIncomingBoundConnection: string; |
|
InvalidSocks5InitialHandshakeResponse: string; |
|
InvalidSocks5IntiailHandshakeSocksVersion: string; |
|
InvalidSocks5InitialHandshakeNoAcceptedAuthType: string; |
|
InvalidSocks5InitialHandshakeUnknownAuthType: string; |
|
Socks5AuthenticationFailed: string; |
|
InvalidSocks5FinalHandshake: string; |
|
InvalidSocks5FinalHandshakeRejected: string; |
|
InvalidSocks5IncomingConnectionResponse: string; |
|
Socks5ProxyRejectedIncomingBoundConnection: string; |
|
}; |
|
declare const SOCKS_INCOMING_PACKET_SIZES: { |
|
Socks5InitialHandshakeResponse: number; |
|
Socks5UserPassAuthenticationResponse: number; |
|
Socks5ResponseHeader: number; |
|
Socks5ResponseIPv4: number; |
|
Socks5ResponseIPv6: number; |
|
Socks5ResponseHostname: (hostNameLength: number) => number; |
|
Socks4Response: number; |
|
}; |
|
declare type SocksCommandOption = 'connect' | 'bind' | 'associate'; |
|
declare enum SocksCommand { |
|
connect = 1, |
|
bind = 2, |
|
associate = 3 |
|
} |
|
declare enum Socks4Response { |
|
Granted = 90, |
|
Failed = 91, |
|
Rejected = 92, |
|
RejectedIdent = 93 |
|
} |
|
declare enum Socks5Auth { |
|
NoAuth = 0, |
|
GSSApi = 1, |
|
UserPass = 2 |
|
} |
|
declare const SOCKS5_CUSTOM_AUTH_START = 128; |
|
declare const SOCKS5_CUSTOM_AUTH_END = 254; |
|
declare const SOCKS5_NO_ACCEPTABLE_AUTH = 255; |
|
declare enum Socks5Response { |
|
Granted = 0, |
|
Failure = 1, |
|
NotAllowed = 2, |
|
NetworkUnreachable = 3, |
|
HostUnreachable = 4, |
|
ConnectionRefused = 5, |
|
TTLExpired = 6, |
|
CommandNotSupported = 7, |
|
AddressNotSupported = 8 |
|
} |
|
declare enum Socks5HostType { |
|
IPv4 = 1, |
|
Hostname = 3, |
|
IPv6 = 4 |
|
} |
|
declare enum SocksClientState { |
|
Created = 0, |
|
Connecting = 1, |
|
Connected = 2, |
|
SentInitialHandshake = 3, |
|
ReceivedInitialHandshakeResponse = 4, |
|
SentAuthentication = 5, |
|
ReceivedAuthenticationResponse = 6, |
|
SentFinalHandshake = 7, |
|
ReceivedFinalResponse = 8, |
|
BoundWaitingForConnection = 9, |
|
Established = 10, |
|
Disconnected = 11, |
|
Error = 99 |
|
} |
|
/** |
|
* Represents a SocksProxy |
|
*/ |
|
declare type SocksProxy = RequireOnlyOne<{ |
|
ipaddress?: string; |
|
host?: string; |
|
port: number; |
|
type: SocksProxyType; |
|
userId?: string; |
|
password?: string; |
|
custom_auth_method?: number; |
|
custom_auth_request_handler?: () => Promise<Buffer>; |
|
custom_auth_response_size?: number; |
|
custom_auth_response_handler?: (data: Buffer) => Promise<boolean>; |
|
}, 'host' | 'ipaddress'>; |
|
/** |
|
* Represents a remote host |
|
*/ |
|
interface SocksRemoteHost { |
|
host: string; |
|
port: number; |
|
} |
|
/** |
|
* SocksClient connection options. |
|
*/ |
|
interface SocksClientOptions { |
|
command: SocksCommandOption; |
|
destination: SocksRemoteHost; |
|
proxy: SocksProxy; |
|
timeout?: number; |
|
existing_socket?: Duplex; |
|
set_tcp_nodelay?: boolean; |
|
socket_options?: SocketConnectOpts; |
|
} |
|
/** |
|
* SocksClient chain connection options. |
|
*/ |
|
interface SocksClientChainOptions { |
|
command: 'connect'; |
|
destination: SocksRemoteHost; |
|
proxies: SocksProxy[]; |
|
timeout?: number; |
|
randomizeChain?: false; |
|
} |
|
interface SocksClientEstablishedEvent { |
|
socket: Socket; |
|
remoteHost?: SocksRemoteHost; |
|
} |
|
declare type SocksClientBoundEvent = SocksClientEstablishedEvent; |
|
interface SocksUDPFrameDetails { |
|
frameNumber?: number; |
|
remoteHost: SocksRemoteHost; |
|
data: Buffer; |
|
} |
|
export { DEFAULT_TIMEOUT, ERRORS, SocksProxyType, SocksCommand, Socks4Response, Socks5Auth, Socks5HostType, Socks5Response, SocksClientState, SocksProxy, SocksRemoteHost, SocksCommandOption, SocksClientOptions, SocksClientChainOptions, SocksClientEstablishedEvent, SocksClientBoundEvent, SocksUDPFrameDetails, SOCKS_INCOMING_PACKET_SIZES, SOCKS5_CUSTOM_AUTH_START, SOCKS5_CUSTOM_AUTH_END, SOCKS5_NO_ACCEPTABLE_AUTH, };
|
|
|