add new recorder object
This commit is contained in:
parent
acee883234
commit
5a15f53fc6
@ -12,6 +12,7 @@ type RecorderObject struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
RecorderServiceClientAddress = "recorder.service.client.address"
|
||||||
RecorderServiceRouterDialAddress = "recorder.service.router.dial.address"
|
RecorderServiceRouterDialAddress = "recorder.service.router.dial.address"
|
||||||
RecorderServiceRouterDialAddressError = "recorder.service.router.dial.address.error"
|
RecorderServiceRouterDialAddressError = "recorder.service.router.dial.address.error"
|
||||||
)
|
)
|
||||||
|
@ -10,10 +10,12 @@ import (
|
|||||||
"github.com/go-gost/core/listener"
|
"github.com/go-gost/core/listener"
|
||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
"github.com/go-gost/core/metrics"
|
"github.com/go-gost/core/metrics"
|
||||||
|
"github.com/go-gost/core/recorder"
|
||||||
)
|
)
|
||||||
|
|
||||||
type options struct {
|
type options struct {
|
||||||
admission admission.Admission
|
admission admission.Admission
|
||||||
|
recorders []recorder.RecorderObject
|
||||||
logger logger.Logger
|
logger logger.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,6 +27,12 @@ func AdmissionOption(admission admission.Admission) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RecordersOption(recorders ...recorder.RecorderObject) Option {
|
||||||
|
return func(opts *options) {
|
||||||
|
opts.recorders = recorders
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func LoggerOption(logger logger.Logger) Option {
|
func LoggerOption(logger logger.Logger) Option {
|
||||||
return func(opts *options) {
|
return func(opts *options) {
|
||||||
opts.logger = logger
|
opts.logger = logger
|
||||||
@ -95,6 +103,17 @@ func (s *service) Serve() error {
|
|||||||
}
|
}
|
||||||
tempDelay = 0
|
tempDelay = 0
|
||||||
|
|
||||||
|
for _, rec := range s.options.recorders {
|
||||||
|
host := conn.RemoteAddr().String()
|
||||||
|
if h, _, _ := net.SplitHostPort(host); h != "" {
|
||||||
|
host = h
|
||||||
|
}
|
||||||
|
if rec.Record == recorder.RecorderServiceClientAddress {
|
||||||
|
if err := rec.Recorder.Record(context.Background(), []byte(host)); err != nil {
|
||||||
|
s.options.logger.Errorf("record %s: %v", rec.Record, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if s.options.admission != nil &&
|
if s.options.admission != nil &&
|
||||||
!s.options.admission.Admit(conn.RemoteAddr().String()) {
|
!s.options.admission.Admit(conn.RemoteAddr().String()) {
|
||||||
conn.Close()
|
conn.Close()
|
||||||
|
Loading…
Reference in New Issue
Block a user