all: add CLI flags for no config start

This commit adds the ability to start `ctrld` without config file. All
necessary information can be provided via command line flags, either in
base64 encoded config or launch arguments.
This commit is contained in:
Cuong Manh Le
2022-12-21 19:08:19 +07:00
committed by Cuong Manh Le
parent 30fefe7ab9
commit b93970ccfd
6 changed files with 205 additions and 30 deletions

View File

@@ -11,12 +11,12 @@ import (
)
const (
resolverTypeDOH = "doh"
resolverTypeDOH3 = "doh3"
resolverTypeDOT = "dot"
resolverTypeDOQ = "doq"
resolverTypeOS = "os"
resolverTypeLegacy = "legacy"
ResolverTypeDOH = "doh"
ResolverTypeDOH3 = "doh3"
ResolverTypeDOT = "dot"
ResolverTypeDOQ = "doq"
ResolverTypeOS = "os"
ResolverTypeLegacy = "legacy"
)
var bootstrapDNS = "76.76.2.0"
@@ -34,15 +34,15 @@ var errUnknownResolver = errors.New("unknown resolver")
func NewResolver(uc *UpstreamConfig) (Resolver, error) {
typ, endpoint := uc.Type, uc.Endpoint
switch typ {
case resolverTypeDOH, resolverTypeDOH3:
case ResolverTypeDOH, ResolverTypeDOH3:
return newDohResolver(uc), nil
case resolverTypeDOT:
case ResolverTypeDOT:
return &dotResolver{uc: uc}, nil
case resolverTypeDOQ:
case ResolverTypeDOQ:
return &doqResolver{uc: uc}, nil
case resolverTypeOS:
case ResolverTypeOS:
return &osResolver{}, nil
case resolverTypeLegacy:
case ResolverTypeLegacy:
return &legacyResolver{endpoint: endpoint}, nil
}
return nil, fmt.Errorf("%w: %s", errUnknownResolver, typ)