@@ -61,7 +61,7 @@ function createFakeHttpClientRequest(dstAddr: string, dstPort: number) {
61
61
}
62
62
63
63
class Socks5Server extends EventEmitter implements Tunnel {
64
- public logger : ProxyLogEmitter = new EventEmitter ( )
64
+ public logger : ProxyLogEmitter = new EventEmitter ( ) ;
65
65
private readonly agent : AgentWithInitialize ;
66
66
private server : any ;
67
67
private serverListen : ( port ?: number , host ?: string ) => Promise < void > ;
@@ -72,12 +72,14 @@ class Socks5Server extends EventEmitter implements Tunnel {
72
72
private agentInitialized = false ;
73
73
private agentInitPromise ?: Promise < void > ;
74
74
75
- constructor ( agent : AgentWithInitialize , tunnelOptions : Partial < TunnelOptions > ) {
75
+ constructor (
76
+ agent : AgentWithInitialize ,
77
+ tunnelOptions : Partial < TunnelOptions >
78
+ ) {
76
79
super ( ) ;
77
80
this . agent = agent ;
78
- if ( agent . logger )
79
- this . logger = agent . logger
80
- agent . on ?.( 'error' , ( err : Error ) => this . emit ( 'forwardingError' , err ) )
81
+ if ( agent . logger ) this . logger = agent . logger ;
82
+ agent . on ?.( 'error' , ( err : Error ) => this . emit ( 'forwardingError' , err ) ) ;
81
83
this . rawConfig = getTunnelOptions ( tunnelOptions ) ;
82
84
83
85
this . server = socks5Server . createServer ( this . socks5Request . bind ( this ) ) ;
@@ -89,7 +91,7 @@ class Socks5Server extends EventEmitter implements Tunnel {
89
91
const success =
90
92
this . rawConfig . proxyUsername === user &&
91
93
this . rawConfig . proxyPassword === pass ;
92
- this . logger . emit ( 'socks5:authentication-complete' , { success} ) ;
94
+ this . logger . emit ( 'socks5:authentication-complete' , { success } ) ;
93
95
queueMicrotask ( ( ) => cb ( success ) ) ;
94
96
}
95
97
)
@@ -121,7 +123,7 @@ class Socks5Server extends EventEmitter implements Tunnel {
121
123
async listen ( ) : Promise < void > {
122
124
const { proxyHost, proxyPort } = this . rawConfig ;
123
125
124
- this . logger . emit ( 'socks5:start-listening' , { proxyHost, proxyPort } )
126
+ this . logger . emit ( 'socks5:start-listening' , { proxyHost, proxyPort } ) ;
125
127
126
128
const listeningPromise = this . serverListen ( proxyPort , proxyHost ) ;
127
129
try {
@@ -155,16 +157,17 @@ class Socks5Server extends EventEmitter implements Tunnel {
155
157
await ( this . agentInitPromise = this . agent . initialize ?.( ) ) ;
156
158
} catch ( err ) {
157
159
this . emit ( 'forwardingError' , err ) ;
158
- this . logger . emit ( 'socks5:forwarding-error' ,
159
- { error : ( err as any ) ?. stack ?? String ( err ) } )
160
+ this . logger . emit ( 'socks5:forwarding-error' , {
161
+ error : ( err as any ) ?. stack ?? String ( err ) ,
162
+ } ) ;
160
163
delete this . agentInitPromise ;
161
164
await this . serverClose ( ) ;
162
165
throw err ;
163
166
}
164
167
165
168
delete this . agentInitPromise ;
166
169
this . agentInitialized = true ;
167
- this . logger . emit ( 'socks5:agent-initialized' )
170
+ this . logger . emit ( 'socks5:agent-initialized' ) ;
168
171
}
169
172
170
173
private async closeOpenConnections ( ) {
@@ -180,7 +183,7 @@ class Socks5Server extends EventEmitter implements Tunnel {
180
183
async close ( ) : Promise < void > {
181
184
this . closed = true ;
182
185
183
- this . logger . emit ( 'socks5:closing-tunnel' )
186
+ this . logger . emit ( 'socks5:closing-tunnel' ) ;
184
187
const [ maybeError ] = await Promise . all ( [
185
188
// If we catch anything, just return the error instead of throwing, we
186
189
// want to await on closing the connections before re-throwing server
@@ -215,38 +218,38 @@ class Socks5Server extends EventEmitter implements Tunnel {
215
218
) : Promise < void > {
216
219
const { srcAddr, srcPort, dstAddr, dstPort } = info ;
217
220
const logMetadata = { srcAddr, srcPort, dstAddr, dstPort } ;
218
- this . logger . emit ( 'socks5:got-forwarding-request' , { ...logMetadata } ) ;
221
+ this . logger . emit ( 'socks5:got-forwarding-request' , { ...logMetadata } ) ;
219
222
let socket : Socket | null = null ;
220
223
221
224
try {
222
225
await this . ensureAgentInitialized ( ) ;
223
226
224
227
const channel = await this . forwardOut ( dstAddr , dstPort ) ;
225
228
226
- this . logger . emit ( 'socks5:accepted-forwarding-request' , { ...logMetadata } )
229
+ this . logger . emit ( 'socks5:accepted-forwarding-request' , {
230
+ ...logMetadata ,
231
+ } ) ;
227
232
228
233
socket = accept ( true ) ;
229
234
this . connections . add ( socket ) ;
230
235
231
236
socket . on ( 'error' , ( err : ErrorWithOrigin ) => {
232
237
err . origin ??= 'connection' ;
233
- this . logger . emit ( 'socks5:forwarding-error' ,
234
- {
238
+ this . logger . emit ( 'socks5:forwarding-error' , {
235
239
...logMetadata ,
236
240
error : String ( ( err as Error ) . stack ) ,
237
- } )
241
+ } ) ;
238
242
this . emit ( 'forwardingError' , err ) ;
239
243
} ) ;
240
244
241
245
socket . once ( 'close' , ( ) => {
242
- this . logger . emit ( 'socks5:forwarded-socket-closed' , { ...logMetadata } )
246
+ this . logger . emit ( 'socks5:forwarded-socket-closed' , { ...logMetadata } ) ;
243
247
this . connections . delete ( socket as Socket ) ;
244
248
} ) ;
245
249
246
250
socket . pipe ( channel ) . pipe ( socket ) ;
247
251
} catch ( err ) {
248
- this . emit ( 'socks5:failed-forwarding-request' ,
249
- {
252
+ this . emit ( 'socks5:failed-forwarding-request' , {
250
253
...logMetadata ,
251
254
error : String ( ( err as Error ) . stack ) ,
252
255
} ) ;
0 commit comments