aboutsummaryrefslogtreecommitdiffhomepage
path: root/caddyconfig/httpcaddyfile/options.go
diff options
context:
space:
mode:
authorChris Ortman <[email protected]>2020-06-12 14:37:56 -0500
committerGitHub <[email protected]>2020-06-12 13:37:56 -0600
commitd84a5d84278686d7400b3754b0422f85f5541326 (patch)
treeba7941baa24e62e8470e26f9995b3f7c215357bf /caddyconfig/httpcaddyfile/options.go
parent7da32f493a41e7cd62e8eeb3976914e54340cc9b (diff)
downloadcaddy-d84a5d84278686d7400b3754b0422f85f5541326.tar.gz
caddy-d84a5d84278686d7400b3754b0422f85f5541326.zip
httpcaddyfile: New `acme_eab` option (#3492)
* Adds global options for external account bindings * Maybe other people use ctags too? * Use nested block to configure external account * go format files * Restore acme_ca directive in test file * Change Caddyfile config syntax for acme_eab * Update test Co-authored-by: Matt Holt <[email protected]>
Diffstat (limited to 'caddyconfig/httpcaddyfile/options.go')
-rw-r--r--caddyconfig/httpcaddyfile/options.go31
1 files changed, 30 insertions, 1 deletions
diff --git a/caddyconfig/httpcaddyfile/options.go b/caddyconfig/httpcaddyfile/options.go
index cecb3d4b5..2b6b111ea 100644
--- a/caddyconfig/httpcaddyfile/options.go
+++ b/caddyconfig/httpcaddyfile/options.go
@@ -31,8 +31,9 @@ func init() {
RegisterGlobalOption("experimental_http3", parseOptTrue)
RegisterGlobalOption("storage", parseOptStorage)
RegisterGlobalOption("acme_ca", parseOptSingleString)
- RegisterGlobalOption("acme_dns", parseOptSingleString)
RegisterGlobalOption("acme_ca_root", parseOptSingleString)
+ RegisterGlobalOption("acme_dns", parseOptSingleString)
+ RegisterGlobalOption("acme_eab", parseOptACMEEAB)
RegisterGlobalOption("email", parseOptSingleString)
RegisterGlobalOption("admin", parseOptAdmin)
RegisterGlobalOption("on_demand_tls", parseOptOnDemand)
@@ -180,6 +181,34 @@ func parseOptStorage(d *caddyfile.Dispenser) (interface{}, error) {
return storage, nil
}
+func parseOptACMEEAB(d *caddyfile.Dispenser) (interface{}, error) {
+ eab := new(caddytls.ExternalAccountBinding)
+ for d.Next() {
+ if d.NextArg() {
+ return nil, d.ArgErr()
+ }
+ for nesting := d.Nesting(); d.NextBlock(nesting); {
+ switch d.Val() {
+ case "key_id":
+ if !d.NextArg() {
+ return nil, d.ArgErr()
+ }
+ eab.KeyID = d.Val()
+
+ case "hmac":
+ if !d.NextArg() {
+ return nil, d.ArgErr()
+ }
+ eab.HMAC = d.Val()
+
+ default:
+ return nil, d.Errf("unrecognized parameter '%s'", d.Val())
+ }
+ }
+ }
+ return eab, nil
+}
+
func parseOptSingleString(d *caddyfile.Dispenser) (interface{}, error) {
d.Next() // consume parameter name
if !d.Next() {