mirror of https://github.com/dirtbags/moth.git
Merge pull request #137 from dirtbags/extract_xforwardedfor_headers
Extract and use X-Forwarded-For headers in mothd logging
This commit is contained in:
commit
97bd51ba59
|
@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- Include basic metadata in mothballs
|
||||
- add_script_stream convenience function allows easy script addition to puzzle
|
||||
- Autobuild Docker images to test buildability
|
||||
- Extract and use X-Forwarded-For headers in mothd logging
|
||||
### Fixed
|
||||
- Handle cases where non-legacy puzzles don't have an `author` attribute
|
||||
- Handle YAML-formatted file and script lists as expected
|
||||
|
|
|
@ -339,10 +339,22 @@ func (ctx *Instance) ServeHTTP(wOrig http.ResponseWriter, r *http.Request) {
|
|||
w: wOrig,
|
||||
statusCode: new(int),
|
||||
}
|
||||
|
||||
clientIP := r.RemoteAddr
|
||||
|
||||
if (ctx.UseXForwarded) {
|
||||
forwardedIP := r.Header.Get("X-Forwarded-For")
|
||||
forwardedIP = strings.Split(forwardedIP, ", ")[0]
|
||||
|
||||
if forwardedIP != "" {
|
||||
clientIP = forwardedIP
|
||||
}
|
||||
}
|
||||
|
||||
ctx.mux.ServeHTTP(w, r)
|
||||
log.Printf(
|
||||
"%s %s %s %d\n",
|
||||
r.RemoteAddr,
|
||||
clientIP,
|
||||
r.Method,
|
||||
r.URL,
|
||||
*w.statusCode,
|
||||
|
|
|
@ -25,6 +25,7 @@ type Instance struct {
|
|||
StateDir string
|
||||
ThemeDir string
|
||||
AttemptInterval time.Duration
|
||||
UseXForwarded bool
|
||||
|
||||
Runtime RuntimeConfig
|
||||
|
||||
|
|
|
@ -52,6 +52,12 @@ func main() {
|
|||
20*time.Second,
|
||||
"Time between maintenance tasks",
|
||||
)
|
||||
flag.BoolVar(
|
||||
&ctx.UseXForwarded,
|
||||
"x-forwarded-for",
|
||||
false,
|
||||
"Emit IPs from the X-Forwarded-For header in logs, when available, instead of the source IP. Use this when running behind a load-balancer or proxy",
|
||||
)
|
||||
listen := flag.String(
|
||||
"listen",
|
||||
":8080",
|
||||
|
|
Loading…
Reference in New Issue