diff options
author | Kali Kaneko (leap communications) <kali@leap.se> | 2019-09-05 01:14:06 +0200 |
---|---|---|
committer | Kali Kaneko (leap communications) <kali@leap.se> | 2019-09-05 01:18:47 +0200 |
commit | 80993915cad062e7b1efe86bfe18faae809d25bb (patch) | |
tree | 7b54a34a634b221563ac7d200db6eb4665e460d2 | |
parent | 1259bed3f1d316874fc4eb790fd9ef31bffeab0f (diff) |
[bug] parse the result of firewall/isup for osx
-rw-r--r-- | pkg/helper/darwin.go | 3 | ||||
-rw-r--r-- | pkg/standalone/launcher.go | 19 |
2 files changed, 19 insertions, 3 deletions
diff --git a/pkg/helper/darwin.go b/pkg/helper/darwin.go index f291322..0cee714 100644 --- a/pkg/helper/darwin.go +++ b/pkg/helper/darwin.go @@ -27,7 +27,6 @@ To inspect the rules in the firewall manually, use the bitmask anchor: package helper import ( - "bytes" "errors" "fmt" "log" @@ -124,7 +123,7 @@ func firewallIsUp() bool { log.Printf(string(out)) return false } - return bytes.Contains(out, []byte("block out proto udp to any port 53")) + return strings.Contains(string(out), "block drop out proto udp from any to any port = 53") } func enablePf() { diff --git a/pkg/standalone/launcher.go b/pkg/standalone/launcher.go index 36d7ab0..ed9ea5d 100644 --- a/pkg/standalone/launcher.go +++ b/pkg/standalone/launcher.go @@ -23,6 +23,7 @@ import ( "io" "io/ioutil" "net/http" + "strconv" "0xacab.org/leap/bitmask-vpn/pkg/standalone/bonafide" ) @@ -75,13 +76,29 @@ func (l *launcher) firewallStop() error { } func (l *launcher) firewallIsUp() bool { + var isup bool = false res, err := http.Post(helperAddr+"/firewall/isup", "", nil) if err != nil { return false } defer res.Body.Close() - return res.StatusCode == http.StatusOK + if res.StatusCode != http.StatusOK { + fmt.Printf("Got an error status code for firewall/isup: %v\n", res.StatusCode) + isup = false + } else { + upStr, err := ioutil.ReadAll(res.Body) + if err != nil { + fmt.Errorf("Error getting body for firewall/isup: %q", err) + return false + } + isup, err = strconv.ParseBool(string(upStr)) + if err != nil { + fmt.Errorf("Error parsing body for firewall/isup: %q", err) + return false + } + } + return isup } func (l *launcher) send(path string, body []byte) error { |