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
						
					
					
				| /// <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, };
 |