From 80993915cad062e7b1efe86bfe18faae809d25bb Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Thu, 5 Sep 2019 01:14:06 +0200 Subject: [bug] parse the result of firewall/isup for osx --- pkg/helper/darwin.go | 3 +-- pkg/standalone/launcher.go | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'pkg') 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 { -- cgit v1.2.3