diff --git a/netclient/config/config.go b/netclient/config/config.go index 916203e1..d5e6e6ed 100644 --- a/netclient/config/config.go +++ b/netclient/config/config.go @@ -264,32 +264,28 @@ func ReadConfig(network string) (*ClientConfig, error) { err := errors.New("no network provided - exiting") return nil, err } - nofile := false home := ncutils.GetNetclientPathSpecific() file := fmt.Sprintf(home + "netconfig-" + network) f, err := os.Open(file) - if err != nil { if err = ReplaceWithBackup(network); err != nil { - nofile = true + return nil, err } f, err = os.Open(file) if err != nil { - nofile = true + return nil, err } } defer f.Close() var cfg ClientConfig - - if !nofile { - decoder := yaml.NewDecoder(f) - err = decoder.Decode(&cfg) - if err != nil { - fmt.Println("trouble decoding file") - return nil, err - } + decoder := yaml.NewDecoder(f) + err = decoder.Decode(&cfg) + if err != nil { + logger.Log(2, "trouble decoding file", err.Error()) + return nil, err } + return &cfg, err } diff --git a/netclient/functions/common.go b/netclient/functions/common.go index b6f175b8..04ddbe38 100644 --- a/netclient/functions/common.go +++ b/netclient/functions/common.go @@ -193,7 +193,6 @@ func LeaveNetwork(network string) error { if wgErr == nil && removeIface != "" { removeIface = macIface } - wgErr = nil } dev, devErr := wgClient.Device(removeIface) if devErr == nil { @@ -224,18 +223,24 @@ func DeleteInterface(ifacename string, postdown string) error { // WipeLocal - wipes local instance func WipeLocal(network string) error { - cfg, err := config.ReadConfig(network) - if err != nil { - return err + var ifacename string + + if network == "" { + return errors.New("no network provided") } - nodecfg := cfg.Node - ifacename := nodecfg.Interface - if ifacename != "" { - if err = wireguard.RemoveConf(ifacename, true); err == nil { - logger.Log(1, "network:", nodecfg.Network, "removed WireGuard interface: ", ifacename) - } else if strings.Contains(err.Error(), "does not exist") { - err = nil + cfg, err := config.ReadConfig(network) + if err == nil { + nodecfg := cfg.Node + ifacename = nodecfg.Interface + if ifacename != "" { + if err = wireguard.RemoveConf(ifacename, true); err == nil { + logger.Log(1, "network:", nodecfg.Network, "removed WireGuard interface: ", ifacename) + } else if strings.Contains(err.Error(), "does not exist") { + err = nil + } } + } else { + logger.Log(0, "failed to read "+network+" config: ", err.Error()) } home := ncutils.GetNetclientPathSpecific() @@ -281,17 +286,20 @@ func WipeLocal(network string) error { log.Println(err.Error()) } } - if ncutils.FileExists(home + ifacename + ".conf") { - err = os.Remove(home + ifacename + ".conf") + if ifacename != "" { + if ncutils.FileExists(home + ifacename + ".conf") { + err = os.Remove(home + ifacename + ".conf") + if err != nil { + log.Println("error removing .conf:") + log.Println(err.Error()) + } + } + err = removeHostDNS(ifacename, ncutils.IsWindows()) if err != nil { - log.Println("error removing .conf:") - log.Println(err.Error()) + logger.Log(0, "failed to delete dns entries for", ifacename, err.Error()) } } - err = removeHostDNS(ifacename, ncutils.IsWindows()) - if err != nil { - logger.Log(0, "failed to delete dns entries for", ifacename, err.Error()) - } + return err }