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