From 2d16870803df8364c67a0e591b462fb16de4f0a5 Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Sun, 21 Mar 2021 00:08:00 +0800 Subject: [PATCH] tls,trojan: optimize the default port handling --- go.mod | 2 +- go.sum | 4 ++-- main.go | 2 +- proxy/tls/tls.go | 11 +++++------ proxy/trojan/trojan.go | 11 +++++------ rule/group.go | 6 +++--- 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index feb69db..2221668 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/xtaci/kcp-go/v5 v5.6.1 golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4 // indirect - golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d // indirect + golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 // indirect ) // Replace dependency modules with local developing copy diff --git a/go.sum b/go.sum index 919c1ed..e5f5077 100644 --- a/go.sum +++ b/go.sum @@ -153,8 +153,8 @@ golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d h1:jbzgAvDZn8aEnytae+4ou0J0GwFZoHR0hOrTg4qH8GA= -golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/main.go b/main.go index c4cfa64..6fe8a77 100644 --- a/main.go +++ b/main.go @@ -18,7 +18,7 @@ import ( ) var ( - version = "0.14.0" + version = "0.13.2" config = parseConfig() ) diff --git a/proxy/tls/tls.go b/proxy/tls/tls.go index 5dbfb93..6dbd813 100644 --- a/proxy/tls/tls.go +++ b/proxy/tls/tls.go @@ -52,13 +52,12 @@ func NewTLS(s string, d proxy.Dialer, p proxy.Proxy) (*TLS, error) { keyFile: query.Get("key"), } + if _, p, _ := net.SplitHostPort(t.addr); p == "" { + t.addr = net.JoinHostPort(t.addr, "443") + } + if t.serverName == "" { - idx := strings.LastIndex(t.addr, ":") - if idx == -1 { - idx = len(t.addr) - t.addr = net.JoinHostPort(t.addr, "443") - } - t.serverName = t.addr[:idx] + t.serverName = t.addr[:strings.LastIndex(t.addr, ":")] } return t, nil diff --git a/proxy/trojan/trojan.go b/proxy/trojan/trojan.go index dfb8531..d0a90b5 100644 --- a/proxy/trojan/trojan.go +++ b/proxy/trojan/trojan.go @@ -58,13 +58,12 @@ func NewTrojan(s string, d proxy.Dialer, p proxy.Proxy) (*Trojan, error) { // fallback: "127.0.0.1:80", } + if _, p, _ := net.SplitHostPort(t.addr); p == "" { + t.addr = net.JoinHostPort(t.addr, "443") + } + if t.serverName == "" { - idx := strings.LastIndex(t.addr, ":") - if idx == -1 { - idx = len(t.addr) - t.addr = net.JoinHostPort(t.addr, "443") - } - t.serverName = t.addr[:idx] + t.serverName = t.addr[:strings.LastIndex(t.addr, ":")] } // pass diff --git a/rule/group.go b/rule/group.go index 1edd699..fa49735 100644 --- a/rule/group.go +++ b/rule/group.go @@ -189,13 +189,13 @@ func (p *FwdrGroup) Check() { u, err := url.Parse(p.config.Check) if err != nil { - log.F("[group] parse check config error: %s", err) + log.F("[group] parse check config error: %s, disable health checking", err) return } addr := u.Host - if strings.IndexByte(addr, ':') == -1 { - addr += ":80" + if _, p, _ := net.SplitHostPort(addr); p == "" { + addr = net.JoinHostPort(addr, "80") } timeout := time.Duration(p.config.CheckTimeout) * time.Second