From d5f5d57787d25dc7a77ba95e69b1e9d622b7ba74 Mon Sep 17 00:00:00 2001 From: applexad Date: Thu, 25 Apr 2024 22:49:33 +0800 Subject: [PATCH] Restore validate DDNS provider function --- service/singleton/ddns.go | 12 ++++++++++++ service/singleton/singleton.go | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/service/singleton/ddns.go b/service/singleton/ddns.go index 1e589a92ac4..294964bb384 100644 --- a/service/singleton/ddns.go +++ b/service/singleton/ddns.go @@ -74,3 +74,15 @@ func GetDDNSProviderFromProfile(profileName string) (ddns2.Provider, error) { } return ddns2.ProviderDummy{}, errors.New(fmt.Sprintf("无法找到配置的DDNS提供者%s", profile.Provider)) } + +func ValidateDDNSProvidersFromProfiles() error { + validProviders := map[string]bool{"webhook": true, "dummy": true, "cloudflare": true, "tencentcloud": true} + providers := make(map[string]string) + for profileName, profile := range Conf.DDNS.Profiles { + if _, ok := validProviders[profile.Provider]; !ok { + return errors.New(fmt.Sprintf("无法找到配置的DDNS提供者%s", profile.Provider)) + } + providers[profileName] = profile.Provider + } + return nil +} \ No newline at end of file diff --git a/service/singleton/singleton.go b/service/singleton/singleton.go index 57dfd2be5bf..7c9046e4196 100644 --- a/service/singleton/singleton.go +++ b/service/singleton/singleton.go @@ -52,6 +52,15 @@ func InitConfigFromPath(path string) { // ValidateConfig 验证配置文件有效性 func ValidateConfig() { + var err error + if Conf.DDNS.Provider == "" { + err = ValidateDDNSProvidersFromProfiles() + } else { + _, err = GetDDNSProviderFromString(Conf.DDNS.Provider) + } + if err != nil { + panic(err) + } if Conf.DDNS.Enable { if Conf.DDNS.MaxRetries < 1 || Conf.DDNS.MaxRetries > 10 { panic(fmt.Errorf("DDNS.MaxRetries值域为[1, 10]的整数, 当前为 %d", Conf.DDNS.MaxRetries))