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