summaryrefslogtreecommitdiff
path: root/caddyconfig/httpcaddyfile/options.go
diff options
context:
space:
mode:
Diffstat (limited to 'caddyconfig/httpcaddyfile/options.go')
-rw-r--r--caddyconfig/httpcaddyfile/options.go38
1 files changed, 30 insertions, 8 deletions
diff --git a/caddyconfig/httpcaddyfile/options.go b/caddyconfig/httpcaddyfile/options.go
index f69ca3e..613bbc6 100644
--- a/caddyconfig/httpcaddyfile/options.go
+++ b/caddyconfig/httpcaddyfile/options.go
@@ -223,17 +223,39 @@ func parseOptSingleString(d *caddyfile.Dispenser) (interface{}, error) {
}
func parseOptAdmin(d *caddyfile.Dispenser) (interface{}, error) {
- if d.Next() {
- var listenAddress string
- if !d.AllArgs(&listenAddress) {
- return "", d.ArgErr()
+ adminCfg := new(caddy.AdminConfig)
+ for d.Next() {
+ if d.NextArg() {
+ listenAddress := d.Val()
+ if listenAddress == "off" {
+ adminCfg.Disabled = true
+ if d.Next() { // Do not accept any remaining options including block
+ return nil, d.Err("No more option is allowed after turning off admin config")
+ }
+ } else {
+ adminCfg.Listen = listenAddress
+ if d.NextArg() { // At most 1 arg is allowed
+ return nil, d.ArgErr()
+ }
+ }
}
- if listenAddress == "" {
- listenAddress = caddy.DefaultAdminListen
+ for nesting := d.Nesting(); d.NextBlock(nesting); {
+ switch d.Val() {
+ case "enforce_origin":
+ adminCfg.EnforceOrigin = true
+
+ case "origins":
+ adminCfg.Origins = d.RemainingArgs()
+
+ default:
+ return nil, d.Errf("unrecognized parameter '%s'", d.Val())
+ }
}
- return listenAddress, nil
}
- return "", nil
+ if adminCfg.Listen == "" && !adminCfg.Disabled {
+ adminCfg.Listen = caddy.DefaultAdminListen
+ }
+ return adminCfg, nil
}
func parseOptOnDemand(d *caddyfile.Dispenser) (interface{}, error) {