From a9fabd1b79109a027a0e928d3f8ca1d8efa7d7bd Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Thu, 19 Jan 2023 22:44:32 +0700 Subject: [PATCH] cmd/ctrld: separate iface variable for start/stop aliases While at it, also fix a bug in getDNSByResolvectl, which won't return correct DNS values if there's no "%" symbol in output. --- cmd/ctrld/cli.go | 6 ++++-- cmd/ctrld/main.go | 5 +++-- cmd/ctrld/os_linux.go | 7 ++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cmd/ctrld/cli.go b/cmd/ctrld/cli.go index 97faa91..bb9fb13 100644 --- a/cmd/ctrld/cli.go +++ b/cmd/ctrld/cli.go @@ -388,20 +388,22 @@ func initCLI() { Use: "start", Short: "Quick start service and configure DNS on interface", Run: func(cmd *cobra.Command, args []string) { + os.Args = append(os.Args, "--iface="+ifaceStartStop) startCmd.Run(cmd, args) }, } - startCmdAlias.Flags().StringVarP(&iface, "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().AddFlagSet(startCmd.Flags()) rootCmd.AddCommand(startCmdAlias) stopCmdAlias := &cobra.Command{ Use: "stop", Short: "Quick stop service and remove DNS from interface", Run: func(cmd *cobra.Command, args []string) { + os.Args = append(os.Args, "--iface="+ifaceStartStop) stopCmd.Run(cmd, args) }, } - stopCmdAlias.Flags().StringVarP(&iface, "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().AddFlagSet(stopCmd.Flags()) rootCmd.AddCommand(stopCmdAlias) diff --git a/cmd/ctrld/main.go b/cmd/ctrld/main.go index db6b852..c336a2b 100644 --- a/cmd/ctrld/main.go +++ b/cmd/ctrld/main.go @@ -33,8 +33,9 @@ var ( mainLog = rootLogger proxyLog = rootLogger - cdUID string - iface string + cdUID string + iface string + ifaceStartStop string ) func main() { diff --git a/cmd/ctrld/os_linux.go b/cmd/ctrld/os_linux.go index ac94b04..39818a3 100644 --- a/cmd/ctrld/os_linux.go +++ b/cmd/ctrld/os_linux.go @@ -78,11 +78,8 @@ func getDNSByResolvectl(iface string) []string { if err != nil { return nil } - parts := strings.SplitN(string(b), "%", 2) - if len(parts) != 2 { - return nil - } - parts = strings.Fields(parts[0]) + + parts := strings.Fields(strings.SplitN(string(b), "%", 2)[0]) if len(parts) > 2 { return parts[3:] }