fix: issue when enabling/disabling https certs

This commit is contained in:
Johan Siebens
2023-12-28 11:29:02 +01:00
parent ea658a0e81
commit 9b8782cccf
6 changed files with 87 additions and 42 deletions
+33 -8
View File
@@ -91,6 +91,7 @@ func setDNSConfigCommand() *cobra.Command {
var nameservers []string
var magicDNS bool
var httpsCerts bool
var overrideLocalDNS bool
var tailnetID uint64
var tailnetName string
@@ -101,7 +102,7 @@ func setDNSConfigCommand() *cobra.Command {
command.Flags().Uint64Var(&tailnetID, "tailnet-id", 0, "Tailnet ID. Mutually exclusive with --tailnet.")
command.Flags().StringSliceVarP(&nameservers, "nameserver", "", []string{}, "Machines on your network will use these nameservers to resolve DNS queries.")
command.Flags().BoolVarP(&magicDNS, "magic-dns", "", false, "Enable MagicDNS for the specified Tailnet")
command.Flags().BoolVarP(&magicDNS, "https-certs", "", false, "Enable HTTPS Certificates for the specified Tailnet")
command.Flags().BoolVarP(&httpsCerts, "https-certs", "", false, "Enable HTTPS Certificates for the specified Tailnet")
command.Flags().BoolVarP(&overrideLocalDNS, "override-local-dns", "", false, "When enabled, connected clients ignore local DNS settings and always use the nameservers specified for this Tailnet")
command.PreRunE = checkRequiredTailnetAndTailnetIdFlags
@@ -140,6 +141,7 @@ func setDNSConfigCommand() *cobra.Command {
OverrideLocalDns: overrideLocalDNS,
Nameservers: globalNameservers,
Routes: routes,
HttpsCerts: httpsCerts,
},
}
resp, err := client.SetDNSConfig(context.Background(), connect.NewRequest(&req))
@@ -150,17 +152,40 @@ func setDNSConfigCommand() *cobra.Command {
config := resp.Msg.Config
var allNameservers = config.Nameservers
if resp.Msg.Message != "" {
fmt.Println(resp.Msg.Message)
fmt.Println()
}
for i, j := range config.Routes {
for _, n := range j.Routes {
allNameservers = append(allNameservers, fmt.Sprintf("%s:%s", i, n))
w := new(tabwriter.Writer)
w.Init(os.Stdout, 8, 8, 1, '\t', 0)
defer w.Flush()
fmt.Fprintf(w, "%s\t\t%v\n", "MagicDNS", config.MagicDns)
fmt.Fprintf(w, "%s\t\t%v\n", "HTTPS Certs", config.HttpsCerts)
fmt.Fprintf(w, "%s\t\t%v\n", "Override Local DNS", config.OverrideLocalDns)
if config.MagicDns {
fmt.Fprintf(w, "MagicDNS\t%s\t%s\n", config.MagicDnsSuffix, "100.100.100.100")
}
for k, r := range config.Routes {
for i, t := range r.Routes {
if i == 0 {
fmt.Fprintf(w, "SplitDNS\t%s\t%s\n", k, t)
} else {
fmt.Fprintf(w, "%s\t%s\n", "", t)
}
}
}
fmt.Printf("%-*v%v\n", 25, "Magic DNS Enabled:", config.MagicDns)
fmt.Printf("%-*v%v\n", 25, "Override Local DNS:", config.OverrideLocalDns)
fmt.Printf("%-*v%v\n", 25, "Nameservers:", strings.Join(allNameservers, ","))
for i, t := range config.Nameservers {
if i == 0 {
fmt.Fprintf(w, "%s\t%s\t%s\n", "Global", "", t)
} else {
fmt.Fprintf(w, "%s\t%s\t%s\n", "", "", t)
}
}
return nil
}
+1 -1
View File
@@ -140,7 +140,7 @@ func Start(c *config.Config) error {
repository,
)
rpcService := service.NewService(c, authProvider, repository, sessionManager)
rpcService := service.NewService(c, authProvider, dnsProvider, repository, sessionManager)
rpcPath, rpcHandler := NewRpcHandler(serverKey.SystemAdminKey, repository, rpcService)
nonTlsAppHandler := echo.New()
+8 -2
View File
@@ -52,7 +52,7 @@ func (s *Service) SetDNSConfig(ctx context.Context, req *connect.Request[api.Set
tailnet.DNSConfig = domain.DNSConfig{
MagicDNS: dnsConfig.MagicDns,
HttpsCertsEnabled: dnsConfig.HttpsCerts,
HttpsCertsEnabled: s.dnsProvider != nil && dnsConfig.HttpsCerts,
OverrideLocalDNS: dnsConfig.OverrideLocalDns,
Nameservers: dnsConfig.Nameservers,
Routes: apiRoutesToDomainRoutes(dnsConfig.Routes),
@@ -64,7 +64,13 @@ func (s *Service) SetDNSConfig(ctx context.Context, req *connect.Request[api.Set
s.sessionManager.NotifyAll(tailnet.ID)
resp := &api.SetDNSConfigResponse{Config: dnsConfig}
resp := &api.SetDNSConfigResponse{
Config: domainDNSConfigToApiDNSConfig(tailnet),
}
if dnsConfig.HttpsCerts && s.dnsProvider == nil {
resp.Message = "# HTTPS Certs cannot be enabled because a DNS provider is not properly configured"
}
return connect.NewResponse(resp), nil
}
+4 -1
View File
@@ -6,15 +6,17 @@ import (
"github.com/jsiebens/ionscale/internal/auth"
"github.com/jsiebens/ionscale/internal/config"
"github.com/jsiebens/ionscale/internal/core"
"github.com/jsiebens/ionscale/internal/dns"
"github.com/jsiebens/ionscale/internal/domain"
"github.com/jsiebens/ionscale/internal/version"
api "github.com/jsiebens/ionscale/pkg/gen/ionscale/v1"
)
func NewService(config *config.Config, authProvider auth.Provider, repository domain.Repository, sessionManager core.PollMapSessionManager) *Service {
func NewService(config *config.Config, authProvider auth.Provider, dnsProvider dns.Provider, repository domain.Repository, sessionManager core.PollMapSessionManager) *Service {
return &Service{
config: config,
authProvider: authProvider,
dnsProvider: dnsProvider,
repository: repository,
sessionManager: sessionManager,
}
@@ -23,6 +25,7 @@ func NewService(config *config.Config, authProvider auth.Provider, repository do
type Service struct {
config *config.Config
authProvider auth.Provider
dnsProvider dns.Provider
repository domain.Repository
sessionManager core.PollMapSessionManager
}