• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/// <reference types="node" />
2import { EventEmitter } from 'events';
3import { SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksClientBoundEvent, SocksClientEstablishedEvent, SocksUDPFrameDetails } from '../common/constants';
4import { SocksClientError } from '../common/util';
5import { Duplex } from 'stream';
6declare interface SocksClient {
7    on(event: 'error', listener: (err: SocksClientError) => void): this;
8    on(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this;
9    on(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this;
10    once(event: string, listener: (...args: any[]) => void): this;
11    once(event: 'error', listener: (err: SocksClientError) => void): this;
12    once(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this;
13    once(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this;
14    emit(event: string | symbol, ...args: any[]): boolean;
15    emit(event: 'error', err: SocksClientError): boolean;
16    emit(event: 'bound', info: SocksClientBoundEvent): boolean;
17    emit(event: 'established', info: SocksClientEstablishedEvent): boolean;
18}
19declare class SocksClient extends EventEmitter implements SocksClient {
20    private _options;
21    private _socket;
22    private _state;
23    private _receiveBuffer;
24    private _nextRequiredPacketBufferSize;
25    private _onDataReceived;
26    private _onClose;
27    private _onError;
28    private _onConnect;
29    constructor(options: SocksClientOptions);
30    /**
31     * Creates a new SOCKS connection.
32     *
33     * Note: Supports callbacks and promises. Only supports the connect command.
34     * @param options { SocksClientOptions } Options.
35     * @param callback { Function } An optional callback function.
36     * @returns { Promise }
37     */
38    static createConnection(options: SocksClientOptions, callback?: Function): Promise<SocksClientEstablishedEvent>;
39    /**
40     * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies.
41     *
42     * Note: Supports callbacks and promises. Only supports the connect method.
43     * Note: Implemented via createConnection() factory function.
44     * @param options { SocksClientChainOptions } Options
45     * @param callback { Function } An optional callback function.
46     * @returns { Promise }
47     */
48    static createConnectionChain(options: SocksClientChainOptions, callback?: Function): Promise<SocksClientEstablishedEvent>;
49    /**
50     * Creates a SOCKS UDP Frame.
51     * @param options
52     */
53    static createUDPFrame(options: SocksUDPFrameDetails): Buffer;
54    /**
55     * Parses a SOCKS UDP frame.
56     * @param data
57     */
58    static parseUDPFrame(data: Buffer): SocksUDPFrameDetails;
59    /**
60     * Gets the SocksClient internal state.
61     */
62    private get state();
63    /**
64     * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state.
65     */
66    private set state(value);
67    /**
68     * Starts the connection establishment to the proxy and destination.
69     * @param existing_socket Connected socket to use instead of creating a new one (internal use).
70     */
71    connect(existing_socket?: Duplex): void;
72    private getSocketOptions;
73    /**
74     * Handles internal Socks timeout callback.
75     * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed.
76     */
77    private onEstablishedTimeout;
78    /**
79     * Handles Socket connect event.
80     */
81    private onConnect;
82    /**
83     * Handles Socket data event.
84     * @param data
85     */
86    private onDataReceived;
87    /**
88     * Handles processing of the data we have received.
89     */
90    private processData;
91    /**
92     * Handles Socket close event.
93     * @param had_error
94     */
95    private onClose;
96    /**
97     * Handles Socket error event.
98     * @param err
99     */
100    private onError;
101    /**
102     * Removes internal event listeners on the underlying Socket.
103     */
104    private removeInternalSocketHandlers;
105    /**
106     * Closes and destroys the underlying Socket. Emits an error event.
107     * @param err { String } An error string to include in error event.
108     */
109    private _closeSocket;
110    /**
111     * Sends initial Socks v4 handshake request.
112     */
113    private sendSocks4InitialHandshake;
114    /**
115     * Handles Socks v4 handshake response.
116     * @param data
117     */
118    private handleSocks4FinalHandshakeResponse;
119    /**
120     * Handles Socks v4 incoming connection request (BIND)
121     * @param data
122     */
123    private handleSocks4IncomingConnectionResponse;
124    /**
125     * Sends initial Socks v5 handshake request.
126     */
127    private sendSocks5InitialHandshake;
128    /**
129     * Handles initial Socks v5 handshake response.
130     * @param data
131     */
132    private handleInitialSocks5HandshakeResponse;
133    /**
134     * Sends Socks v5 user & password auth handshake.
135     *
136     * Note: No auth and user/pass are currently supported.
137     */
138    private sendSocks5UserPassAuthentication;
139    /**
140     * Handles Socks v5 auth handshake response.
141     * @param data
142     */
143    private handleInitialSocks5AuthenticationHandshakeResponse;
144    /**
145     * Sends Socks v5 final handshake request.
146     */
147    private sendSocks5CommandRequest;
148    /**
149     * Handles Socks v5 final handshake response.
150     * @param data
151     */
152    private handleSocks5FinalHandshakeResponse;
153    /**
154     * Handles Socks v5 incoming connection request (BIND).
155     */
156    private handleSocks5IncomingConnectionResponse;
157    get socksClientOptions(): SocksClientOptions;
158}
159export { SocksClient, SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksUDPFrameDetails };
160