add resolver for cmd

This commit is contained in:
ginuerzh
2022-01-18 23:54:59 +08:00
parent 24971091e3
commit a0ee8bc45c
11 changed files with 373 additions and 26 deletions

View File

@ -75,6 +75,28 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
}
}
cfg.Services = append(cfg.Services, service)
md := metadata.MapMetadata(service.Handler.Metadata)
if v := metadata.GetString(md, "resolver"); v != "" {
resolverCfg := &config.ResolverConfig{
Name: fmt.Sprintf("resolver-%d", len(cfg.Resolvers)),
}
for _, rs := range strings.Split(v, ",") {
if rs == "" {
continue
}
resolverCfg.Nameservers = append(
resolverCfg.Nameservers,
config.NameserverConfig{
Addr: rs,
},
)
}
service.Handler.Resolver = resolverCfg.Name
cfg.Resolvers = append(cfg.Resolvers, resolverCfg)
md.Del("resolver")
}
}
return cfg, nil
@ -159,6 +181,10 @@ func buildServiceConfig(url *url.URL) (*config.ServiceConfig, error) {
tlsConfig = nil
}
if v := metadata.GetString(md, "dns"); v != "" {
md.Set("dns", strings.Split(v, ","))
}
svc.Handler = &config.HandlerConfig{
Type: handler,
Auths: auths,
@ -259,7 +285,7 @@ func normCmd(s string) (*url.URL, error) {
return nil, ErrInvalidCmd
}
if !strings.Contains(s, "://") {
if s[0] == ':' {
s = "auto://" + s
}

View File

@ -359,7 +359,15 @@ func resolverFromConfig(cfg *config.ResolverConfig) (resolver.Resolver, error) {
Hostname: server.Hostname,
})
}
return resolver_impl.NewResolver(nameservers)
logger := log.WithFields(map[string]interface{}{
"kind": "resolver",
"resolver": cfg.Name,
})
return resolver_impl.NewResolver(
nameservers,
resolver_impl.LoggerResolverOption(logger),
)
}
func hostsFromConfig(cfg *config.HostsConfig) hostspkg.HostMapper {

View File

@ -18,6 +18,7 @@ import (
_ "github.com/go-gost/gost/pkg/dialer/ftcp"
_ "github.com/go-gost/gost/pkg/dialer/http2"
_ "github.com/go-gost/gost/pkg/dialer/http2/h2"
_ "github.com/go-gost/gost/pkg/dialer/http3"
_ "github.com/go-gost/gost/pkg/dialer/kcp"
_ "github.com/go-gost/gost/pkg/dialer/obfs/http"
_ "github.com/go-gost/gost/pkg/dialer/obfs/tls"