From d49ec87c17bb28481fbcd4b17fa46744e0dc560a Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Sun, 5 Apr 2020 20:16:06 +0800 Subject: [PATCH] fix nil bypasser --- chain.go | 2 +- http.go | 2 +- http2.go | 2 +- sni.go | 2 +- socks.go | 16 ++++++++-------- ss.go | 6 +++--- ssh.go | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/chain.go b/chain.go index 11656fa..1a24e3b 100644 --- a/chain.go +++ b/chain.go @@ -302,7 +302,7 @@ func (c *Chain) selectRouteFor(addr string) (route *Chain, err error) { return } - if node.Bypasser.Bypass(addr) { + if node.Bypasser != nil && node.Bypasser.Bypass(addr) { break } diff --git a/http.go b/http.go index 62a03bc..0f8d0a6 100644 --- a/http.go +++ b/http.go @@ -189,7 +189,7 @@ func (h *httpHandler) handleRequest(conn net.Conn, req *http.Request) { return } - if h.options.Bypasser.Bypass(host) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(host) { resp.StatusCode = http.StatusForbidden log.Logf("[http] %s - %s bypass %s", diff --git a/http2.go b/http2.go index f0f2b06..14a4ec3 100644 --- a/http2.go +++ b/http2.go @@ -374,7 +374,7 @@ func (h *http2Handler) roundTrip(w http.ResponseWriter, r *http.Request) { return } - if h.options.Bypasser.Bypass(host) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(host) { log.Logf("[http2] %s - %s bypass %s", r.RemoteAddr, laddr, host) w.WriteHeader(http.StatusForbidden) diff --git a/sni.go b/sni.go index 64dc9fe..4744a57 100644 --- a/sni.go +++ b/sni.go @@ -113,7 +113,7 @@ func (h *sniHandler) Handle(conn net.Conn) { conn.RemoteAddr(), conn.LocalAddr(), host) return } - if h.options.Bypasser.Bypass(host) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(host) { log.Log("[sni] %s - %s bypass %s", conn.RemoteAddr(), conn.LocalAddr(), host) return diff --git a/socks.go b/socks.go index fb35b8d..e906b4f 100644 --- a/socks.go +++ b/socks.go @@ -900,7 +900,7 @@ func (h *socks5Handler) handleConnect(conn net.Conn, req *gosocks5.Request) { } return } - if h.options.Bypasser.Bypass(host) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(host) { log.Logf("[socks5] %s - %s : Bypass %s", conn.RemoteAddr(), conn.LocalAddr(), host) rep := gosocks5.NewReply(gosocks5.NotAllowed, nil) @@ -1261,7 +1261,7 @@ func (h *socks5Handler) transportUDP(relay, peer net.PacketConn) (err error) { if err != nil { continue // drop silently } - if h.options.Bypasser.Bypass(raddr.String()) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(raddr.String()) { log.Log("[socks5-udp] [bypass] write to", raddr) continue // bypass } @@ -1288,7 +1288,7 @@ func (h *socks5Handler) transportUDP(relay, peer net.PacketConn) (err error) { if clientAddr == nil { continue } - if h.options.Bypasser.Bypass(raddr.String()) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(raddr.String()) { log.Log("[socks5-udp] [bypass] read from", raddr) continue // bypass } @@ -1341,7 +1341,7 @@ func (h *socks5Handler) tunnelClientUDP(uc *net.UDPConn, cc net.Conn) (err error clientAddr = addr } raddr := dgram.Header.Addr.String() - if h.options.Bypasser.Bypass(raddr) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(raddr) { log.Log("[udp-tun] [bypass] write to", raddr) continue // bypass } @@ -1370,7 +1370,7 @@ func (h *socks5Handler) tunnelClientUDP(uc *net.UDPConn, cc net.Conn) (err error continue } raddr := dgram.Header.Addr.String() - if h.options.Bypasser.Bypass(raddr) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(raddr) { log.Log("[udp-tun] [bypass] read from", raddr) continue // bypass } @@ -1469,7 +1469,7 @@ func (h *socks5Handler) tunnelServerUDP(cc net.Conn, pc net.PacketConn) (err err errc <- err return } - if h.options.Bypasser.Bypass(addr.String()) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(addr.String()) { log.Log("[socks5] udp-tun bypass read from", addr) continue // bypass } @@ -1502,7 +1502,7 @@ func (h *socks5Handler) tunnelServerUDP(cc net.Conn, pc net.PacketConn) (err err if err != nil { continue // drop silently } - if h.options.Bypasser.Bypass(addr.String()) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(addr.String()) { log.Log("[socks5] udp-tun bypass write to", addr) continue // bypass } @@ -1715,7 +1715,7 @@ func (h *socks4Handler) handleConnect(conn net.Conn, req *gosocks4.Request) { } return } - if h.options.Bypasser.Bypass(addr) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(addr) { log.Log("[socks4] %s - %s : Bypass %s", conn.RemoteAddr(), conn.LocalAddr(), addr) rep := gosocks4.NewReply(gosocks4.Rejected, nil) diff --git a/ss.go b/ss.go index 5eaac7a..d17e26b 100644 --- a/ss.go +++ b/ss.go @@ -149,7 +149,7 @@ func (h *shadowHandler) Handle(conn net.Conn) { return } - if h.options.Bypasser.Bypass(host) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(host) { log.Logf("[ss] %s - %s : Bypass %s", conn.RemoteAddr(), conn.LocalAddr(), host) return @@ -435,7 +435,7 @@ func (h *shadowUDPHandler) transportUDP(conn net.Conn, cc net.PacketConn) error if err != nil { return } - if h.options.Bypasser.Bypass(addr.String()) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(addr.String()) { log.Log("[ssu] bypass", addr) return // bypass } @@ -463,7 +463,7 @@ func (h *shadowUDPHandler) transportUDP(conn net.Conn, cc net.PacketConn) error if Debug { log.Logf("[ssu] %s <<< %s length: %d", conn.RemoteAddr(), addr, n) } - if h.options.Bypasser.Bypass(addr.String()) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(addr.String()) { log.Log("[ssu] bypass", addr) return // bypass } diff --git a/ssh.go b/ssh.go index 41250ad..85d3a25 100644 --- a/ssh.go +++ b/ssh.go @@ -608,7 +608,7 @@ func (h *sshForwardHandler) directPortForwardChannel(channel ssh.Channel, raddr return } - if h.options.Bypasser.Bypass(raddr) { + if h.options.Bypasser != nil && h.options.Bypasser.Bypass(raddr) { log.Logf("[ssh-tcp] [bypass] %s", raddr) return }