aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules/caddyhttp/replacer.go
diff options
context:
space:
mode:
authorMatt Holt <[email protected]>2019-10-28 14:39:37 -0600
committerGitHub <[email protected]>2019-10-28 14:39:37 -0600
commitb00dfd3965f400956c5bb5b388e9d54ef98052e5 (patch)
tree44517743815327f7ef63405b3a13e54f7f20c885 /modules/caddyhttp/replacer.go
parent6c533558a3db4b30a6b7a81d19ac180fe2000ca2 (diff)
downloadcaddy-b00dfd3965f400956c5bb5b388e9d54ef98052e5.tar.gz
caddy-b00dfd3965f400956c5bb5b388e9d54ef98052e5.zip
v2: Logging! (#2831)
* logging: Initial implementation * logging: More encoder formats, better defaults * logging: Fix repetition bug with FilterEncoder; add more presets * logging: DiscardWriter; delete or no-op logs that discard their output * logging: Add http.handlers.log module; enhance Replacer methods The Replacer interface has new methods to customize how to handle empty or unrecognized placeholders. Closes #2815. * logging: Overhaul HTTP logging, fix bugs, improve filtering, etc. * logging: General cleanup, begin transitioning to using new loggers * Fixes after merge conflict
Diffstat (limited to 'modules/caddyhttp/replacer.go')
-rw-r--r--modules/caddyhttp/replacer.go32
1 files changed, 17 insertions, 15 deletions
diff --git a/modules/caddyhttp/replacer.go b/modules/caddyhttp/replacer.go
index db329be52..ddbc25061 100644
--- a/modules/caddyhttp/replacer.go
+++ b/modules/caddyhttp/replacer.go
@@ -19,7 +19,6 @@ import (
"net"
"net/http"
"net/textproto"
- "net/url"
"path"
"strconv"
"strings"
@@ -112,27 +111,30 @@ func addHTTPVarsToReplacer(repl caddy.Replacer, req *http.Request, w http.Respon
}
return qs, true
- // original URI, before any internal changes
+ // original request, before any internal changes
+ case "http.request.orig_method":
+ or, _ := req.Context().Value(OriginalRequestCtxKey).(http.Request)
+ return or.Method, true
case "http.request.orig_uri":
- u, _ := req.Context().Value(OriginalURLCtxKey).(url.URL)
- return u.RequestURI(), true
+ or, _ := req.Context().Value(OriginalRequestCtxKey).(http.Request)
+ return or.RequestURI, true
case "http.request.orig_uri.path":
- u, _ := req.Context().Value(OriginalURLCtxKey).(url.URL)
- return u.Path, true
+ or, _ := req.Context().Value(OriginalRequestCtxKey).(http.Request)
+ return or.URL.Path, true
case "http.request.orig_uri.path.file":
- u, _ := req.Context().Value(OriginalURLCtxKey).(url.URL)
- _, file := path.Split(u.Path)
+ or, _ := req.Context().Value(OriginalRequestCtxKey).(http.Request)
+ _, file := path.Split(or.URL.Path)
return file, true
case "http.request.orig_uri.path.dir":
- u, _ := req.Context().Value(OriginalURLCtxKey).(url.URL)
- dir, _ := path.Split(u.Path)
+ or, _ := req.Context().Value(OriginalRequestCtxKey).(http.Request)
+ dir, _ := path.Split(or.URL.Path)
return dir, true
case "http.request.orig_uri.query":
- u, _ := req.Context().Value(OriginalURLCtxKey).(url.URL)
- return u.RawQuery, true
+ or, _ := req.Context().Value(OriginalRequestCtxKey).(http.Request)
+ return or.URL.RawQuery, true
case "http.request.orig_uri.query_string":
- u, _ := req.Context().Value(OriginalURLCtxKey).(url.URL)
- qs := u.Query().Encode()
+ or, _ := req.Context().Value(OriginalRequestCtxKey).(http.Request)
+ qs := or.URL.Query().Encode()
if qs != "" {
qs = "?" + qs
}
@@ -183,7 +185,7 @@ func addHTTPVarsToReplacer(repl caddy.Replacer, req *http.Request, w http.Respon
// middleware variables
if strings.HasPrefix(key, varsReplPrefix) {
varName := key[len(varsReplPrefix):]
- tbl := req.Context().Value(VarCtxKey).(map[string]interface{})
+ tbl := req.Context().Value(VarsCtxKey).(map[string]interface{})
raw, ok := tbl[varName]
if !ok {
// variables can be dynamic, so always return true