From ea3ba917341e1b8e0137b2adb05b310c2f2291a7 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 7 Nov 2025 21:58:25 +0800 Subject: [PATCH 1/2] feat: custom certificate expiry threshold --- internal/certapply/client_certifier.go | 10 +- internal/certapply/config.go | 2 +- internal/certificate/service.go | 11 +- internal/domain/settings.go | 23 +- internal/repository/statistics.go | 74 +++--- internal/workflow/engine/executor_bizapply.go | 11 +- internal/workflow/service.go | 10 +- migrations/1762142400_m0.4.3.go | 2 +- ...2329600_m0.4.4.go => 1762516800_m0.4.4.go} | 12 + ui/public/imgs/providers/akamai.svg | 38 +--- .../designer/forms/BizApplyNodeConfigForm.tsx | 4 +- ui/src/domain/settings.ts | 5 +- ui/src/i18n/locales/en/nls.provider.json | 2 +- ui/src/i18n/locales/en/nls.settings.json | 23 +- ui/src/i18n/locales/en/nls.workflow.runs.json | 2 +- ui/src/i18n/locales/zh/nls.provider.json | 2 +- ui/src/i18n/locales/zh/nls.settings.json | 23 +- .../i18n/locales/zh/nls.workflow.nodes.json | 2 +- ui/src/pages/certificates/CertificateList.tsx | 14 +- ui/src/pages/settings/SettingsPersistence.tsx | 211 +++++++++++++----- ui/src/pages/settings/SettingsSSLProvider.tsx | 9 +- ui/src/repository/certificate.ts | 8 +- ui/src/repository/settings.ts | 62 ++++- ui/src/stores/contact/index.ts | 4 +- 24 files changed, 378 insertions(+), 186 deletions(-) rename migrations/{1762329600_m0.4.4.go => 1762516800_m0.4.4.go} (62%) diff --git a/internal/certapply/client_certifier.go b/internal/certapply/client_certifier.go index fea3659bf..8697c4704 100644 --- a/internal/certapply/client_certifier.go +++ b/internal/certapply/client_certifier.go @@ -23,10 +23,10 @@ import ( ) type ObtainCertificateRequest struct { - Domains []string - PrivateKeyType certcrypto.KeyType - PrivateKeyPEM string - ValidityTo time.Time + Domains []string + PrivateKeyType certcrypto.KeyType + PrivateKeyPEM string + ValidityNotAfter time.Time // 提供商相关 ChallengeType string @@ -169,7 +169,7 @@ func (c *ACMEClient) sendObtainCertificateRequest(request *ObtainCertificateRequ Bundle: true, PreferredChain: request.PreferredChain, Profile: request.ACMEProfile, - NotAfter: request.ValidityTo, + NotAfter: request.ValidityNotAfter, ReplacesCertID: lo.If(request.ARIReplacesAcctUrl == c.account.ACMEAcctUrl, request.ARIReplacesCertId).Else(""), } resp, err := c.client.Certificate.Obtain(req) diff --git a/internal/certapply/config.go b/internal/certapply/config.go index 58509d163..b1c160b67 100644 --- a/internal/certapply/config.go +++ b/internal/certapply/config.go @@ -53,7 +53,7 @@ func NewACMEConfig(options *ACMEConfigOptions) (*ACMEConfig, error) { if options.CAProvider == "" { settingsRepo := repository.NewSettingsRepository() - settings, _ := settingsRepo.GetByName(context.Background(), "sslProvider") + settings, _ := settingsRepo.GetByName(context.Background(), domain.SettingsNameSSLProvider) if settings != nil { sslProviderSettings := settings.Content.AsSSLProvider() caProvider = string(sslProviderSettings.Provider) diff --git a/internal/certificate/service.go b/internal/certificate/service.go index 54e52ba53..28602fd4c 100644 --- a/internal/certificate/service.go +++ b/internal/certificate/service.go @@ -5,6 +5,7 @@ import ( "bytes" "context" "crypto/x509" + "errors" "fmt" "log/slog" "strings" @@ -255,17 +256,21 @@ func (s *CertificateService) ValidatePrivateKey(ctx context.Context, req *dtos.C } func (s *CertificateService) cleanupExpiredCertificates(ctx context.Context) error { - settings, err := s.settingsRepo.GetByName(ctx, "persistence") + settings, err := s.settingsRepo.GetByName(ctx, domain.SettingsNamePersistence) if err != nil { + if errors.Is(err, domain.ErrRecordNotFound) { + return nil + } + app.GetLogger().Error("failed to get persistence settings", slog.Any("error", err)) return err } persistenceSettings := settings.Content.AsPersistence() - if persistenceSettings.ExpiredCertificatesMaxDaysRetention != 0 { + if persistenceSettings.CertificatesRetentionMaxDays != 0 { ret, err := s.certificateRepo.DeleteWhere( context.Background(), - dbx.NewExp(fmt.Sprintf("validityNotAfter DATETIME('now') and validityNotAfter < DATETIME('now', '+20 days') AND deleted = ''"). - One(&certExpiringSoonTotal); err != nil { + NewQuery(fmt.Sprintf("SELECT COUNT(*) AS total FROM certificate WHERE validityNotAfter <= DATETIME('now', '+%d days') AND validityNotAfter > DATETIME('now') AND isRevoked = 0 AND deleted = ''", persistenceSettings.CertificatesWarningDaysBeforeExpire)). + One(&rsCertExpiringSoonTotal); err != nil { return nil, err } - rs.CertificateExpiringSoon = certExpiringSoonTotal.Total + statistics.CertificateExpiringSoon = rsCertExpiringSoonTotal.Total - // 已过期证书 - certExpiredTotal := struct { + // 统计已过期证书 + rsCertExpiredTotal := struct { Total int `db:"total"` }{} if err := app.GetDB(). - NewQuery("SELECT COUNT(*) AS total FROM certificate WHERE validityNotAfter < DATETIME('now') AND deleted = ''"). - One(&certExpiredTotal); err != nil { + NewQuery("SELECT COUNT(*) AS total FROM certificate WHERE validityNotAfter <= DATETIME('now') AND deleted = ''"). + One(&rsCertExpiredTotal); err != nil { return nil, err } - rs.CertificateExpired = certExpiredTotal.Total + statistics.CertificateExpired = rsCertExpiredTotal.Total - // 所有工作流 - workflowTotal := struct { + // 统计所有工作流 + rsWorkflowTotal := struct { Total int `db:"total"` }{} if err := app.GetDB(). NewQuery("SELECT COUNT(*) AS total FROM workflow"). - One(&workflowTotal); err != nil { + One(&rsWorkflowTotal); err != nil { return nil, err } - rs.WorkflowTotal = workflowTotal.Total + statistics.WorkflowTotal = rsWorkflowTotal.Total - // 已启用工作流 - workflowEnabledTotal := struct { + // 统计已启用工作流 + rsWorkflowEnabledTotal := struct { Total int `db:"total"` }{} if err := app.GetDB(). NewQuery("SELECT COUNT(*) AS total FROM workflow WHERE enabled IS TRUE"). - One(&workflowEnabledTotal); err != nil { + One(&rsWorkflowEnabledTotal); err != nil { return nil, err } - rs.WorkflowEnabled = workflowEnabledTotal.Total - rs.WorkflowDisabled = workflowTotal.Total - workflowEnabledTotal.Total + statistics.WorkflowEnabled = rsWorkflowEnabledTotal.Total + statistics.WorkflowDisabled = rsWorkflowTotal.Total - rsWorkflowEnabledTotal.Total - return rs, nil + return statistics, nil } diff --git a/internal/workflow/engine/executor_bizapply.go b/internal/workflow/engine/executor_bizapply.go index e92518763..a211ba6fa 100644 --- a/internal/workflow/engine/executor_bizapply.go +++ b/internal/workflow/engine/executor_bizapply.go @@ -100,13 +100,6 @@ func (ne *bizApplyNodeExecutor) Execute(execCtx *NodeExecutionContext) (*NodeExe return execRes, err } - // 解析证书 - certX509, err := xcert.ParseCertificateFromPEM(obtainResp.FullChainCertificate) - if err != nil { - ne.logger.Warn("could not parse certificate, may be the CA responded error") - return execRes, err - } - // 保存证书实体 certificate := &domain.Certificate{ Source: domain.CertificateSourceTypeRequest, @@ -120,7 +113,7 @@ func (ne *bizApplyNodeExecutor) Execute(execCtx *NodeExecutionContext) (*NodeExe WorkflowRunId: execCtx.RunId, WorkflowNodeId: execCtx.Node.Id, } - certificate.PopulateFromX509(certX509) + certificate.PopulateFromPEM(obtainResp.FullChainCertificate, obtainResp.PrivateKey) if certificate, err := ne.certificateRepo.Save(execCtx.ctx, certificate); err != nil { ne.logger.Warn("could not save certificate") return execRes, err @@ -308,7 +301,7 @@ func (ne *bizApplyNodeExecutor) executeObtain(execCtx *NodeExecutionContext, nod } return "" }), - ValidityTo: lo. + ValidityNotAfter: lo. If(nodeCfg.ValidityLifetime == "", time.Time{}). ElseF(func() time.Time { duration, err := str2duration.ParseDuration(nodeCfg.ValidityLifetime) diff --git a/internal/workflow/service.go b/internal/workflow/service.go index f450a28e1..3fcb75e64 100644 --- a/internal/workflow/service.go +++ b/internal/workflow/service.go @@ -150,19 +150,23 @@ func (s *WorkflowService) Shutdown(ctx context.Context) { } func (s *WorkflowService) cleanupHistoryRuns(ctx context.Context) error { - settings, err := s.settingsRepo.GetByName(ctx, "persistence") + settings, err := s.settingsRepo.GetByName(ctx, domain.SettingsNamePersistence) if err != nil { + if errors.Is(err, domain.ErrRecordNotFound) { + return nil + } + app.GetLogger().Error("failed to get persistence settings", slog.Any("error", err)) return err } persistenceSettings := settings.Content.AsPersistence() - if persistenceSettings.WorkflowRunsMaxDaysRetention != 0 { + if persistenceSettings.WorkflowRunsRetentionMaxDays != 0 { ret, err := s.workflowRunRepo.DeleteWhere( ctx, dbx.NewExp(fmt.Sprintf("status!='%s'", string(domain.WorkflowRunStatusTypePending))), dbx.NewExp(fmt.Sprintf("status!='%s'", string(domain.WorkflowRunStatusTypeProcessing))), - dbx.NewExp(fmt.Sprintf("endedAt - - - - - - - - - - - - - - - - - - + diff --git a/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx b/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx index 187d63d39..d8a6ce87b 100644 --- a/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx +++ b/ui/src/components/workflow/designer/forms/BizApplyNodeConfigForm.tsx @@ -653,7 +653,7 @@ const BizApplyNodeConfigForm = ({ node, ...props }: BizApplyNodeConfigFormProps) }) skipBeforeExpiryDays: z.coerce .number() .int(t("workflow_node.apply.form.skip_before_expiry_days.placeholder")) - .nonnegative(t("workflow_node.apply.form.skip_before_expiry_days.placeholder")), + .positive(t("workflow_node.apply.form.skip_before_expiry_days.placeholder")), }) .superRefine((values, ctx) => { if (values.domains) { diff --git a/ui/src/domain/settings.ts b/ui/src/domain/settings.ts index 376637127..d83a90881 100644 --- a/ui/src/domain/settings.ts +++ b/ui/src/domain/settings.ts @@ -30,7 +30,8 @@ export type SSLProviderSettingsContent = { // #region Settings: Persistence export type PersistenceSettingsContent = { - workflowRunsMaxDaysRetention?: number; - expiredCertificatesMaxDaysRetention?: number; + certificatesWarningDaysBeforeExpire?: number; + certificatesRetentionMaxDays?: number; + workflowRunsRetentionMaxDays?: number; }; // #endregion diff --git a/ui/src/i18n/locales/en/nls.provider.json b/ui/src/i18n/locales/en/nls.provider.json index 3bb558a8e..352dbbf60 100644 --- a/ui/src/i18n/locales/en/nls.provider.json +++ b/ui/src/i18n/locales/en/nls.provider.json @@ -8,7 +8,7 @@ "provider.actalisssl": "Actalis SSL", "provider.akamai": "Akamai", "provider.akamai.cdn": "Akamai - CDN (Content Delivery Network)", - "provider.akamai.edgedns": "Akamai - Edge DNS", + "provider.akamai.edgedns": "Akamai - EdgeDNS", "provider.aliyun": "Alibaba Cloud", "provider.aliyun.alb": "Alibaba Cloud - ALB (Application Load Balancer)", "provider.aliyun.apigw": "Alibaba Cloud - API Gateway", diff --git a/ui/src/i18n/locales/en/nls.settings.json b/ui/src/i18n/locales/en/nls.settings.json index 6cff94790..2a57e9f7e 100644 --- a/ui/src/i18n/locales/en/nls.settings.json +++ b/ui/src/i18n/locales/en/nls.settings.json @@ -43,15 +43,20 @@ "settings.sslprovider.form.letsencryptstaging_alert": "The staging environment can reduce the chance of your running up against rate limits.

Learn more:
https://letsencrypt.org/docs/staging-environment/", "settings.persistence.tab": "Persistence", - "settings.persistence.title": "Data retention", - "settings.persistence.form.workflow_runs_max_days.label": "Max days retention of workflow history runs", - "settings.persistence.form.workflow_runs_max_days.placeholder": "Please enter the maximum retention days of workflow history runs", - "settings.persistence.form.workflow_runs_max_days.unit": "days", - "settings.persistence.form.workflow_runs_max_days.help": "Set to 0 to disable cleanup workflow history runs. It is recommended to set it to 180 days or more.", - "settings.persistence.form.expired_certificates_max_days.label": "Max days retention of expired certificates", - "settings.persistence.form.expired_certificates_max_days.placeholder": "Please enter the maximum retention days of expired certificates", - "settings.persistence.form.expired_certificates_max_days.unit": "days", - "settings.persistence.form.expired_certificates_max_days.help": "Set to 0 to disable cleanup expired certificates.", + "settings.persistence.alerting.title": "Alerting", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.label": "Certificate expiration warning threshold", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.placeholder": "Please enter the certificate expiration warning threshold", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.unit": "days", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.help": "Notes: It determines when the certificate will be marked as \"Expiring-Soon\".", + "settings.persistence.data_retention.title": "Data retention", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.label": "Workflow runs retention max days", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.placeholder": "Please enter the maximum number of retention days for workflow history runs", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.unit": "days", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.help": "Notes: Set to 0 to disable cleanup workflow history runs. Recommend setting to 180 days or more.", + "settings.persistence.data_retention.form.certificates_retention_max_days.label": "Expired certificates retention max days", + "settings.persistence.data_retention.form.certificates_retention_max_days.placeholder": "Please enter the maximum number of retention days for expired certificates", + "settings.persistence.data_retention.form.certificates_retention_max_days.unit": "days", + "settings.persistence.data_retention.form.certificates_retention_max_days.help": "Notes: Set to 0 to disable cleanup expired certificates.", "settings.diagnostics.tab": "Diagnostics", "settings.diagnostics.logs.title": "System logs", diff --git a/ui/src/i18n/locales/en/nls.workflow.runs.json b/ui/src/i18n/locales/en/nls.workflow.runs.json index 8633053bf..18c4dd41d 100644 --- a/ui/src/i18n/locales/en/nls.workflow.runs.json +++ b/ui/src/i18n/locales/en/nls.workflow.runs.json @@ -9,7 +9,7 @@ "workflow_run.action.batch_delete.modal.title": "Delete workflow runs", "workflow_run.action.batch_delete.modal.content": "Are you sure want to delete these {{count}} selected workflow runs?
This action cannot be undone.", - "workflow_run.deletion.alert": "The workflow run contains the execution results of each node. Deleting it may trigger re-application or re-deployment of certificates due to the inability to find the previous execution result. Please do not delete unless necessary. It is recommended to keep it for at least 180 days. ", + "workflow_run.deletion.alert": "The workflow run contains the execution results of each node. Deleting it may trigger re-application or re-deployment of certificates due to the inability to find the previous execution result. Please do not delete unless necessary. Recommend keeping it for at least 180 days. ", "workflow_run.cancellation.alert": "If the process is unexpectedly terminated or the server times out, you can manually cancel long-hanging runs to prevent blocking subsequent executions.", "workflow_run.nodata.description": "It looks like you don't have any runs. Get started by running this workflow.", diff --git a/ui/src/i18n/locales/zh/nls.provider.json b/ui/src/i18n/locales/zh/nls.provider.json index c982700fb..92e8561c8 100644 --- a/ui/src/i18n/locales/zh/nls.provider.json +++ b/ui/src/i18n/locales/zh/nls.provider.json @@ -8,7 +8,7 @@ "provider.actalisssl": "Actalis SSL", "provider.akamai": "Akamai", "provider.akamai.cdn": "Akamai - 内容分发网络 CDN", - "provider.akamai.edgedns": "Akamai - Edge DNS", + "provider.akamai.edgedns": "Akamai - EdgeDNS", "provider.aliyun": "阿里云", "provider.aliyun.alb": "阿里云 - 应用型负载均衡 ALB", "provider.aliyun.apigw": "阿里云 - API 网关", diff --git a/ui/src/i18n/locales/zh/nls.settings.json b/ui/src/i18n/locales/zh/nls.settings.json index 367fbe254..e7586bfbe 100644 --- a/ui/src/i18n/locales/zh/nls.settings.json +++ b/ui/src/i18n/locales/zh/nls.settings.json @@ -43,15 +43,20 @@ "settings.sslprovider.form.letsencryptstaging_alert": "测试环境比生产环境有更宽松的速率限制,可进行测试性部署。

点击下方链接了解更多:
https://letsencrypt.org/zh-cn/docs/staging-environment/", "settings.persistence.tab": "数据持久化", - "settings.persistence.title": "定期清理数据", - "settings.persistence.form.workflow_runs_max_days.label": "工作流运行历史保留天数", - "settings.persistence.form.workflow_runs_max_days.placeholder": "请输入运行历史保留天数", - "settings.persistence.form.workflow_runs_max_days.unit": "天", - "settings.persistence.form.workflow_runs_max_days.help": "设置为 0 表示永久保留,不会自动清理。建议设置为 180 天以上。", - "settings.persistence.form.expired_certificates_max_days.label": "证书过期后保留天数", - "settings.persistence.form.expired_certificates_max_days.placeholder": "请输入过期证书保留天数", - "settings.persistence.form.expired_certificates_max_days.unit": "天", - "settings.persistence.form.expired_certificates_max_days.help": "设置为 0 表示永久保留,不会自动清理。", + "settings.persistence.alerting.title": "警报策略", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.label": "证书即将过期预警阈值", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.placeholder": "请输入证书即将过期预警阈值", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.unit": "天", + "settings.persistence.alerting.form.certificates_warning_days_before_expire.help": "提示:该选项将决定将证书过期前多久视为「即将过期」。", + "settings.persistence.data_retention.title": "数据保留策略", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.label": "工作流运行历史保留期限", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.placeholder": "请输入运行历史保留期限", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.unit": "天", + "settings.persistence.data_retention.form.workflow_runs_retention_max_days.help": "提示:设置为 0 表示永久保留,不会自动清理。建议设置为 180 天以上。", + "settings.persistence.data_retention.form.certificates_retention_max_days.label": "证书过期后保留期限", + "settings.persistence.data_retention.form.certificates_retention_max_days.placeholder": "请输入过期证书保留期限", + "settings.persistence.data_retention.form.certificates_retention_max_days.unit": "天", + "settings.persistence.data_retention.form.certificates_retention_max_days.help": "提示:设置为 0 表示永久保留,不会自动清理。", "settings.diagnostics.tab": "系统诊断", "settings.diagnostics.logs.title": "系统日志", diff --git a/ui/src/i18n/locales/zh/nls.workflow.nodes.json b/ui/src/i18n/locales/zh/nls.workflow.nodes.json index 2b30afa12..ca3de6a47 100644 --- a/ui/src/i18n/locales/zh/nls.workflow.nodes.json +++ b/ui/src/i18n/locales/zh/nls.workflow.nodes.json @@ -635,7 +635,7 @@ "workflow_node.deploy.form.lecdn_client_id.label": "LeCDN 客户 ID(可选)", "workflow_node.deploy.form.lecdn_client_id.placeholder": "请输入 LeCDN 客户 ID", "workflow_node.deploy.form.lecdn_client_id.tooltip": "请登录 LeCDN 控制台查看。
使用的是系统管理员的授权信息时必填,需与证书所属客户相同。", - "workflow_node.deploy.form.local.guide": "如果你正在使用 Docker 运行 Certimate,“本地”指的是容器内而非宿主机。", + "workflow_node.deploy.form.local.guide": "如果你正在使用 Docker 运行 Certimate,「本地」指的是容器内而非宿主机。", "workflow_node.deploy.form.local_format.label": "文件格式", "workflow_node.deploy.form.local_format.placeholder": "请选择文件格式", "workflow_node.deploy.form.local_format.option.pem.label": "PEM 格式(*.pem, *.crt, *.key)", diff --git a/ui/src/pages/certificates/CertificateList.tsx b/ui/src/pages/certificates/CertificateList.tsx index 8642eb691..10e8d509f 100644 --- a/ui/src/pages/certificates/CertificateList.tsx +++ b/ui/src/pages/certificates/CertificateList.tsx @@ -12,8 +12,10 @@ import CertificateDetailDrawer from "@/components/certificate/CertificateDetailD import Empty from "@/components/Empty"; import Show from "@/components/Show"; import { CERTIFICATE_SOURCES, type CertificateModel } from "@/domain/certificate"; +import { SETTINGS_NAMES } from "@/domain/settings"; import { useAppSettings } from "@/hooks"; import { get as getCertificate, list as listCertificates, remove as removeCertificate } from "@/repository/certificate"; +import { get as getSettings } from "@/repository/settings"; import { getErrMsg } from "@/utils/error"; const CertificateList = () => { @@ -28,6 +30,8 @@ const CertificateList = () => { const { appSettings: globalAppSettings } = useAppSettings(); + const [expiryThreshold, setExpiryThreshold] = useState(0); + const [filters, setFilters] = useState>(() => { return { keyword: searchParams.get("keyword"), @@ -64,7 +68,7 @@ const CertificateList = () => { return (
{!isRevoked && !isExpired ? ( - leftDays >= 20 ? ( + leftDays >= expiryThreshold ? (   {t("certificate.props.validity.left_days", { left: leftDays, total })} @@ -240,6 +244,7 @@ const CertificateList = () => { return listCertificates({ keyword: filters["keyword"] as string, state: filters["state"] as Parameters[0]["state"], + stateThreshold: expiryThreshold, sort: sort, page: page, perPage: pageSize, @@ -247,7 +252,7 @@ const CertificateList = () => { }, { refreshDeps: [filters, sorter, page, pageSize], - onBefore: () => { + onBefore: async () => { setSearchParams((prev) => { if (filters["keyword"]) { prev.set("keyword", filters["keyword"] as string); @@ -266,6 +271,11 @@ const CertificateList = () => { return prev; }); + + if (expiryThreshold === 0) { + const settings = await getSettings(SETTINGS_NAMES.PERSISTENCE); + setExpiryThreshold(settings?.content?.certificatesWarningDaysBeforeExpire ?? 0); + } }, onSuccess: (res) => { setTableData(res.items); diff --git a/ui/src/pages/settings/SettingsPersistence.tsx b/ui/src/pages/settings/SettingsPersistence.tsx index ab3adbcfd..99f80dce9 100644 --- a/ui/src/pages/settings/SettingsPersistence.tsx +++ b/ui/src/pages/settings/SettingsPersistence.tsx @@ -1,6 +1,6 @@ -import { useEffect, useState } from "react"; +import { createContext, useContext, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import { App, Button, Form, InputNumber, Skeleton } from "antd"; +import { App, Button, Divider, Form, InputNumber, Skeleton } from "antd"; import { createSchemaFieldRule } from "antd-zod"; import { produce } from "immer"; import { z } from "zod"; @@ -18,11 +18,12 @@ const SettingsPersistence = () => { const [settings, setSettings] = useState>(); const [loading, setLoading] = useState(true); + useEffect(() => { const fetchData = async () => { setLoading(true); - const settings = await getSettings(SETTINGS_NAMES.PERSISTENCE); + const settings = await getSettings(SETTINGS_NAMES.PERSISTENCE); setSettings(settings); setLoading(false); @@ -31,13 +32,43 @@ const SettingsPersistence = () => { fetchData(); }, []); + const updateContextSettings = async (settings: MaybeModelRecordWithId>) => { + try { + const resp = await saveSettings(settings); + setSettings(resp); + + message.success(t("common.text.operation_succeeded")); + } catch (err) { + notification.error({ message: t("common.text.request_error"), description: getErrMsg(err) }); + } + }; + + return ( + +

{t("settings.persistence.alerting.title")}

+ + + + +

{t("settings.persistence.data_retention.title")}

+ +
+ ); +}; + +const SettingsPersistenceAlerting = ({ className, style }: { className?: string; style?: React.CSSProperties }) => { + const { t } = useTranslation(); + + const { loading, settings, updateSettings } = useContext(InternalSettingsContext); + const formSchema = z.object({ - workflowRunsMaxDaysRetention: z - .number(t("settings.persistence.form.workflow_runs_max_days.placeholder")) - .gte(0, t("settings.persistence.form.workflow_runs_max_days.placeholder")), - expiredCertificatesMaxDaysRetention: z - .number(t("settings.persistence.form.expired_certificates_max_days.placeholder")) - .gte(0, t("settings.persistence.form.expired_certificates_max_days.placeholder")), + certificatesWarningDaysBeforeExpire: z.number().int().positive(), }); const formRule = createSchemaFieldRule(formSchema); const { @@ -46,70 +77,41 @@ const SettingsPersistence = () => { formProps, } = useAntdForm>({ initialValues: { - workflowRunsMaxDaysRetention: settings?.content?.workflowRunsMaxDaysRetention ?? 0, - expiredCertificatesMaxDaysRetention: settings?.content?.expiredCertificatesMaxDaysRetention ?? 0, + certificatesWarningDaysBeforeExpire: settings?.content?.certificatesWarningDaysBeforeExpire, }, onSubmit: async (values) => { - try { - await saveSettings( - produce(settings!, (draft) => { - draft.content ??= {} as PersistenceSettingsContent; - draft.content.workflowRunsMaxDaysRetention = values.workflowRunsMaxDaysRetention; - draft.content.expiredCertificatesMaxDaysRetention = values.expiredCertificatesMaxDaysRetention; - }) - ); - - message.success(t("common.text.operation_succeeded")); - } catch (err) { - notification.error({ message: t("common.text.request_error"), description: getErrMsg(err) }); - - throw err; - } + updateSettings( + produce(settings!, (draft) => { + draft.content ??= {} as PersistenceSettingsContent; + draft.content.certificatesWarningDaysBeforeExpire = values.certificatesWarningDaysBeforeExpire; + }) + ); }, }); const [formChanged, setFormChanged] = useState(false); const handleInputChange = () => { - const changed = - formInst.getFieldValue("workflowRunsMaxDaysRetention") !== formProps.initialValues?.workflowRunsMaxDaysRetention || - formInst.getFieldValue("expiredCertificatesMaxDaysRetention") !== formProps.initialValues?.workflowRunsMaxDaysRetention; + const changed = formInst.getFieldValue("certificatesWarningDaysBeforeExpire") !== formProps.initialValues?.certificatesWarningDaysBeforeExpire; setFormChanged(changed); }; return ( <> -

{t("settings.persistence.title")}

- }> -
+
+ }>
} + name="certificatesWarningDaysBeforeExpire" + label={t("settings.persistence.alerting.form.certificates_warning_days_before_expire.label")} + extra={} rules={[formRule]} > - - - } - rules={[formRule]} - > - @@ -120,10 +122,105 @@ const SettingsPersistence = () => {
-
- + +
); }; +const SettingsPersistenceDataRetention = ({ className, style }: { className?: string; style?: React.CSSProperties }) => { + const { t } = useTranslation(); + + const { loading, settings, updateSettings } = useContext(InternalSettingsContext); + + const formSchema = z.object({ + certificatesRetentionMaxDays: z.number().int().nonnegative(), + workflowRunsRetentionMaxDays: z.number().int().nonnegative(), + }); + const formRule = createSchemaFieldRule(formSchema); + const { + form: formInst, + formPending, + formProps, + } = useAntdForm>({ + initialValues: { + certificatesRetentionMaxDays: settings?.content?.certificatesRetentionMaxDays, + workflowRunsRetentionMaxDays: settings?.content?.workflowRunsRetentionMaxDays, + }, + onSubmit: async (values) => { + updateSettings( + produce(settings!, (draft) => { + draft.content ??= {} as PersistenceSettingsContent; + draft.content.certificatesRetentionMaxDays = values.certificatesRetentionMaxDays; + draft.content.workflowRunsRetentionMaxDays = values.workflowRunsRetentionMaxDays; + }) + ); + }, + }); + const [formChanged, setFormChanged] = useState(false); + + const handleInputChange = () => { + const changed = + formInst.getFieldValue("certificatesRetentionMaxDays") !== formProps.initialValues?.certificatesRetentionMaxDays || + formInst.getFieldValue("workflowRunsRetentionMaxDays") !== formProps.initialValues?.workflowRunsRetentionMaxDays; + setFormChanged(changed); + }; + + return ( + <> +
+ }> +
+ } + rules={[formRule]} + > + + + + } + rules={[formRule]} + > + + + + + + +
+
+
+ + ); +}; + +const InternalSettingsContext = createContext( + {} as { + loading: boolean; + settings: SettingsModel; + updateSettings: (settings: MaybeModelRecordWithId>) => Promise; + } +); + export default SettingsPersistence; diff --git a/ui/src/pages/settings/SettingsSSLProvider.tsx b/ui/src/pages/settings/SettingsSSLProvider.tsx index ebf1001cf..097aa18e0 100644 --- a/ui/src/pages/settings/SettingsSSLProvider.tsx +++ b/ui/src/pages/settings/SettingsSSLProvider.tsx @@ -19,16 +19,17 @@ const SettingsSSLProvider = () => { const { message, notification } = App.useApp(); + const [settings, setSettings] = useState>(); + const [loading, setLoading] = useState(true); + const [formInst] = Form.useForm<{ provider?: string }>(); const [formPending, setFormPending] = useState(false); - const [settings, setSettings] = useState>(); - const [loading, setLoading] = useState(true); useEffect(() => { const fetchData = async () => { setLoading(true); - const settings = await getSettings(SETTINGS_NAMES.SSL_PROVIDER); + const settings = await getSettings(SETTINGS_NAMES.SSL_PROVIDER); setSettings(settings); setProviderValue(settings.content?.provider || CA_PROVIDERS.LETSENCRYPT); @@ -99,6 +100,7 @@ const SettingsSSLProvider = () => { return ( { const InternalSettingsContext = createContext( {} as { + loading: boolean; pending: boolean; settings: SettingsModel; updateSettings: (settings: MaybeModelRecordWithId>) => Promise; diff --git a/ui/src/repository/certificate.ts b/ui/src/repository/certificate.ts index 05898816b..9c0b4708a 100644 --- a/ui/src/repository/certificate.ts +++ b/ui/src/repository/certificate.ts @@ -25,12 +25,14 @@ const _expandFields = ["expand.workflowRef.id", "expand.workflowRef.name", "expa export const list = async ({ keyword, state, + stateThreshold, sort = "-created", page = 1, perPage = 10, }: { keyword?: string; state?: "expiringSoon" | "expired"; + stateThreshold?: number; sort?: string; page?: number; perPage?: number; @@ -42,9 +44,11 @@ export const list = async ({ filters.push(pb.filter("(id={:keyword} || serialNumber={:keyword} || subjectAltNames~{:keyword})", { keyword: keyword })); } if (state === "expiringSoon") { - filters.push(pb.filter("validityNotAfter<{:expiredAt} && validityNotAfter>@now", { expiredAt: dayjs().add(20, "d").toDate() })); + filters.push(pb.filter("validityNotAfter<={:expiredAt}", { expiredAt: dayjs().add(stateThreshold!, "d").toDate() })); + filters.push(pb.filter("validityNotAfter>@now")); + filters.push(pb.filter("isRevoked=0")); } else if (state === "expired") { - filters.push(pb.filter("validityNotAfter<={:expiredAt}", { expiredAt: new Date() })); + filters.push(pb.filter("validityNotAfter<=@now")); } return pb.collection(COLLECTION_NAME_CERTIFICATE).getList(page, perPage, { diff --git a/ui/src/repository/settings.ts b/ui/src/repository/settings.ts index df9bafe0f..d0be509d4 100644 --- a/ui/src/repository/settings.ts +++ b/ui/src/repository/settings.ts @@ -1,24 +1,70 @@ import { ClientResponseError } from "pocketbase"; -import { type SettingsModel, type SettingsNames } from "@/domain/settings"; +import { CA_PROVIDERS } from "@/domain/provider"; +import { + type EmailsSettingsContent, + type PersistenceSettingsContent, + SETTINGS_NAMES, + type SSLProviderSettingsContent, + type SettingsModel, + type SettingsNames, +} from "@/domain/settings"; + import { COLLECTION_NAME_SETTINGS, getPocketBase } from "./_pocketbase"; -export const get = async >(name: SettingsNames) => { +interface SettingsContentMap { + [SETTINGS_NAMES.EMAILS]: EmailsSettingsContent; + [SETTINGS_NAMES.SSL_PROVIDER]: SSLProviderSettingsContent; + [SETTINGS_NAMES.PERSISTENCE]: PersistenceSettingsContent; +} + +export const get = async >( + name: K +): Promise : SettingsModel> => { + let resp: K extends keyof SettingsContentMap ? SettingsModel : SettingsModel; try { - const resp = await getPocketBase().collection(COLLECTION_NAME_SETTINGS).getFirstListItem>(`name='${name}'`, { + resp = await getPocketBase().collection(COLLECTION_NAME_SETTINGS).getFirstListItem(`name='${name}'`, { requestKey: null, }); return resp; } catch (err) { if (err instanceof ClientResponseError && err.status === 404) { - return { + resp = { name: name, - content: {} as T, - } as SettingsModel; + content: {}, + } as unknown as typeof resp; + } else { + throw err; } - - throw err; } + + // 兜底设置一些默认值(需确保与后端默认值保持一致),防止视图层空指针 + switch (name) { + case SETTINGS_NAMES.EMAILS: + { + resp.content ??= {}; + (resp.content as EmailsSettingsContent).emails ??= []; + } + break; + + case SETTINGS_NAMES.SSL_PROVIDER: + { + resp.content ??= {}; + (resp.content as SSLProviderSettingsContent).provider ??= CA_PROVIDERS.LETSENCRYPT; + } + break; + + case SETTINGS_NAMES.PERSISTENCE: + { + resp.content ??= {}; + (resp.content as PersistenceSettingsContent).certificatesWarningDaysBeforeExpire ??= 21; + (resp.content as PersistenceSettingsContent).certificatesRetentionMaxDays ??= 0; + (resp.content as PersistenceSettingsContent).workflowRunsRetentionMaxDays ??= 0; + } + break; + } + + return resp; }; export const save = async >(record: MaybeModelRecordWithId>) => { diff --git a/ui/src/stores/contact/index.ts b/ui/src/stores/contact/index.ts index edf65687e..886169eab 100644 --- a/ui/src/stores/contact/index.ts +++ b/ui/src/stores/contact/index.ts @@ -22,7 +22,7 @@ export const useContactEmailsStore = create((set, get) => { } } - fetcher ??= getSettings(SETTINGS_NAMES.EMAILS); + fetcher ??= getSettings(SETTINGS_NAMES.EMAILS); try { set({ loading: true }); @@ -35,7 +35,7 @@ export const useContactEmailsStore = create((set, get) => { }, setEmails: async (emails) => { - settings ??= await getSettings(SETTINGS_NAMES.EMAILS); + settings ??= await getSettings(SETTINGS_NAMES.EMAILS); settings = await saveSettings({ ...settings, content: { From c106dd55627861f4ed50ffbe50823055a3336124 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 7 Nov 2025 22:28:49 +0800 Subject: [PATCH 2/2] refactor: clean code --- internal/certapply/applicators/registry.go | 6 +- .../applicators/sp_akamai_edgedns.go | 4 +- internal/certapply/client_certifier.go | 8 +-- .../certdeploy/deployers/sp_rainyun_rcdn.go | 2 +- internal/certdeploy/deployers/sp_safeline.go | 2 +- internal/certdeploy/deployers/sp_webhook.go | 2 +- internal/domain/access.go | 4 +- internal/domain/workflow.go | 24 +++---- internal/notify/notifiers/sp_telegrambot.go | 2 +- internal/notify/notifiers/sp_webhook.go | 2 +- .../providers/telegrambot/telegrambot.go | 2 +- .../providers/telegrambot/telegrambot_test.go | 6 +- .../notifier/providers/webhook/webhook.go | 2 +- .../providers/acmehttpreq/acmehttpreq.go | 2 +- .../providers/aliyun-esa/aliyun_esa.go | 4 +- .../providers/aliyun-esa/internal/lego.go | 6 +- .../acme-dns01/providers/aliyun/aliyun.go | 6 +- .../providers/arvancloud/arvancloud.go | 6 +- .../providers/aws-route53/aws-route53.go | 6 +- .../providers/azure-dns/azure-dns.go | 6 +- .../providers/baiducloud/baiducloud.go | 4 +- .../providers/baiducloud/internal/lego.go | 9 +-- .../providers/bookmyname/bookmyname.go | 6 +- .../acme-dns01/providers/bunny/bunny.go | 6 +- .../providers/cloudflare/cloudflare.go | 6 +- .../acme-dns01/providers/cloudns/cloudns.go | 6 +- .../providers/cmcccloud/cmcccloud.go | 4 +- .../providers/cmcccloud/internal/lego.go | 9 +-- .../providers/constellix/constellix.go | 6 +- .../providers/ctcccloud/ctcccloud.go | 6 +- .../acme-dns01/providers/desec/desec.go | 6 +- .../providers/digitalocean/digitalocean.go | 6 +- .../acme-dns01/providers/dnsla/dnsla.go | 6 +- .../providers/dnsla/internal/lego.go | 24 +++---- .../providers/dnsmadeeasy/dnsmadeeasy.go | 6 +- .../acme-dns01/providers/duckdns/duckdns.go | 2 +- .../acme-dns01/providers/dynu/dynu.go | 6 +- .../acme-dns01/providers/dynv6/dnsla.go | 6 +- .../acme-dns01/providers/gandinet/gandinet.go | 6 +- .../acme-dns01/providers/gcore/gcore.go | 6 +- .../acme-dns01/providers/gname/gname.go | 6 +- .../acme-dns01/providers/godaddy/godaddy.go | 6 +- .../acme-dns01/providers/hetzner/hetzner.go | 6 +- .../providers/hostingde/hostingde.go | 6 +- .../providers/hostinger/hostinger.go | 6 +- .../providers/huaweicloud/huaweicloud.go | 6 +- .../providers/infomaniak/infomaniak.go | 6 +- .../acme-dns01/providers/ionos/ionos.go | 6 +- .../providers/jdcloud/internal/lego.go | 4 +- .../acme-dns01/providers/jdcloud/jdcloud.go | 4 +- .../acme-dns01/providers/linode/linode.go | 6 +- .../providers/namecheap/namecheap.go | 6 +- .../providers/namedotcom/namedotcom.go | 6 +- .../acme-dns01/providers/namesilo/namesilo.go | 6 +- .../acme-dns01/providers/netcup/netcup.go | 6 +- .../acme-dns01/providers/netlify/netlify.go | 6 +- .../acme-dns01/providers/ns1/ns1.go | 6 +- .../acme-dns01/providers/ovhcloud/ovhcloud.go | 6 +- .../acme-dns01/providers/porkbun/porkbun.go | 6 +- .../acme-dns01/providers/powerdns/powerdns.go | 6 +- .../acme-dns01/providers/rainyun/rainyun.go | 6 +- .../acme-dns01/providers/rfc2136/rfc2136.go | 6 +- .../providers/spaceship/spaceship.go | 6 +- .../providers/technitiumdns/technitiumdns.go | 6 +- .../tencentcloud-eo/internal/lego.go | 4 +- .../tencentcloud-eo/tencentcloud_eo.go | 4 +- .../providers/tencentcloud/tencentcloud.go | 6 +- .../providers/ucloud-udnr/internal/lego.go | 4 +- .../providers/ucloud-udnr/ucloud_udnr.go | 4 +- .../acme-dns01/providers/vercel/vercel.go | 6 +- .../providers/volcengine/volcengine.go | 6 +- .../acme-dns01/providers/vultr/vultr.go | 6 +- .../acme-dns01/providers/westcn/westcn.go | 6 +- .../providers/1panel-site/1panel_site.go | 2 +- .../providers/aliyun-apigw/aliyun_apigw.go | 4 +- .../providers/aliyun-cdn/aliyun_cdn.go | 2 +- .../providers/aliyun-vod/aliyun_vod.go | 2 +- .../ssl-deployer/providers/cdnfly/cdnfly.go | 2 +- .../providers/gcore-cdn/gcore_cdn.go | 4 +- .../providers/rainyun-rcdn/rainyun_rcdn.go | 8 +-- .../rainyun-rcdn/rainyun_rcdn_test.go | 2 +- .../ratpanel-console/ratpanel_console.go | 4 +- .../ratpanel-console/ratpanel_console_test.go | 2 +- .../providers/ratpanel-site/ratpanel_site.go | 4 +- .../ratpanel-site/ratpanel_site_test.go | 2 +- .../providers/safeline/safeline.go | 2 +- .../ssl-deployer/providers/webhook/webhook.go | 2 +- pkg/sdk3rd/dnsla/api_create_record.go | 10 +-- pkg/sdk3rd/dnsla/api_update_record.go | 2 +- .../rainyun/api_rcdn_instance_ssl_bind.go | 6 +- pkg/sdk3rd/rainyun/api_ssl_center_get.go | 4 +- pkg/sdk3rd/rainyun/types.go | 6 +- pkg/sdk3rd/ratpanel/client.go | 2 +- pkg/sdk3rd/safeline/api_update_certificate.go | 2 +- pkg/utils/maps/get.go | 69 +++++++++++++++++++ 95 files changed, 319 insertions(+), 248 deletions(-) diff --git a/internal/certapply/applicators/registry.go b/internal/certapply/applicators/registry.go index 9e871bbd9..31a7f2e8a 100644 --- a/internal/certapply/applicators/registry.go +++ b/internal/certapply/applicators/registry.go @@ -12,9 +12,9 @@ type ProviderFactoryFunc func(options *ProviderFactoryOptions) (core.ACMEChallen type ProviderFactoryOptions struct { ProviderAccessConfig map[string]any ProviderExtendedConfig map[string]any - DnsPropagationWait int32 - DnsPropagationTimeout int32 - DnsTTL int32 + DnsPropagationWait int + DnsPropagationTimeout int + DnsTTL int } type Registry[T comparable] interface { diff --git a/internal/certapply/applicators/sp_akamai_edgedns.go b/internal/certapply/applicators/sp_akamai_edgedns.go index 64f858236..895666875 100644 --- a/internal/certapply/applicators/sp_akamai_edgedns.go +++ b/internal/certapply/applicators/sp_akamai_edgedns.go @@ -22,8 +22,8 @@ func init() { ClientToken: credentials.ClientToken, ClientSecret: credentials.ClientSecret, AccessToken: credentials.AccessToken, - DnsPropagationTimeout: int(options.DnsPropagationTimeout), - DnsTTL: int(options.DnsTTL), + DnsPropagationTimeout: options.DnsPropagationTimeout, + DnsTTL: options.DnsTTL, }) return provider, err }); err != nil { diff --git a/internal/certapply/client_certifier.go b/internal/certapply/client_certifier.go index 8697c4704..688c96bca 100644 --- a/internal/certapply/client_certifier.go +++ b/internal/certapply/client_certifier.go @@ -39,12 +39,12 @@ type ObtainCertificateRequest struct { Nameservers []string // DNS-01 质询相关 - DnsPropagationWait int32 - DnsPropagationTimeout int32 - DnsTTL int32 + DnsPropagationWait int + DnsPropagationTimeout int + DnsTTL int // HTTP-01 质询相关 - HttpDelayWait int32 + HttpDelayWait int // ACME 相关 PreferredChain string diff --git a/internal/certdeploy/deployers/sp_rainyun_rcdn.go b/internal/certdeploy/deployers/sp_rainyun_rcdn.go index 0a90c0502..76983a893 100644 --- a/internal/certdeploy/deployers/sp_rainyun_rcdn.go +++ b/internal/certdeploy/deployers/sp_rainyun_rcdn.go @@ -18,7 +18,7 @@ func init() { provider, err := rainyunrcdn.NewSSLDeployerProvider(&rainyunrcdn.SSLDeployerProviderConfig{ ApiKey: credentials.ApiKey, - InstanceId: xmaps.GetInt32(options.ProviderExtendedConfig, "instanceId"), + InstanceId: xmaps.GetInt64(options.ProviderExtendedConfig, "instanceId"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), }) return provider, err diff --git a/internal/certdeploy/deployers/sp_safeline.go b/internal/certdeploy/deployers/sp_safeline.go index c604b735f..dac842625 100644 --- a/internal/certdeploy/deployers/sp_safeline.go +++ b/internal/certdeploy/deployers/sp_safeline.go @@ -21,7 +21,7 @@ func init() { ApiToken: credentials.ApiToken, AllowInsecureConnections: credentials.AllowInsecureConnections, ResourceType: xmaps.GetString(options.ProviderExtendedConfig, "resourceType"), - CertificateId: xmaps.GetInt32(options.ProviderExtendedConfig, "certificateId"), + CertificateId: xmaps.GetInt64(options.ProviderExtendedConfig, "certificateId"), }) return provider, err }); err != nil { diff --git a/internal/certdeploy/deployers/sp_webhook.go b/internal/certdeploy/deployers/sp_webhook.go index c53ff7304..c0a316707 100644 --- a/internal/certdeploy/deployers/sp_webhook.go +++ b/internal/certdeploy/deployers/sp_webhook.go @@ -43,7 +43,7 @@ func init() { WebhookData: xmaps.GetOrDefaultString(options.ProviderExtendedConfig, "webhookData", credentials.DataString), Method: credentials.Method, Headers: mergedHeaders, - Timeout: xmaps.GetInt32(options.ProviderExtendedConfig, "timeout"), + Timeout: xmaps.GetInt(options.ProviderExtendedConfig, "timeout"), AllowInsecureConnections: credentials.AllowInsecureConnections, }) return provider, err diff --git a/internal/domain/access.go b/internal/domain/access.go index 020c39efa..14d95276c 100644 --- a/internal/domain/access.go +++ b/internal/domain/access.go @@ -402,7 +402,7 @@ type AccessConfigForRainYun struct { type AccessConfigForRatPanel struct { ServerUrl string `json:"serverUrl"` - AccessTokenId int32 `json:"accessTokenId"` + AccessTokenId int64 `json:"accessTokenId"` AccessToken string `json:"accessToken"` AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"` } @@ -462,7 +462,7 @@ type AccessConfigForTechnitiumDNS struct { type AccessConfigForTelegramBot struct { BotToken string `json:"botToken"` - ChatId int64 `json:"chatId,omitempty"` + ChatId string `json:"chatId,omitempty"` } type AccessConfigForTencentCloud struct { diff --git a/internal/domain/workflow.go b/internal/domain/workflow.go index 028a3e9d5..736d25660 100644 --- a/internal/domain/workflow.go +++ b/internal/domain/workflow.go @@ -114,7 +114,7 @@ type WorkflowNodeConfig map[string]any func (c WorkflowNodeConfig) AsDelay() WorkflowNodeConfigForDelay { return WorkflowNodeConfigForDelay{ - Wait: xmaps.GetInt32(c, "wait"), + Wait: xmaps.GetInt(c, "wait"), } } @@ -156,13 +156,13 @@ func (c WorkflowNodeConfig) AsBizApply() WorkflowNodeConfigForBizApply { PreferredChain: xmaps.GetString(c, "preferredChain"), ACMEProfile: xmaps.GetString(c, "acmeProfile"), Nameservers: nameservers, - DnsPropagationWait: xmaps.GetInt32(c, "dnsPropagationWait"), - DnsPropagationTimeout: xmaps.GetInt32(c, "dnsPropagationTimeout"), - DnsTTL: xmaps.GetInt32(c, "dnsTTL"), - HttpDelayWait: xmaps.GetInt32(c, "httpDelayWait"), + DnsPropagationWait: xmaps.GetInt(c, "dnsPropagationWait"), + DnsPropagationTimeout: xmaps.GetInt(c, "dnsPropagationTimeout"), + DnsTTL: xmaps.GetInt(c, "dnsTTL"), + HttpDelayWait: xmaps.GetInt(c, "httpDelayWait"), DisableFollowCNAME: xmaps.GetBool(c, "disableFollowCNAME"), DisableARI: xmaps.GetBool(c, "disableARI"), - SkipBeforeExpiryDays: xmaps.GetInt32(c, "skipBeforeExpiryDays"), + SkipBeforeExpiryDays: xmaps.GetInt(c, "skipBeforeExpiryDays"), } } @@ -206,7 +206,7 @@ func (c WorkflowNodeConfig) AsBizNotify() WorkflowNodeConfigForBizNotify { } type WorkflowNodeConfigForDelay struct { - Wait int32 `json:"wait"` // 等待时间 + Wait int `json:"wait"` // 等待时间 } type WorkflowNodeConfigForBranchBlock struct { @@ -230,13 +230,13 @@ type WorkflowNodeConfigForBizApply struct { PreferredChain string `json:"preferredChain,omitempty"` // 首选证书链 ACMEProfile string `json:"acmeProfile,omitempty"` // ACME Profiles Extension Nameservers []string `json:"nameservers,omitempty"` // DNS 服务器列表,以半角分号分隔 - DnsPropagationWait int32 `json:"dnsPropagationWait,omitempty"` // DNS 传播等待时间,等同于 lego 的 `--dns-propagation-wait` 参数 - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` // DNS 传播检查超时时间(零值时使用提供商的默认值) - DnsTTL int32 `json:"dnsTTL,omitempty"` // DNS 解析记录 TTL(零值时使用提供商的默认值) - HttpDelayWait int32 `json:"httpDelayWait,omitempty"` // HTTP 等待时间 + DnsPropagationWait int `json:"dnsPropagationWait,omitempty"` // DNS 传播等待时间,等同于 lego 的 `--dns-propagation-wait` 参数 + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` // DNS 传播检查超时时间(零值时使用提供商的默认值) + DnsTTL int `json:"dnsTTL,omitempty"` // DNS 解析记录 TTL(零值时使用提供商的默认值) + HttpDelayWait int `json:"httpDelayWait,omitempty"` // HTTP 等待时间 DisableFollowCNAME bool `json:"disableFollowCNAME,omitempty"` // 是否关闭 CNAME 跟随 DisableARI bool `json:"disableARI,omitempty"` // 是否关闭 ARI - SkipBeforeExpiryDays int32 `json:"skipBeforeExpiryDays,omitempty"` // 证书到期前多少天前跳过续期 + SkipBeforeExpiryDays int `json:"skipBeforeExpiryDays,omitempty"` // 证书到期前多少天前跳过续期 } type WorkflowNodeConfigForBizUpload struct { diff --git a/internal/notify/notifiers/sp_telegrambot.go b/internal/notify/notifiers/sp_telegrambot.go index e366b912c..5151f1035 100644 --- a/internal/notify/notifiers/sp_telegrambot.go +++ b/internal/notify/notifiers/sp_telegrambot.go @@ -18,7 +18,7 @@ func init() { provider, err := telegrambot.NewNotifierProvider(&telegrambot.NotifierProviderConfig{ BotToken: credentials.BotToken, - ChatId: xmaps.GetOrDefaultInt64(options.ProviderExtendedConfig, "chatId", credentials.ChatId), + ChatId: xmaps.GetOrDefaultString(options.ProviderExtendedConfig, "chatId", credentials.ChatId), }) return provider, err }); err != nil { diff --git a/internal/notify/notifiers/sp_webhook.go b/internal/notify/notifiers/sp_webhook.go index 7cacd0a64..1af5b9788 100644 --- a/internal/notify/notifiers/sp_webhook.go +++ b/internal/notify/notifiers/sp_webhook.go @@ -43,7 +43,7 @@ func init() { WebhookData: xmaps.GetOrDefaultString(options.ProviderExtendedConfig, "webhookData", credentials.DataString), Method: credentials.Method, Headers: mergedHeaders, - Timeout: xmaps.GetInt32(options.ProviderExtendedConfig, "timeout"), + Timeout: xmaps.GetInt(options.ProviderExtendedConfig, "timeout"), AllowInsecureConnections: credentials.AllowInsecureConnections, }) return provider, err diff --git a/pkg/core/notifier/providers/telegrambot/telegrambot.go b/pkg/core/notifier/providers/telegrambot/telegrambot.go index 5b3f50833..89ab5242b 100644 --- a/pkg/core/notifier/providers/telegrambot/telegrambot.go +++ b/pkg/core/notifier/providers/telegrambot/telegrambot.go @@ -15,7 +15,7 @@ type NotifierProviderConfig struct { // Telegram Bot API Token。 BotToken string `json:"botToken"` // Telegram Chat ID。 - ChatId int64 `json:"chatId"` + ChatId string `json:"chatId"` } type NotifierProvider struct { diff --git a/pkg/core/notifier/providers/telegrambot/telegrambot_test.go b/pkg/core/notifier/providers/telegrambot/telegrambot_test.go index 76c24eeea..54ef5bf90 100644 --- a/pkg/core/notifier/providers/telegrambot/telegrambot_test.go +++ b/pkg/core/notifier/providers/telegrambot/telegrambot_test.go @@ -17,14 +17,14 @@ const ( var ( fApiToken string - fChatId int64 + fChatId string ) func init() { argsPrefix := "CERTIMATE_NOTIFIER_TELEGRAMBOT_" flag.StringVar(&fApiToken, argsPrefix+"APITOKEN", "", "") - flag.Int64Var(&fChatId, argsPrefix+"CHATID", 0, "") + flag.StringVar(&fChatId, argsPrefix+"CHATID", "", "") } /* @@ -32,7 +32,7 @@ Shell command to run this test: go test -v ./telegrambot_test.go -args \ --CERTIMATE_NOTIFIER_TELEGRAMBOT_APITOKEN="your-api-token" \ - --CERTIMATE_NOTIFIER_TELEGRAMBOT_CHATID=123456 + --CERTIMATE_NOTIFIER_TELEGRAMBOT_CHATID="your-chat-id" */ func TestNotify(t *testing.T) { flag.Parse() diff --git a/pkg/core/notifier/providers/webhook/webhook.go b/pkg/core/notifier/providers/webhook/webhook.go index 3f57da7dd..83fbce956 100644 --- a/pkg/core/notifier/providers/webhook/webhook.go +++ b/pkg/core/notifier/providers/webhook/webhook.go @@ -29,7 +29,7 @@ type NotifierProviderConfig struct { Headers map[string]string `json:"headers,omitempty"` // 请求超时(单位:秒)。 // 零值时默认值 30。 - Timeout int32 `json:"timeout,omitempty"` + Timeout int `json:"timeout,omitempty"` // 是否允许不安全的连接。 AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"` } diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/acmehttpreq/acmehttpreq.go b/pkg/core/ssl-applicator/acme-dns01/providers/acmehttpreq/acmehttpreq.go index 54445cda0..47935551f 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/acmehttpreq/acmehttpreq.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/acmehttpreq/acmehttpreq.go @@ -15,7 +15,7 @@ type ChallengeProviderConfig struct { Mode string `json:"mode"` Username string `json:"username"` Password string `json:"password"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/aliyun_esa.go b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/aliyun_esa.go index a2ef64b1a..2cfe85bdb 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/aliyun_esa.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/aliyun_esa.go @@ -12,8 +12,8 @@ type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` AccessKeySecret string `json:"accessKeySecret"` Region string `json:"region"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go index 378e0968b..9c2dc3ec7 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun-esa/internal/lego.go @@ -36,7 +36,7 @@ type Config struct { PropagationTimeout time.Duration PollingInterval time.Duration - TTL int32 + TTL int HTTPTimeout time.Duration } @@ -50,7 +50,7 @@ type DNSProvider struct { func NewDefaultConfig() *Config { return &Config{ - TTL: int32(env.GetOrDefaultInt(EnvTTL, 300)), + TTL: env.GetOrDefaultInt(EnvTTL, 300), PropagationTimeout: env.GetOrDefaultSecond(EnvPropagationTimeout, 2*time.Minute), PollingInterval: env.GetOrDefaultSecond(EnvPollingInterval, dns01.DefaultPollingInterval), HTTPTimeout: env.GetOrDefaultSecond(EnvHTTPTimeout, 30*time.Second), @@ -239,7 +239,7 @@ func (d *DNSProvider) addOrUpdateDNSRecord(siteId int64, effectiveFQDN, value st Data: &aliesa.CreateRecordRequestData{ Value: tea.String(value), }, - Ttl: tea.Int32(d.config.TTL), + Ttl: tea.Int32(int32(d.config.TTL)), } _, err = d.client.CreateRecord(request) return err diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun/aliyun.go b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun/aliyun.go index 3b694d928..dc94259a7 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/aliyun/aliyun.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/aliyun/aliyun.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` AccessKeySecret string `json:"accessKeySecret"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := alidns.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/arvancloud/arvancloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/arvancloud/arvancloud.go index 60658885b..d665792d2 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/arvancloud/arvancloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/arvancloud/arvancloud.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := arvancloud.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/aws-route53/aws-route53.go b/pkg/core/ssl-applicator/acme-dns01/providers/aws-route53/aws-route53.go index e5f81d05b..07f8c9c06 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/aws-route53/aws-route53.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/aws-route53/aws-route53.go @@ -14,8 +14,8 @@ type ChallengeProviderConfig struct { SecretAccessKey string `json:"secretAccessKey"` Region string `json:"region"` HostedZoneId string `json:"hostedZoneId"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -32,7 +32,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := route53.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/azure-dns/azure-dns.go b/pkg/core/ssl-applicator/acme-dns01/providers/azure-dns/azure-dns.go index b02e23388..c792e5328 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/azure-dns/azure-dns.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/azure-dns/azure-dns.go @@ -15,8 +15,8 @@ type ChallengeProviderConfig struct { ClientId string `json:"clientId"` ClientSecret string `json:"clientSecret"` CloudName string `json:"cloudName,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -39,7 +39,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := azuredns.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/baiducloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/baiducloud.go index 232dbdb2b..dbd8939b0 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/baiducloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/baiducloud.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` SecretAccessKey string `json:"secretAccessKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/internal/lego.go index 4c66f088f..e176b6199 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/baiducloud/internal/lego.go @@ -11,6 +11,7 @@ import ( "github.com/go-acme/lego/v4/challenge/dns01" "github.com/go-acme/lego/v4/platform/config/env" "github.com/google/uuid" + "github.com/samber/lo" ) const ( @@ -33,7 +34,7 @@ type Config struct { PropagationTimeout time.Duration PollingInterval time.Duration - TTL int32 + TTL int HTTPTimeout time.Duration } @@ -44,7 +45,7 @@ type DNSProvider struct { func NewDefaultConfig() *Config { return &Config{ - TTL: int32(env.GetOrDefaultInt(EnvTTL, 300)), + TTL: env.GetOrDefaultInt(EnvTTL, 300), PropagationTimeout: env.GetOrDefaultSecond(EnvPropagationTimeout, 2*time.Minute), PollingInterval: env.GetOrDefaultSecond(EnvPollingInterval, dns01.DefaultPollingInterval), HTTPTimeout: env.GetOrDefaultSecond(EnvHTTPTimeout, 30*time.Second), @@ -169,7 +170,7 @@ func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) er Type: "TXT", Rr: subDomain, Value: value, - Ttl: &d.config.TTL, + Ttl: lo.ToPtr(int32(d.config.TTL)), } err := d.client.CreateRecord(zoneName, request, d.generateClientToken()) return err @@ -178,7 +179,7 @@ func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) er Type: "TXT", Rr: subDomain, Value: value, - Ttl: &d.config.TTL, + Ttl: lo.ToPtr(int32(d.config.TTL)), } err := d.client.UpdateRecord(zoneName, record.Id, request, d.generateClientToken()) return err diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/bookmyname/bookmyname.go b/pkg/core/ssl-applicator/acme-dns01/providers/bookmyname/bookmyname.go index 748ada8df..b7f993186 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/bookmyname/bookmyname.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/bookmyname/bookmyname.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { Username string `json:"username"` Password string `json:"password"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := bookmyname.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/bunny/bunny.go b/pkg/core/ssl-applicator/acme-dns01/providers/bunny/bunny.go index 27a8f92f3..44c2dd897 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/bunny/bunny.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/bunny/bunny.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := bunny.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/cloudflare/cloudflare.go b/pkg/core/ssl-applicator/acme-dns01/providers/cloudflare/cloudflare.go index ae33e61fa..de0b33760 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/cloudflare/cloudflare.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/cloudflare/cloudflare.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { DnsApiToken string `json:"dnsApiToken"` ZoneApiToken string `json:"zoneApiToken,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := cloudflare.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/cloudns/cloudns.go b/pkg/core/ssl-applicator/acme-dns01/providers/cloudns/cloudns.go index 88cd2866a..c28bb938f 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/cloudns/cloudns.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/cloudns/cloudns.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { AuthId string `json:"authId"` AuthPassword string `json:"authPassword"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := cloudns.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/cmcccloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/cmcccloud.go index 494ea4b1d..f9347e323 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/cmcccloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/cmcccloud.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` AccessKeySecret string `json:"accessKeySecret"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/internal/lego.go index b4d6b9717..7110a54d5 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/cmcccloud/internal/lego.go @@ -10,6 +10,7 @@ import ( "github.com/go-acme/lego/v4/challenge" "github.com/go-acme/lego/v4/challenge/dns01" "github.com/go-acme/lego/v4/platform/config/env" + "github.com/samber/lo" "gitlab.ecloud.com/ecloud/ecloudsdkclouddns" "gitlab.ecloud.com/ecloud/ecloudsdkclouddns/model" "gitlab.ecloud.com/ecloud/ecloudsdkcore/config" @@ -36,7 +37,7 @@ type Config struct { PropagationTimeout time.Duration PollingInterval time.Duration - TTL int32 + TTL int ReadTimeOut int ConnectTimeout int } @@ -50,7 +51,7 @@ func NewDefaultConfig() *Config { return &Config{ ReadTimeOut: env.GetOrDefaultInt(EnvReadTimeOut, 30), ConnectTimeout: env.GetOrDefaultInt(EnvConnectTimeout, 30), - TTL: int32(env.GetOrDefaultInt(EnvTTL, 600)), + TTL: env.GetOrDefaultInt(EnvTTL, 600), PropagationTimeout: env.GetOrDefaultSecond(EnvPropagationTimeout, 2*time.Minute), PollingInterval: env.GetOrDefaultSecond(EnvPollingInterval, dns01.DefaultPollingInterval), } @@ -118,7 +119,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error { Description: "certimate acme", Type: model.CreateRecordOpenapiBodyTypeEnumTxt, Value: info.Value, - Ttl: &d.config.TTL, + Ttl: lo.ToPtr(int32(d.config.TTL)), }, }) if err != nil { @@ -140,7 +141,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error { LineId: "0", Type: model.ModifyRecordOpenapiBodyTypeEnumTxt, Value: info.Value, - Ttl: &d.config.TTL, + Ttl: lo.ToPtr(int32(d.config.TTL)), }, }) if err != nil { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/constellix/constellix.go b/pkg/core/ssl-applicator/acme-dns01/providers/constellix/constellix.go index 02b11099a..1a69dd03c 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/constellix/constellix.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/constellix/constellix.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` SecretKey string `json:"secretKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := constellix.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/ctcccloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/ctcccloud.go index f4e47e3b0..1eb6b72e1 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/ctcccloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/ctcccloud.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` SecretAccessKey string `json:"secretAccessKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -24,7 +24,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.AccessKeyId = config.AccessKeyId providerConfig.SecretAccessKey = config.SecretAccessKey if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } if config.DnsPropagationTimeout != 0 { providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/desec/desec.go b/pkg/core/ssl-applicator/acme-dns01/providers/desec/desec.go index b58c828e2..10046dfe3 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/desec/desec.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/desec/desec.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { Token string `json:"token"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := desec.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/digitalocean/digitalocean.go b/pkg/core/ssl-applicator/acme-dns01/providers/digitalocean/digitalocean.go index 45b679c8d..b1a177ba8 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/digitalocean/digitalocean.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/digitalocean/digitalocean.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { AccessToken string `json:"accessToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := digitalocean.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/dnsla.go b/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/dnsla.go index 330bc237b..67a0d95f0 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/dnsla.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/dnsla.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiId string `json:"apiId"` ApiSecret string `json:"apiSecret"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -27,7 +27,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := internal.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/internal/lego.go index 3b7bdd078..122a87e28 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/dnsla/internal/lego.go @@ -9,6 +9,7 @@ import ( "github.com/go-acme/lego/v4/challenge" "github.com/go-acme/lego/v4/challenge/dns01" "github.com/go-acme/lego/v4/platform/config/env" + "github.com/samber/lo" dnslasdk "github.com/certimate-go/certimate/pkg/sdk3rd/dnsla" ) @@ -201,25 +202,24 @@ func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) er return err } + const recordTypeTXT = 16 if record == nil { request := &dnslasdk.CreateRecordRequest{ - DomainId: zone.Id, - Type: 16, - Host: subDomain, - Data: value, - Ttl: int32(d.config.TTL), + DomainId: lo.ToPtr(zone.Id), + Type: lo.ToPtr(int32(recordTypeTXT)), + Host: lo.ToPtr(subDomain), + Data: lo.ToPtr(value), + Ttl: lo.ToPtr(int32(d.config.TTL)), } _, err := d.client.CreateRecord(request) return err } else { - reqType := int32(16) - reqTtl := int32(d.config.TTL) request := &dnslasdk.UpdateRecordRequest{ - Id: record.Id, - Type: &reqType, - Host: &subDomain, - Data: &value, - Ttl: &reqTtl, + Id: lo.ToPtr(record.Id), + Type: lo.ToPtr(int32(recordTypeTXT)), + Host: lo.ToPtr(subDomain), + Data: lo.ToPtr(value), + Ttl: lo.ToPtr(int32(d.config.TTL)), } _, err := d.client.UpdateRecord(request) return err diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/dnsmadeeasy/dnsmadeeasy.go b/pkg/core/ssl-applicator/acme-dns01/providers/dnsmadeeasy/dnsmadeeasy.go index a8bef47ce..9536cc6a7 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/dnsmadeeasy/dnsmadeeasy.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/dnsmadeeasy/dnsmadeeasy.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` ApiSecret string `json:"apiSecret"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := dnsmadeeasy.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/duckdns/duckdns.go b/pkg/core/ssl-applicator/acme-dns01/providers/duckdns/duckdns.go index dabd7a6a7..bed033a4d 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/duckdns/duckdns.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/duckdns/duckdns.go @@ -11,7 +11,7 @@ import ( type ChallengeProviderConfig struct { Token string `json:"token"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/dynu/dynu.go b/pkg/core/ssl-applicator/acme-dns01/providers/dynu/dynu.go index 3bdfa41fe..6d17ce20a 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/dynu/dynu.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/dynu/dynu.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := dynu.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/dynv6/dnsla.go b/pkg/core/ssl-applicator/acme-dns01/providers/dynv6/dnsla.go index e9055ff71..6e0b35e0e 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/dynv6/dnsla.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/dynv6/dnsla.go @@ -10,8 +10,8 @@ import ( type ChallengeProviderConfig struct { HttpToken string `json:"httpToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -25,7 +25,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := internal.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/gandinet/gandinet.go b/pkg/core/ssl-applicator/acme-dns01/providers/gandinet/gandinet.go index d528c56b5..b1f27d5b9 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/gandinet/gandinet.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/gandinet/gandinet.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { PersonalAccessToken string `json:"personalAccessToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := gandiv5.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/gcore/gcore.go b/pkg/core/ssl-applicator/acme-dns01/providers/gcore/gcore.go index a3676a3b8..9400667c1 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/gcore/gcore.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/gcore/gcore.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiToken string `json:"apiToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := gcore.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/gname/gname.go b/pkg/core/ssl-applicator/acme-dns01/providers/gname/gname.go index 4206626ba..cc8e2f17f 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/gname/gname.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/gname/gname.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { AppId string `json:"appId"` AppKey string `json:"appKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -27,7 +27,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := internal.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/godaddy/godaddy.go b/pkg/core/ssl-applicator/acme-dns01/providers/godaddy/godaddy.go index 66e0e7f37..75ab261a4 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/godaddy/godaddy.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/godaddy/godaddy.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` ApiSecret string `json:"apiSecret"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := godaddy.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/hetzner/hetzner.go b/pkg/core/ssl-applicator/acme-dns01/providers/hetzner/hetzner.go index e8c0ada43..48c2b31e1 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/hetzner/hetzner.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/hetzner/hetzner.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiToken string `json:"apiToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := hetzner.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/hostingde/hostingde.go b/pkg/core/ssl-applicator/acme-dns01/providers/hostingde/hostingde.go index 4ff4216d3..38cfacbfb 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/hostingde/hostingde.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/hostingde/hostingde.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := hostingde.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/hostinger/hostinger.go b/pkg/core/ssl-applicator/acme-dns01/providers/hostinger/hostinger.go index e8988764c..af94e8c91 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/hostinger/hostinger.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/hostinger/hostinger.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiToken string `json:"apiToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := hostinger.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/huaweicloud/huaweicloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/huaweicloud/huaweicloud.go index 4f8e60c6e..cc768df98 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/huaweicloud/huaweicloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/huaweicloud/huaweicloud.go @@ -13,8 +13,8 @@ type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` SecretAccessKey string `json:"secretAccessKey"` Region string `json:"region"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -36,7 +36,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = config.DnsTTL + providerConfig.TTL = int32(config.DnsTTL) } provider, err := hwc.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/infomaniak/infomaniak.go b/pkg/core/ssl-applicator/acme-dns01/providers/infomaniak/infomaniak.go index 8ae9c5cb9..c88c92d0e 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/infomaniak/infomaniak.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/infomaniak/infomaniak.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { AccessToken string `json:"accessToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := infomaniak.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/ionos/ionos.go b/pkg/core/ssl-applicator/acme-dns01/providers/ionos/ionos.go index 778dddc48..f49426959 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/ionos/ionos.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/ionos/ionos.go @@ -13,8 +13,8 @@ import ( type ChallengeProviderConfig struct { ApiKeyPublicPrefix string `json:"apiKeyPublicPrefix"` ApiKeySecret string `json:"apiKeySecret"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := ionos.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/internal/lego.go index 0361c7cbf..6b888aae5 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/internal/lego.go @@ -36,7 +36,7 @@ type Config struct { PropagationTimeout time.Duration PollingInterval time.Duration - TTL int32 + TTL int HTTPTimeout time.Duration } @@ -47,7 +47,7 @@ type DNSProvider struct { func NewDefaultConfig() *Config { return &Config{ - TTL: int32(env.GetOrDefaultInt(EnvTTL, 300)), + TTL: env.GetOrDefaultInt(EnvTTL, 300), PropagationTimeout: env.GetOrDefaultSecond(EnvPropagationTimeout, 2*time.Minute), PollingInterval: env.GetOrDefaultSecond(EnvPollingInterval, dns01.DefaultPollingInterval), HTTPTimeout: env.GetOrDefaultSecond(EnvHTTPTimeout, 30*time.Second), diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/jdcloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/jdcloud.go index e912f51c3..08d64d768 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/jdcloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/jdcloud/jdcloud.go @@ -12,8 +12,8 @@ type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` AccessKeySecret string `json:"accessKeySecret"` RegionId string `json:"regionId"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/linode/linode.go b/pkg/core/ssl-applicator/acme-dns01/providers/linode/linode.go index f16b09441..0d6c6673b 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/linode/linode.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/linode/linode.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { AccessToken string `json:"accessToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := linode.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/namecheap/namecheap.go b/pkg/core/ssl-applicator/acme-dns01/providers/namecheap/namecheap.go index 9d774011c..9a8d2b90c 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/namecheap/namecheap.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/namecheap/namecheap.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { Username string `json:"username"` ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := namecheap.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/namedotcom/namedotcom.go b/pkg/core/ssl-applicator/acme-dns01/providers/namedotcom/namedotcom.go index ae33e86a2..b420b53a3 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/namedotcom/namedotcom.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/namedotcom/namedotcom.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { Username string `json:"username"` ApiToken string `json:"apiToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := namedotcom.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/namesilo/namesilo.go b/pkg/core/ssl-applicator/acme-dns01/providers/namesilo/namesilo.go index 5ce1b7548..690faf3cd 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/namesilo/namesilo.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/namesilo/namesilo.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := namesilo.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/netcup/netcup.go b/pkg/core/ssl-applicator/acme-dns01/providers/netcup/netcup.go index 4535e2004..cc3f9ba0c 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/netcup/netcup.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/netcup/netcup.go @@ -13,8 +13,8 @@ type ChallengeProviderConfig struct { CustomerNumber string `json:"customerNumber"` ApiKey string `json:"apiKey"` ApiPassword string `json:"apiPassword"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -30,7 +30,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := netcup.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/netlify/netlify.go b/pkg/core/ssl-applicator/acme-dns01/providers/netlify/netlify.go index fe589ac9b..24e79ed7b 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/netlify/netlify.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/netlify/netlify.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiToken string `json:"apiToken"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := netlify.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/ns1/ns1.go b/pkg/core/ssl-applicator/acme-dns01/providers/ns1/ns1.go index 039d1f62b..96e307a9b 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/ns1/ns1.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/ns1/ns1.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := ns1.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/ovhcloud/ovhcloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/ovhcloud/ovhcloud.go index 4d2b22c17..4c7882557 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/ovhcloud/ovhcloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/ovhcloud/ovhcloud.go @@ -18,8 +18,8 @@ type ChallengeProviderConfig struct { ConsumerKey string `json:"consumerKey,omitempty"` ClientId string `json:"clientId,omitempty"` ClientSecret string `json:"clientSecret,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -46,7 +46,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := ovh.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/porkbun/porkbun.go b/pkg/core/ssl-applicator/acme-dns01/providers/porkbun/porkbun.go index e45b92230..b1d6978e2 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/porkbun/porkbun.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/porkbun/porkbun.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` SecretApiKey string `json:"secretApiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := porkbun.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/powerdns/powerdns.go b/pkg/core/ssl-applicator/acme-dns01/providers/powerdns/powerdns.go index 45dc432ca..be2ce7998 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/powerdns/powerdns.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/powerdns/powerdns.go @@ -16,8 +16,8 @@ type ChallengeProviderConfig struct { ServerUrl string `json:"serverUrl"` ApiKey string `json:"apiKey"` AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -38,7 +38,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := pdns.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/rainyun/rainyun.go b/pkg/core/ssl-applicator/acme-dns01/providers/rainyun/rainyun.go index 6bfaf8475..ad3c8caa9 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/rainyun/rainyun.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/rainyun/rainyun.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := rainyun.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/rfc2136/rfc2136.go b/pkg/core/ssl-applicator/acme-dns01/providers/rfc2136/rfc2136.go index 8ff193ca6..a0fb333bf 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/rfc2136/rfc2136.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/rfc2136/rfc2136.go @@ -17,8 +17,8 @@ type ChallengeProviderConfig struct { TsigAlgorithm string `json:"tsigAlgorithm,omitempty"` TsigKey string `json:"tsigKey,omitempty"` TsigSecret string `json:"tsigSecret,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -43,7 +43,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := rfc2136.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/spaceship/spaceship.go b/pkg/core/ssl-applicator/acme-dns01/providers/spaceship/spaceship.go index c739c11ce..12900468e 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/spaceship/spaceship.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/spaceship/spaceship.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` ApiSecret string `json:"apiSecret"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := spaceship.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/technitiumdns/technitiumdns.go b/pkg/core/ssl-applicator/acme-dns01/providers/technitiumdns/technitiumdns.go index f3390d488..7ad98750a 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/technitiumdns/technitiumdns.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/technitiumdns/technitiumdns.go @@ -15,8 +15,8 @@ type ChallengeProviderConfig struct { ServerUrl string `json:"serverUrl"` ApiToken string `json:"apiToken"` AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -36,7 +36,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := technitium.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go index 6f7addc0f..1701c8a71 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/internal/lego.go @@ -36,7 +36,7 @@ type Config struct { PropagationTimeout time.Duration PollingInterval time.Duration - TTL int32 + TTL int HTTPTimeout time.Duration } @@ -47,7 +47,7 @@ type DNSProvider struct { func NewDefaultConfig() *Config { return &Config{ - TTL: int32(env.GetOrDefaultInt(EnvTTL, 300)), + TTL: env.GetOrDefaultInt(EnvTTL, 300), PropagationTimeout: env.GetOrDefaultSecond(EnvPropagationTimeout, 2*time.Minute), PollingInterval: env.GetOrDefaultSecond(EnvPollingInterval, dns01.DefaultPollingInterval), HTTPTimeout: env.GetOrDefaultSecond(EnvHTTPTimeout, 30*time.Second), diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/tencentcloud_eo.go b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/tencentcloud_eo.go index 73f5b96ea..0fcbc2d77 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/tencentcloud_eo.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud-eo/tencentcloud_eo.go @@ -12,8 +12,8 @@ type ChallengeProviderConfig struct { SecretId string `json:"secretId"` SecretKey string `json:"secretKey"` ZoneId string `json:"zoneId"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud/tencentcloud.go b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud/tencentcloud.go index 2d663728c..0a7a292f1 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud/tencentcloud.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/tencentcloud/tencentcloud.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { SecretId string `json:"secretId"` SecretKey string `json:"secretKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := tencentcloud.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/internal/lego.go index 907d27fdc..821325336 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/internal/lego.go @@ -36,7 +36,7 @@ type Config struct { PropagationTimeout time.Duration PollingInterval time.Duration - TTL int32 + TTL int HTTPTimeout time.Duration } @@ -47,7 +47,7 @@ type DNSProvider struct { func NewDefaultConfig() *Config { return &Config{ - TTL: int32(env.GetOrDefaultInt(EnvTTL, 600)), + TTL: env.GetOrDefaultInt(EnvTTL, 600), PropagationTimeout: env.GetOrDefaultSecond(EnvPropagationTimeout, 2*time.Minute), PollingInterval: env.GetOrDefaultSecond(EnvPollingInterval, dns01.DefaultPollingInterval), HTTPTimeout: env.GetOrDefaultSecond(EnvHTTPTimeout, 30*time.Second), diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/ucloud_udnr.go b/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/ucloud_udnr.go index 8a17a0c07..8c36f33fa 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/ucloud_udnr.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/ucloud-udnr/ucloud_udnr.go @@ -12,8 +12,8 @@ type ChallengeProviderConfig struct { PrivateKey string `json:"privateKey"` PublicKey string `json:"publicKey"` ProjectId string `json:"projectId,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/vercel/vercel.go b/pkg/core/ssl-applicator/acme-dns01/providers/vercel/vercel.go index 63a74638a..9c4d75623 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/vercel/vercel.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/vercel/vercel.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { ApiAccessToken string `json:"apiAccessToken"` TeamId string `json:"teamId,omitempty"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := vercel.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/volcengine/volcengine.go b/pkg/core/ssl-applicator/acme-dns01/providers/volcengine/volcengine.go index 59134406f..8072391bf 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/volcengine/volcengine.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/volcengine/volcengine.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { AccessKeyId string `json:"accessKeyId"` SecretAccessKey string `json:"secretAccessKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := volcengine.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/vultr/vultr.go b/pkg/core/ssl-applicator/acme-dns01/providers/vultr/vultr.go index c3badc340..b61566657 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/vultr/vultr.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/vultr/vultr.go @@ -11,8 +11,8 @@ import ( type ChallengeProviderConfig struct { ApiKey string `json:"apiKey"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -26,7 +26,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := vultr.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/westcn/westcn.go b/pkg/core/ssl-applicator/acme-dns01/providers/westcn/westcn.go index c40c7f756..18fd93aa9 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/westcn/westcn.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/westcn/westcn.go @@ -12,8 +12,8 @@ import ( type ChallengeProviderConfig struct { Username string `json:"username"` ApiPassword string `json:"apiPassword"` - DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"` - DnsTTL int32 `json:"dnsTTL,omitempty"` + DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` + DnsTTL int `json:"dnsTTL,omitempty"` } func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) { @@ -28,7 +28,7 @@ func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } if config.DnsTTL != 0 { - providerConfig.TTL = int(config.DnsTTL) + providerConfig.TTL = config.DnsTTL } provider, err := westcn.NewDNSProviderConfig(providerConfig) diff --git a/pkg/core/ssl-deployer/providers/1panel-site/1panel_site.go b/pkg/core/ssl-deployer/providers/1panel-site/1panel_site.go index 94bdc1bfa..256846ac3 100644 --- a/pkg/core/ssl-deployer/providers/1panel-site/1panel_site.go +++ b/pkg/core/ssl-deployer/providers/1panel-site/1panel_site.go @@ -191,7 +191,7 @@ func (d *SSLDeployerProvider) deployToCertificate(ctx context.Context, certPEM s { // 获取证书详情 getWebsiteSSLResp, err := sdkClient.GetWebsiteSSL(d.config.CertificateId) - d.logger.Debug("sdk request '1panel.GetWebsiteSSL'", slog.Any("sslId", d.config.CertificateId), slog.Any("response", getWebsiteSSLResp)) + d.logger.Debug("sdk request '1panel.GetWebsiteSSL'", slog.Int64("sslId", d.config.CertificateId), slog.Any("response", getWebsiteSSLResp)) if err != nil { return fmt.Errorf("failed to execute sdk request '1panel.GetWebsiteSSL': %w", err) } diff --git a/pkg/core/ssl-deployer/providers/aliyun-apigw/aliyun_apigw.go b/pkg/core/ssl-deployer/providers/aliyun-apigw/aliyun_apigw.go index fb2a44b1b..ac39c4424 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-apigw/aliyun_apigw.go +++ b/pkg/core/ssl-deployer/providers/aliyun-apigw/aliyun_apigw.go @@ -196,7 +196,7 @@ func (d *SSLDeployerProvider) deployToCloudNative(ctx context.Context, certPEM s // REF: https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/developer-reference/api-apig-2024-03-27-getdomain getDomainReq := &aliapig.GetDomainRequest{} getDomainResp, err := d.sdkClients.CloudNativeAPIGateway.GetDomain(tea.String(domainId), getDomainReq) - d.logger.Debug("sdk request 'apig.GetDomain'", slog.Any("domainId", domainId), slog.Any("request", getDomainReq), slog.Any("response", getDomainResp)) + d.logger.Debug("sdk request 'apig.GetDomain'", slog.String("domainId", domainId), slog.Any("request", getDomainReq), slog.Any("response", getDomainResp)) if err != nil { return fmt.Errorf("failed to execute sdk request 'apig.GetDomain': %w", err) } @@ -222,7 +222,7 @@ func (d *SSLDeployerProvider) deployToCloudNative(ctx context.Context, certPEM s CertIdentifier: tea.String(upres.ExtendedData["CertIdentifier"].(string)), } updateDomainResp, err := d.sdkClients.CloudNativeAPIGateway.UpdateDomain(tea.String(domainId), updateDomainReq) - d.logger.Debug("sdk request 'apig.UpdateDomain'", slog.Any("domainId", domainId), slog.Any("request", updateDomainReq), slog.Any("response", updateDomainResp)) + d.logger.Debug("sdk request 'apig.UpdateDomain'", slog.String("domainId", domainId), slog.Any("request", updateDomainReq), slog.Any("response", updateDomainResp)) if err != nil { return fmt.Errorf("failed to execute sdk request 'apig.UpdateDomain': %w", err) } diff --git a/pkg/core/ssl-deployer/providers/aliyun-cdn/aliyun_cdn.go b/pkg/core/ssl-deployer/providers/aliyun-cdn/aliyun_cdn.go index dd137f9a3..9e922c5db 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-cdn/aliyun_cdn.go +++ b/pkg/core/ssl-deployer/providers/aliyun-cdn/aliyun_cdn.go @@ -99,7 +99,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke setCdnDomainSSLCertificateReq := &alicdn.SetCdnDomainSSLCertificateRequest{ DomainName: tea.String(domain), CertType: tea.String("cas"), - CertId: tea.Int64(int64(certId)), + CertId: tea.Int64(certId), CertRegion: lo. If(d.config.Region == "" || strings.HasPrefix(d.config.Region, "cn-"), tea.String("cn-hangzhou")). Else(tea.String("ap-southeast-1")), diff --git a/pkg/core/ssl-deployer/providers/aliyun-vod/aliyun_vod.go b/pkg/core/ssl-deployer/providers/aliyun-vod/aliyun_vod.go index f8cc99be1..84798322a 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-vod/aliyun_vod.go +++ b/pkg/core/ssl-deployer/providers/aliyun-vod/aliyun_vod.go @@ -96,7 +96,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke setVodDomainSSLCertificateReq := &alivod.SetVodDomainSSLCertificateRequest{ DomainName: tea.String(d.config.Domain), CertType: tea.String("cas"), - CertId: tea.Int64(int64(certId)), + CertId: tea.Int64(certId), CertName: tea.String(upres.CertName), CertRegion: lo. If(d.config.Region == "" || strings.HasPrefix(d.config.Region, "cn-"), tea.String("cn-hangzhou")). diff --git a/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go b/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go index 156848782..1e050adce 100644 --- a/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go +++ b/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go @@ -95,7 +95,7 @@ func (d *SSLDeployerProvider) deployToSite(ctx context.Context, certPEM string, // 获取单个网站详情 // REF: https://doc.cdnfly.cn/wangzhanguanli-v1-sites.html#%E8%8E%B7%E5%8F%96%E5%8D%95%E4%B8%AA%E7%BD%91%E7%AB%99%E8%AF%A6%E6%83%85 getSiteResp, err := d.sdkClient.GetSite(d.config.SiteId) - d.logger.Debug("sdk request 'cdnfly.GetSite'", slog.Any("siteId", d.config.SiteId), slog.Any("response", getSiteResp)) + d.logger.Debug("sdk request 'cdnfly.GetSite'", slog.String("siteId", d.config.SiteId), slog.Any("response", getSiteResp)) if err != nil { return fmt.Errorf("failed to execute sdk request 'cdnfly.GetSite': %w", err) } diff --git a/pkg/core/ssl-deployer/providers/gcore-cdn/gcore_cdn.go b/pkg/core/ssl-deployer/providers/gcore-cdn/gcore_cdn.go index d8862215f..92735e23c 100644 --- a/pkg/core/ssl-deployer/providers/gcore-cdn/gcore_cdn.go +++ b/pkg/core/ssl-deployer/providers/gcore-cdn/gcore_cdn.go @@ -97,7 +97,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 获取证书 // REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/paths/~1cdn~1sslData~1%7Bssl_id%7D/get getCertificateDetailResp, err := d.sdkClients.SSLCerts.Get(context.TODO(), d.config.CertificateId) - d.logger.Debug("sdk request 'sslcerts.Get'", slog.Any("sslId", d.config.CertificateId), slog.Any("response", getCertificateDetailResp)) + d.logger.Debug("sdk request 'sslcerts.Get'", slog.Int64("sslId", d.config.CertificateId), slog.Any("response", getCertificateDetailResp)) if err != nil { return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Get': %w", err) } @@ -111,7 +111,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke ValidateRootCA: false, } changeCertificateResp, err := d.sdkClients.SSLCerts.Update(context.TODO(), getCertificateDetailResp.ID, changeCertificateReq) - d.logger.Debug("sdk request 'sslcerts.Update'", slog.Any("sslId", getCertificateDetailResp.ID), slog.Any("request", changeCertificateReq), slog.Any("response", changeCertificateResp)) + d.logger.Debug("sdk request 'sslcerts.Update'", slog.Int64("sslId", getCertificateDetailResp.ID), slog.Any("request", changeCertificateReq), slog.Any("response", changeCertificateResp)) if err != nil { return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Update': %w", err) } diff --git a/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn.go b/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn.go index 1accc617e..853b3cf53 100644 --- a/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn.go +++ b/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn.go @@ -16,7 +16,7 @@ type SSLDeployerProviderConfig struct { // 雨云 API 密钥。 ApiKey string `json:"apiKey"` // RCDN 实例 ID。 - InstanceId int32 `json:"instanceId"` + InstanceId int64 `json:"instanceId"` // 加速域名(支持泛域名)。 Domain string `json:"domain"` } @@ -80,13 +80,13 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // RCDN SSL 绑定域名 // REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-184214120 - certId, _ := strconv.ParseInt(upres.CertId, 10, 32) + certId, _ := strconv.ParseInt(upres.CertId, 10, 64) rcdnInstanceSslBindReq := &rainyunsdk.RcdnInstanceSslBindRequest{ - CertId: int32(certId), + CertId: certId, Domains: []string{d.config.Domain}, } rcdnInstanceSslBindResp, err := d.sdkClient.RcdnInstanceSslBind(d.config.InstanceId, rcdnInstanceSslBindReq) - d.logger.Debug("sdk request 'rcdn.InstanceSslBind'", slog.Any("instanceId", d.config.InstanceId), slog.Any("request", rcdnInstanceSslBindReq), slog.Any("response", rcdnInstanceSslBindResp)) + d.logger.Debug("sdk request 'rcdn.InstanceSslBind'", slog.Int64("instanceId", d.config.InstanceId), slog.Any("request", rcdnInstanceSslBindReq), slog.Any("response", rcdnInstanceSslBindResp)) if err != nil { return nil, fmt.Errorf("failed to execute sdk request 'rcdn.InstanceSslBind': %w", err) } diff --git a/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn_test.go b/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn_test.go index 25f8ba1b7..e9838ed30 100644 --- a/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn_test.go +++ b/pkg/core/ssl-deployer/providers/rainyun-rcdn/rainyun_rcdn_test.go @@ -54,7 +54,7 @@ func TestDeploy(t *testing.T) { deployer, err := provider.NewSSLDeployerProvider(&provider.SSLDeployerProviderConfig{ ApiKey: fApiKey, - InstanceId: int32(fInstanceId), + InstanceId: fInstanceId, Domain: fDomain, }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console.go b/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console.go index bea243801..dae2d887b 100644 --- a/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console.go +++ b/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console.go @@ -15,7 +15,7 @@ type SSLDeployerProviderConfig struct { // 耗子面板服务地址。 ServerUrl string `json:"serverUrl"` // 耗子面板访问令牌 ID。 - AccessTokenId int32 `json:"accessTokenId"` + AccessTokenId int64 `json:"accessTokenId"` // 耗子面板访问令牌。 AccessToken string `json:"accessToken"` // 是否允许不安全的连接。 @@ -70,7 +70,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke return &core.SSLDeployResult{}, nil } -func createSDKClient(serverUrl string, accessTokenId int32, accessToken string, skipTlsVerify bool) (*rpsdk.Client, error) { +func createSDKClient(serverUrl string, accessTokenId int64, accessToken string, skipTlsVerify bool) (*rpsdk.Client, error) { client, err := rpsdk.NewClient(serverUrl, accessTokenId, accessToken) if err != nil { return nil, err diff --git a/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console_test.go b/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console_test.go index fab2f64db..cb455fcb5 100644 --- a/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console_test.go +++ b/pkg/core/ssl-deployer/providers/ratpanel-console/ratpanel_console_test.go @@ -54,7 +54,7 @@ func TestDeploy(t *testing.T) { deployer, err := provider.NewSSLDeployerProvider(&provider.SSLDeployerProviderConfig{ ServerUrl: fServerUrl, - AccessTokenId: int32(fAccessTokenId), + AccessTokenId: fAccessTokenId, AccessToken: fAccessToken, AllowInsecureConnections: true, }) diff --git a/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site.go b/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site.go index 0adcf20cb..6d1c2daa5 100644 --- a/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site.go +++ b/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site.go @@ -15,7 +15,7 @@ type SSLDeployerProviderConfig struct { // 耗子面板服务地址。 ServerUrl string `json:"serverUrl"` // 耗子面板访问令牌 ID。 - AccessTokenId int32 `json:"accessTokenId"` + AccessTokenId int64 `json:"accessTokenId"` // 耗子面板访问令牌。 AccessToken string `json:"accessToken"` // 是否允许不安全的连接。 @@ -77,7 +77,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke return &core.SSLDeployResult{}, nil } -func createSDKClient(serverUrl string, accessTokenId int32, accessToken string, skipTlsVerify bool) (*rpsdk.Client, error) { +func createSDKClient(serverUrl string, accessTokenId int64, accessToken string, skipTlsVerify bool) (*rpsdk.Client, error) { client, err := rpsdk.NewClient(serverUrl, accessTokenId, accessToken) if err != nil { return nil, err diff --git a/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site_test.go b/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site_test.go index 1cd261d83..e63ff9d75 100644 --- a/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site_test.go +++ b/pkg/core/ssl-deployer/providers/ratpanel-site/ratpanel_site_test.go @@ -58,7 +58,7 @@ func TestDeploy(t *testing.T) { deployer, err := provider.NewSSLDeployerProvider(&provider.SSLDeployerProviderConfig{ ServerUrl: fServerUrl, - AccessTokenId: int32(fAccessTokenId), + AccessTokenId: fAccessTokenId, AccessToken: fAccessToken, AllowInsecureConnections: true, SiteName: fSiteName, diff --git a/pkg/core/ssl-deployer/providers/safeline/safeline.go b/pkg/core/ssl-deployer/providers/safeline/safeline.go index a39e2aec0..7c239c2b6 100644 --- a/pkg/core/ssl-deployer/providers/safeline/safeline.go +++ b/pkg/core/ssl-deployer/providers/safeline/safeline.go @@ -22,7 +22,7 @@ type SSLDeployerProviderConfig struct { ResourceType string `json:"resourceType"` // 证书 ID。 // 部署资源类型为 [RESOURCE_TYPE_CERTIFICATE] 时必填。 - CertificateId int32 `json:"certificateId,omitempty"` + CertificateId int64 `json:"certificateId,omitempty"` } type SSLDeployerProvider struct { diff --git a/pkg/core/ssl-deployer/providers/webhook/webhook.go b/pkg/core/ssl-deployer/providers/webhook/webhook.go index 9de2d8fce..792f81df5 100644 --- a/pkg/core/ssl-deployer/providers/webhook/webhook.go +++ b/pkg/core/ssl-deployer/providers/webhook/webhook.go @@ -30,7 +30,7 @@ type SSLDeployerProviderConfig struct { Headers map[string]string `json:"headers,omitempty"` // 请求超时(单位:秒)。 // 零值时默认值 30。 - Timeout int32 `json:"timeout,omitempty"` + Timeout int `json:"timeout,omitempty"` // 是否允许不安全的连接。 AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"` } diff --git a/pkg/sdk3rd/dnsla/api_create_record.go b/pkg/sdk3rd/dnsla/api_create_record.go index 25d7f0d99..72a5930f6 100644 --- a/pkg/sdk3rd/dnsla/api_create_record.go +++ b/pkg/sdk3rd/dnsla/api_create_record.go @@ -6,13 +6,13 @@ import ( ) type CreateRecordRequest struct { - DomainId string `json:"domainId"` + DomainId *string `json:"domainId"` GroupId *string `json:"groupId,omitempty"` LineId *string `json:"lineId,omitempty"` - Type int32 `json:"type"` - Host string `json:"host"` - Data string `json:"data"` - Ttl int32 `json:"ttl"` + Type *int32 `json:"type"` + Host *string `json:"host"` + Data *string `json:"data"` + Ttl *int32 `json:"ttl"` Weight *int32 `json:"weight,omitempty"` Preference *int32 `json:"preference,omitempty"` } diff --git a/pkg/sdk3rd/dnsla/api_update_record.go b/pkg/sdk3rd/dnsla/api_update_record.go index 2ab147ce6..ab893d638 100644 --- a/pkg/sdk3rd/dnsla/api_update_record.go +++ b/pkg/sdk3rd/dnsla/api_update_record.go @@ -6,7 +6,7 @@ import ( ) type UpdateRecordRequest struct { - Id string `json:"id"` + Id *string `json:"id"` GroupId *string `json:"groupId,omitempty"` LineId *string `json:"lineId,omitempty"` Type *int32 `json:"type,omitempty"` diff --git a/pkg/sdk3rd/rainyun/api_rcdn_instance_ssl_bind.go b/pkg/sdk3rd/rainyun/api_rcdn_instance_ssl_bind.go index 4790be12b..562a25f92 100644 --- a/pkg/sdk3rd/rainyun/api_rcdn_instance_ssl_bind.go +++ b/pkg/sdk3rd/rainyun/api_rcdn_instance_ssl_bind.go @@ -7,7 +7,7 @@ import ( ) type RcdnInstanceSslBindRequest struct { - CertId int32 `json:"cert_id"` + CertId int64 `json:"cert_id"` Domains []string `json:"domains"` } @@ -15,11 +15,11 @@ type RcdnInstanceSslBindResponse struct { apiResponseBase } -func (c *Client) RcdnInstanceSslBind(instanceId int32, req *RcdnInstanceSslBindRequest) (*RcdnInstanceSslBindResponse, error) { +func (c *Client) RcdnInstanceSslBind(instanceId int64, req *RcdnInstanceSslBindRequest) (*RcdnInstanceSslBindResponse, error) { return c.RcdnInstanceSslBindWithContext(context.Background(), instanceId, req) } -func (c *Client) RcdnInstanceSslBindWithContext(ctx context.Context, instanceId int32, req *RcdnInstanceSslBindRequest) (*RcdnInstanceSslBindResponse, error) { +func (c *Client) RcdnInstanceSslBindWithContext(ctx context.Context, instanceId int64, req *RcdnInstanceSslBindRequest) (*RcdnInstanceSslBindResponse, error) { if instanceId == 0 { return nil, fmt.Errorf("sdkerr: unset instanceId") } diff --git a/pkg/sdk3rd/rainyun/api_ssl_center_get.go b/pkg/sdk3rd/rainyun/api_ssl_center_get.go index 6dec58ce0..6e6237ebc 100644 --- a/pkg/sdk3rd/rainyun/api_ssl_center_get.go +++ b/pkg/sdk3rd/rainyun/api_ssl_center_get.go @@ -12,11 +12,11 @@ type SslCenterGetResponse struct { Data *SslDetail `json:"data,omitempty"` } -func (c *Client) SslCenterGet(sslId int32) (*SslCenterGetResponse, error) { +func (c *Client) SslCenterGet(sslId int64) (*SslCenterGetResponse, error) { return c.SslCenterGetWithContext(context.Background(), sslId) } -func (c *Client) SslCenterGetWithContext(ctx context.Context, sslId int32) (*SslCenterGetResponse, error) { +func (c *Client) SslCenterGetWithContext(ctx context.Context, sslId int64) (*SslCenterGetResponse, error) { if sslId == 0 { return nil, fmt.Errorf("sdkerr: unset sslId") } diff --git a/pkg/sdk3rd/rainyun/types.go b/pkg/sdk3rd/rainyun/types.go index 47937f71c..f30195a86 100644 --- a/pkg/sdk3rd/rainyun/types.go +++ b/pkg/sdk3rd/rainyun/types.go @@ -29,8 +29,8 @@ func (r *apiResponseBase) GetMessage() string { var _ apiResponse = (*apiResponseBase)(nil) type SslRecord struct { - ID int32 `json:"ID"` - UID int32 `json:"UID"` + ID int64 `json:"ID"` + UID int64 `json:"UID"` Domain string `json:"Domain"` Issuer string `json:"Issuer"` StartDate int64 `json:"StartDate"` @@ -45,5 +45,5 @@ type SslDetail struct { Issuer string `json:"Issuer"` StartDate int64 `json:"StartDate"` ExpireDate int64 `json:"ExpDate"` - RemainDays int32 `json:"RemainDays"` + RemainDays int64 `json:"RemainDays"` } diff --git a/pkg/sdk3rd/ratpanel/client.go b/pkg/sdk3rd/ratpanel/client.go index 155e2349d..351e76adb 100644 --- a/pkg/sdk3rd/ratpanel/client.go +++ b/pkg/sdk3rd/ratpanel/client.go @@ -21,7 +21,7 @@ type Client struct { client *resty.Client } -func NewClient(serverUrl string, accessTokenId int32, accessToken string) (*Client, error) { +func NewClient(serverUrl string, accessTokenId int64, accessToken string) (*Client, error) { if serverUrl == "" { return nil, fmt.Errorf("sdkerr: unset serverUrl") } diff --git a/pkg/sdk3rd/safeline/api_update_certificate.go b/pkg/sdk3rd/safeline/api_update_certificate.go index 3dcbb5ba4..417a866dc 100644 --- a/pkg/sdk3rd/safeline/api_update_certificate.go +++ b/pkg/sdk3rd/safeline/api_update_certificate.go @@ -6,7 +6,7 @@ import ( ) type UpdateCertificateRequest struct { - Id int32 `json:"id"` + Id int64 `json:"id"` Type int32 `json:"type"` Manual *CertificateManul `json:"manual"` } diff --git a/pkg/utils/maps/get.go b/pkg/utils/maps/get.go index eea75cbba..8f8dc1bc6 100644 --- a/pkg/utils/maps/get.go +++ b/pkg/utils/maps/get.go @@ -41,6 +41,75 @@ func GetOrDefaultString(dict map[string]any, key string, defaultValue string) st return defaultValue } +// 以整数形式从字典中获取指定键的值。 +// +// 入参: +// - dict: 字典。 +// - key: 键。 +// +// 出参: +// - 字典中键对应的值。如果指定键不存在或者值的类型不是整数,则返回 0。 +func GetInt(dict map[string]any, key string) int { + return GetOrDefaultInt(dict, key, 0) +} + +// 以整数形式从字典中获取指定键的值。 +// +// 入参: +// - dict: 字典。 +// - key: 键。 +// - defaultValue: 默认值。 +// +// 出参: +// - 字典中键对应的值。如果指定键不存在、值的类型不是整数或者值为零值,则返回默认值。 +func GetOrDefaultInt(dict map[string]any, key string, defaultValue int) int { + if dict == nil { + return defaultValue + } + + if value, ok := dict[key]; ok { + var result int + + switch v := value.(type) { + case int: + result = v + case int8: + result = int(v) + case int16: + result = int(v) + case int32: + result = int(v) + case int64: + result = int(v) + case uint: + result = int(v) + case uint8: + result = int(v) + case uint16: + result = int(v) + case uint32: + result = int(v) + case uint64: + result = int(v) + case float32: + result = int(v) + case float64: + result = int(v) + case string: + // 兼容字符串类型的值 + if t, err := strconv.ParseInt(v, 10, 64); err == nil { + result = int(t) + } + } + + if result != 0 { + return result + } + } + + return defaultValue +} + // 以 32 位整数形式从字典中获取指定键的值。 // // 入参: