Improve parameter handling

This commit is contained in:
Lan Tian
2020-03-27 12:21:30 +08:00
parent 8f581d378f
commit ad17c52bb9
6 changed files with 85 additions and 72 deletions

View File

@@ -18,29 +18,39 @@ func invalidHandler(httpW http.ResponseWriter, httpR *http.Request) {
httpW.Write([]byte("Invalid Request\n"))
}
type settingType struct {
birdSocket string
bird6Socket string
listen string
}
var setting settingType
// Wrapper of tracer
func main() {
var err error
// Prepare default socket paths, use environment variable if possible
birdSocketDefault := "/var/run/bird/bird.ctl"
bird6SocketDefault := "/var/run/bird/bird6.ctl"
listenDefault := ":8000"
var settingDefault = settingType{
"/var/run/bird/bird.ctl",
"/var/run/bird/bird6.ctl",
":8000",
}
if birdSocketEnv := os.Getenv("BIRD_SOCKET"); birdSocketEnv != "" {
birdSocketDefault = birdSocketEnv
settingDefault.birdSocket = birdSocketEnv
}
if bird6SocketEnv := os.Getenv("BIRD6_SOCKET"); bird6SocketEnv != "" {
bird6SocketDefault = bird6SocketEnv
settingDefault.bird6Socket = bird6SocketEnv
}
if listenEnv := os.Getenv("BIRDLG_LISTEN"); listenEnv != "" {
listenDefault = listenEnv
settingDefault.listen = listenEnv
}
// Allow parameters to override environment variables
birdParam := flag.String("bird", birdSocketDefault, "socket file for bird, set either in parameter or environment variable BIRD_SOCKET")
bird6Param := flag.String("bird6", bird6SocketDefault, "socket file for bird6, set either in parameter or environment variable BIRD6_SOCKET")
listenParam := flag.String("listen", listenDefault, "listen address, set either in parameter or environment variable BIRDLG_LISTEN")
birdParam := flag.String("bird", settingDefault.birdSocket, "socket file for bird, set either in parameter or environment variable BIRD_SOCKET")
bird6Param := flag.String("bird6", settingDefault.bird6Socket, "socket file for bird6, set either in parameter or environment variable BIRD6_SOCKET")
listenParam := flag.String("listen", settingDefault.listen, "listen address, set either in parameter or environment variable BIRDLG_LISTEN")
flag.Parse()
// Initialize BIRDv4 socket