summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--caddyconfig/httpcaddyfile/httptype.go11
-rw-r--r--caddyconfig/httpcaddyfile/options.go16
-rw-r--r--caddytest/integration/caddyfile_adapt/global_options_admin_with_persist_config_off.txt36
-rw-r--r--caddytest/integration/caddyfile_adapt/global_options_persist_config.txt25
4 files changed, 88 insertions, 0 deletions
diff --git a/caddyconfig/httpcaddyfile/httptype.go b/caddyconfig/httpcaddyfile/httptype.go
index 43d756f..50e98ac 100644
--- a/caddyconfig/httpcaddyfile/httptype.go
+++ b/caddyconfig/httpcaddyfile/httptype.go
@@ -286,6 +286,17 @@ func (st ServerType) Setup(inputServerBlocks []caddyfile.ServerBlock,
if adminConfig, ok := options["admin"].(*caddy.AdminConfig); ok && adminConfig != nil {
cfg.Admin = adminConfig
}
+
+ if pc, ok := options["persist_config"].(string); ok && pc == "off" {
+ if cfg.Admin == nil {
+ cfg.Admin = new(caddy.AdminConfig)
+ }
+ if cfg.Admin.Config == nil {
+ cfg.Admin.Config = new(caddy.ConfigSettings)
+ }
+ cfg.Admin.Config.Persist = new(bool)
+ }
+
if len(customLogs) > 0 {
if cfg.Logging == nil {
cfg.Logging = &caddy.Logging{
diff --git a/caddyconfig/httpcaddyfile/options.go b/caddyconfig/httpcaddyfile/options.go
index 1775c93..4e5212b 100644
--- a/caddyconfig/httpcaddyfile/options.go
+++ b/caddyconfig/httpcaddyfile/options.go
@@ -54,6 +54,7 @@ func init() {
RegisterGlobalOption("ocsp_stapling", parseOCSPStaplingOptions)
RegisterGlobalOption("log", parseLogOptions)
RegisterGlobalOption("preferred_chains", parseOptPreferredChains)
+ RegisterGlobalOption("persist_config", parseOptPersistConfig)
}
func parseOptTrue(d *caddyfile.Dispenser, _ any) (any, error) { return true, nil }
@@ -386,6 +387,21 @@ func parseOptOnDemand(d *caddyfile.Dispenser, _ any) (any, error) {
return ond, nil
}
+func parseOptPersistConfig(d *caddyfile.Dispenser, _ any) (any, error) {
+ d.Next() // consume parameter name
+ if !d.Next() {
+ return "", d.ArgErr()
+ }
+ val := d.Val()
+ if d.Next() {
+ return "", d.ArgErr()
+ }
+ if val != "off" {
+ return "", d.Errf("persist_config must be 'off'")
+ }
+ return val, nil
+}
+
func parseOptAutoHTTPS(d *caddyfile.Dispenser, _ any) (any, error) {
d.Next() // consume parameter name
if !d.Next() {
diff --git a/caddytest/integration/caddyfile_adapt/global_options_admin_with_persist_config_off.txt b/caddytest/integration/caddyfile_adapt/global_options_admin_with_persist_config_off.txt
new file mode 100644
index 0000000..998fe22
--- /dev/null
+++ b/caddytest/integration/caddyfile_adapt/global_options_admin_with_persist_config_off.txt
@@ -0,0 +1,36 @@
+{
+ http_port 8080
+ persist_config off
+ admin {
+ origins localhost:2019 [::1]:2019 127.0.0.1:2019 192.168.10.128
+ }
+}
+
+:80
+----------
+{
+ "admin": {
+ "listen": "localhost:2019",
+ "origins": [
+ "localhost:2019",
+ "[::1]:2019",
+ "127.0.0.1:2019",
+ "192.168.10.128"
+ ],
+ "config": {
+ "persist": false
+ }
+ },
+ "apps": {
+ "http": {
+ "http_port": 8080,
+ "servers": {
+ "srv0": {
+ "listen": [
+ ":80"
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/caddytest/integration/caddyfile_adapt/global_options_persist_config.txt b/caddytest/integration/caddyfile_adapt/global_options_persist_config.txt
new file mode 100644
index 0000000..c905b47
--- /dev/null
+++ b/caddytest/integration/caddyfile_adapt/global_options_persist_config.txt
@@ -0,0 +1,25 @@
+{
+ persist_config off
+}
+
+:8881 {
+}
+----------
+{
+ "admin": {
+ "config": {
+ "persist": false
+ }
+ },
+ "apps": {
+ "http": {
+ "servers": {
+ "srv0": {
+ "listen": [
+ ":8881"
+ ]
+ }
+ }
+ }
+ }
+}