取消SMTP中继旧配置自动兼容
Some checks are pending
Security Checks / security (push) Waiting to run

中继仅由enabled开关控制,不再根据旧字段自动启用或沿用旧开关状态。
This commit is contained in:
smail 2026-10-06 00:27:48 +08:00
parent 3cca3438b8
commit 81bb792ba7
5 changed files with 3 additions and 50 deletions

View File

@ -897,9 +897,6 @@ func applySectionPayload(current RuntimeConfig, section Section, payload json.Ra
return RuntimeConfig{}, ErrInvalidSecretChange
}
clearRelay = value.SMTPSectionConfig.Relay.Clear
if !value.SMTPSectionConfig.Relay.relayEnabledSet {
value.SMTPSectionConfig.Relay.RelayEnabled = current.SMTP.Relay.RelayEnabled
}
if clearRelay {
clearSMTPRelay(&value.SMTPSectionConfig.Relay)
} else {
@ -933,9 +930,6 @@ func applySectionPayload(current RuntimeConfig, section Section, payload json.Ra
return RuntimeConfig{}, ErrInvalidSecretChange
}
clearRelay = value.MailSectionConfig.Relay.Clear
if !value.MailSectionConfig.Relay.relayEnabledSet {
value.MailSectionConfig.Relay.RelayEnabled = current.SMTP.Relay.RelayEnabled
}
if clearRelay {
clearSMTPRelay(&value.MailSectionConfig.Relay)
} else {
@ -1017,7 +1011,6 @@ func clearSMTPRelay(relay *SMTPConfig) {
relay.From = ""
relay.FromDomain = ""
relay.Clear = false
relay.relayEnabledSet = true
}
func setCandidateGeneration(candidate *RuntimeConfig, generation uint64) {

View File

@ -763,7 +763,6 @@ func validLegacyDatabasePassword(value string) bool {
func legacySMTPConfig(root string, vault *credential.Vault, legacy legacyMigrationConfig) (SMTPConfig, []string, error) {
relay := SMTPConfig{
RelayEnabled: legacy.SMTPHost != "" || legacy.SMTPPort != 0 || legacy.SMTPUsername != "" || legacy.SMTPFrom != "" || legacy.SMTPPassword != "",
RelayHost: legacy.SMTPHost,
RelayPort: legacy.SMTPPort,
Username: legacy.SMTPUsername,

View File

@ -1,9 +1,6 @@
package config
import (
"encoding/json"
"time"
)
import "time"
type SetupState string
@ -96,41 +93,6 @@ type SMTPConfig struct {
VerificationEnabled bool `json:"verificationEnabled"`
LoginPolicy string `json:"loginPolicy"`
Clear bool `json:"clear,omitempty"`
relayEnabledSet bool `json:"-"`
}
func (s *SMTPConfig) UnmarshalJSON(data []byte) error {
type smtpConfigAlias SMTPConfig
var value smtpConfigAlias
if err := json.Unmarshal(data, &value); err != nil {
return err
}
var fields map[string]json.RawMessage
if err := json.Unmarshal(data, &fields); err != nil {
return err
}
*s = SMTPConfig(value)
_, enabledProvided := fields["enabled"]
configured := smtpRelayFieldsConfigured(*s)
s.relayEnabledSet = enabledProvided && (s.RelayEnabled || configured)
if !enabledProvided {
s.RelayEnabled = configured
}
return nil
}
func (s SMTPConfig) MarshalJSON() ([]byte, error) {
type smtpConfigAlias SMTPConfig
data, err := json.Marshal(smtpConfigAlias(s))
if err != nil || s.RelayEnabled || s.relayEnabledSet {
return data, err
}
var fields map[string]json.RawMessage
if err := json.Unmarshal(data, &fields); err != nil {
return nil, err
}
delete(fields, "enabled")
return json.Marshal(fields)
}
type EmailConfig struct {

View File

@ -288,7 +288,6 @@ func CurrentSMTPRuntimeSettings() (SMTPRuntimeSettings, error) {
return SMTPRuntimeSettings{}, fmt.Errorf("runtime configuration is unavailable")
}
settings.Relay = SMTPConfig{
RelayEnabled: cfg.SMTPHost != "" || cfg.SMTPPort != 0 || cfg.SMTPUsername != "" || cfg.SMTPFrom != "" || cfg.SMTPPassword != "",
RelayHost: cfg.SMTPHost,
RelayPort: cfg.SMTPPort,
Username: cfg.SMTPUsername,

View File

@ -173,11 +173,11 @@ func smtpRelayFieldsConfigured(smtp SMTPConfig) bool {
}
func smtpRelayConfigured(smtp SMTPConfig) bool {
return smtpRelayFieldsConfigured(smtp) || smtp.RelayEnabled
return smtp.RelayEnabled
}
func smtpRelayEnabled(smtp SMTPConfig) bool {
return smtp.RelayEnabled || (!smtp.relayEnabledSet && smtpRelayFieldsConfigured(smtp))
return smtp.RelayEnabled
}
func (smtp SMTPConfig) RelayActive() bool {