From 0126026885ee1ed1c9c4556ad969d40941ba2fce Mon Sep 17 00:00:00 2001 From: Ox Cart Date: Thu, 4 Feb 2016 13:25:27 -0600 Subject: [PATCH] Made dialer configurable --- request.go | 8 ++++++-- socks5.go | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/request.go b/request.go index 46b4e55..0ec2ead 100644 --- a/request.go +++ b/request.go @@ -153,8 +153,12 @@ func (s *Server) handleConnect(conn conn, req *Request) error { } // Attempt to connect - addr := net.TCPAddr{IP: req.realDestAddr.IP, Port: req.realDestAddr.Port} - target, err := net.DialTCP("tcp", nil, &addr) + addr := fmt.Sprintf("%v:%d", req.realDestAddr.IP, req.realDestAddr.Port) + dial := s.config.Dial + if dial == nil { + dial = net.Dial + } + target, err := dial("tcp", addr) if err != nil { msg := err.Error() resp := hostUnreachable diff --git a/socks5.go b/socks5.go index ecad396..e6bca39 100644 --- a/socks5.go +++ b/socks5.go @@ -43,6 +43,9 @@ type Config struct { // Logger can be used to provide a custom log target. // Defaults to stdout. Logger *log.Logger + + // Optional function for dialing out + Dial func(network, addr string) (net.Conn, error) } // Server is reponsible for accepting connections and handling