Browse Source
* caddyfile: Support for raw token values, improve `map`, `expression` * Applied code review comments * Rename RawVal to ValRaw Co-authored-by: Matthew Holt <mholt@users.noreply.github.com>master
Francis Lavoie
3 years ago
committed by
GitHub
6 changed files with 300 additions and 23 deletions
@ -0,0 +1,114 @@ |
|||||
|
example.com |
||||
|
|
||||
|
@a expression {http.error.status_code} == 400 |
||||
|
abort @a |
||||
|
|
||||
|
@b expression {http.error.status_code} == "401" |
||||
|
abort @b |
||||
|
|
||||
|
@c expression {http.error.status_code} == `402` |
||||
|
abort @c |
||||
|
|
||||
|
@d expression "{http.error.status_code} == 403" |
||||
|
abort @d |
||||
|
|
||||
|
@e expression `{http.error.status_code} == 404` |
||||
|
abort @e |
||||
|
---------- |
||||
|
{ |
||||
|
"apps": { |
||||
|
"http": { |
||||
|
"servers": { |
||||
|
"srv0": { |
||||
|
"listen": [ |
||||
|
":443" |
||||
|
], |
||||
|
"routes": [ |
||||
|
{ |
||||
|
"match": [ |
||||
|
{ |
||||
|
"host": [ |
||||
|
"example.com" |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"handler": "subroute", |
||||
|
"routes": [ |
||||
|
{ |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"abort": true, |
||||
|
"handler": "static_response" |
||||
|
} |
||||
|
], |
||||
|
"match": [ |
||||
|
{ |
||||
|
"expression": "{http.error.status_code} == 400" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"abort": true, |
||||
|
"handler": "static_response" |
||||
|
} |
||||
|
], |
||||
|
"match": [ |
||||
|
{ |
||||
|
"expression": "{http.error.status_code} == \"401\"" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"abort": true, |
||||
|
"handler": "static_response" |
||||
|
} |
||||
|
], |
||||
|
"match": [ |
||||
|
{ |
||||
|
"expression": "{http.error.status_code} == `402`" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"abort": true, |
||||
|
"handler": "static_response" |
||||
|
} |
||||
|
], |
||||
|
"match": [ |
||||
|
{ |
||||
|
"expression": "{http.error.status_code} == 403" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"abort": true, |
||||
|
"handler": "static_response" |
||||
|
} |
||||
|
], |
||||
|
"match": [ |
||||
|
{ |
||||
|
"expression": "{http.error.status_code} == 404" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
"terminal": true |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,107 @@ |
|||||
|
example.com |
||||
|
|
||||
|
map {host} {my_placeholder} {magic_number} { |
||||
|
# Should output boolean "true" and an integer |
||||
|
example.com true 3 |
||||
|
|
||||
|
# Should output a string and null |
||||
|
foo.example.com "string value" |
||||
|
|
||||
|
# Should output two strings (quoted int) |
||||
|
(.*)\.example.com "${1} subdomain" "5" |
||||
|
|
||||
|
# Should output null and a string (quoted int) |
||||
|
~.*\.net$ - `7` |
||||
|
|
||||
|
# Should output a float and the string "false" |
||||
|
~.*\.xyz$ 123.456 "false" |
||||
|
|
||||
|
# Should output two strings, second being escaped quote |
||||
|
default "unknown domain" \""" |
||||
|
} |
||||
|
---------- |
||||
|
{ |
||||
|
"apps": { |
||||
|
"http": { |
||||
|
"servers": { |
||||
|
"srv0": { |
||||
|
"listen": [ |
||||
|
":443" |
||||
|
], |
||||
|
"routes": [ |
||||
|
{ |
||||
|
"match": [ |
||||
|
{ |
||||
|
"host": [ |
||||
|
"example.com" |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"handler": "subroute", |
||||
|
"routes": [ |
||||
|
{ |
||||
|
"handle": [ |
||||
|
{ |
||||
|
"defaults": [ |
||||
|
"unknown domain", |
||||
|
"\"" |
||||
|
], |
||||
|
"destinations": [ |
||||
|
"{my_placeholder}", |
||||
|
"{magic_number}" |
||||
|
], |
||||
|
"handler": "map", |
||||
|
"mappings": [ |
||||
|
{ |
||||
|
"input": "example.com", |
||||
|
"outputs": [ |
||||
|
true, |
||||
|
3 |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"input": "foo.example.com", |
||||
|
"outputs": [ |
||||
|
"string value", |
||||
|
null |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"input": "(.*)\\.example.com", |
||||
|
"outputs": [ |
||||
|
"${1} subdomain", |
||||
|
"5" |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"input_regexp": ".*\\.net$", |
||||
|
"outputs": [ |
||||
|
null, |
||||
|
"7" |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"input_regexp": ".*\\.xyz$", |
||||
|
"outputs": [ |
||||
|
123.456, |
||||
|
"false" |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
"source": "{http.request.host}" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
"terminal": true |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue