Cleaning fw_windows

This commit is contained in:
Giuseppe Trotta 2018-02-13 01:19:49 +01:00
commit ce3302c359

View file

@ -21,43 +21,54 @@ func Make(iface *net.Endpoint) FirewallManager {
redirections: make(map[string]*Redirection, 0), redirections: make(map[string]*Redirection, 0),
} }
firewall.forwarding = firewall.IsForwardingEnabled() // firewall.forwarding = firewall.IsForwardingEnabled()
return firewall return firewall
} }
// TODO: This should be obsolete now .. Clean
func (f WindowsFirewall) IsForwardingEnabled() bool { func (f WindowsFirewall) IsForwardingEnabled() bool {
if out, err := core.Exec("netsh", []string{"interface", "ipv4", "dump"}); err != nil {
fmt.Printf("%s\n", err) fmt.Errorf("Forwarding is dead in Windows .. cleanup")
return false 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 { func (f WindowsFirewall) isSuccess(output string) bool {
if trimmed := core.Trim(output); trimmed == "" || strings.Contains(trimmed, "OK") == true { if trimmed := core.Trim(output); trimmed == "" || strings.Contains(strings.ToUpper(trimmed), "OK") == true {
return true return true
} else { } else {
return false return false
} }
} }
// TODO: This should be obsolete now .. Clean
func (f WindowsFirewall) EnableForwarding(enabled bool) error { 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 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 { func (f WindowsFirewall) generateRule(r *Redirection, enabled bool) []string {
@ -96,7 +107,7 @@ func (f *WindowsFirewall) AllowPort(port int, address string, proto string, allo
} }
if f.isSuccess(out) == false { if f.isSuccess(out) == false {
return fmt.Errorf("Unexpected netsh output: %s", out) return fmt.Errorf("Unexpected netsh output in AllowPort: %s", out)
} }
return nil return nil
@ -134,7 +145,7 @@ func (f WindowsFirewall) Restore() {
} }
} }
if err := f.EnableForwarding(f.forwarding); err != nil { //if err := f.EnableForwarding(f.forwarding); err != nil {
fmt.Printf("%s", err) // fmt.Printf("%s", err)
} //}
} }