Update listen api address config override handling

This commit is contained in:
Daniel 2019-08-02 16:10:34 +02:00
parent 05bead1890
commit 79a4219487
3 changed files with 16 additions and 16 deletions

View file

@ -17,41 +17,41 @@ func init() {
flag.StringVar(&listenAddressFlag, "api-address", "", "override api listen address") flag.StringVar(&listenAddressFlag, "api-address", "", "override api listen address")
} }
func checkFlags() error { func logFlagOverrides() {
if listenAddressFlag != "" { if listenAddressFlag != "" {
log.Warning("api: api/listenAddress config is being overridden by -api-address flag") log.Warning("api: api/listenAddress default config is being overridden by -api-address flag")
} }
return nil
} }
func GetAPIAddress() string { func getDefaultListenAddress() string {
// check if overridden
if listenAddressFlag != "" { if listenAddressFlag != "" {
return listenAddressFlag return listenAddressFlag
} }
return listenAddressConfig() // return internal default
return defaultListenAddress
} }
func registerConfig() error { func registerConfig() error {
err := config.Register(&config.Option{ err := config.Register(&config.Option{
Name: "API Address", Name: "API Address",
Key: "api/listenAddress", Key: "api/listenAddress",
Description: "Define on what IP and port the API should listen on. Be careful, changing this may become a security issue.", Description: "Define on which IP and port the API should listen on.",
ExpertiseLevel: config.ExpertiseLevelExpert, ExpertiseLevel: config.ExpertiseLevelDeveloper,
OptType: config.OptTypeString, OptType: config.OptTypeString,
DefaultValue: defaultListenAddress, DefaultValue: getDefaultListenAddress(),
ValidationRegex: "^([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}:[0-9]{1,5}|\\[[:0-9A-Fa-f]+\\]:[0-9]{1,5})$", ValidationRegex: "^([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}:[0-9]{1,5}|\\[[:0-9A-Fa-f]+\\]:[0-9]{1,5})$",
RequiresRestart: true,
}) })
if err != nil { if err != nil {
return err return err
} }
listenAddressConfig = config.GetAsString("api/listenAddress", defaultListenAddress) listenAddressConfig = config.GetAsString("api/listenAddress", getDefaultListenAddress())
return nil return nil
} }
// SetDefaultAPIListenAddress sets the default listen address for the API. // SetDefaultAPIListenAddress sets the default listen address for the API.
func SetDefaultAPIListenAddress(address string) { func SetDefaultAPIListenAddress(address string) {
if defaultListenAddress == "" { defaultListenAddress = address
defaultListenAddress = address
}
} }

View file

@ -17,14 +17,14 @@ func init() {
} }
func prep() error { func prep() error {
err := checkFlags() if getDefaultListenAddress() == "" {
if err != nil { return errors.New("no listen address for api available")
return err
} }
return registerConfig() return registerConfig()
} }
func start() error { func start() error {
logFlagOverrides()
go Serve() go Serve()
return nil return nil
} }

View file

@ -51,7 +51,7 @@ func RegisterMiddleware(middleware Middleware) {
// Serve starts serving the API endpoint. // Serve starts serving the API endpoint.
func Serve() { func Serve() {
// configure server // configure server
server.Addr = GetAPIAddress() server.Addr = listenAddressConfig()
server.Handler = middlewareHandler server.Handler = middlewareHandler
// start serving // start serving