Added state perstistance
- Define new state directory to hold the last dns update config and push it into the config, default to state/ - Refactoring, move updaterequest into service and out of webapp. Keep only the form parsing there. Specifically, move the processing code into the service package, it shouldn't be in the webapp. - Add code to load and save the last updaterequest into a state file (watch out to keep the possibly unhashed password out of it). - Add a command line option to load all available state files given the current configured user list from the command line. - Refactor user configuartion loading to separate it from user authentication, claen up the code. - We now require the username in the config, to make handling it in state updates easier. This will allow easier transition to DB style storage anyway. - Update .gitignore
This commit is contained in:
@ -20,6 +20,7 @@ type configDNS struct {
|
||||
|
||||
type configUsers struct {
|
||||
ConfigDir string
|
||||
StateDir string
|
||||
}
|
||||
|
||||
var C config
|
||||
@ -32,6 +33,7 @@ func SetConfigDefaults() {
|
||||
viper.SetDefault("Service.DNS.Server", "127.0.0.1:53")
|
||||
viper.SetDefault("Service.DNS.DefaultTTL", 60)
|
||||
viper.SetDefault("Service.Users.ConfigDir", "users/")
|
||||
viper.SetDefault("Service.Users.StateDir", "state/")
|
||||
}
|
||||
|
||||
func LoadConfig() {
|
||||
@ -47,6 +49,12 @@ func LoadConfig() {
|
||||
} else {
|
||||
C.Users.ConfigDir = filepath.Join(viper.GetString("ConfigDir"), path)
|
||||
}
|
||||
path = viper.GetString("Service.Users.StateDir")
|
||||
if filepath.IsAbs(path) {
|
||||
C.Users.StateDir = filepath.Clean(path)
|
||||
} else {
|
||||
C.Users.StateDir = filepath.Join(viper.GetString("StateDir"), path)
|
||||
}
|
||||
}
|
||||
|
||||
func (obj *config) PrettyPrint() string {
|
||||
|
Reference in New Issue
Block a user