cmd/cli: doing router setup based on "--iface" flag

Solving downgrading issue from newer version to v1.3.1, and also easier
to explain the logic: either doing "magic stuff" or do nothing.
This commit is contained in:
Cuong Manh Le
2023-12-08 23:04:15 +07:00
committed by Cuong Manh Le
parent cebfd12d5c
commit e92619620d
2 changed files with 22 additions and 38 deletions
+2 -16
View File
@@ -144,8 +144,6 @@ func initCLI() {
_ = runCmd.Flags().MarkHidden("homedir") _ = runCmd.Flags().MarkHidden("homedir")
runCmd.Flags().StringVarP(&iface, "iface", "", "", `Update DNS setting for iface, "auto" means the default interface gateway`) runCmd.Flags().StringVarP(&iface, "iface", "", "", `Update DNS setting for iface, "auto" means the default interface gateway`)
_ = runCmd.Flags().MarkHidden("iface") _ = runCmd.Flags().MarkHidden("iface")
runCmd.Flags().BoolVarP(&setupRouter, "router", "", false, "Do setup router")
_ = runCmd.Flags().MarkHidden("router")
runCmd.Flags().StringVarP(&cdUpstreamProto, "proto", "", ctrld.ResolverTypeDOH, `Control D upstream type, either "doh" or "doh3"`) runCmd.Flags().StringVarP(&cdUpstreamProto, "proto", "", ctrld.ResolverTypeDOH, `Control D upstream type, either "doh" or "doh3"`)
rootCmd.AddCommand(runCmd) rootCmd.AddCommand(runCmd)
@@ -255,7 +253,7 @@ func initCLI() {
return return
} }
if router.Name() != "" && setupRouter { if router.Name() != "" && iface != "" {
mainLog.Load().Debug().Msg("cleaning up router before installing") mainLog.Load().Debug().Msg("cleaning up router before installing")
_ = p.router.Cleanup() _ = p.router.Cleanup()
} }
@@ -312,8 +310,6 @@ func initCLI() {
startCmd.Flags().StringVarP(&iface, "iface", "", "", `Update DNS setting for iface, "auto" means the default interface gateway`) startCmd.Flags().StringVarP(&iface, "iface", "", "", `Update DNS setting for iface, "auto" means the default interface gateway`)
startCmd.Flags().StringVarP(&nextdns, nextdnsFlagName, "", "", "NextDNS resolver id") startCmd.Flags().StringVarP(&nextdns, nextdnsFlagName, "", "", "NextDNS resolver id")
startCmd.Flags().StringVarP(&cdUpstreamProto, "proto", "", ctrld.ResolverTypeDOH, `Control D upstream type, either "doh" or "doh3"`) startCmd.Flags().StringVarP(&cdUpstreamProto, "proto", "", ctrld.ResolverTypeDOH, `Control D upstream type, either "doh" or "doh3"`)
startCmd.Flags().BoolVarP(&setupRouter, "router", "", false, "Do router setup")
_ = startCmd.Flags().MarkHidden("router")
routerCmd := &cobra.Command{ routerCmd := &cobra.Command{
Use: "setup", Use: "setup",
@@ -598,16 +594,11 @@ NOTE: Uninstalling will set DNS to values provided by DHCP.`,
if !cmd.Flags().Changed("iface") { if !cmd.Flags().Changed("iface") {
os.Args = append(os.Args, "--iface="+ifaceStartStop) os.Args = append(os.Args, "--iface="+ifaceStartStop)
} }
if !cmd.Flags().Changed("router") {
os.Args = append(os.Args, fmt.Sprintf("--router=%v", setupRouterStartStop))
}
iface = ifaceStartStop iface = ifaceStartStop
setupRouter = setupRouterStartStop
startCmd.Run(cmd, args) startCmd.Run(cmd, args)
}, },
} }
startCmdAlias.Flags().StringVarP(&ifaceStartStop, "iface", "", "auto", `Update DNS setting for iface, "auto" means the default interface gateway`) startCmdAlias.Flags().StringVarP(&ifaceStartStop, "iface", "", "auto", `Update DNS setting for iface, "auto" means the default interface gateway`)
startCmdAlias.Flags().BoolVarP(&setupRouterStartStop, "router", "", true, "Do router setup")
startCmdAlias.Flags().AddFlagSet(startCmd.Flags()) startCmdAlias.Flags().AddFlagSet(startCmd.Flags())
rootCmd.AddCommand(startCmdAlias) rootCmd.AddCommand(startCmdAlias)
stopCmdAlias := &cobra.Command{ stopCmdAlias := &cobra.Command{
@@ -621,16 +612,11 @@ NOTE: Uninstalling will set DNS to values provided by DHCP.`,
if !cmd.Flags().Changed("iface") { if !cmd.Flags().Changed("iface") {
os.Args = append(os.Args, "--iface="+ifaceStartStop) os.Args = append(os.Args, "--iface="+ifaceStartStop)
} }
if !cmd.Flags().Changed("router") {
os.Args = append(os.Args, fmt.Sprintf("--router=%v", setupRouterStartStop))
}
iface = ifaceStartStop iface = ifaceStartStop
setupRouter = setupRouterStartStop
stopCmd.Run(cmd, args) stopCmd.Run(cmd, args)
}, },
} }
stopCmdAlias.Flags().StringVarP(&ifaceStartStop, "iface", "", "auto", `Reset DNS setting for iface, "auto" means the default interface gateway`) stopCmdAlias.Flags().StringVarP(&ifaceStartStop, "iface", "", "auto", `Reset DNS setting for iface, "auto" means the default interface gateway`)
stopCmdAlias.Flags().BoolVarP(&setupRouterStartStop, "router", "", true, "Do router setup")
stopCmdAlias.Flags().AddFlagSet(stopCmd.Flags()) stopCmdAlias.Flags().AddFlagSet(stopCmd.Flags())
rootCmd.AddCommand(stopCmdAlias) rootCmd.AddCommand(stopCmdAlias)
@@ -991,7 +977,7 @@ func run(appCallback *AppCallback, stopCh chan struct{}) {
if cp := router.CertPool(); cp != nil { if cp := router.CertPool(); cp != nil {
rootCertPool = cp rootCertPool = cp
} }
if setupRouter { if iface != "" {
p.onStarted = append(p.onStarted, func() { p.onStarted = append(p.onStarted, func() {
mainLog.Load().Debug().Msg("router setup on start") mainLog.Load().Debug().Msg("router setup on start")
if err := p.router.Setup(); err != nil { if err := p.router.Setup(); err != nil {
+20 -22
View File
@@ -14,28 +14,26 @@ import (
) )
var ( var (
configPath string configPath string
configBase64 string configBase64 string
daemon bool daemon bool
listenAddress string listenAddress string
primaryUpstream string primaryUpstream string
secondaryUpstream string secondaryUpstream string
domains []string domains []string
logPath string logPath string
homedir string homedir string
cacheSize int cacheSize int
cfg ctrld.Config cfg ctrld.Config
verbose int verbose int
silent bool silent bool
cdUID string cdUID string
cdOrg string cdOrg string
cdDev bool cdDev bool
iface string iface string
ifaceStartStop string ifaceStartStop string
nextdns string nextdns string
cdUpstreamProto string cdUpstreamProto string
setupRouter bool
setupRouterStartStop bool
mainLog atomic.Pointer[zerolog.Logger] mainLog atomic.Pointer[zerolog.Logger]
consoleWriter zerolog.ConsoleWriter consoleWriter zerolog.ConsoleWriter