mirror of
https://github.com/halverneus/static-file-server.git
synced 2024-11-24 09:05:30 +00:00
commit
7f0892a416
@ -1,9 +1,9 @@
|
||||
################################################################################
|
||||
## GO BUILDER
|
||||
################################################################################
|
||||
FROM golang:1.12.1 as builder
|
||||
FROM golang:1.12.3 as builder
|
||||
|
||||
ENV VERSION 1.6.3
|
||||
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.3" \
|
||||
life.apets.version="v1.6.4" \
|
||||
life.apets.schema-version="1.0"
|
||||
|
@ -1,6 +1,6 @@
|
||||
FROM golang:1.12.1 as builder
|
||||
FROM golang:1.12.3 as builder
|
||||
|
||||
ENV VERSION 1.6.3
|
||||
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.3" \
|
||||
life.apets.version="v1.6.4" \
|
||||
life.apets.schema-version="1.0"
|
||||
|
@ -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
|
||||
|
@ -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).
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user