From 99b95029cee8563c68f2b4d546f108d75f9f35fb Mon Sep 17 00:00:00 2001 From: zc Date: Thu, 6 Jul 2023 21:24:21 +0800 Subject: [PATCH 1/3] fix: cmd.go should use no_udp flag from saved config --- cmd/cmd.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cmd/cmd.go b/cmd/cmd.go index 769af62..c7f5a6d 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -88,10 +88,7 @@ $ gg git clone https://github.com/mzz2017/gg.git`) return } - noUDP, err := cmd.Flags().GetBool("noudp") - if err != nil { - logrus.Fatal("GetBool(noudp):", err) - } + noUDP := config.ParamsObj.NoUDP if !noUDP && !dialer.SupportUDP() { log.Info("Your proxy server does not support UDP, so we will not redirect UDP traffic.") } From 08216a8c8f40a4f016d26cbb7a5c1570e4cdbf93 Mon Sep 17 00:00:00 2001 From: zc Date: Thu, 6 Jul 2023 21:47:48 +0800 Subject: [PATCH 2/3] Set no_udp from cmd flags first then user config --- cmd/cmd.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/cmd.go b/cmd/cmd.go index c7f5a6d..e7bc03d 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -88,7 +88,13 @@ $ gg git clone https://github.com/mzz2017/gg.git`) return } - noUDP := config.ParamsObj.NoUDP + noUDP, err := cmd.Flags().GetBool("noudp") + if err != nil { + logrus.Fatal("GetBool(noudp):", err) + } + if !noUDP && v.GetBool("no_udp") { + noUDP = true + } if !noUDP && !dialer.SupportUDP() { log.Info("Your proxy server does not support UDP, so we will not redirect UDP traffic.") } From ada75bd60e8429028a38e32e7316cab664c7c1be Mon Sep 17 00:00:00 2001 From: mzz2017 <2017@duck.com> Date: Thu, 6 Jul 2023 23:51:22 +0800 Subject: [PATCH 3/3] chore: use cmd.Flags().Lookup instead --- cmd/cmd.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/cmd/cmd.go b/cmd/cmd.go index e7bc03d..7ef2ada 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -4,17 +4,18 @@ import ( "context" "errors" "fmt" - "github.com/mzz2017/gg/cmd/infra" - "github.com/mzz2017/gg/tracer" - "github.com/sirupsen/logrus" - "github.com/spf13/cobra" - "github.com/spf13/viper" "os" "os/exec" "os/signal" "path/filepath" "runtime" "syscall" + + "github.com/mzz2017/gg/cmd/infra" + "github.com/mzz2017/gg/tracer" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" + "github.com/spf13/viper" ) var ( @@ -88,12 +89,15 @@ $ gg git clone https://github.com/mzz2017/gg.git`) return } - noUDP, err := cmd.Flags().GetBool("noudp") - if err != nil { - logrus.Fatal("GetBool(noudp):", err) - } - if !noUDP && v.GetBool("no_udp") { - noUDP = true + // Get no_udp from argument first, then from configuration file. + var noUDP bool + noUDPFlag := cmd.Flags().Lookup("noudp") + if noUDPFlag != nil && noUDPFlag.Changed { + if noUDP, err = cmd.Flags().GetBool("noudp"); err != nil { + logrus.Fatal("GetBool(noudp):", err) + } + } else { + noUDP = v.GetBool("no_udp") } if !noUDP && !dialer.SupportUDP() { log.Info("Your proxy server does not support UDP, so we will not redirect UDP traffic.")