add new recorder object
This commit is contained in:
parent
acee883234
commit
5a15f53fc6
@ -12,6 +12,7 @@ type RecorderObject struct {
|
||||
}
|
||||
|
||||
const (
|
||||
RecorderServiceClientAddress = "recorder.service.client.address"
|
||||
RecorderServiceRouterDialAddress = "recorder.service.router.dial.address"
|
||||
RecorderServiceRouterDialAddressError = "recorder.service.router.dial.address.error"
|
||||
)
|
||||
|
@ -10,10 +10,12 @@ import (
|
||||
"github.com/go-gost/core/listener"
|
||||
"github.com/go-gost/core/logger"
|
||||
"github.com/go-gost/core/metrics"
|
||||
"github.com/go-gost/core/recorder"
|
||||
)
|
||||
|
||||
type options struct {
|
||||
admission admission.Admission
|
||||
recorders []recorder.RecorderObject
|
||||
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 {
|
||||
return func(opts *options) {
|
||||
opts.logger = logger
|
||||
@ -95,6 +103,17 @@ func (s *service) Serve() error {
|
||||
}
|
||||
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 &&
|
||||
!s.options.admission.Admit(conn.RemoteAddr().String()) {
|
||||
conn.Close()
|
||||
|
Loading…
Reference in New Issue
Block a user