From 1300d518222073a39fde43ebfaca734434cde238 Mon Sep 17 00:00:00 2001 From: evilsocket Date: Thu, 15 Feb 2018 20:24:57 +0100 Subject: [PATCH] refact: restored firewall_windows.go functionalities as they still do work system wide and might be useful --- firewall/firewall_windows.go | 53 ++++++++++++++---------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/firewall/firewall_windows.go b/firewall/firewall_windows.go index 5bfcdec0..5f1516cd 100644 --- a/firewall/firewall_windows.go +++ b/firewall/firewall_windows.go @@ -26,18 +26,13 @@ func Make(iface *net.Endpoint) FirewallManager { return firewall } -// TODO: This should be obsolete now .. Clean func (f WindowsFirewall) IsForwardingEnabled() bool { - - fmt.Errorf("Forwarding is dead in Windows .. cleanup") - return false - - //if out, err := core.Exec("netsh", []string{"interface", "ipv4", "dump"}); err != nil { - // fmt.Printf("%s\n", err) - // return false - //} else { - // return strings.Contains(out, "forwarding=enabled") - //} + if out, err := core.Exec("netsh", []string{"interface", "ipv4", "dump"}); err != nil { + fmt.Printf("%s\n", err) + return false + } else { + return strings.Contains(out, "forwarding=enabled") + } } func (f WindowsFirewall) isSuccess(output string) bool { @@ -48,27 +43,21 @@ func (f WindowsFirewall) isSuccess(output string) bool { } } -// TODO: This should be obsolete now .. Clean func (f WindowsFirewall) EnableForwarding(enabled bool) error { + v := "enabled" + if enabled == false { + v = "disabled" + } + out, err := core.Exec("netsh", []string{"interface", "ipv4", "set", "interface", fmt.Sprintf("%d", f.iface.Index), fmt.Sprintf("forwarding=\"%s\"", v)}) + if err != nil { + return err + } + + if f.isSuccess(out) == false { + return fmt.Errorf("Unexpected netsh output: %s", out) + } - fmt.Errorf("Forwarding is dead in Windows .. cleanup") return nil - - // - //v := "enabled" - //if enabled == false { - // v = "disabled" - //} - //out, err := core.Exec("netsh", []string{"interface", "ipv4", "set", "interface", fmt.Sprintf("%d", f.iface.Index), fmt.Sprintf("forwarding=\"%s\"", v)}) - //if err != nil { - // return err - //} - // - //if f.isSuccess(out) == false { - // return fmt.Errorf("Unexpected netsh output: %s", out) - //} - // - //return nil } func (f WindowsFirewall) generateRule(r *Redirection, enabled bool) []string { @@ -145,7 +134,7 @@ func (f WindowsFirewall) Restore() { } } - //if err := f.EnableForwarding(f.forwarding); err != nil { - // fmt.Printf("%s", err) - //} + if err := f.EnableForwarding(f.forwarding); err != nil { + fmt.Printf("%s", err) + } }