diff --git a/modules/setting/config_provider.go b/modules/setting/config_provider.go index 94dd989850aea..ae1a78624ba25 100644 --- a/modules/setting/config_provider.go +++ b/modules/setting/config_provider.go @@ -322,9 +322,17 @@ func deprecatedSetting(rootCfg ConfigProvider, oldSection, oldKey, newSection, n } } +var fatalDeprecatedSetting []string + func deprecatedSettingFatal(rootCfg ConfigProvider, oldSection, oldKey, newSection, newKey, version string) { if rootCfg.Section(oldSection).HasKey(oldKey) { - log.Fatal("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s", oldSection, oldKey, newSection, newKey, version) + fatalDeprecatedSetting = append(fatalDeprecatedSetting, fmt.Sprintf("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s", oldSection, oldKey, newSection, newKey, version)) + } +} + +func doDeprecatedSettingFatal() { + if len(fatalDeprecatedSetting) > 0 { + log.Fatal(strings.Join(fatalDeprecatedSetting, "\n")) } } diff --git a/modules/setting/mailer.go b/modules/setting/mailer.go index a2bc2df444990..20ec130855787 100644 --- a/modules/setting/mailer.go +++ b/modules/setting/mailer.go @@ -67,67 +67,15 @@ func loadMailerFrom(rootCfg ConfigProvider) { // Handle Deprecations and map on to new configuration // DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version // if these are removed, the warning will not be shown - deprecatedSetting(rootCfg, "mailer", "MAILER_TYPE", "mailer", "PROTOCOL", "v1.19.0") - if sec.HasKey("MAILER_TYPE") && !sec.HasKey("PROTOCOL") { - if sec.Key("MAILER_TYPE").String() == "sendmail" { - sec.Key("PROTOCOL").MustString("sendmail") - } - } - - deprecatedSetting(rootCfg, "mailer", "HOST", "mailer", "SMTP_ADDR", "v1.19.0") - if sec.HasKey("HOST") && !sec.HasKey("SMTP_ADDR") { - givenHost := sec.Key("HOST").String() - addr, port, err := net.SplitHostPort(givenHost) - if err != nil && strings.Contains(err.Error(), "missing port in address") { - addr = givenHost - } else if err != nil { - log.Fatal("Invalid mailer.HOST (%s): %v", givenHost, err) - } - if addr == "" { - addr = "127.0.0.1" - } - sec.Key("SMTP_ADDR").MustString(addr) - sec.Key("SMTP_PORT").MustString(port) - } - - deprecatedSetting(rootCfg, "mailer", "IS_TLS_ENABLED", "mailer", "PROTOCOL", "v1.19.0") - if sec.HasKey("IS_TLS_ENABLED") && !sec.HasKey("PROTOCOL") { - if sec.Key("IS_TLS_ENABLED").MustBool() { - sec.Key("PROTOCOL").MustString("smtps") - } else { - sec.Key("PROTOCOL").MustString("smtp+starttls") - } - } - - deprecatedSetting(rootCfg, "mailer", "DISABLE_HELO", "mailer", "ENABLE_HELO", "v1.19.0") - if sec.HasKey("DISABLE_HELO") && !sec.HasKey("ENABLE_HELO") { - sec.Key("ENABLE_HELO").MustBool(!sec.Key("DISABLE_HELO").MustBool()) - } - - deprecatedSetting(rootCfg, "mailer", "SKIP_VERIFY", "mailer", "FORCE_TRUST_SERVER_CERT", "v1.19.0") - if sec.HasKey("SKIP_VERIFY") && !sec.HasKey("FORCE_TRUST_SERVER_CERT") { - sec.Key("FORCE_TRUST_SERVER_CERT").MustBool(sec.Key("SKIP_VERIFY").MustBool()) - } - - deprecatedSetting(rootCfg, "mailer", "USE_CERTIFICATE", "mailer", "USE_CLIENT_CERT", "v1.19.0") - if sec.HasKey("USE_CERTIFICATE") && !sec.HasKey("USE_CLIENT_CERT") { - sec.Key("USE_CLIENT_CERT").MustBool(sec.Key("USE_CERTIFICATE").MustBool()) - } - - deprecatedSetting(rootCfg, "mailer", "CERT_FILE", "mailer", "CLIENT_CERT_FILE", "v1.19.0") - if sec.HasKey("CERT_FILE") && !sec.HasKey("CLIENT_CERT_FILE") { - sec.Key("CERT_FILE").MustString(sec.Key("CERT_FILE").String()) - } - - deprecatedSetting(rootCfg, "mailer", "KEY_FILE", "mailer", "CLIENT_KEY_FILE", "v1.19.0") - if sec.HasKey("KEY_FILE") && !sec.HasKey("CLIENT_KEY_FILE") { - sec.Key("KEY_FILE").MustString(sec.Key("KEY_FILE").String()) - } - - deprecatedSetting(rootCfg, "mailer", "ENABLE_HTML_ALTERNATIVE", "mailer", "SEND_AS_PLAIN_TEXT", "v1.19.0") - if sec.HasKey("ENABLE_HTML_ALTERNATIVE") && !sec.HasKey("SEND_AS_PLAIN_TEXT") { - sec.Key("SEND_AS_PLAIN_TEXT").MustBool(!sec.Key("ENABLE_HTML_ALTERNATIVE").MustBool(false)) - } + deprecatedSettingFatal(rootCfg, "mailer", "MAILER_TYPE", "mailer", "PROTOCOL", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "HOST", "mailer", "SMTP_ADDR", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "IS_TLS_ENABLED", "mailer", "PROTOCOL", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "DISABLE_HELO", "mailer", "ENABLE_HELO", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "SKIP_VERIFY", "mailer", "FORCE_TRUST_SERVER_CERT", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "USE_CERTIFICATE", "mailer", "USE_CLIENT_CERT", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "CERT_FILE", "mailer", "CLIENT_CERT_FILE", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "KEY_FILE", "mailer", "CLIENT_KEY_FILE", "v1.19.0") + deprecatedSettingFatal(rootCfg, "mailer", "ENABLE_HTML_ALTERNATIVE", "mailer", "SEND_AS_PLAIN_TEXT", "v1.19.0") if sec.HasKey("PROTOCOL") && sec.Key("PROTOCOL").String() == "smtp+startls" { log.Error("Deprecated fallback `[mailer]` `PROTOCOL = smtp+startls` present. Use `[mailer]` `PROTOCOL = smtp+starttls`` instead. This fallback will be removed in v1.19.0") diff --git a/modules/setting/mailer_test.go b/modules/setting/mailer_test.go index fbabf113786f7..728e51dfaf5df 100644 --- a/modules/setting/mailer_test.go +++ b/modules/setting/mailer_test.go @@ -4,6 +4,7 @@ package setting import ( + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -26,11 +27,12 @@ func Test_loadMailerFrom(t *testing.T) { } for host, kase := range kases { t.Run(host, func(t *testing.T) { - cfg, _ := NewConfigProviderFromData("") - sec := cfg.Section("mailer") - sec.NewKey("ENABLED", "true") - sec.NewKey("HOST", host) - + cfg, _ := NewConfigProviderFromData(fmt.Sprintf(` +[mailer] +ENABLED = true +SMTP_ADDR = %s +SMTP_PORT = %s +`, kase.SMTPAddr, kase.SMTPPort)) // Check mailer setting loadMailerFrom(cfg) diff --git a/modules/setting/mirror.go b/modules/setting/mirror.go index 3aa530a1f4847..2a14a41b21e76 100644 --- a/modules/setting/mirror.go +++ b/modules/setting/mirror.go @@ -29,10 +29,7 @@ func loadMirrorFrom(rootCfg ConfigProvider) { // - please note this was badly named and only disabled the creation of new pull mirrors // DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version // if these are removed, the warning will not be shown - deprecatedSetting(rootCfg, "repository", "DISABLE_MIRRORS", "mirror", "ENABLED", "v1.19.0") - if ConfigSectionKeyBool(rootCfg.Section("repository"), "DISABLE_MIRRORS") { - Mirror.DisableNewPull = true - } + deprecatedSettingFatal(rootCfg, "repository", "DISABLE_MIRRORS", "mirror", "ENABLED", "v1.19.0") if err := rootCfg.Section("mirror").MapTo(&Mirror); err != nil { log.Fatal("Failed to map Mirror settings: %v", err) diff --git a/modules/setting/server.go b/modules/setting/server.go index 7c033bcc6ba79..ad0b3f7938e3b 100644 --- a/modules/setting/server.go +++ b/modules/setting/server.go @@ -184,37 +184,32 @@ func loadServerFrom(rootCfg ConfigProvider) { // if these are removed, the warning will not be shown if sec.HasKey("ENABLE_ACME") { EnableAcme = sec.Key("ENABLE_ACME").MustBool(false) - } else { - deprecatedSetting(rootCfg, "server", "ENABLE_LETSENCRYPT", "server", "ENABLE_ACME", "v1.19.0") - EnableAcme = sec.Key("ENABLE_LETSENCRYPT").MustBool(false) } + deprecatedSettingFatal(rootCfg, "server", "ENABLE_LETSENCRYPT", "server", "ENABLE_ACME", "v1.19.0") + if EnableAcme { AcmeURL = sec.Key("ACME_URL").MustString("") AcmeCARoot = sec.Key("ACME_CA_ROOT").MustString("") if sec.HasKey("ACME_ACCEPTTOS") { AcmeTOS = sec.Key("ACME_ACCEPTTOS").MustBool(false) - } else { - deprecatedSetting(rootCfg, "server", "LETSENCRYPT_ACCEPTTOS", "server", "ACME_ACCEPTTOS", "v1.19.0") - AcmeTOS = sec.Key("LETSENCRYPT_ACCEPTTOS").MustBool(false) } + deprecatedSettingFatal(rootCfg, "server", "LETSENCRYPT_ACCEPTTOS", "server", "ACME_ACCEPTTOS", "v1.19.0") + if !AcmeTOS { log.Fatal("ACME TOS is not accepted (ACME_ACCEPTTOS).") } if sec.HasKey("ACME_DIRECTORY") { AcmeLiveDirectory = sec.Key("ACME_DIRECTORY").MustString("https") - } else { - deprecatedSetting(rootCfg, "server", "LETSENCRYPT_DIRECTORY", "server", "ACME_DIRECTORY", "v1.19.0") - AcmeLiveDirectory = sec.Key("LETSENCRYPT_DIRECTORY").MustString("https") } + deprecatedSettingFatal(rootCfg, "server", "LETSENCRYPT_DIRECTORY", "server", "ACME_DIRECTORY", "v1.19.0") if sec.HasKey("ACME_EMAIL") { AcmeEmail = sec.Key("ACME_EMAIL").MustString("") - } else { - deprecatedSetting(rootCfg, "server", "LETSENCRYPT_EMAIL", "server", "ACME_EMAIL", "v1.19.0") - AcmeEmail = sec.Key("LETSENCRYPT_EMAIL").MustString("") } + deprecatedSettingFatal(rootCfg, "server", "LETSENCRYPT_EMAIL", "server", "ACME_EMAIL", "v1.19.0") + } else { CertFile = sec.Key("CERT_FILE").String() KeyFile = sec.Key("KEY_FILE").String() diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 0d69847dbeab2..43705b7a97b72 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -214,6 +214,8 @@ func LoadSettings() { loadProjectFrom(CfgProvider) loadMimeTypeMapFrom(CfgProvider) loadFederationFrom(CfgProvider) + + doDeprecatedSettingFatal() } // LoadSettingsForInstall initializes the settings for install diff --git a/tests/mssql.ini.tmpl b/tests/mssql.ini.tmpl index 10e70d35fc817..93ade74805b12 100644 --- a/tests/mssql.ini.tmpl +++ b/tests/mssql.ini.tmpl @@ -58,7 +58,7 @@ PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/data/attachments [mailer] ENABLED = true -MAILER_TYPE = dummy +PROTOCOL = dummy FROM = mssql-{{TEST_TYPE}}-test@gitea.io [service] diff --git a/tests/mysql.ini.tmpl b/tests/mysql.ini.tmpl index 9d6bbd65e6e88..10aa3cabbee8c 100644 --- a/tests/mysql.ini.tmpl +++ b/tests/mysql.ini.tmpl @@ -58,7 +58,7 @@ SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXW [mailer] ENABLED = true -MAILER_TYPE = dummy +PROTOCOL = dummy FROM = mysql-{{TEST_TYPE}}-test@gitea.io [service] diff --git a/tests/pgsql.ini.tmpl b/tests/pgsql.ini.tmpl index dd45ab717aae6..2b54843c30a63 100644 --- a/tests/pgsql.ini.tmpl +++ b/tests/pgsql.ini.tmpl @@ -59,7 +59,7 @@ PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/data/attachments [mailer] ENABLED = true -MAILER_TYPE = dummy +PROTOCOL = dummy FROM = pgsql-{{TEST_TYPE}}-test@gitea.io [service] diff --git a/tests/sqlite.ini.tmpl b/tests/sqlite.ini.tmpl index 969c15698daa9..fbfaf0a42a8e6 100644 --- a/tests/sqlite.ini.tmpl +++ b/tests/sqlite.ini.tmpl @@ -55,7 +55,7 @@ PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/attachments [mailer] ENABLED = true -MAILER_TYPE = dummy +PROTOCOL = dummy FROM = sqlite-{{TEST_TYPE}}-test@gitea.io [service]