mirror of
https://github.com/halverneus/static-file-server.git
synced 2024-11-24 09:05:30 +00:00
Fixed remote address logging and added appropriate unit tests.
This commit is contained in:
parent
95b3a1c7d3
commit
7793fde0ca
@ -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