diff --git a/config/config.go b/config/config.go index ac9fde4..f6bec51 100644 --- a/config/config.go +++ b/config/config.go @@ -2,6 +2,7 @@ package config import ( "encoding/json" + "flag" "io/ioutil" "log" "os" @@ -47,6 +48,8 @@ func New() (*Config, error) { jsonParser := json.NewDecoder(configFile) jsonParser.Decode(&config) + config.overrideWithFlags() + return &config, nil } @@ -75,3 +78,37 @@ func defaults() Config { }, } } + +func (config *Config) overrideWithFlags() { + username := flag.String("ts3_name", "", "TS3Query username") + password := flag.String("ts3_pw", "", "TS3Query user password") + tsIP := flag.String("ts3_ip", "", "TS3 IP address") + tsPort := flag.Uint64("ts3_port", 65536, "TS3 port") + tsQuery := flag.Uint64("ts3_query", 65536, "TS3 query port") + webPort := flag.Uint64("web_port", 65536, "Webserver port") + flag.Parse() + + if *username != "" { + config.User.Name = *username + } + + if *password != "" { + config.User.Password = *password + } + + if *tsIP != "" { + config.ServerTS.IP = *tsIP + } + + if *tsPort <= 65535 { + config.ServerTS.PortServer = uint16(*tsPort) + } + + if *tsQuery <= 65535 { + config.ServerTS.PortQuery = uint16(*tsQuery) + } + + if *webPort <= 65535 { + config.ServerWeb.Port = uint16(*webPort) + } +}