diff options
Diffstat (limited to 'pkg/helper')
-rw-r--r-- | pkg/helper/darwin.go | 17 | ||||
-rw-r--r-- | pkg/helper/helper.go | 8 | ||||
-rw-r--r-- | pkg/helper/linux.go | 4 | ||||
-rw-r--r-- | pkg/helper/windows.go | 11 |
4 files changed, 24 insertions, 16 deletions
diff --git a/pkg/helper/darwin.go b/pkg/helper/darwin.go index 7269981..a9f8e00 100644 --- a/pkg/helper/darwin.go +++ b/pkg/helper/darwin.go @@ -29,11 +29,11 @@ package helper import ( "errors" "fmt" - "path/filepath" "log" "os" "os/exec" "path" + "path/filepath" "strconv" "strings" @@ -43,8 +43,8 @@ import ( const ( bitmask_anchor = "com.apple/250.BitmaskFirewall" gateways_table = "bitmask_gateways" - pfctl = "/sbin/pfctl" - LogFolder = "/var/log/" + pfctl = "/sbin/pfctl" + LogFolder = "/var/log/" ) func _getExecPath() string { @@ -119,9 +119,9 @@ func kill(cmd *exec.Cmd) error { return nil } -func firewallStart(gateways []string) error { +func firewallStart(gateways []string, mode string) error { enablePf() - err := resetGatewaysTable(gateways) + err := resetGatewaysTable(gateways, mode) if err != nil { return err } @@ -155,7 +155,7 @@ func enablePf() { cmd.Run() } -func resetGatewaysTable(gateways []string) error { +func resetGatewaysTable(gateways []string, mode string) error { log.Println("Resetting gateways") cmd := exec.Command(pfctl, "-a", bitmask_anchor, "-t", gateways_table, "-T", "delete") err := cmd.Run() @@ -172,6 +172,11 @@ func resetGatewaysTable(gateways []string) error { } } + nameserver := nameserverTCP + if mode == "udp" { + nameserver = nameserverUDP + } + cmd = exec.Command(pfctl, "-a", bitmask_anchor, "-t", gateways_table, "-T", "add", nameserver) return cmd.Run() diff --git a/pkg/helper/helper.go b/pkg/helper/helper.go index d23cefd..7b6643b 100644 --- a/pkg/helper/helper.go +++ b/pkg/helper/helper.go @@ -122,6 +122,12 @@ func (openvpn *openvpnT) kill() error { } func firewallStartHandler(w http.ResponseWriter, r *http.Request) { + mode := "tcp" + query := r.URL.Query() + udp, udpParam := query["udp"] + if udpParam && len(udp) == 1 && udp[0] == "1" { + mode = "udp" + } gateways, err := getArgs(r) if err != nil { log.Printf("An error has occurred processing gateways: %v", err) @@ -135,7 +141,7 @@ func firewallStartHandler(w http.ResponseWriter, r *http.Request) { } } - err = firewallStart(gateways) + err = firewallStart(gateways, mode) if err != nil { log.Printf("Error starting firewall: %v", err) w.Write([]byte(err.Error())) diff --git a/pkg/helper/linux.go b/pkg/helper/linux.go index d6f30f2..57fbdd9 100644 --- a/pkg/helper/linux.go +++ b/pkg/helper/linux.go @@ -33,7 +33,7 @@ const ( ) var ( - snapOpenvpnPath = "/snap/bin/" + config.BinaryName + ".openvpn" + snapOpenvpnPath = "/snap/bin/" + config.BinaryName + ".openvpn" ) func getPlatformOpenvpnFlags() []string { @@ -68,7 +68,7 @@ func kill(cmd *exec.Cmd) error { return cmd.Process.Signal(os.Interrupt) } -func firewallStart(gateways []string) error { +func firewallStart(gateways []string, mode string) error { log.Println("Start firewall: do nothing, not implemented") return nil } diff --git a/pkg/helper/windows.go b/pkg/helper/windows.go index 43436ad..ca1642e 100644 --- a/pkg/helper/windows.go +++ b/pkg/helper/windows.go @@ -21,25 +21,23 @@ import ( "log" "os" "os/exec" + "path" "strconv" "strings" - "path" "golang.org/x/sys/windows" "golang.org/x/sys/windows/svc" ) - - var ( - svcName = BinaryName + `-helper-v2` + svcName = BinaryName + `-helper-v2` // XXX this is set to c:\WINDOWS\system32 on initialization. Do not use it, use a function call instead. appPath = getExecDir() LogFolder = getExecDir() openvpnPath = path.Join(appPath, "openvpn.exe") chocoOpenvpnPath = `C:\Program Files\OpenVPN\bin\openvpn.exe` - httpServerConf = &httpConf{} + httpServerConf = &httpConf{} ) func getPlatformOpenvpnFlags() []string { @@ -63,7 +61,6 @@ type httpConf struct { BindAddr string } - // parseCliArgs allows the helper binary to install/uninstall itself. It requires admin privileges. // However, be warned: if you intend to use it from the command line, you will have to compile it with the Go compiler yourself. // the version we're shipping (ie, cross-compiled with the mingw compiler) apparently is not able to output to stdout/stderr properly. @@ -154,7 +151,7 @@ func kill(cmd *exec.Cmd) error { return cmd.Process.Kill() } -func firewallStart(gateways []string) error { +func firewallStart(gateways []string, mode string) error { log.Println("Start firewall: do nothing, not implemented") return nil } |