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