Merge pull request #27 from halverneus/bugfix/logging_remote_addr

Bugfix/logging remote addr
This commit is contained in:
Jeromy Streets 2019-04-11 10:55:49 -07:00 committed by GitHub
commit f0c35e5161
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 52 additions and 25 deletions

View File

@ -1,9 +1,9 @@
################################################################################
## GO BUILDER
################################################################################
FROM golang:1.11.5 as builder
FROM golang:1.12.3 as builder
ENV VERSION 1.6.1
ENV VERSION 1.6.4
ENV BUILD_DIR /build
RUN mkdir -p ${BUILD_DIR}
@ -31,5 +31,5 @@ LABEL life.apets.vendor="Halverneus" \
life.apets.url="https://github.com/halverneus/static-file-server" \
life.apets.name="Static File Server" \
life.apets.description="A tiny static file server" \
life.apets.version="v1.6.1" \
life.apets.version="v1.6.4" \
life.apets.schema-version="1.0"

View File

@ -1,6 +1,6 @@
FROM golang:1.11.5 as builder
FROM golang:1.12.3 as builder
ENV VERSION 1.6.1
ENV VERSION 1.6.4
ENV BUILD_DIR /build
RUN mkdir -p ${BUILD_DIR}
@ -21,5 +21,5 @@ LABEL life.apets.vendor="Halverneus" \
life.apets.url="https://github.com/halverneus/static-file-server" \
life.apets.name="Static File Server" \
life.apets.description="A tiny static file server" \
life.apets.version="v1.6.1" \
life.apets.version="v1.6.4" \
life.apets.schema-version="1.0"

View File

@ -15,7 +15,8 @@ Default values are shown with the associated environment variable.
```bash
# Enable debugging for troubleshooting. If set to 'true' this prints extra
# information during execution.
# information during execution. IMPORTANT NOTE: The configuration summary is
# printed to stdout while logs generated during execution are printed to stderr.
DEBUG=false
# Optional Hostname for binding. Leave black to accept any incoming HTTP request

View File

@ -35,8 +35,9 @@ DEPENDENCIES
ENVIRONMENT VARIABLES
DEBUG
When set to 'true' enables additional logging, including the
configuration used and an access log for each request. Default value is
'false'.
configuration used and an access log for each request. IMPORTANT NOTE:
The configuration summary is printed to stdout while logs generated
during execution are printed to stderr. Default value is 'false'.
FOLDER
The path to the folder containing the contents to be served over
HTTP(s). If not supplied, defaults to '/web' (for Docker reasons).

View File

@ -49,15 +49,29 @@ func WithReferrers(serveFile FileServerFunc, referrers []string) FileServerFunc
// to serving the requested file.
func WithLogging(serveFile FileServerFunc) FileServerFunc {
return func(w http.ResponseWriter, r *http.Request, name string) {
log.Printf(
"REQ from '%s': %s %s %s%s -> %s\n",
r.Referer(),
r.Method,
r.Proto,
r.Host,
r.URL.Path,
name,
)
referer := r.Referer()
if 0 == len(referer) {
log.Printf(
"REQ from '%s': %s %s %s%s -> %s\n",
r.RemoteAddr,
r.Method,
r.Proto,
r.Host,
r.URL.Path,
name,
)
} else {
log.Printf(
"REQ from '%s' (REFERER: '%s'): %s %s %s%s -> %s\n",
r.RemoteAddr,
referer,
r.Method,
r.Proto,
r.Host,
r.URL.Path,
name,
)
}
serveFile(w, r, name)
}
}

View File

@ -152,19 +152,29 @@ func TestWithReferrers(t *testing.T) {
}
func TestBasicWithAndWithoutLogging(t *testing.T) {
referer := "http://localhost"
noReferer := ""
testCases := []struct {
name string
path string
code int
refer string
contents string
}{
{"Good base dir", "", ok, tmpIndex},
{"Good base index", tmpIndexName, redirect, nothing},
{"Good base file", tmpFileName, ok, tmpFile},
{"Bad base file", tmpBadName, missing, notFound},
{"Good subdir dir", subDir, ok, tmpSubIndex},
{"Good subdir index", tmpSubIndexName, redirect, nothing},
{"Good subdir file", tmpSubFileName, ok, tmpSubFile},
{"Good base dir", "", ok, referer, tmpIndex},
{"Good base index", tmpIndexName, redirect, referer, nothing},
{"Good base file", tmpFileName, ok, referer, tmpFile},
{"Bad base file", tmpBadName, missing, referer, notFound},
{"Good subdir dir", subDir, ok, referer, tmpSubIndex},
{"Good subdir index", tmpSubIndexName, redirect, referer, nothing},
{"Good subdir file", tmpSubFileName, ok, referer, tmpSubFile},
{"Good base dir", "", ok, noReferer, tmpIndex},
{"Good base index", tmpIndexName, redirect, noReferer, nothing},
{"Good base file", tmpFileName, ok, noReferer, tmpFile},
{"Bad base file", tmpBadName, missing, noReferer, notFound},
{"Good subdir dir", subDir, ok, noReferer, tmpSubIndex},
{"Good subdir index", tmpSubIndexName, redirect, noReferer, nothing},
{"Good subdir file", tmpSubFileName, ok, noReferer, tmpSubFile},
}
for _, serveFile := range serveFileFuncs {
@ -173,6 +183,7 @@ func TestBasicWithAndWithoutLogging(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
fullpath := "http://localhost/" + tc.path
req := httptest.NewRequest("GET", fullpath, nil)
req.Header.Add("Referer", tc.refer)
w := httptest.NewRecorder()
handler(w, req)