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.
		
		
		
		
		
			
		
			
				
					153 lines
				
				4.7 KiB
			
		
		
			
		
	
	
					153 lines
				
				4.7 KiB
			| 
											3 years ago
										 | /// <reference types="node" />
 | ||
|  | /// <reference types="node" />
 | ||
|  | /// <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, }; |