From ce95696ef0a41e4afc0d31fc793eac68b57e713b Mon Sep 17 00:00:00 2001 From: Nils Date: Thu, 6 Jan 2022 23:37:03 +0100 Subject: [PATCH] add environment values --- README.md | 2 ++ docker/docker-compose.yml | 5 +++++ main.go | 39 ++++++++++++++++++++++++++++++++------- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5e281fa..3739bb3 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,8 @@ The app currently has 4 runtime flags: - `-x / --disable-x-forwarded-for` -- disables checking for the X-Forwarded-For header - `-l / --allow-private` -- allows lookups of private IP ranges +All of the Flags also have an accompanying environment value: `PROBEHOST_LOGPATH`, `PROBEHOST_ALLOW_PRIVATE`, `PROBEHOST_LISTEN_PORT` and `PROBEHOST_DISABLE_X_FORWARDED_FOR` but the options given via commandline have priority. + The app will log every request including the IP thats querying and show failed requests on stdout. Requests that contain an X-Forwarded-For header (implying the app is behind a reverse proxy) will automatically log that address instead of the requesting IP (the proxy itself), this can be turned off with -x. diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index ab206a0..ba8b9f0 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -5,6 +5,11 @@ services: container_name: probehost2 image: byreqz/probehost2:latest restart: unless-stopped + environment: + - PROBEHOST_LOGPATH=/probehost2.log + - PROBEHOST_ALLOW_PRIVATE=false + - PROBEHOST_DISABLE_X_FORWARDED_FOR=false + - PROBEHOST_LISTEN_PORT=8000 ports: - 1234:8000 volumes: diff --git a/main.go b/main.go index 1d5a813..87aa400 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "strings" "net/http" "net" + "strconv" log "github.com/sirupsen/logrus" flag "github.com/spf13/pflag" @@ -20,17 +21,41 @@ var disablexforwardedfor bool var allowprivate bool func init() { - var logfilepath string - flag.StringVarP(&logfilepath, "logfilepath", "o","probehost2.log", "sets the output file for the log") - flag.IntVarP(&listenport, "port", "p", 8000, "sets the port to listen on") - flag.BoolVarP(&disablexforwardedfor, "disable-x-forwarded-for", "x", false, "whether to show x-forwarded-for or the requesting IP") - flag.BoolVarP(&allowprivate, "allow-private", "l", false, "whether to show lookups of private IP ranges") - flag.Parse() - logstdout.SetFormatter(&log.TextFormatter{ FullTimestamp: true}) logstdout.SetOutput(os.Stdout) logstdout.SetLevel(log.InfoLevel) + var logfilepath string + + if _, exists := os.LookupEnv("PROBEHOST_LOGPATH"); exists == true { + logfilepath, _ = os.LookupEnv("PROBEHOST_LOGPATH") + } else { + logfilepath = "probehost2.log" + } + if exists, _ := os.LookupEnv("PROBEHOST_ALLOW_PRIVATE"); exists == "true" { + allowprivate = true + } else { + allowprivate = false + } + if envvalue, exists := os.LookupEnv("PROBEHOST_LISTEN_PORT"); exists == true { + var err error + listenport, err = strconv.Atoi(envvalue) + if err != nil { + logstdout.Fatal("Failed to read PROBEHOST_LISTEN_PORT: ", err.Error()) + } + } else { + listenport = 8000 + } + if exists, _ := os.LookupEnv("PROBEHOST_DISABLE_X_FORWARDED_FOR"); exists == "true" { + disablexforwardedfor = true + } else { + disablexforwardedfor = false + } + flag.StringVarP(&logfilepath, "logfilepath", "o", logfilepath, "sets the output file for the log") + flag.IntVarP(&listenport, "port", "p", listenport, "sets the port to listen on") + flag.BoolVarP(&disablexforwardedfor, "disable-x-forwarded-for", "x", disablexforwardedfor, "whether to show x-forwarded-for or the requesting IP") + flag.BoolVarP(&allowprivate, "allow-private", "l", allowprivate, "whether to show lookups of private IP ranges") + flag.Parse() logpath, err := os.OpenFile(logfilepath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0660) if err != nil {