fix: make macOS ALTQ and firewall related messages silent (fixes #162)

This commit is contained in:
evilsocket 2018-03-09 14:33:29 +01:00
commit 68167b3f7c
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
2 changed files with 22 additions and 9 deletions

View file

@ -41,6 +41,20 @@ func UniqueInts(a []int, sorted bool) []int {
return uniq return uniq
} }
func ExecSilent(executable string, args []string) (string, error) {
path, err := exec.LookPath(executable)
if err != nil {
return "", err
}
raw, err := exec.Command(path, args...).CombinedOutput()
if err != nil {
return "", err
} else {
return Trim(string(raw)), nil
}
}
func Exec(executable string, args []string) (string, error) { func Exec(executable string, args []string) (string, error) {
path, err := exec.LookPath(executable) path, err := exec.LookPath(executable)
if err != nil { if err != nil {

View file

@ -39,7 +39,7 @@ func Make(iface *network.Endpoint) FirewallManager {
} }
func (f PfFirewall) sysCtlRead(param string) (string, error) { func (f PfFirewall) sysCtlRead(param string) (string, error) {
if out, err := core.Exec("sysctl", []string{param}); err != nil { if out, err := core.ExecSilent("sysctl", []string{param}); err != nil {
return "", err return "", err
} else if m := sysCtlParser.FindStringSubmatch(out); len(m) == 3 && m[1] == param { } else if m := sysCtlParser.FindStringSubmatch(out); len(m) == 3 && m[1] == param {
return m[2], nil return m[2], nil
@ -50,7 +50,7 @@ func (f PfFirewall) sysCtlRead(param string) (string, error) {
func (f PfFirewall) sysCtlWrite(param string, value string) (string, error) { func (f PfFirewall) sysCtlWrite(param string, value string) (string, error) {
args := []string{"-w", fmt.Sprintf("%s=%s", param, value)} args := []string{"-w", fmt.Sprintf("%s=%s", param, value)}
out, err := core.Exec("sysctl", args) out, err := core.ExecSilent("sysctl", args)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -113,9 +113,9 @@ func (f PfFirewall) generateRule(r *Redirection) string {
func (f *PfFirewall) enable(enabled bool) { func (f *PfFirewall) enable(enabled bool) {
f.enabled = enabled f.enabled = enabled
if enabled { if enabled {
core.Exec("pfctl", []string{"-e"}) core.ExecSilent("pfctl", []string{"-e"})
} else { } else {
core.Exec("pfctl", []string{"-d"}) core.ExecSilent("pfctl", []string{"-d"})
} }
} }
@ -133,14 +133,13 @@ func (f PfFirewall) EnableRedirection(r *Redirection, enabled bool) error {
return err return err
} }
// load the rule
if _, err := core.Exec("pfctl", []string{"-f", f.filename}); err != nil {
return err
}
// enable pf // enable pf
f.enable(true) f.enable(true)
// load the rule
if _, err := core.ExecSilent("pfctl", []string{"-f", f.filename}); err != nil {
return err
}
} else { } else {
fd, err := os.Open(f.filename) fd, err := os.Open(f.filename)
if err == nil { if err == nil {