fix: fixes 'iw executable not found in path' error on macOS (fixes #454)

This commit is contained in:
evilsocket 2019-02-20 12:27:01 +01:00
parent 871dfe3024
commit c234f3d36b
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
2 changed files with 19 additions and 8 deletions

View file

@ -27,6 +27,13 @@ func UniqueInts(a []int, sorted bool) []int {
return uniq
}
func HasBinary(executable string) bool {
if path, err := exec.LookPath(executable); err != nil || path == "" {
return false
}
return true
}
func ExecSilent(executable string, args []string) (string, error) {
path, err := exec.LookPath(executable)
if err != nil {

View file

@ -265,11 +265,13 @@ func FindInterface(name string) (*Endpoint, error) {
}
func SetWiFiRegion(region string) error {
if core.HasBinary("iw") {
if out, err := core.Exec("iw", []string{"reg", "set", region}); err != nil {
return err
} else if out != "" {
return fmt.Errorf("unexpected output while setting WiFi region %s: %s", region, out)
}
}
return nil
}
@ -283,11 +285,13 @@ func ActivateInterface(name string) error {
}
func SetInterfaceTxPower(name string, txpower int) error {
if core.HasBinary("iwconfig") {
if out, err := core.ExecSilent("iwconfig", []string{name, "txpower", fmt.Sprintf("%d", txpower)}); err != nil {
return err
} else if out != "" {
return fmt.Errorf("unexpected output while setting txpower to %d for interface %s: %s", txpower, name, out)
}
}
return nil
}