add recorder for relay tunnel endpoint
This commit is contained in:
@ -222,6 +222,9 @@ func (h *relayHandler) handleBindTunnel(ctx context.Context, conn net.Conn, netw
|
||||
|
||||
h.pool.Add(tunnelID, NewConnector(connectorID, session))
|
||||
log.Debugf("tunnel %s connector %s/%s established", tunnelID, connectorID, network)
|
||||
if h.recorder.Recorder != nil {
|
||||
h.recorder.Recorder.Record(ctx, tunnelID[:])
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -182,7 +182,7 @@ func (h *relayHandler) handleConnectTunnel(ctx context.Context, conn net.Conn, n
|
||||
}
|
||||
|
||||
var features []relay.Feature
|
||||
af := &relay.AddrFeature{} // visitor address
|
||||
af := &relay.AddrFeature{} // source/visitor address
|
||||
af.ParseFrom(conn.RemoteAddr().String())
|
||||
features = append(features, af)
|
||||
|
||||
|
@ -13,10 +13,12 @@ import (
|
||||
"github.com/go-gost/core/hop"
|
||||
"github.com/go-gost/core/listener"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
"github.com/go-gost/core/recorder"
|
||||
"github.com/go-gost/core/service"
|
||||
"github.com/go-gost/relay"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
auth_util "github.com/go-gost/x/internal/util/auth"
|
||||
xrecorder "github.com/go-gost/x/recorder"
|
||||
"github.com/go-gost/x/registry"
|
||||
xservice "github.com/go-gost/x/service"
|
||||
)
|
||||
@ -33,12 +35,13 @@ func init() {
|
||||
}
|
||||
|
||||
type relayHandler struct {
|
||||
hop hop.Hop
|
||||
router *chain.Router
|
||||
md metadata
|
||||
options handler.Options
|
||||
ep service.Service
|
||||
pool *ConnectorPool
|
||||
hop hop.Hop
|
||||
router *chain.Router
|
||||
md metadata
|
||||
options handler.Options
|
||||
ep service.Service
|
||||
pool *ConnectorPool
|
||||
recorder recorder.RecorderObject
|
||||
}
|
||||
|
||||
func NewHandler(opts ...handler.Option) handler.Handler {
|
||||
@ -63,6 +66,15 @@ func (h *relayHandler) Init(md md.Metadata) (err error) {
|
||||
h.router = chain.NewRouter(chain.LoggerRouterOption(h.options.Logger))
|
||||
}
|
||||
|
||||
if opts := h.router.Options(); opts != nil {
|
||||
for _, ro := range opts.Recorders {
|
||||
if ro.Record == xrecorder.RecorderServiceHandlerRelayTunnelEndpoint {
|
||||
h.recorder = ro
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if err = h.initEntryPoint(); err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ func (t *Tunnel) GetConnector(network string) *Connector {
|
||||
}
|
||||
|
||||
func (t *Tunnel) clean() {
|
||||
ticker := time.NewTicker(3 * time.Second)
|
||||
ticker := time.NewTicker(30 * time.Second)
|
||||
for range ticker.C {
|
||||
t.mu.Lock()
|
||||
var connectors []*Connector
|
||||
|
Reference in New Issue
Block a user