From cf72f8f2538e1d712e5b6e12cd2cadbcaf96c8e2 Mon Sep 17 00:00:00 2001 From: John Donaldson Date: Thu, 5 Mar 2020 02:19:46 +0000 Subject: [PATCH] Extract and use X-Forwarded-For headers in mothd logging --- CHANGELOG.md | 1 + src/handlers.go | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6c04b2..79da341 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/handlers.go b/src/handlers.go index a0ceded..9c4256e 100644 --- a/src/handlers.go +++ b/src/handlers.go @@ -339,10 +339,18 @@ func (ctx *Instance) ServeHTTP(wOrig http.ResponseWriter, r *http.Request) { w: wOrig, statusCode: new(int), } + + clientIP := r.Header.Get("X-Forwarded-For") + clientIP = strings.Split(clientIP, ", ")[0] + + if clientIP == "" { + clientIP = r.RemoteAddr + } + ctx.mux.ServeHTTP(w, r) log.Printf( "%s %s %s %d\n", - r.RemoteAddr, + clientIP, r.Method, r.URL, *w.statusCode,