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.
		
		
		
		
		
			
		
			
				
					163 lines
				
				6.0 KiB
			
		
		
			
		
	
	
					163 lines
				
				6.0 KiB
			| 
											3 years ago
										 | /// <reference types="node" />
 | ||
|  | /// <reference types="node" />
 | ||
|  | /// <reference types="node" />
 | ||
|  | import { EventEmitter } from 'events'; | ||
|  | import { SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksClientBoundEvent, SocksClientEstablishedEvent, SocksUDPFrameDetails } from '../common/constants'; | ||
|  | import { SocksClientError } from '../common/util'; | ||
|  | import { Duplex } from 'stream'; | ||
|  | declare interface SocksClient { | ||
|  |     on(event: 'error', listener: (err: SocksClientError) => void): this; | ||
|  |     on(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; | ||
|  |     on(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; | ||
|  |     once(event: string, listener: (...args: unknown[]) => void): this; | ||
|  |     once(event: 'error', listener: (err: SocksClientError) => void): this; | ||
|  |     once(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; | ||
|  |     once(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; | ||
|  |     emit(event: string | symbol, ...args: unknown[]): boolean; | ||
|  |     emit(event: 'error', err: SocksClientError): boolean; | ||
|  |     emit(event: 'bound', info: SocksClientBoundEvent): boolean; | ||
|  |     emit(event: 'established', info: SocksClientEstablishedEvent): boolean; | ||
|  | } | ||
|  | declare class SocksClient extends EventEmitter implements SocksClient { | ||
|  |     private options; | ||
|  |     private socket; | ||
|  |     private state; | ||
|  |     private receiveBuffer; | ||
|  |     private nextRequiredPacketBufferSize; | ||
|  |     private socks5ChosenAuthType; | ||
|  |     private onDataReceived; | ||
|  |     private onClose; | ||
|  |     private onError; | ||
|  |     private onConnect; | ||
|  |     constructor(options: SocksClientOptions); | ||
|  |     /** | ||
|  |      * Creates a new SOCKS connection. | ||
|  |      * | ||
|  |      * Note: Supports callbacks and promises. Only supports the connect command. | ||
|  |      * @param options { SocksClientOptions } Options. | ||
|  |      * @param callback { Function } An optional callback function. | ||
|  |      * @returns { Promise } | ||
|  |      */ | ||
|  |     static createConnection(options: SocksClientOptions, callback?: (error: Error | null, info?: SocksClientEstablishedEvent) => void): Promise<SocksClientEstablishedEvent>; | ||
|  |     /** | ||
|  |      * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. | ||
|  |      * | ||
|  |      * Note: Supports callbacks and promises. Only supports the connect method. | ||
|  |      * Note: Implemented via createConnection() factory function. | ||
|  |      * @param options { SocksClientChainOptions } Options | ||
|  |      * @param callback { Function } An optional callback function. | ||
|  |      * @returns { Promise } | ||
|  |      */ | ||
|  |     static createConnectionChain(options: SocksClientChainOptions, callback?: (error: Error | null, socket?: SocksClientEstablishedEvent) => void): Promise<SocksClientEstablishedEvent>; | ||
|  |     /** | ||
|  |      * Creates a SOCKS UDP Frame. | ||
|  |      * @param options | ||
|  |      */ | ||
|  |     static createUDPFrame(options: SocksUDPFrameDetails): Buffer; | ||
|  |     /** | ||
|  |      * Parses a SOCKS UDP frame. | ||
|  |      * @param data | ||
|  |      */ | ||
|  |     static parseUDPFrame(data: Buffer): SocksUDPFrameDetails; | ||
|  |     /** | ||
|  |      * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state. | ||
|  |      */ | ||
|  |     private setState; | ||
|  |     /** | ||
|  |      * Starts the connection establishment to the proxy and destination. | ||
|  |      * @param existingSocket Connected socket to use instead of creating a new one (internal use). | ||
|  |      */ | ||
|  |     connect(existingSocket?: Duplex): void; | ||
|  |     private getSocketOptions; | ||
|  |     /** | ||
|  |      * Handles internal Socks timeout callback. | ||
|  |      * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed. | ||
|  |      */ | ||
|  |     private onEstablishedTimeout; | ||
|  |     /** | ||
|  |      * Handles Socket connect event. | ||
|  |      */ | ||
|  |     private onConnectHandler; | ||
|  |     /** | ||
|  |      * Handles Socket data event. | ||
|  |      * @param data | ||
|  |      */ | ||
|  |     private onDataReceivedHandler; | ||
|  |     /** | ||
|  |      * Handles processing of the data we have received. | ||
|  |      */ | ||
|  |     private processData; | ||
|  |     /** | ||
|  |      * Handles Socket close event. | ||
|  |      * @param had_error | ||
|  |      */ | ||
|  |     private onCloseHandler; | ||
|  |     /** | ||
|  |      * Handles Socket error event. | ||
|  |      * @param err | ||
|  |      */ | ||
|  |     private onErrorHandler; | ||
|  |     /** | ||
|  |      * Removes internal event listeners on the underlying Socket. | ||
|  |      */ | ||
|  |     private removeInternalSocketHandlers; | ||
|  |     /** | ||
|  |      * Closes and destroys the underlying Socket. Emits an error event. | ||
|  |      * @param err { String } An error string to include in error event. | ||
|  |      */ | ||
|  |     private closeSocket; | ||
|  |     /** | ||
|  |      * Sends initial Socks v4 handshake request. | ||
|  |      */ | ||
|  |     private sendSocks4InitialHandshake; | ||
|  |     /** | ||
|  |      * Handles Socks v4 handshake response. | ||
|  |      * @param data | ||
|  |      */ | ||
|  |     private handleSocks4FinalHandshakeResponse; | ||
|  |     /** | ||
|  |      * Handles Socks v4 incoming connection request (BIND) | ||
|  |      * @param data | ||
|  |      */ | ||
|  |     private handleSocks4IncomingConnectionResponse; | ||
|  |     /** | ||
|  |      * Sends initial Socks v5 handshake request. | ||
|  |      */ | ||
|  |     private sendSocks5InitialHandshake; | ||
|  |     /** | ||
|  |      * Handles initial Socks v5 handshake response. | ||
|  |      * @param data | ||
|  |      */ | ||
|  |     private handleInitialSocks5HandshakeResponse; | ||
|  |     /** | ||
|  |      * Sends Socks v5 user & password auth handshake. | ||
|  |      * | ||
|  |      * Note: No auth and user/pass are currently supported. | ||
|  |      */ | ||
|  |     private sendSocks5UserPassAuthentication; | ||
|  |     private sendSocks5CustomAuthentication; | ||
|  |     private handleSocks5CustomAuthHandshakeResponse; | ||
|  |     private handleSocks5AuthenticationNoAuthHandshakeResponse; | ||
|  |     private handleSocks5AuthenticationUserPassHandshakeResponse; | ||
|  |     /** | ||
|  |      * Handles Socks v5 auth handshake response. | ||
|  |      * @param data | ||
|  |      */ | ||
|  |     private handleInitialSocks5AuthenticationHandshakeResponse; | ||
|  |     /** | ||
|  |      * Sends Socks v5 final handshake request. | ||
|  |      */ | ||
|  |     private sendSocks5CommandRequest; | ||
|  |     /** | ||
|  |      * Handles Socks v5 final handshake response. | ||
|  |      * @param data | ||
|  |      */ | ||
|  |     private handleSocks5FinalHandshakeResponse; | ||
|  |     /** | ||
|  |      * Handles Socks v5 incoming connection request (BIND). | ||
|  |      */ | ||
|  |     private handleSocks5IncomingConnectionResponse; | ||
|  |     get socksClientOptions(): SocksClientOptions; | ||
|  | } | ||
|  | export { SocksClient, SocksClientOptions, SocksClientChainOptions, SocksClientError, SocksRemoteHost, SocksProxy, SocksUDPFrameDetails, }; |