add socks5 udp relay

This commit is contained in:
ginuerzh
2021-11-07 23:39:35 +08:00
parent e8f040cbdf
commit 16f34d3e94
39 changed files with 728 additions and 131 deletions

View File

@ -3,6 +3,7 @@ package v5
import (
"context"
"net"
"time"
"github.com/go-gost/gosocks5"
"github.com/go-gost/gost/pkg/handler"
@ -39,6 +40,7 @@ func (h *socks5Handler) handleBind(ctx context.Context, conn net.Conn, req *goso
}
defer cc.Close()
// forward request
if err := req.Write(cc); err != nil {
h.logger.Error(err)
resp := gosocks5.NewReply(gosocks5.NetUnreachable, nil)
@ -88,7 +90,11 @@ func (h *socks5Handler) bindLocal(ctx context.Context, conn net.Conn, addr strin
if h.logger.IsLevelEnabled(logger.DebugLevel) {
h.logger.Debug(reply.String())
}
h.logger.Infof("bind on: %s OK", socksAddr.String())
h.logger = h.logger.WithFields(map[string]interface{}{
"bind": socksAddr.String(),
})
h.logger.Infof("bind on %s OK", socksAddr.String())
h.serveBind(ctx, conn, ln)
}
@ -144,11 +150,14 @@ func (h *socks5Handler) serveBind(ctx context.Context, conn net.Conn, ln net.Lis
if h.logger.IsLevelEnabled(logger.DebugLevel) {
h.logger.Debug(reply.String())
}
h.logger.Infof("PEER %s ACCEPTED", raddr.String())
h.logger.Infof("peer accepted: %s", raddr.String())
start := time.Now()
h.logger.Infof("%s <-> %s", conn.RemoteAddr(), raddr.String())
handler.Transport(pc2, rc)
h.logger.Infof("%s >-< %s", conn.RemoteAddr(), raddr.String())
h.logger.
WithFields(map[string]interface{}{"duration": time.Since(start)}).
Infof("%s >-< %s", conn.RemoteAddr(), raddr.String())
case err := <-pipe():
if err != nil {