Merge pull request #28 from halverneus/dev

Dev
pull/41/head v1.6.4
Jeromy Streets 5 years ago committed by GitHub
commit 7f0892a416
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      Dockerfile
  2. 6
      Dockerfile.all
  3. 3
      README.md
  4. 5
      cli/help/help.go
  5. 32
      handle/handle.go
  6. 25
      handle/handle_test.go

@ -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…
Cancel
Save