add resolver for cmd
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user