2020-04-13 22:14:56 +00:00
|
|
|
package config
|
|
|
|
|
2020-04-25 22:22:45 +00:00
|
|
|
import (
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
pluginConfigKey = "handler"
|
|
|
|
listenAddressConfigKey = "listenAddress"
|
|
|
|
portConfigKey = "port"
|
|
|
|
portsConfigKey = "ports"
|
|
|
|
)
|
2020-04-13 22:14:56 +00:00
|
|
|
|
|
|
|
func CreateMultiHandlerConfig(handlerConfig *viper.Viper) MultiHandlerConfig {
|
|
|
|
return NewMultiHandlerConfig(
|
|
|
|
handlerConfig.GetString(pluginConfigKey),
|
|
|
|
portsFromConfig(handlerConfig),
|
|
|
|
handlerConfig.GetString(listenAddressConfigKey),
|
|
|
|
handlerConfig.Sub(OptionsKey),
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
func portsFromConfig(handlerConfig *viper.Viper) (ports []uint16) {
|
|
|
|
if portsInt := handlerConfig.GetIntSlice(portsConfigKey); len(portsInt) > 0 {
|
|
|
|
for _, port := range portsInt {
|
|
|
|
ports = append(ports, uint16(port))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if portInt := handlerConfig.GetInt(portConfigKey); portInt > 0 {
|
|
|
|
ports = append(ports, uint16(portInt))
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|