From 57450191691186ab3dd0c6aa5c9bc18e81988eb5 Mon Sep 17 00:00:00 2001 From: volpol Date: Sat, 9 Jun 2018 21:07:44 +0200 Subject: [PATCH] Support cmdline switches --- ddnset.go | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/ddnset.go b/ddnset.go index 97d9cd5..416a9a7 100644 --- a/ddnset.go +++ b/ddnset.go @@ -4,6 +4,7 @@ import ( "bufio" "crypto/md5" "encoding/base64" + "flag" "fmt" "io" "io/ioutil" @@ -15,14 +16,20 @@ import ( "strings" ) -//TODO add parsing of cmdline const ( - AccFile = "/usr/local/etc/ddnset/ddnset.acc" - ZoneFile = "/usr/local/etc/ddnset/ddnset.zon" - Logfile = "/var/log/ddnset/default.log" - ListenPort = "1980" + DefaultAccFile = "/usr/local/etc/ddnset/ddnset.acc" + DefaultZoneFile = "/usr/local/etc/ddnset/ddnset.zon" + DefaultLogFile = "/var/log/ddnset/default.log" + DefaultListenPort = 1980 ) +var AccFile = flag.String("a", DefaultAccFile, "Path to account file") +var ZoneFile = flag.String("z", DefaultZoneFile, "Path to zone file") +var LogFile = flag.String("l", DefaultLogFile, "Path to log file") +var ListenPort = flag.Uint("p", DefaultListenPort, "Port to listen on") + +var Help = flag.Bool("h", false, "Show usage") + const ( StatusGood = "good" StatusBadAuth = "badauth" @@ -116,7 +123,7 @@ func checkIP(s string) (string, int, bool) { func isValidAuth(usr, psw string) (bool, string) { pwentry := fmt.Sprintf("%s:%x", usr, md5.Sum([]byte(psw))) - acc, err := os.Open(AccFile) + acc, err := os.Open(*AccFile) if nil == err { defer acc.Close() scanner := bufio.NewScanner(acc) @@ -133,7 +140,7 @@ func isValidAuth(usr, psw string) (bool, string) { } func isValidZone(h string) (bool, string) { - zon, err := os.Open(ZoneFile) + zon, err := os.Open(*ZoneFile) if nil == err { defer zon.Close() scanner := bufio.NewScanner(zon) @@ -272,10 +279,18 @@ func rootHandle(w http.ResponseWriter, r *http.Request) { } func main() { + flag.Parse() + if *Help { + fmt.Printf("Usage: \n") + flag.PrintDefaults() + return + } + fmt.Printf("Current settings: \n") + flag.VisitAll(func(f *flag.Flag) { fmt.Printf("%v: %v\n", f.Usage, f.Value) }) http.HandleFunc("/myip", myipHandle) http.HandleFunc("/myip.php", myipHandle) http.HandleFunc("/", rootHandle) - logf, err := os.OpenFile(Logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) + logf, err := os.OpenFile(*LogFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if nil == err { defer logf.Close() log.SetOutput(logf) @@ -283,5 +298,5 @@ func main() { log.Print(err) } - log.Fatal(http.ListenAndServe(":"+ListenPort, nil)) + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", *ListenPort), nil)) } -- 2.30.2