func (s *State) Save() { if data, err := json.Marshal(s); err == nil { if err = ioutil.WriteFile(s.getConfigPath(), data, os.ModePerm); err != nil { log.Error("error on write state, %v", err) } } }
func NewState(secret *secure.NetworkSecret) *State { s := &State{ Secret: secret, } s.Load() var save bool if s.ListenPort < 1 { s.ListenPort = GetRandomPort() save = true } if s.PrivateIP == nil { var err error if s.PrivateIP, err = network.GenerateIPAddress(secret.Net); err == nil { save = true } else { log.Error("error on generate IP, %v", err) } } if save { s.Save() } return s }