diff --git a/netclient/config/config.go b/netclient/config/config.go index 0bf5ef80f..5a4dd6cbf 100644 --- a/netclient/config/config.go +++ b/netclient/config/config.go @@ -95,28 +95,42 @@ func (config *ClientConfig) ConfigFileExists() bool { // ClientConfig.ReadConfig - used to read config from client disk into memory func (config *ClientConfig) ReadConfig() { - nofile := false + network := config.Network + if network == "" { + return + } + //home, err := homedir.Dir() home := ncutils.GetNetclientPathSpecific() - file := fmt.Sprintf(home + "netconfig-" + config.Network) + file := fmt.Sprintf(home + "netconfig-" + network) //f, err := os.Open(file) f, err := os.OpenFile(file, os.O_RDONLY, 0600) if err != nil { logger.Log(1, "trouble opening file: ", err.Error()) - nofile = true - //fmt.Println("Could not access " + home + "/.netconfig, proceeding...") + if err = ReplaceWithBackup(network); err != nil { + log.Fatal(err) + } + f.Close() + f, err = os.Open(file) + if err != nil { + log.Fatal(err) + } + } defer f.Close() - - //var cfg ClientConfig - - if !nofile { - decoder := yaml.NewDecoder(f) - err = decoder.Decode(&config) + if err := yaml.NewDecoder(f).Decode(&config); err != nil { + logger.Log(0, "no config or invalid, replacing with backup") + if err = ReplaceWithBackup(network); err != nil { + log.Fatal(err) + } + f.Close() + f, err = os.Open(file) if err != nil { - fmt.Println("no config or invalid") - fmt.Println(err) + log.Fatal(err) + } + defer f.Close() + if err := yaml.NewDecoder(f).Decode(&config); err != nil { log.Fatal(err) } } @@ -288,8 +302,18 @@ func ReadConfig(network string) (*ClientConfig, error) { decoder := yaml.NewDecoder(f) err = decoder.Decode(&cfg) if err != nil { - logger.Log(2, "trouble decoding file", err.Error()) - return nil, err + if err = ReplaceWithBackup(network); err != nil { + return nil, err + } + f.Close() + f, err = os.Open(file) + if err != nil { + return nil, err + } + defer f.Close() + if err := yaml.NewDecoder(f).Decode(&cfg); err != nil { + return nil, err + } } return &cfg, err