Skip to content

Commit d5f5d57

Browse files
committed
Restore validate DDNS provider function
1 parent f607362 commit d5f5d57

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

service/singleton/ddns.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,15 @@ func GetDDNSProviderFromProfile(profileName string) (ddns2.Provider, error) {
7474
}
7575
return ddns2.ProviderDummy{}, errors.New(fmt.Sprintf("无法找到配置的DDNS提供者%s", profile.Provider))
7676
}
77+
78+
func ValidateDDNSProvidersFromProfiles() error {
79+
validProviders := map[string]bool{"webhook": true, "dummy": true, "cloudflare": true, "tencentcloud": true}
80+
providers := make(map[string]string)
81+
for profileName, profile := range Conf.DDNS.Profiles {
82+
if _, ok := validProviders[profile.Provider]; !ok {
83+
return errors.New(fmt.Sprintf("无法找到配置的DDNS提供者%s", profile.Provider))
84+
}
85+
providers[profileName] = profile.Provider
86+
}
87+
return nil
88+
}

service/singleton/singleton.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ func InitConfigFromPath(path string) {
5252

5353
// ValidateConfig 验证配置文件有效性
5454
func ValidateConfig() {
55+
var err error
56+
if Conf.DDNS.Provider == "" {
57+
err = ValidateDDNSProvidersFromProfiles()
58+
} else {
59+
_, err = GetDDNSProviderFromString(Conf.DDNS.Provider)
60+
}
61+
if err != nil {
62+
panic(err)
63+
}
5564
if Conf.DDNS.Enable {
5665
if Conf.DDNS.MaxRetries < 1 || Conf.DDNS.MaxRetries > 10 {
5766
panic(fmt.Errorf("DDNS.MaxRetries值域为[1, 10]的整数, 当前为 %d", Conf.DDNS.MaxRetries))

0 commit comments

Comments
 (0)