diff --git a/internal/certacme/certifiers/sp_cloudflare.go b/internal/certacme/certifiers/sp_cloudflare.go index 65ee34988..98adde4ae 100644 --- a/internal/certacme/certifiers/sp_cloudflare.go +++ b/internal/certacme/certifiers/sp_cloudflare.go @@ -17,8 +17,8 @@ func init() { } provider, err := chlgimpl.NewChallenger(&chlgimpl.ChallengerConfig{ - DnsApiToken: credentials.DnsApiToken, - ZoneApiToken: credentials.ZoneApiToken, + ApiToken: credentials.ApiToken, + ApiTokenForZone: credentials.ApiTokenForZone, DnsPropagationTimeout: options.DnsPropagationTimeout, DnsTTL: options.DnsTTL, }) diff --git a/internal/domain/access.go b/internal/domain/access.go index 4bc3c32dc..94fa1f701 100644 --- a/internal/domain/access.go +++ b/internal/domain/access.go @@ -152,8 +152,8 @@ type AccessConfigForCdnfly struct { } type AccessConfigForCloudflare struct { - DnsApiToken string `json:"dnsApiToken"` - ZoneApiToken string `json:"zoneApiToken,omitempty"` + ApiToken string `json:"apiToken"` + ApiTokenForZone string `json:"apiTokenForZone,omitempty"` } type AccessConfigForClouDNS struct { diff --git a/migrations/1780408800_upgrade_v0.4.25.go b/migrations/1780545600_upgrade_v0.4.25.go similarity index 51% rename from migrations/1780408800_upgrade_v0.4.25.go rename to migrations/1780545600_upgrade_v0.4.25.go index 34606691a..bd83e7066 100644 --- a/migrations/1780408800_upgrade_v0.4.25.go +++ b/migrations/1780545600_upgrade_v0.4.25.go @@ -33,25 +33,44 @@ func init() { } switch provider { - case "byteplus": - if _, ok := config["accessKey"]; ok { - config["accessKeyId"] = config["accessKey"] - delete(config, "accessKey") - record.Set("config", config) - changed = true + case "cloudflare": + { + if _, ok := config["dnsApiToken"]; ok { + config["apiToken"] = config["dnsApiToken"] + delete(config, "dnsApiToken") + record.Set("config", config) + changed = true + } + if _, ok := config["zoneApiToken"]; ok { + config["apiTokenForZone"] = config["zoneApiToken"] + delete(config, "zoneApiToken") + record.Set("config", config) + changed = true + } } - if _, ok := config["secretKey"]; ok { - config["secretAccessKey"] = config["secretKey"] - delete(config, "secretKey") - record.Set("config", config) - changed = true + case "byteplus": + { + if _, ok := config["accessKey"]; ok { + config["accessKeyId"] = config["accessKey"] + delete(config, "accessKey") + record.Set("config", config) + changed = true + } + if _, ok := config["secretKey"]; ok { + config["secretAccessKey"] = config["secretKey"] + delete(config, "secretKey") + record.Set("config", config) + changed = true + } } case "volcengine": - if _, ok := config["accessKeySecret"]; ok { - config["secretAccessKey"] = config["accessKeySecret"] - delete(config, "accessKeySecret") - record.Set("config", config) - changed = true + { + if _, ok := config["accessKeySecret"]; ok { + config["secretAccessKey"] = config["accessKeySecret"] + delete(config, "accessKeySecret") + record.Set("config", config) + changed = true + } } } diff --git a/pkg/core/certifier/challengers/dns01/cloudflare/cloudflare.go b/pkg/core/certifier/challengers/dns01/cloudflare/cloudflare.go index 6341af780..ca0c4db29 100644 --- a/pkg/core/certifier/challengers/dns01/cloudflare/cloudflare.go +++ b/pkg/core/certifier/challengers/dns01/cloudflare/cloudflare.go @@ -10,8 +10,8 @@ import ( ) type ChallengerConfig struct { - DnsApiToken string `json:"dnsApiToken"` - ZoneApiToken string `json:"zoneApiToken,omitempty"` + ApiToken string `json:"apiToken"` + ApiTokenForZone string `json:"apiTokenForZone,omitempty"` DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` DnsTTL int `json:"dnsTTL,omitempty"` } @@ -22,8 +22,10 @@ func NewChallenger(config *ChallengerConfig) (core.ACMEChallenger, error) { } providerConfig := cloudflare.NewDefaultConfig() - providerConfig.AuthToken = config.DnsApiToken - providerConfig.ZoneToken = config.ZoneApiToken + providerConfig.AuthToken = config.ApiToken + if config.ApiTokenForZone != "" { + providerConfig.ZoneToken = config.ApiTokenForZone + } if config.DnsPropagationTimeout != 0 { providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } diff --git a/ui/src/components/access/forms/AccessConfigFieldsProviderCloudflare.tsx b/ui/src/components/access/forms/AccessConfigFieldsProviderCloudflare.tsx index ee7313e54..30565a49a 100644 --- a/ui/src/components/access/forms/AccessConfigFieldsProviderCloudflare.tsx +++ b/ui/src/components/access/forms/AccessConfigFieldsProviderCloudflare.tsx @@ -18,24 +18,24 @@ const AccessConfigFormFieldsProviderCloudflare = () => { return ( <> } + tooltip={} > - + } + name={[parentNamePath, "apiTokenForZone"]} + initialValue={initialValues.apiTokenForZone} + label={t("access.form.cloudflare_api_token_for_zone.label")} + extra={} rules={[formRule]} - tooltip={} + tooltip={} > - + ); @@ -43,7 +43,7 @@ const AccessConfigFormFieldsProviderCloudflare = () => { const getInitialValues = (): Nullish>> => { return { - dnsApiToken: "", + apiToken: "", }; }; @@ -51,8 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType }) = const { t: _ } = i18n; return z.object({ - dnsApiToken: z.string().nonempty(), - zoneApiToken: z.string().nullish(), + apiToken: z.string().nonempty(), + apiTokenForZone: z.string().nullish(), }); }; diff --git a/ui/src/i18n/resources/en/nls.access.json b/ui/src/i18n/resources/en/nls.access.json index b898058a2..496c095d7 100644 --- a/ui/src/i18n/resources/en/nls.access.json +++ b/ui/src/i18n/resources/en/nls.access.json @@ -360,15 +360,15 @@ "placeholder": "Please enter Cdnfly user API secret", "tooltip": "For more information, see https://doc.cdnfly.cn/shiyongjieshao.html" }, - "cloudflare_dns_api_token": { - "label": "Cloudflare DNS API token", - "placeholder": "Please enter Cloudflare DNS API token", + "cloudflare_api_token": { + "label": "Cloudflare API token", + "placeholder": "Please enter Cloudflare API token", "tooltip": "For more information, see https://developers.cloudflare.com/fundamentals/api/get-started/create-token/" }, - "cloudflare_zone_api_token": { + "cloudflare_api_token_for_zone": { "label": "Cloudflare Zone API token (Optional)", "placeholder": "Please enter Cloudflare Zone API token", - "help": "Notes: Only required when you scope the DNS API token to specific zones. PLease scope the Zone API token to all zones with Zone/Zone/Read permission.", + "help": "Notes: Only required when you scope the API token to specific zones. PLease scope the Zone API token to all zones with Zone/Zone/Read permission.", "tooltip": "For more information, see https://developers.cloudflare.com/fundamentals/api/get-started/create-token/" }, "cloudns_auth_id": { diff --git a/ui/src/i18n/resources/zh/nls.access.json b/ui/src/i18n/resources/zh/nls.access.json index a60c49f3b..36ba7ae81 100644 --- a/ui/src/i18n/resources/zh/nls.access.json +++ b/ui/src/i18n/resources/zh/nls.access.json @@ -358,15 +358,15 @@ "placeholder": "请输入 Cdnfly 用户端 API Secret", "tooltip": "这是什么?请参阅 https://doc.cdnfly.cn/shiyongjieshao.html" }, - "cloudflare_dns_api_token": { - "label": "Cloudflare DNS API 令牌", - "placeholder": "请输入 Cloudflare DNS API 令牌", + "cloudflare_api_token": { + "label": "Cloudflare API 令牌", + "placeholder": "请输入 Cloudflare API 令牌", "tooltip": "这是什么?请参阅 https://developers.cloudflare.com/fundamentals/api/get-started/create-token/" }, - "cloudflare_zone_api_token": { + "cloudflare_api_token_for_zone": { "label": "Cloudflare Zone API 令牌(可选)", "placeholder": "请输入 Cloudflare Zone API 令牌", - "help": "提示:仅当你将 DNS API 令牌范围指定为特定域时需要填写,请将 Zone API 令牌范围指定为全部域,并分配 Zone/Zone/Read 权限。", + "help": "提示:仅当你将 API 令牌范围指定为特定域时需要填写,请将 Zone API 令牌范围指定为全部域,并分配 Zone/Zone/Read 权限。", "tooltip": "这是什么?请参阅 https://developers.cloudflare.com/fundamentals/api/get-started/create-token/" }, "cloudns_auth_id": {