Skip to content

Commit

Permalink
add dialTimeout option for service
Browse files Browse the repository at this point in the history
  • Loading branch information
ginuerzh committed Jun 25, 2024
1 parent f9bfca7 commit b99292b
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 28 deletions.
2 changes: 0 additions & 2 deletions config/parsing/node/parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"net"
"regexp"
"strings"
"time"

"github.com/go-gost/core/bypass"
"github.com/go-gost/core/chain"
Expand Down Expand Up @@ -145,7 +144,6 @@ func ParseNode(hop string, cfg *config.NodeConfig, log logger.Logger) (*chain.No
chain.InterfaceTransportOption(cfg.Interface),
chain.NetnsTransportOption(cfg.Netns),
chain.SockOptsTransportOption(sockOpts),
chain.TimeoutTransportOption(10*time.Second),
)

opts := []chain.NodeOption{
Expand Down
42 changes: 27 additions & 15 deletions config/parsing/service/parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,17 +63,13 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) {
"handler": cfg.Handler.Type,
})

listenerLogger := serviceLogger.WithFields(map[string]any{
"kind": "listener",
})

tlsCfg := cfg.Listener.TLS
if tlsCfg == nil {
tlsCfg = &config.TLSConfig{}
}
tlsConfig, err := tls_util.LoadServerConfig(tlsCfg)
if err != nil {
listenerLogger.Error(err)
serviceLogger.Error(err)
return nil, err
}
if tlsConfig == nil {
Expand Down Expand Up @@ -107,6 +103,7 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) {
var pStats *stats.Stats
var observePeriod time.Duration
var netnsIn, netnsOut string
var dialTimeout time.Duration
if cfg.Metadata != nil {
md := metadata.NewMetadata(cfg.Metadata)
ppv = mdutil.GetInt(md, parsing.MDKeyProxyProtocol)
Expand All @@ -130,26 +127,42 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) {
observePeriod = mdutil.GetDuration(md, "observePeriod")
netnsIn = mdutil.GetString(md, "netns")
netnsOut = mdutil.GetString(md, "netns.out")
dialTimeout = mdutil.GetDuration(md, "dialTimeout")
}

listenerLogger := serviceLogger.WithFields(map[string]any{
"kind": "listener",
})

routerOpts := []chain.RouterOption{
chain.TimeoutRouterOption(dialTimeout),
chain.InterfaceRouterOption(ifce),
chain.NetnsRouterOption(netnsOut),
chain.SockOptsRouterOption(sockOpts),
chain.ResolverRouterOption(registry.ResolverRegistry().Get(cfg.Resolver)),
chain.HostMapperRouterOption(registry.HostsRegistry().Get(cfg.Hosts)),
chain.LoggerRouterOption(listenerLogger),
}
if !ignoreChain {
routerOpts = append(routerOpts,
chain.ChainRouterOption(chainGroup(cfg.Listener.Chain, cfg.Listener.ChainGroup)),
)
}

listenOpts := []listener.Option{
listener.AddrOption(cfg.Addr),
listener.RouterOption(chain.NewRouter(routerOpts...)),
listener.AutherOption(auther),
listener.AuthOption(auth_parser.Info(cfg.Listener.Auth)),
listener.TLSConfigOption(tlsConfig),
listener.AdmissionOption(admission.AdmissionGroup(admissions...)),
listener.TrafficLimiterOption(registry.TrafficLimiterRegistry().Get(cfg.Limiter)),
listener.ConnLimiterOption(registry.ConnLimiterRegistry().Get(cfg.CLimiter)),
listener.LoggerOption(listenerLogger),
listener.ServiceOption(cfg.Name),
listener.ProxyProtocolOption(ppv),
listener.StatsOption(pStats),
listener.NetnsOption(netnsIn),
}
if !ignoreChain {
listenOpts = append(listenOpts,
listener.ChainOption(chainGroup(cfg.Listener.Chain, cfg.Listener.ChainGroup)),
)
listener.LoggerOption(listenerLogger),
}

if netnsIn != "" {
Expand Down Expand Up @@ -232,9 +245,9 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) {
})
}

routerOpts := []chain.RouterOption{
routerOpts = []chain.RouterOption{
chain.RetriesRouterOption(cfg.Handler.Retries),
// chain.TimeoutRouterOption(10*time.Second),
chain.TimeoutRouterOption(dialTimeout),
chain.InterfaceRouterOption(ifce),
chain.NetnsRouterOption(netnsOut),
chain.SockOptsRouterOption(sockOpts),
Expand All @@ -248,12 +261,11 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) {
chain.ChainRouterOption(chainGroup(cfg.Handler.Chain, cfg.Handler.ChainGroup)),
)
}
router := chain.NewRouter(routerOpts...)

var h handler.Handler
if rf := registry.HandlerRegistry().Get(cfg.Handler.Type); rf != nil {
h = rf(
handler.RouterOption(router),
handler.RouterOption(chain.NewRouter(routerOpts...)),
handler.AutherOption(auther),
handler.AuthOption(auth_parser.Info(cfg.Handler.Auth)),
handler.BypassOption(bypass.BypassGroup(bypass_parser.List(cfg.Bypass, cfg.Bypasses...)...)),
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ require (
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d
github.com/gin-contrib/cors v1.5.0
github.com/gin-gonic/gin v1.9.1
github.com/go-gost/core v0.0.0-20240624131323-ca340b1bf1a2
github.com/go-gost/core v0.0.0-20240625123708-4e831b95e8cc
github.com/go-gost/gosocks4 v0.0.1
github.com/go-gost/gosocks5 v0.3.1
github.com/go-gost/plugin v0.0.0-20240103125338-9c84e29cb81a
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
github.com/go-gost/core v0.0.0-20240624131323-ca340b1bf1a2 h1:+VxqwMcnO/Jqpa88n9D2YoApTFrSRbjlFd9Oy/xvE0s=
github.com/go-gost/core v0.0.0-20240624131323-ca340b1bf1a2/go.mod h1:aTPFucvJyqc/o5h5/ZtyHJ0xgFIq5Ip+cMlhazm+TaI=
github.com/go-gost/core v0.0.0-20240625123708-4e831b95e8cc h1:aj0FZ3RYZPqlDko/pKPPAAve1/73g+uIq/sVEGtarss=
github.com/go-gost/core v0.0.0-20240625123708-4e831b95e8cc/go.mod h1:aTPFucvJyqc/o5h5/ZtyHJ0xgFIq5Ip+cMlhazm+TaI=
github.com/go-gost/gosocks4 v0.0.1 h1:+k1sec8HlELuQV7rWftIkmy8UijzUt2I6t+iMPlGB2s=
github.com/go-gost/gosocks4 v0.0.1/go.mod h1:3B6L47HbU/qugDg4JnoFPHgJXE43Inz8Bah1QaN9qCc=
github.com/go-gost/gosocks5 v0.3.1 h1:N6K/gE8oNLJX2nVX/O50FERHjgW4gGksZ7QbOvPF3n8=
Expand Down
8 changes: 4 additions & 4 deletions listener/rtcp/listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ func (l *rtcpListener) Init(md md.Metadata) (err error) {
l.laddr = &bindAddr{addr: l.options.Addr}
}

l.router = chain.NewRouter(
chain.ChainRouterOption(l.options.Chain),
chain.LoggerRouterOption(l.logger),
)
l.router = l.options.Router
if l.router == nil {
l.router = chain.NewRouter(chain.LoggerRouterOption(l.logger))
}

return
}
Expand Down
8 changes: 4 additions & 4 deletions listener/rudp/listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ func (l *rudpListener) Init(md md.Metadata) (err error) {
l.laddr = &bindAddr{addr: l.options.Addr}
}

l.router = chain.NewRouter(
chain.ChainRouterOption(l.options.Chain),
chain.LoggerRouterOption(l.logger),
)
l.router = l.options.Router
if l.router == nil {
l.router = chain.NewRouter(chain.LoggerRouterOption(l.logger))
}

return
}
Expand Down

0 comments on commit b99292b

Please sign in to comment.