diff --git a/proxy/debug.go b/proxy/debug.go index 5d2cbb8..9827d8c 100644 --- a/proxy/debug.go +++ b/proxy/debug.go @@ -27,6 +27,7 @@ func Debug() { log.Fatal(err) } + // Debug system proxy configuration fmt.Println("\nSystem Proxy:") fmt.Printf("Enabled: %t\n", proxy.Enabled) fmt.Printf("Server: %s\n\n", proxy.Server) @@ -40,10 +41,12 @@ func Debug() { } fmt.Printf("Loading commands for '%s':\n", config.Name) + // Debug Proxy Set Commands setCmds := generateCommands(config.Set, configCmd, "[PROXY PLACEHOLDER]") fmt.Println("Set Commands:") fmt.Printf("%s\n", mapCmdsToStr(setCmds)) + // Debug Proxy Unset Commands unsetCmds := generateCommands(config.Unset, configCmd, "") fmt.Println("Unset Commands:") fmt.Printf("%s\n\n", mapCmdsToStr(unsetCmds)) diff --git a/proxy/util.go b/proxy/util.go index 3ead839..da18bda 100644 --- a/proxy/util.go +++ b/proxy/util.go @@ -66,27 +66,33 @@ func generateCommands(variants []*util.Variant, configCmd, proxyServer string) [ } func ReadSystemProxy() (*Proxy, error) { + // Open registry key for internet settings key, err := registry.OpenKey(registry.CURRENT_USER, `Software\Microsoft\Windows\CurrentVersion\Internet Settings`, registry.QUERY_VALUE) if err != nil { return nil, err } defer key.Close() + // Read registry value for proxy enabled enableVal, _, err := key.GetIntegerValue("proxyEnable") if err != nil { return nil, err } + // Convert int value to bool enabled := enableVal != 0 + // Read registry value for proxy servers servers, _, err := key.GetStringValue("proxyServer") if err != nil && !errors.Is(err, registry.ErrNotExist) { return nil, err } + // Use entire value if singular server if !strings.ContainsAny(servers, ";=") { return &Proxy{Enabled: enabled, Server: servers}, nil } + // Map proxy servers into dictionary serverSplit := strings.Split(servers, ";") serverDict := make(map[string]string) for _, substr := range serverSplit { @@ -95,24 +101,29 @@ func ReadSystemProxy() (*Proxy, error) { serverDict[key] = value } + // Grab HTTP proxy server first if serverDict["http"] != "" { return &Proxy{Enabled: enabled, Server: serverDict["http"]}, nil } + // Grab HTTP proxy server second if serverDict["https"] != "" { return &Proxy{Enabled: enabled, Server: serverDict["https"]}, nil } - return nil, errors.New("You need configure either HTTP or HTTPS proxy to proceed.") + // Throw error on no usable proxy server + return nil, errors.New("You need to configure either HTTP or HTTPS proxy servers to proceed.") } func SetSystemProxy(state bool) error { + // Open registry key for internet settings key, err := registry.OpenKey(registry.CURRENT_USER, `Software\Microsoft\Windows\CurrentVersion\Internet Settings`, registry.SET_VALUE) if err != nil { return err } defer key.Close() + // Get state as int instead of bool var value uint32 if state { value = 1 @@ -120,6 +131,7 @@ func SetSystemProxy(state bool) error { value = 0 } + // Write registry value to enable/disable proxy err = key.SetDWordValue("proxyEnable", value) return err }