diff --git a/cmd/spoof-dpi/main.go b/cmd/spoof-dpi/main.go index 57fc3b2..223bd5d 100644 --- a/cmd/spoof-dpi/main.go +++ b/cmd/spoof-dpi/main.go @@ -39,8 +39,10 @@ func main() { util.PrintColoredBanner() } - if err := util.SetOsProxy(*config.Port); err != nil { - log.Fatal(err) + if *config.SystemProxy { + if err := util.SetOsProxy(*config.Port); err != nil { + log.Fatal(err) + } } go pxy.Start() @@ -63,7 +65,10 @@ func main() { }() <-done - if err := util.UnsetOsProxy(); err != nil { - log.Fatal(err) + + if *config.SystemProxy { + if err := util.UnsetOsProxy(); err != nil { + log.Fatal(err) + } } } diff --git a/util/config.go b/util/config.go index 9962e8b..1adf5e6 100644 --- a/util/config.go +++ b/util/config.go @@ -19,6 +19,7 @@ type Config struct { EnableDoh *bool Debug *bool NoBanner *bool + SystemProxy *bool Timeout *int AllowedPattern *regexp.Regexp AllowedUrls *regexp.Regexp @@ -54,6 +55,7 @@ func ParseArgs() { config.EnableDoh = flag.Bool("enable-doh", false, "enable 'dns over https'") config.Debug = flag.Bool("debug", false, "enable debug output") config.NoBanner = flag.Bool("no-banner", false, "disable banner") + config.SystemProxy = flag.Bool("system-proxy", false, "enable system-wide proxy") config.Timeout = flag.Int("timeout", 0, "timeout in milliseconds. no timeout when not given") config.WindowSize = flag.Int("window-size", 0, `chunk size, in number of bytes, for fragmented client hello, try lower values if the default value doesn't bypass the DPI;