add socks5 udp relay
This commit is contained in:
@ -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 {
|
||||
|
Reference in New Issue
Block a user