From c8ca1f0b25ec02b453624defc483868d3abf394a Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Wed, 4 Jul 2018 16:55:45 +0800 Subject: [PATCH] tls: add skipVerify param in url --- proxy/ssr/ssr.go | 20 ++++++-------------- proxy/tls/tls.go | 11 ++++++++++- proxy/vmess/client.go | 1 - proxy/vmess/vmess.go | 7 ++----- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/proxy/ssr/ssr.go b/proxy/ssr/ssr.go index 9c68982..a92e18b 100644 --- a/proxy/ssr/ssr.go +++ b/proxy/ssr/ssr.go @@ -36,7 +36,7 @@ func init() { proxy.RegisterDialer("ssr", NewSSRDialer) } -// NewSSR returns a shadowsocksr proxy, ssr://method:pass@host:port/rawQuery +// NewSSR returns a shadowsocksr proxy, ssr://method:pass@host:port/query func NewSSR(s string, dialer proxy.Dialer) (*SSR, error) { u, err := url.Parse(s) if err != nil { @@ -58,19 +58,11 @@ func NewSSR(s string, dialer proxy.Dialer) (*SSR, error) { EncryptPassword: pass, } - q, _ := url.ParseQuery(u.RawQuery) - if v, ok := q["protocol"]; ok { - p.Protocol = v[0] - } - if v, ok := q["protocol_param"]; ok { - p.ProtocolParam = v[0] - } - if v, ok := q["obfs"]; ok { - p.Obfs = v[0] - } - if v, ok := q["obfs_param"]; ok { - p.ObfsParam = v[0] - } + query := u.Query() + p.Protocol = query.Get("protocol") + p.ProtocolParam = query.Get("protocol_param") + p.Obfs = query.Get("obfs") + p.ObfsParam = query.Get("obfs_param") return p, nil } diff --git a/proxy/tls/tls.go b/proxy/tls/tls.go index ae3c9ac..d5d453a 100644 --- a/proxy/tls/tls.go +++ b/proxy/tls/tls.go @@ -17,6 +17,7 @@ type TLS struct { addr string serverName string + skipVerify bool } func init() { @@ -33,6 +34,9 @@ func NewTLS(s string, dialer proxy.Dialer) (*TLS, error) { addr := u.Host + query := u.Query() + skipVerify := query.Get("InsecureSkipVerify") + colonPos := strings.LastIndex(addr, ":") if colonPos == -1 { colonPos = len(addr) @@ -43,6 +47,11 @@ func NewTLS(s string, dialer proxy.Dialer) (*TLS, error) { dialer: dialer, addr: addr, serverName: serverName, + skipVerify: false, + } + + if skipVerify == "true" { + p.skipVerify = true } return p, nil @@ -69,7 +78,7 @@ func (s *TLS) Dial(network, addr string) (net.Conn, error) { conf := &stdtls.Config{ ServerName: s.serverName, - InsecureSkipVerify: true, + InsecureSkipVerify: s.skipVerify, } c := stdtls.Client(cc, conf) diff --git a/proxy/vmess/client.go b/proxy/vmess/client.go index e96cab1..515bf50 100644 --- a/proxy/vmess/client.go +++ b/proxy/vmess/client.go @@ -203,7 +203,6 @@ func (c *Conn) Read(b []byte) (n int, err error) { if !c.connected { c.DecodeRespHeader() } - return c.Conn.Read(b) } diff --git a/proxy/vmess/vmess.go b/proxy/vmess/vmess.go index c0d7881..bb22d46 100644 --- a/proxy/vmess/vmess.go +++ b/proxy/vmess/vmess.go @@ -46,11 +46,8 @@ func NewVMess(s string, dialer proxy.Dialer) (*VMess, error) { security = "NONE" } - aid := "0" - params, _ := url.ParseQuery(u.RawQuery) - if v, ok := params["alterID"]; ok { - aid = v[0] - } + query := u.Query() + aid := query.Get("alterID") alterID, err := strconv.ParseUint(aid, 10, 32) if err != nil {