Skip to content

Commit 9caedc6

Browse files
committed
Modified replace operation to use regexes in caddyfile
1 parent 2f31f58 commit 9caedc6

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

modules/caddyhttp/rewrite/caddyfile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ func applyQueryOps(h httpcaddyfile.Helper, qo *queryOps, args []string) error {
214214
qo.Rename = append(qo.Rename, queryOpsArguments{Key: renameValKey[0], Val: renameValKey[1]})
215215

216216
case len(args) == 3:
217-
qo.Replace = append(qo.Replace, queryOpsReplacement{Key: key, Search: args[1], Replace: args[2]})
217+
qo.Replace = append(qo.Replace, queryOpsReplacement{Key: key, SearchRegexp: args[1], Replace: args[2]})
218218

219219
default:
220220
if len(args) != 2 {

modules/caddyhttp/rewrite/rewrite.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,9 +497,20 @@ type queryOps struct {
497497
Delete []string `json:"delete,omitempty"`
498498
}
499499

500+
// Provision to set up the Replace operation regex compiler.
501+
func (replacement *queryOpsReplacement) Provision() error {
502+
if replacement.SearchRegexp != "" {
503+
re, err := regexp.Compile(replacement.SearchRegexp)
504+
if err != nil {
505+
return fmt.Errorf("replacement for query field '%s': %v", replacement.Key, err)
506+
}
507+
replacement.re = re
508+
}
509+
return nil
510+
}
511+
500512
func (q *queryOps) do(r *http.Request, repl *caddy.Replacer) {
501513
query := r.URL.Query()
502-
503514
for _, renameParam := range q.Rename {
504515
key := repl.ReplaceAll(renameParam.Key, "")
505516
val := repl.ReplaceAll(renameParam.Val, "")
@@ -529,6 +540,7 @@ func (q *queryOps) do(r *http.Request, repl *caddy.Replacer) {
529540
}
530541

531542
for _, replaceParam := range q.Replace {
543+
replaceParam.Provision()
532544
key := repl.ReplaceAll(replaceParam.Key, "")
533545
search := repl.ReplaceKnown(replaceParam.Search, "")
534546
replace := repl.ReplaceKnown(replaceParam.Replace, "")

0 commit comments

Comments
 (0)