From 9fb8e6fc265d19fe2fbdf3b171a10f7f070433f4 Mon Sep 17 00:00:00 2001 From: blizard863 <760076784@qq.com> Date: Tue, 28 Dec 2021 20:23:05 +0800 Subject: [PATCH] fix: x --- client/control.go | 9 +++------ client/proxy/proxy.go | 2 +- client/service.go | 9 +++------ pkg/util/net/conn.go | 2 +- pkg/util/net/dial.go | 22 ++++------------------ 5 files changed, 12 insertions(+), 32 deletions(-) diff --git a/client/control.go b/client/control.go index 721d7a95..b563be44 100644 --- a/client/control.go +++ b/client/control.go @@ -234,15 +234,12 @@ func (ctl *Control) connectServer() (conn net.Conn, err error) { } } - opts := []frpNet.DialOption{ - frpNet.WithProxy(ctl.clientCfg.HTTPProxy), + conn, err = frpNet.DialWithOptions(net.JoinHostPort(ctl.clientCfg.ServerAddr, strconv.Itoa(ctl.clientCfg.ServerPort)), + frpNet.WithProxyURL(ctl.clientCfg.HTTPProxy), frpNet.WithProtocol(ctl.clientCfg.Protocol), - frpNet.WithRemoteAddress(net.JoinHostPort(ctl.clientCfg.ServerAddr, strconv.Itoa(ctl.clientCfg.ServerPort))), frpNet.WithTLSConfig(tlsConfig), - frpNet.WithDisableCustomTLSHeadByte(ctl.clientCfg.DisableCustomTLSFirstByte), - } + frpNet.WithDisableCustomTLSHeadByte(ctl.clientCfg.DisableCustomTLSFirstByte)) - conn, err = frpNet.DialWithOptions(opts...) if err != nil { xl.Warn("start new connection to server error: %v", err) return diff --git a/client/proxy/proxy.go b/client/proxy/proxy.go index 47ab03ca..c535df59 100644 --- a/client/proxy/proxy.go +++ b/client/proxy/proxy.go @@ -790,7 +790,7 @@ func HandleTCPWorkConnection(ctx context.Context, localInfo *config.LocalSvrConf return } - localConn, err := frpNet.ConnectServer("tcp", fmt.Sprintf("%s:%d", localInfo.LocalIP, localInfo.LocalPort)) + localConn, err := frpNet.DialWithOptions(net.JoinHostPort(localInfo.LocalIP, strconv.Itoa(localInfo.LocalPort))) if err != nil { workConn.Close() xl.Error("connect to local service [%s:%d] error: %v", localInfo.LocalIP, localInfo.LocalPort, err) diff --git a/client/service.go b/client/service.go index 0be1bcb5..d0f38453 100644 --- a/client/service.go +++ b/client/service.go @@ -228,15 +228,12 @@ func (svr *Service) login() (conn net.Conn, session *fmux.Session, err error) { } } - opts := []frpNet.DialOption{ - frpNet.WithProxy(svr.cfg.HTTPProxy), + conn, err = frpNet.DialWithOptions(net.JoinHostPort(svr.cfg.ServerAddr, strconv.Itoa(svr.cfg.ServerPort)), + frpNet.WithProxyURL(svr.cfg.HTTPProxy), frpNet.WithProtocol(svr.cfg.Protocol), - frpNet.WithRemoteAddress(net.JoinHostPort(svr.cfg.ServerAddr, strconv.Itoa(svr.cfg.ServerPort))), frpNet.WithTLSConfig(tlsConfig), - frpNet.WithDisableCustomTLSHeadByte(svr.cfg.DisableCustomTLSFirstByte), - } + frpNet.WithDisableCustomTLSHeadByte(svr.cfg.DisableCustomTLSFirstByte)) - conn, err = frpNet.DialWithOptions(opts...) if err != nil { return } diff --git a/pkg/util/net/conn.go b/pkg/util/net/conn.go index 81216a03..366357d0 100644 --- a/pkg/util/net/conn.go +++ b/pkg/util/net/conn.go @@ -226,7 +226,7 @@ func ConnectServerByProxy(proxyURL string, protocol string, addr string) (c net. case "tcp": return gnet.DialTcpByProxy(proxyURL, addr) default: - return nil, fmt.Errorf("unsupport protocol: %s", protocol) + return nil, fmt.Errorf("unsupport protocol: %s when connecting by proxy", protocol) } } diff --git a/pkg/util/net/dial.go b/pkg/util/net/dial.go index 929389a2..2549821d 100644 --- a/pkg/util/net/dial.go +++ b/pkg/util/net/dial.go @@ -8,8 +8,6 @@ import ( type dialOptions struct { proxyURL string protocol string - laddr string - addr string tlsConfig *tls.Config disableCustomTLSHeadByte bool } @@ -42,30 +40,18 @@ func DefaultDialOptions() dialOptions { } } -func WithProxy(proxyURL string) DialOption { +func WithProxyURL(proxyURL string) DialOption { return newFuncDialOption(func(do *dialOptions) { do.proxyURL = proxyURL }) } -func WithBindAddress(laddr string) DialOption { - return newFuncDialOption(func(do *dialOptions) { - do.laddr = laddr - }) -} - func WithTLSConfig(tlsConfig *tls.Config) DialOption { return newFuncDialOption(func(do *dialOptions) { do.tlsConfig = tlsConfig }) } -func WithRemoteAddress(addr string) DialOption { - return newFuncDialOption(func(do *dialOptions) { - do.addr = addr - }) -} - func WithDisableCustomTLSHeadByte(disableCustomTLSHeadByte bool) DialOption { return newFuncDialOption(func(do *dialOptions) { do.disableCustomTLSHeadByte = disableCustomTLSHeadByte @@ -78,7 +64,7 @@ func WithProtocol(protocol string) DialOption { }) } -func DialWithOptions(opts ...DialOption) (c net.Conn, err error) { +func DialWithOptions(addr string, opts ...DialOption) (c net.Conn, err error) { op := DefaultDialOptions() for _, opt := range opts { @@ -86,9 +72,9 @@ func DialWithOptions(opts ...DialOption) (c net.Conn, err error) { } if op.proxyURL == "" { - c, err = ConnectServer(op.protocol, op.addr) + c, err = ConnectServer(op.protocol, addr) } else { - c, err = ConnectServerByProxy(op.proxyURL, op.protocol, op.addr) + c, err = ConnectServerByProxy(op.proxyURL, op.protocol, addr) } if err != nil { return nil, err