Fix router

This commit is contained in:
世界 2022-11-28 13:10:56 +08:00
parent 8dcafa5b33
commit a92412ecac
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
2 changed files with 9 additions and 10 deletions

3
box.go
View file

@ -97,8 +97,7 @@ func New(ctx context.Context, options option.Options) (*Box, error) {
router, err := route.NewRouter( router, err := route.NewRouter(
ctx, ctx,
logFactory.NewLogger("router"), logFactory,
logFactory.NewLogger("dns"),
common.PtrValueOrDefault(options.Route), common.PtrValueOrDefault(options.Route),
common.PtrValueOrDefault(options.DNS), common.PtrValueOrDefault(options.DNS),
options.Inbounds, options.Inbounds,

View file

@ -99,7 +99,7 @@ type Router struct {
v2rayServer adapter.V2RayServer v2rayServer adapter.V2RayServer
} }
func NewRouter(ctx context.Context, logger log.ContextLogger, dnsLogger log.ContextLogger, options option.RouteOptions, dnsOptions option.DNSOptions, inbounds []option.Inbound) (*Router, error) { func NewRouter(ctx context.Context, logFactory log.Factory, options option.RouteOptions, dnsOptions option.DNSOptions, inbounds []option.Inbound) (*Router, error) {
if options.DefaultInterface != "" { if options.DefaultInterface != "" {
warnDefaultInterfaceOnUnsupportedPlatform.Check() warnDefaultInterfaceOnUnsupportedPlatform.Check()
} }
@ -112,8 +112,8 @@ func NewRouter(ctx context.Context, logger log.ContextLogger, dnsLogger log.Cont
router := &Router{ router := &Router{
ctx: ctx, ctx: ctx,
logger: logger, logger: logFactory.NewLogger("router"),
dnsLogger: dnsLogger, dnsLogger: logFactory.NewLogger("dns"),
outboundByTag: make(map[string]adapter.Outbound), outboundByTag: make(map[string]adapter.Outbound),
rules: make([]adapter.Rule, 0, len(options.Rules)), rules: make([]adapter.Rule, 0, len(options.Rules)),
dnsRules: make([]adapter.DNSRule, 0, len(dnsOptions.Rules)), dnsRules: make([]adapter.DNSRule, 0, len(dnsOptions.Rules)),
@ -130,14 +130,14 @@ func NewRouter(ctx context.Context, logger log.ContextLogger, dnsLogger log.Cont
defaultMark: options.DefaultMark, defaultMark: options.DefaultMark,
} }
for i, ruleOptions := range options.Rules { for i, ruleOptions := range options.Rules {
routeRule, err := NewRule(router, logger, ruleOptions) routeRule, err := NewRule(router, router.logger, ruleOptions)
if err != nil { if err != nil {
return nil, E.Cause(err, "parse rule[", i, "]") return nil, E.Cause(err, "parse rule[", i, "]")
} }
router.rules = append(router.rules, routeRule) router.rules = append(router.rules, routeRule)
} }
for i, dnsRuleOptions := range dnsOptions.Rules { for i, dnsRuleOptions := range dnsOptions.Rules {
dnsRule, err := NewDNSRule(router, logger, dnsRuleOptions) dnsRule, err := NewDNSRule(router, router.logger, dnsRuleOptions)
if err != nil { if err != nil {
return nil, E.Cause(err, "parse dns rule[", i, "]") return nil, E.Cause(err, "parse dns rule[", i, "]")
} }
@ -197,7 +197,7 @@ func NewRouter(ctx context.Context, logger log.ContextLogger, dnsLogger log.Cont
return nil, E.New("parse dns server[", tag, "]: missing address_resolver") return nil, E.New("parse dns server[", tag, "]: missing address_resolver")
} }
} }
transport, err := dns.CreateTransport(ctx, detour, server.Address) transport, err := dns.CreateTransport(ctx, logFactory.NewLogger(F.ToString("dns/transport[", i, "]")), detour, server.Address)
if err != nil { if err != nil {
return nil, E.Cause(err, "parse dns server[", tag, "]") return nil, E.Cause(err, "parse dns server[", tag, "]")
} }
@ -279,12 +279,12 @@ func NewRouter(ctx context.Context, logger log.ContextLogger, dnsLogger log.Cont
} }
if needFindProcess { if needFindProcess {
searcher, err := process.NewSearcher(process.Config{ searcher, err := process.NewSearcher(process.Config{
Logger: logger, Logger: logFactory.NewLogger("router/process"),
PackageManager: router.packageManager, PackageManager: router.packageManager,
}) })
if err != nil { if err != nil {
if err != os.ErrInvalid { if err != os.ErrInvalid {
logger.Warn(E.Cause(err, "create process searcher")) router.logger.Warn(E.Cause(err, "create process searcher"))
} }
} else { } else {
router.processSearcher = searcher router.processSearcher = searcher