9
9
"errors"
10
10
"fmt"
11
11
"io"
12
+ "log"
12
13
"net"
13
14
"net/http"
14
15
"os"
@@ -242,10 +243,18 @@ func (c *Connect) forwarder(local net.Conn, remote net.Conn) {
242
243
// socks5Resolver prevents DNS from resolving on the local machine, rather than over the SSH connection.
243
244
type socks5Resolver struct {}
244
245
246
+ // Resolve
245
247
func (socks5Resolver ) Resolve (ctx context.Context , name string ) (context.Context , net.IP , error ) {
246
248
return ctx , nil , nil
247
249
}
248
250
251
+ func (c * Connect ) getDynamicForwardLogger () * log.Logger {
252
+ if c .DynamicForwardLogger == nil {
253
+ return log .New (io .Discard , "" , log .LstdFlags )
254
+ }
255
+ return c .DynamicForwardLogger
256
+ }
257
+
249
258
// TCPDynamicForward forwarding tcp data. Like Dynamic forward (`ssh -D <port>`).
250
259
// listen port Socks5 proxy server.
251
260
func (c * Connect ) TCPDynamicForward (address , port string ) (err error ) {
@@ -255,6 +264,7 @@ func (c *Connect) TCPDynamicForward(address, port string) (err error) {
255
264
return c .Client .Dial (n , addr )
256
265
},
257
266
Resolver : socks5Resolver {},
267
+ Logger : c .getDynamicForwardLogger (),
258
268
}
259
269
260
270
// Create Socks5 server
@@ -278,6 +288,7 @@ func (c *Connect) TCPReverseDynamicForward(address, port string) (err error) {
278
288
return net .Dial (n , addr )
279
289
},
280
290
Resolver : socks5Resolver {},
291
+ Logger : c .getDynamicForwardLogger (),
281
292
}
282
293
283
294
// create listner
@@ -308,6 +319,9 @@ func (c *Connect) HTTPDynamicForward(address, port string) (err error) {
308
319
return c .Client .Dial (n , addr )
309
320
}
310
321
322
+ // set logger
323
+ httpProxy .Logger = c .getDynamicForwardLogger ()
324
+
311
325
// listen
312
326
err = http .ListenAndServe (net .JoinHostPort (address , port ), httpProxy )
313
327
return
0 commit comments