This commit is contained in:
rui.zheng 2017-01-07 20:31:23 +08:00
parent aef1c86b43
commit 2508491d20
3 changed files with 10 additions and 2 deletions

View File

@ -340,7 +340,9 @@ func (c *ProxyChain) getHttp2Conn(header http.Header) (net.Conn, error) {
return conn, nil return conn, nil
} }
// Use HTTP2 as transport to connect target addr // Use HTTP2 as transport to connect target addr.
//
// BUG: SOCKS5 is ignored, only HTTP supported
func (c *ProxyChain) http2Connect(addr string) (net.Conn, error) { func (c *ProxyChain) http2Connect(addr string) (net.Conn, error) {
if !c.Http2Enabled() { if !c.Http2Enabled() {
return nil, errors.New("HTTP2 is not enabled") return nil, errors.New("HTTP2 is not enabled")

View File

@ -111,6 +111,7 @@ func (node *cnode) run() {
lconn, err := net.ListenUDP("udp", nil) lconn, err := net.ListenUDP("udp", nil)
if err != nil { if err != nil {
glog.V(LWARNING).Infof("[udp] %s -> %s : %s", node.srcAddr, node.dstAddr, err) glog.V(LWARNING).Infof("[udp] %s -> %s : %s", node.srcAddr, node.dstAddr, err)
node.err = err
return return
} }
node.conn = lconn node.conn = lconn
@ -118,6 +119,7 @@ func (node *cnode) run() {
tc, err := node.getUDPTunnel() tc, err := node.getUDPTunnel()
if err != nil { if err != nil {
glog.V(LWARNING).Infof("[udp-tun] %s -> %s : %s", node.srcAddr, node.dstAddr, err) glog.V(LWARNING).Infof("[udp-tun] %s -> %s : %s", node.srcAddr, node.dstAddr, err)
node.err = err
return return
} }
node.conn = tc node.conn = tc
@ -294,7 +296,7 @@ func (s *UdpForwardServer) ListenAndServe() error {
} }
m[pkt.srcAddr.String()] = node m[pkt.srcAddr.String()] = node
go node.run() go node.run()
glog.V(LDEBUG).Infof("[udp] %s -> %s : new client (%d)", pkt.srcAddr, pkt.dstAddr, len(m)) glog.V(LINFO).Infof("[udp] %s -> %s : new client (%d)", pkt.srcAddr, pkt.dstAddr, len(m))
} }
select { select {

View File

@ -546,6 +546,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err
for { for {
n, addr, err := uc.ReadFromUDP(b) n, addr, err := uc.ReadFromUDP(b)
if err != nil { if err != nil {
glog.V(LWARNING).Infof("[udp-tun] %s <- %s : %s", cc.RemoteAddr(), addr, err)
errc <- err errc <- err
return return
} }
@ -570,6 +571,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err
dgram = gosocks5.NewUDPDatagram( dgram = gosocks5.NewUDPDatagram(
gosocks5.NewUDPHeader(uint16(n), 0, ToSocksAddr(addr)), b[:n]) gosocks5.NewUDPHeader(uint16(n), 0, ToSocksAddr(addr)), b[:n])
if err := dgram.Write(cc); err != nil { if err := dgram.Write(cc); err != nil {
glog.V(LWARNING).Infof("[udp-tun] %s <- %s : %s", cc.RemoteAddr(), dgram.Header.Addr, err)
errc <- err errc <- err
return return
} }
@ -582,6 +584,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err
for { for {
dgram, err := gosocks5.ReadUDPDatagram(cc) dgram, err := gosocks5.ReadUDPDatagram(cc)
if err != nil { if err != nil {
glog.V(LWARNING).Infof("[udp-tun] %s -> 0 : %s", cc.RemoteAddr(), err)
errc <- err errc <- err
return return
} }
@ -605,6 +608,7 @@ func (s *Socks5Server) tunnelUDP(uc *net.UDPConn, cc net.Conn, client bool) (err
continue // drop silently continue // drop silently
} }
if _, err := uc.WriteToUDP(dgram.Data, addr); err != nil { if _, err := uc.WriteToUDP(dgram.Data, addr); err != nil {
glog.V(LWARNING).Infof("[udp-tun] %s -> %s : %s", cc.RemoteAddr(), addr, err)
errc <- err errc <- err
return return
} }