diff --git a/go.mod b/go.mod index 712a99045..45b8da3dc 100644 --- a/go.mod +++ b/go.mod @@ -5,73 +5,74 @@ go 1.24.0 toolchain go1.24.3 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates v1.4.0 github.com/Edgio/edgio-api v0.0.0-workspace - github.com/G-Core/gcorelabscdn-go v1.0.31 + github.com/G-Core/gcorelabscdn-go v1.0.32 github.com/alibabacloud-go/alb-20200616/v2 v2.2.9 github.com/alibabacloud-go/apig-20240327/v3 v3.2.2 github.com/alibabacloud-go/cas-20200407/v3 v3.0.4 github.com/alibabacloud-go/cdn-20180510/v5 v5.2.2 - github.com/alibabacloud-go/cloudapi-20160714/v5 v5.7.4 - github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.7 - github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.0 - github.com/alibabacloud-go/esa-20240910/v2 v2.34.1 - github.com/alibabacloud-go/fc-20230330/v4 v4.3.5 + github.com/alibabacloud-go/cloudapi-20160714/v5 v5.7.6 + github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.9 + github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.1 + github.com/alibabacloud-go/esa-20240910/v2 v2.36.0 + github.com/alibabacloud-go/fc-20230330/v4 v4.3.6 github.com/alibabacloud-go/fc-open-20210406/v2 v2.0.12 github.com/alibabacloud-go/ga-20191120/v3 v3.1.8 github.com/alibabacloud-go/live-20161101 v1.1.1 github.com/alibabacloud-go/nlb-20220430/v2 v2.0.3 github.com/alibabacloud-go/slb-20140515/v4 v4.0.10 - github.com/alibabacloud-go/tea v1.3.9 + github.com/alibabacloud-go/tea v1.3.10 github.com/alibabacloud-go/vod-20170321/v4 v4.8.4 - github.com/alibabacloud-go/waf-openapi-20211001/v5 v5.4.0 + github.com/alibabacloud-go/waf-openapi-20211001/v5 v5.6.0 github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible - github.com/aws/aws-sdk-go-v2/service/acm v1.33.0 - github.com/aws/aws-sdk-go-v2/service/cloudfront v1.46.3 - github.com/aws/aws-sdk-go-v2/service/iam v1.42.2 - github.com/baidubce/bce-sdk-go v0.9.231 + github.com/aws/aws-sdk-go-v2/service/acm v1.33.1 + github.com/aws/aws-sdk-go-v2/service/cloudfront v1.47.0 + github.com/aws/aws-sdk-go-v2/service/iam v1.43.1 + github.com/baidubce/bce-sdk-go v0.9.235 github.com/blinkbean/dingtalk v1.1.3 - github.com/byteplus-sdk/byteplus-sdk-golang v1.0.50 - github.com/go-acme/lego/v4 v4.23.1 + github.com/byteplus-sdk/byteplus-sdk-golang v1.0.53 + github.com/go-acme/lego/v4 v4.25.1 github.com/go-lark/lark v1.16.0 github.com/go-resty/resty/v2 v2.16.5 - github.com/go-viper/mapstructure/v2 v2.3.0 - github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.155 + github.com/go-viper/mapstructure/v2 v2.4.0 + github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.159 github.com/jdcloud-api/jdcloud-sdk-go v1.64.0 - github.com/kong/go-kong v0.66.1 + github.com/kong/go-kong v0.67.0 github.com/libdns/dynv6 v1.0.0 github.com/libdns/libdns v0.2.3 github.com/luthermonson/go-proxmox v0.2.2 github.com/pavlo-v-chernykh/keystore-go/v4 v4.5.0 github.com/pkg/sftp v1.13.9 github.com/pocketbase/dbx v1.11.0 - github.com/pocketbase/pocketbase v0.28.4 - github.com/povsister/scp v0.0.0-20250504051308-e467f71ea63c + github.com/pocketbase/pocketbase v0.29.0 + github.com/povsister/scp v0.0.0-20250701154629-777cf82de5df github.com/qiniu/go-sdk/v7 v7.25.4 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1193 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1188 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1193 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.1163 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.1193 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1172 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1193 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.1191 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.1183 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1182 - github.com/ucloud/ucloud-sdk-go v0.22.44 - github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.17 - github.com/volcengine/volc-sdk-golang v1.0.212 - github.com/volcengine/volcengine-go-sdk v1.1.18 + github.com/samber/lo v1.51.0 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1207 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1212 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1213 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.1200 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.1208 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1209 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1211 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.1212 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.1210 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1213 + github.com/ucloud/ucloud-sdk-go v0.22.45 + github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.18 + github.com/volcengine/volc-sdk-golang v1.0.216 + github.com/volcengine/volcengine-go-sdk v1.1.23 gitlab.ecloud.com/ecloud/ecloudsdkclouddns v1.0.1 gitlab.ecloud.com/ecloud/ecloudsdkcore v1.0.0 - golang.org/x/crypto v0.39.0 - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b - k8s.io/api v0.33.2 - k8s.io/apimachinery v0.33.2 - k8s.io/client-go v0.33.2 - software.sslmate.com/src/go-pkcs12 v0.5.0 + golang.org/x/crypto v0.40.0 + golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 + k8s.io/api v0.33.3 + k8s.io/apimachinery v0.33.3 + k8s.io/client-go v0.33.3 + software.sslmate.com/src/go-pkcs12 v0.6.0 ) require ( @@ -88,28 +89,30 @@ require ( github.com/alibabacloud-go/tea-oss-utils v1.1.0 // indirect github.com/alibabacloud-go/tea-utils/v2 v2.0.7 // indirect github.com/avast/retry-go v3.0.0+incompatible // indirect - github.com/aws/aws-sdk-go-v2/service/route53 v1.50.0 // indirect + github.com/aws/aws-sdk-go-v2/service/route53 v1.53.1 // indirect github.com/buger/goterm v1.0.4 // indirect github.com/diskfs/go-diskfs v1.5.0 // indirect github.com/djherbis/times v1.6.0 // indirect github.com/emicklei/go-restful/v3 v3.12.1 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/go-acme/alidns-20150109/v4 v4.5.10 // indirect + github.com/go-acme/tencentclouddnspod v1.0.1208 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.16.0 // indirect + github.com/go-playground/validator/v10 v10.23.0 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.3 // indirect github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-retryablehttp v0.7.7 // indirect + github.com/hashicorp/go-retryablehttp v0.7.8 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/jinzhu/copier v0.3.4 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -120,9 +123,9 @@ require ( github.com/mailru/easyjson v0.9.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 // indirect - github.com/nrdcg/bunny-go v0.0.0-20240207213615-dde5bf4577a3 // indirect - github.com/nrdcg/desec v0.10.0 // indirect + github.com/namedotcom/go/v4 v4.0.2 // indirect + github.com/nrdcg/bunny-go v0.0.0-20250327222614-988a091fc7ea // indirect + github.com/nrdcg/desec v0.11.0 // indirect github.com/nrdcg/mailinabox v0.2.0 // indirect github.com/nrdcg/porkbun v0.4.0 // indirect github.com/peterhellberg/link v1.2.0 // indirect @@ -136,9 +139,10 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/x448/float16 v0.8.4 // indirect go.mongodb.org/mongo-driver v1.17.2 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ns1/ns1-go.v2 v2.13.0 // indirect + gopkg.in/ns1/ns1-go.v2 v2.14.4 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect @@ -146,7 +150,7 @@ require ( sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + sigs.k8s.io/yaml v1.5.0 // indirect ) require ( @@ -158,25 +162,23 @@ require ( github.com/alibabacloud-go/openapi-util v0.1.1 // indirect github.com/alibabacloud-go/tea-utils v1.4.5 // indirect github.com/alibabacloud-go/tea-xml v1.1.3 // indirect - github.com/aliyun/alibaba-cloud-sdk-go v1.63.100 // indirect github.com/aliyun/credentials-go v1.4.6 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/aws/aws-sdk-go-v2 v1.36.5 - github.com/aws/aws-sdk-go-v2/config v1.29.9 - github.com/aws/aws-sdk-go-v2/credentials v1.17.62 - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect + github.com/aws/aws-sdk-go-v2 v1.36.6 + github.com/aws/aws-sdk-go-v2/config v1.29.18 + github.com/aws/aws-sdk-go-v2/credentials v1.17.71 + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.33 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.25.6 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.4 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.34.1 // indirect github.com/aws/smithy-go v1.22.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect - github.com/cloudflare/cloudflare-go v0.115.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/disintegration/imaging v1.6.2 // indirect github.com/domodwyer/mailyak/v3 v3.6.2 @@ -184,9 +186,8 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gabriel-vasile/mimetype v1.4.9 // indirect github.com/ganigeorgiev/fexpr v0.5.0 // indirect - github.com/go-jose/go-jose/v4 v4.0.5 // indirect + github.com/go-jose/go-jose/v4 v4.1.1 // indirect github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect - github.com/goccy/go-json v0.10.5 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/uuid v1.6.0 github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -195,29 +196,27 @@ require ( github.com/kr/fs v0.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/miekg/dns v1.1.64 // indirect + github.com/miekg/dns v1.1.67 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/ncruces/go-strftime v0.1.9 // indirect github.com/nrdcg/namesilo v0.2.1 // indirect - github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect github.com/pkg/errors v0.9.1 // indirect github.com/spf13/cast v1.9.2 // indirect github.com/spf13/cobra v1.9.1 // indirect - github.com/spf13/pflag v1.0.6 // indirect - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128 // indirect + github.com/spf13/pflag v1.0.7 // indirect github.com/tjfoc/gmsm v1.4.1 // indirect - golang.org/x/image v0.28.0 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/image v0.29.0 // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.42.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.15.0 - golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.26.0 // indirect - golang.org/x/time v0.11.0 - golang.org/x/tools v0.34.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect + golang.org/x/sync v0.16.0 + golang.org/x/sys v0.34.0 // indirect + golang.org/x/term v0.33.0 // indirect + golang.org/x/text v0.27.0 // indirect + golang.org/x/time v0.12.0 + golang.org/x/tools v0.35.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.65.10 // indirect @@ -226,8 +225,8 @@ require ( modernc.org/sqlite v1.38.0 // indirect ) -replace github.com/Edgio/edgio-api v0.0.0-workspace => ./pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace +replace github.com/Edgio/edgio-api v0.0.0-workspace => ./pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace -replace gitlab.ecloud.com/ecloud/ecloudsdkcore v1.0.0 => ./pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0 +replace gitlab.ecloud.com/ecloud/ecloudsdkcore v1.0.0 => ./pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0 -replace gitlab.ecloud.com/ecloud/ecloudsdkclouddns v1.0.1 => ./pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1 +replace gitlab.ecloud.com/ecloud/ecloudsdkclouddns v1.0.1 => ./pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1 diff --git a/go.sum b/go.sum index 149f91516..7a24655e2 100644 --- a/go.sum +++ b/go.sum @@ -34,8 +34,8 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 h1:Wc1ml6QlJs2BHQ/9Bqu1jiyggbsSjramq2oUmp5WeIo= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= @@ -61,14 +61,13 @@ github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mo github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/G-Core/gcorelabscdn-go v1.0.31 h1:0ulvvM3yMDQ+Q5089tLsQxffL7I4pqf2bFCurU+DeHw= -github.com/G-Core/gcorelabscdn-go v1.0.31/go.mod h1:iSGXaTvZBzDHQW+rKFS918BgFVpONcyLEijwh8WsXpE= +github.com/G-Core/gcorelabscdn-go v1.0.32 h1:n/WS9GaBpoFi0cUAaCnJBHOmF5qZJA5GWE4gaz+EQoA= +github.com/G-Core/gcorelabscdn-go v1.0.32/go.mod h1:iSGXaTvZBzDHQW+rKFS918BgFVpONcyLEijwh8WsXpE= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= @@ -101,8 +100,8 @@ github.com/alibabacloud-go/cas-20200407/v3 v3.0.4 h1:ngRlctbt135zoujwX0lXSv9m4h1 github.com/alibabacloud-go/cas-20200407/v3 v3.0.4/go.mod h1:6n9MZ9SH3HlSzfe2oKwjOqhJx3dxvW2gMDO+lq8t9U4= github.com/alibabacloud-go/cdn-20180510/v5 v5.2.2 h1:+KJOPukTM+xMyiLOW5qBwYKG2df3Ar7coRsqc1juKO8= github.com/alibabacloud-go/cdn-20180510/v5 v5.2.2/go.mod h1:GnPiPL3HlzCi8SGiLiVgKrAFkP1vTtcF4yGtjsl4wfo= -github.com/alibabacloud-go/cloudapi-20160714/v5 v5.7.4 h1:SsyAoXM1R4J3I4xQdPW/rRW8cTo2KN440/4h/pGiwRQ= -github.com/alibabacloud-go/cloudapi-20160714/v5 v5.7.4/go.mod h1:eUmD1G4BjEBOAHIeJrHJL7pyLGgXSRTPLjBmYY7uPEg= +github.com/alibabacloud-go/cloudapi-20160714/v5 v5.7.6 h1:0NB4hiiqqF7etZ7WgsaO7fkaj79pEMGEUeb74ZGPRKE= +github.com/alibabacloud-go/cloudapi-20160714/v5 v5.7.6/go.mod h1:5bdtTnhDmV4jXyIinHY15bJrUl8TwMIhrICNQBy+MD8= github.com/alibabacloud-go/darabonba-array v0.1.0 h1:vR8s7b1fWAQIjEjWnuF0JiKsCvclSRTfDzZHTYqfufY= github.com/alibabacloud-go/darabonba-array v0.1.0/go.mod h1:BLKxr0brnggqOJPqT09DFJ8g3fsDshapUD3C3aOEFaI= github.com/alibabacloud-go/darabonba-encode-util v0.0.2 h1:1uJGrbsGEVqWcWxrS9MyC2NG0Ax+GpOM5gtupki31XE= @@ -115,16 +114,17 @@ github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.5/go.mod h1:kUe8JqFmoVU7lfB github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.9/go.mod h1:bb+Io8Sn2RuM3/Rpme6ll86jMyFSrD1bxeV/+v61KeU= github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.10/go.mod h1:26a14FGhZVELuz2cc2AolvW4RHmIO3/HRwsdHhaIPDE= github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.11/go.mod h1:wHxkgZT1ClZdcwEVP/pDgYK/9HucsnCfMipmJgCz4xY= -github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.7 h1:ASXSBga98QrGMxbIThCD6jAti09gedLfvry6yJtsoBE= -github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.7/go.mod h1:TBpgqm3XofZz2LCYjZhektGPU7ArEgascyzbm4SjFo4= +github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.8/go.mod h1:d+z3ScRqc7PFzg4h9oqE3h8yunRZvAvU7u+iuPYEhpU= +github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.9 h1:7P0KWfed/YMtpeuW3E2iwokzoz9L7H9rB+VZzg5DeBs= +github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.9/go.mod h1:kgnXaV74AVjM3ZWJu1GhyXGuCtxljJ677oUfz6MyJOE= github.com/alibabacloud-go/darabonba-signature-util v0.0.7 h1:UzCnKvsjPFzApvODDNEYqBHMFt1w98wC7FOo0InLyxg= github.com/alibabacloud-go/darabonba-signature-util v0.0.7/go.mod h1:oUzCYV2fcCH797xKdL6BDH8ADIHlzrtKVjeRtunBNTQ= github.com/alibabacloud-go/darabonba-string v1.0.2 h1:E714wms5ibdzCqGeYJ9JCFywE5nDyvIXIIQbZVFkkqo= github.com/alibabacloud-go/darabonba-string v1.0.2/go.mod h1:93cTfV3vuPhhEwGGpKKqhVW4jLe7tDpo3LUM0i0g6mA= github.com/alibabacloud-go/dcdn-20180115/v3 v3.5.0 h1:EQmKhYju6y38kJ1ZvZROeJG2Q1Wk6hlc8KQrVhvGyaw= github.com/alibabacloud-go/dcdn-20180115/v3 v3.5.0/go.mod h1:b9qzvr/2V1f0r1Z6xUmkLqEouKcPGy4LCC22yV+6HQo= -github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.0 h1:z9dPOvBRxzpD+FQ2uu/p2Z92I+PY9MUZMauwC+8AC6M= -github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.0/go.mod h1:Cdg3Fu4jFByamRzt3AkeiBssoVPRNDs+EPYMP2fIj78= +github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.1 h1:KD17N7f83BO+bSKfPU7Mg2pSfIiBCbBlHL14Zd3S/a0= +github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.1/go.mod h1:iXO5nADvrdxU7Lek8DjNrWG7yD7EV6X18kewPUKBC2c= github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY= github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc= github.com/alibabacloud-go/debug v1.0.1 h1:MsW9SmUtbb1Fnt3ieC6NNZi6aEwrXfDksD4QA6GSbPg= @@ -132,10 +132,10 @@ github.com/alibabacloud-go/debug v1.0.1/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/ql github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE= github.com/alibabacloud-go/endpoint-util v1.1.1 h1:ZkBv2/jnghxtU0p+upSU0GGzW1VL9GQdZO3mcSUTUy8= github.com/alibabacloud-go/endpoint-util v1.1.1/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE= -github.com/alibabacloud-go/esa-20240910/v2 v2.34.1 h1:G8AWEhIGZ6QhZ6Or/bdhAZP0o9qEXCbxT5dkLqdl6gY= -github.com/alibabacloud-go/esa-20240910/v2 v2.34.1/go.mod h1:HZS5PmYJvcmH4vrJYuCvK3AnYzD9hLlO8CT0hgRyDXo= -github.com/alibabacloud-go/fc-20230330/v4 v4.3.5 h1:nDNjVzGwkQPbQnAuxAmxvS9x8QGLph8j0ptEdZDPGBA= -github.com/alibabacloud-go/fc-20230330/v4 v4.3.5/go.mod h1:vEJimQ6E/e+m2z0/oXdeQWlFw/Pi/Ar6NKcMrSvcILE= +github.com/alibabacloud-go/esa-20240910/v2 v2.36.0 h1:J/02fHBhv/wCC/bks6vnxVc+SXSUEO5T80gDLrkgUq4= +github.com/alibabacloud-go/esa-20240910/v2 v2.36.0/go.mod h1:84Xmuvdt2EI22S6lZPhZtlCYYL3r79wNiPTm3+WS+Uc= +github.com/alibabacloud-go/fc-20230330/v4 v4.3.6 h1:y639Qsi0kPR4owTGqce0e5gBlH5tHvALFVuxeUKsMXY= +github.com/alibabacloud-go/fc-20230330/v4 v4.3.6/go.mod h1:vEJimQ6E/e+m2z0/oXdeQWlFw/Pi/Ar6NKcMrSvcILE= github.com/alibabacloud-go/fc-open-20210406/v2 v2.0.12 h1:A3D8Mp6qf8DfR6Dt5MpS8aDVaWfS4N85T5CvGUvgrjM= github.com/alibabacloud-go/fc-open-20210406/v2 v2.0.12/go.mod h1:F5c0E5UB3k8v6neTtw3FBcJ1YCNFzVoL1JPRHTe33u4= github.com/alibabacloud-go/ga-20191120/v3 v3.1.8 h1:5GF0PXijDhxRQ3gTg9Ee/CVPtglkxuVdz4yIQgYLPgw= @@ -163,9 +163,9 @@ github.com/alibabacloud-go/tea v1.1.19/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy github.com/alibabacloud-go/tea v1.1.20/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A= github.com/alibabacloud-go/tea v1.2.1/go.mod h1:qbzof29bM/IFhLMtJPrgTGK3eauV5J2wSyEUo4OEmnA= github.com/alibabacloud-go/tea v1.2.2/go.mod h1:CF3vOzEMAG+bR4WOql8gc2G9H3EkH3ZLAQdpmpXMgwk= -github.com/alibabacloud-go/tea v1.3.8/go.mod h1:A560v/JTQ1n5zklt2BEpurJzZTI8TUT+Psg2drWlxRg= -github.com/alibabacloud-go/tea v1.3.9 h1:bjgt1bvdY780vz/17iWNNtbXl4A77HWntWMeaUF3So0= github.com/alibabacloud-go/tea v1.3.9/go.mod h1:A560v/JTQ1n5zklt2BEpurJzZTI8TUT+Psg2drWlxRg= +github.com/alibabacloud-go/tea v1.3.10 h1:J0Ke8iMyoxX2daj90hdPr1QgfxJnhR8SOflB910o/Dk= +github.com/alibabacloud-go/tea v1.3.10/go.mod h1:A560v/JTQ1n5zklt2BEpurJzZTI8TUT+Psg2drWlxRg= github.com/alibabacloud-go/tea-fileform v1.1.1 h1:1YG6erAP3joQ0XdCXYIotuD7zyOM6qCR49xkp5FZDeU= github.com/alibabacloud-go/tea-fileform v1.1.1/go.mod h1:ZeCV91o4ISmxidd686f0ebdS5EDHWU+vW+TkjLhrsFE= github.com/alibabacloud-go/tea-oss-sdk v1.1.3/go.mod h1:yUnodpR3Bf2rudLE7V/Gft5txjJF30Pk+hH77K/Eab0= @@ -190,10 +190,8 @@ github.com/alibabacloud-go/tea-xml v1.1.3 h1:7LYnm+JbOq2B+T/B0fHC4Ies4/FofC4zHzY github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8= github.com/alibabacloud-go/vod-20170321/v4 v4.8.4 h1:MYP2xfrcud8vlWljQ4lhemNgAgi9/AUAa450n8TUXZo= github.com/alibabacloud-go/vod-20170321/v4 v4.8.4/go.mod h1:5ocQ6hIc9tpGixD2iy099aOGwIgpzjT2le4Krd4aLn8= -github.com/alibabacloud-go/waf-openapi-20211001/v5 v5.4.0 h1:eEfAqN1Z9PW9SzQ3YOvT5EADzjVwG9Fg4s3xLGSHJxk= -github.com/alibabacloud-go/waf-openapi-20211001/v5 v5.4.0/go.mod h1:9itYSTzipL3NlvhvNYfTjFaapoZzG68nlu/KUdh9SpA= -github.com/aliyun/alibaba-cloud-sdk-go v1.63.100 h1:yUkCbrSM1cWtgBfRVKMQtdt22KhDvKY7g4V+92eG9wA= -github.com/aliyun/alibaba-cloud-sdk-go v1.63.100/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ= +github.com/alibabacloud-go/waf-openapi-20211001/v5 v5.6.0 h1:jqiPGtZJhdnGnni6EKIrUY9yhwOo37qz1IeX0bkfBbk= +github.com/alibabacloud-go/waf-openapi-20211001/v5 v5.6.0/go.mod h1:9itYSTzipL3NlvhvNYfTjFaapoZzG68nlu/KUdh9SpA= github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible h1:8psS8a+wKfiLt1iVDX79F7Y6wUM49Lcha2FMXt4UM8g= github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw= @@ -216,44 +214,44 @@ github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHS github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0= -github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0= -github.com/aws/aws-sdk-go-v2/config v1.29.9 h1:Kg+fAYNaJeGXp1vmjtidss8O2uXIsXwaRqsQJKXVr+0= -github.com/aws/aws-sdk-go-v2/config v1.29.9/go.mod h1:oU3jj2O53kgOU4TXq/yipt6ryiooYjlkqqVaZk7gY/U= -github.com/aws/aws-sdk-go-v2/credentials v1.17.62 h1:fvtQY3zFzYJ9CfixuAQ96IxDrBajbBWGqjNTCa79ocU= -github.com/aws/aws-sdk-go-v2/credentials v1.17.62/go.mod h1:ElETBxIQqcxej++Cs8GyPBbgMys5DgQPTwo7cUPDKt8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8= +github.com/aws/aws-sdk-go-v2 v1.36.6 h1:zJqGjVbRdTPojeCGWn5IR5pbJwSQSBh5RWFTQcEQGdU= +github.com/aws/aws-sdk-go-v2 v1.36.6/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0= +github.com/aws/aws-sdk-go-v2/config v1.29.18 h1:x4T1GRPnqKV8HMJOMtNktbpQMl3bIsfx8KbqmveUO2I= +github.com/aws/aws-sdk-go-v2/config v1.29.18/go.mod h1:bvz8oXugIsH8K7HLhBv06vDqnFv3NsGDt2Znpk7zmOU= +github.com/aws/aws-sdk-go-v2/credentials v1.17.71 h1:r2w4mQWnrTMJjOyIsZtGp3R3XGY3nqHn8C26C2lQWgA= +github.com/aws/aws-sdk-go-v2/credentials v1.17.71/go.mod h1:E7VF3acIup4GB5ckzbKFrCK0vTvEQxOxgdq4U3vcMCY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.33 h1:D9ixiWSG4lyUBL2DDNK924Px9V/NBVpML90MHqyTADY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.33/go.mod h1:caS/m4DI+cij2paz3rtProRBI4s/+TCiWoaWZuQ9010= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 h1:osMWfm/sC/L4tvEdQ65Gri5ZZDCUpuYJZbTTDrsn4I0= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37/go.mod h1:ZV2/1fbjOPr4G4v38G3Ww5TBT4+hmsK45s/rxu1fGy0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 h1:v+X21AvTb2wZ+ycg1gx+orkB/9U6L7AOp93R7qYxsxM= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37/go.mod h1:G0uM1kyssELxmJ2VZEfG0q2npObR3BAkF3c1VsfVnfs= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/acm v1.33.0 h1:Z3MHBWR1KiviwaAiG7MTPB6T5gLYRPhUECuKLgltCwA= -github.com/aws/aws-sdk-go-v2/service/acm v1.33.0/go.mod h1:t3jPqKBnySV3qsU40cj1TWleOYx5vyz1xBeZiplAVcs= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.46.3 h1:ULVZL6Ro+vqmXFVFgZ5Q92pqWnhJfwOnWlNtibQPnIs= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.46.3/go.mod h1:vudWcTOLhQf4lzRH0qHUszJh8Gpo+Lp6dqH/HgVR9Xg= +github.com/aws/aws-sdk-go-v2/service/acm v1.33.1 h1:VAAadBIWgoYoS0tRWkghu1E2LfSsKQw8m/sOkdF1D3E= +github.com/aws/aws-sdk-go-v2/service/acm v1.33.1/go.mod h1:eq3JsAPGHsNfhRbPoVRUVDxtQFynlnFcDXzxFMEeOdQ= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.47.0 h1:RyGeARqe2WTJU1K7L7rFQuCqLscbzQoi1oy7LxnROIE= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.47.0/go.mod h1:0zgTNyuzL2+HfnkP+w8Z+eKtKu7KbOTWuywJYdjkWfY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= -github.com/aws/aws-sdk-go-v2/service/iam v1.42.2 h1:IrauIGCnD90jXDFpAKYzCgrbagk/Yta4L+zxcVLOA58= -github.com/aws/aws-sdk-go-v2/service/iam v1.42.2/go.mod h1:QRtwvoAGc59uxv4vQHPKr75SLzhYCRSoETxAA98r6O4= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY= -github.com/aws/aws-sdk-go-v2/service/route53 v1.50.0 h1:/nkJHXtJXJeelXHqG0898+fWKgvfaXBhGzbCsSmn9j8= -github.com/aws/aws-sdk-go-v2/service/route53 v1.50.0/go.mod h1:kGYOjvTa0Vw0qxrqrOLut1vMnui6qLxqv/SX3vYeM8Y= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.1 h1:8JdC7Gr9NROg1Rusk25IcZeTO59zLxsKgE0gkh5O6h0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.1/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1 h1:KwuLovgQPcdjNMfFt9OhUd9a2OwcOKhxfvF4glTzLuA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.29.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.17 h1:PZV5W8yk4OtH1JAuhV2PXwwO9v5G5Aoj+eMCn4T+1Kc= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.17/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= +github.com/aws/aws-sdk-go-v2/service/iam v1.43.1 h1:xpPZZpbmqIJse9OH+Kf/bW/n+bRe0BtE/LtHvBJYcbc= +github.com/aws/aws-sdk-go-v2/service/iam v1.43.1/go.mod h1:/IEkOg5Gkv2HFxOb3Prs84xpRyxO9P/9Zow/clWl84Q= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18 h1:vvbXsA2TVO80/KT7ZqCbx934dt6PY+vQ8hZpUZ/cpYg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.18/go.mod h1:m2JJHledjBGNMsLOF1g9gbAxprzq3KjC8e4lxtn+eWg= +github.com/aws/aws-sdk-go-v2/service/route53 v1.53.1 h1:R3nSX1hguRy6MnknHiepSvqnnL8ansFwK2hidPesAYU= +github.com/aws/aws-sdk-go-v2/service/route53 v1.53.1/go.mod h1:fmSiB4OAghn85lQgk7XN9l9bpFg5Bm1v3HuaXKytPEw= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.6 h1:rGtWqkQbPk7Bkwuv3NzpE/scwwL9sC1Ul3tn9x83DUI= +github.com/aws/aws-sdk-go-v2/service/sso v1.25.6/go.mod h1:u4ku9OLv4TO4bCPdxf4fA1upaMaJmP9ZijGk3AAOC6Q= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.4 h1:OV/pxyXh+eMA0TExHEC4jyWdumLxNbzz1P0zJoezkJc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.4/go.mod h1:8Mm5VGYwtm+r305FfPSuc+aFkrypeylGYhFim6XEPoc= +github.com/aws/aws-sdk-go-v2/service/sts v1.34.1 h1:aUrLQwJfZtwv3/ZNG2xRtEen+NqI3iesuacjP51Mv1s= +github.com/aws/aws-sdk-go-v2/service/sts v1.34.1/go.mod h1:3wFBZKoWnX3r+Sm7in79i54fBmNfwhdNdQuscCw7QIk= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw= github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= -github.com/baidubce/bce-sdk-go v0.9.231 h1:inKgFMUkVXy05D3jfdKxEuOFiXxlLk/1A2+dWChu2X4= -github.com/baidubce/bce-sdk-go v0.9.231/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg= +github.com/baidubce/bce-sdk-go v0.9.235 h1:iAi+seH9w1Go2szFNzyGumahLGDsuYZ3i8hduX3qiM8= +github.com/baidubce/bce-sdk-go v0.9.235/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -263,8 +261,8 @@ github.com/blinkbean/dingtalk v1.1.3 h1:MbidFZYom7DTFHD/YIs+eaI7kRy52kmWE/sy0xjo github.com/blinkbean/dingtalk v1.1.3/go.mod h1:9BaLuGSBqY3vT5hstValh48DbsKO7vaHaJnG9pXwbto= github.com/buger/goterm v1.0.4 h1:Z9YvGmOih81P0FbVtEYTFF6YsSgxSUKEhf/f9bTMXbY= github.com/buger/goterm v1.0.4/go.mod h1:HiFWV3xnkolgrBV3mY8m0X0Pumt4zg4QhbdOzQtB8tE= -github.com/byteplus-sdk/byteplus-sdk-golang v1.0.50 h1:iwaWNNgRxFwJ/ejnj5LXpfqwwsdgF/ByA3QczXOCKbg= -github.com/byteplus-sdk/byteplus-sdk-golang v1.0.50/go.mod h1:CIL/T2dxgbIA79os+wl0Fq0vCbADTZNIddV6PNYB6DY= +github.com/byteplus-sdk/byteplus-sdk-golang v1.0.53 h1:14YGm5Oh+npNufN3vZjhh3mLINK/nItjelfNK4nAQe0= +github.com/byteplus-sdk/byteplus-sdk-golang v1.0.53/go.mod h1:CIL/T2dxgbIA79os+wl0Fq0vCbADTZNIddV6PNYB6DY= github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -287,8 +285,6 @@ github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.115.0 h1:84/dxeeXweCc0PN5Cto44iTA8AkG1fyT11yPO5ZB7sM= -github.com/cloudflare/cloudflare-go v0.115.0/go.mod h1:Ds6urDwn/TF2uIU24mu7H91xkKP8gSAHxQ44DSZgVmU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= @@ -353,13 +349,17 @@ github.com/gammazero/toposort v0.1.1/go.mod h1:H2cozTnNpMw0hg2VHAYsAxmkHXBYroNan github.com/ganigeorgiev/fexpr v0.5.0 h1:XA9JxtTE/Xm+g/JFI6RfZEHSiQlk+1glLvRK1Lpv/Tk= github.com/ganigeorgiev/fexpr v0.5.0/go.mod h1:RyGiGqmeXhEQ6+mlGdnUleLHgtzzu/VGO2WtJkF5drE= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-acme/lego/v4 v4.23.1 h1:lZ5fGtGESA2L9FB8dNTvrQUq3/X4QOb8ExkKyY7LSV4= -github.com/go-acme/lego/v4 v4.23.1/go.mod h1:7UMVR7oQbIYw6V7mTgGwi4Er7B6Ww0c+c8feiBM0EgI= +github.com/go-acme/alidns-20150109/v4 v4.5.10 h1:epLD0VaHR5XUpiM6mjm4MzQFICrk+zpuqDz2aO1/R/k= +github.com/go-acme/alidns-20150109/v4 v4.5.10/go.mod h1:qGRq8kD0xVgn82qRSQmhHwh/oWxKRjF4Db5OI4ScV5g= +github.com/go-acme/lego/v4 v4.25.1 h1:AYPUM7quPN/g2PcjjWw8sAMz3eV+Z8UWkr1kitDOyVA= +github.com/go-acme/lego/v4 v4.25.1/go.mod h1:OORYyVNZPaNdIdVYCGSBNRNZDIjhQbPuFxwGDgWj/yM= +github.com/go-acme/tencentclouddnspod v1.0.1208 h1:xAVy1lmg2KcKKeYmFSBQUttwc1o1S++9QTjAotGC+BM= +github.com/go-acme/tencentclouddnspod v1.0.1208/go.mod h1:yxG02mkbbVd7lTb97nOn7oj09djhm7hAwxNQw4B9dpQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= +github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= @@ -393,8 +393,8 @@ github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.7.0/go.mod h1:xm76BBt941f7yWdGnI2DVPFFg1UK3YY04qifoXU3lOk= -github.com/go-playground/validator/v10 v10.16.0 h1:x+plE831WK4vaKHO/jpgUGsvLKIqRRkz6M78GuJAfGE= -github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-playground/validator/v10 v10.23.0 h1:/PwmTwZhS0dPkav3cdK9kV1FsAmrL8sThn8IHr/sO+o= +github.com/go-playground/validator/v10 v10.23.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -407,11 +407,9 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= -github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= @@ -419,10 +417,9 @@ github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= +github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -531,8 +528,8 @@ github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iP github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= -github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= +github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48= +github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -547,8 +544,8 @@ github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.155 h1:R8hjwhuy5qzrYbqpj0D/fwGPDZgmlIyBjT3fzZbM38Q= -github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.155/go.mod h1:Y/+YLCFCJtS29i2MbYPTUlNNfwXvkzEsZKR0imY/2aY= +github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.159 h1:6LZysc4iyO4cHB1aJsRklWfSEJr8CEhW7BmcM0SkYcU= +github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.159/go.mod h1:Y/+YLCFCJtS29i2MbYPTUlNNfwXvkzEsZKR0imY/2aY= github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -595,11 +592,10 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/kong/go-kong v0.66.1 h1:UVdemzcCpfXEl6O/VHdf0rT2bXdIO5ykuJbf2z1JTko= -github.com/kong/go-kong v0.66.1/go.mod h1:wRMPAXGOB3kn53TF6zN4l2JhIWPUfXDFKNHkMHBB3iQ= +github.com/kong/go-kong v0.67.0 h1:54zXKc58IZpZdlJCv8p95SJjejTxT+cwbWXw97icCak= +github.com/kong/go-kong v0.67.0/go.mod h1:J0vGB3wsZ2i99zly1zTRe3v7rOKpkhQZRwbcTFP76qM= github.com/kong/semver/v4 v4.0.1 h1:DIcNR8W3gfx0KabFBADPalxxsp+q/5COwIFkkhrFQ2Y= github.com/kong/semver/v4 v4.0.1/go.mod h1:LImQ0oT15pJvSns/hs2laLca2zcYoHu5EsSNY0J6/QA= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -652,8 +648,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ= -github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck= +github.com/miekg/dns v1.1.67 h1:kg0EHj0G4bfT5/oOys6HhZw4vmMlnoZ+gDu8tJ/AlI0= +github.com/miekg/dns v1.1.67/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= @@ -676,8 +672,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 h1:o6uBwrhM5C8Ll3MAAxrQxRHEu7FkapwTuI2WmL1rw4g= -github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= +github.com/namedotcom/go/v4 v4.0.2 h1:4gNkPaPRG/2tqFNUUof7jAVsA6vDutFutEOd7ivnDwA= +github.com/namedotcom/go/v4 v4.0.2/go.mod h1:J6sVueHMb0qbarPgdhrzEVhEaYp+R1SCaTGl2s6/J1Q= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= @@ -688,10 +684,10 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nrdcg/bunny-go v0.0.0-20240207213615-dde5bf4577a3 h1:ouZ2JWDl8IW5k1qugYbmpbmW8hn85Ig6buSMBRlz3KI= -github.com/nrdcg/bunny-go v0.0.0-20240207213615-dde5bf4577a3/go.mod h1:ZwadWt7mVhMHMbAQ1w8IhDqtWO3eWqWq72W7trnaiE8= -github.com/nrdcg/desec v0.10.0 h1:qrEDiqnsvNU9QE7lXIXi/tIHAfyaFXKxF2/8/52O8uM= -github.com/nrdcg/desec v0.10.0/go.mod h1:5+4vyhMRTs49V9CNoODF/HwT8Mwxv9DJ6j+7NekUnBs= +github.com/nrdcg/bunny-go v0.0.0-20250327222614-988a091fc7ea h1:OSgRS4kqOs/WuxuFOObP2gwrenL4/qiKXQbQugr/Two= +github.com/nrdcg/bunny-go v0.0.0-20250327222614-988a091fc7ea/go.mod h1:IDRRngAngb2eTEaWgpO0hukQFI/vJId46fT1KErMytA= +github.com/nrdcg/desec v0.11.0 h1:XZVHy07sg12y8FozMp+l7XvzPsdzog0AYXuQMaHBsfs= +github.com/nrdcg/desec v0.11.0/go.mod h1:5+4vyhMRTs49V9CNoODF/HwT8Mwxv9DJ6j+7NekUnBs= github.com/nrdcg/mailinabox v0.2.0 h1:IKq8mfKiVwNW2hQii/ng1dJ4yYMMv3HAP3fMFIq2CFk= github.com/nrdcg/mailinabox v0.2.0/go.mod h1:0yxqeYOiGyxAu7Sb94eMxHPIOsPYXAjTeA9ZhePhGnc= github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg= @@ -715,8 +711,6 @@ github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A= -github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU= github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -747,12 +741,12 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pocketbase/dbx v1.11.0 h1:LpZezioMfT3K4tLrqA55wWFw1EtH1pM4tzSVa7kgszU= github.com/pocketbase/dbx v1.11.0/go.mod h1:xXRCIAKTHMgUCyCKZm55pUOdvFziJjQfXaWKhu2vhMs= -github.com/pocketbase/pocketbase v0.28.4 h1:RmhWXDcfKrFM9/W0G0Zrlv4eKBM8/s/v4SQKytjgD20= -github.com/pocketbase/pocketbase v0.28.4/go.mod h1:jSuN93vE/oeJVOz2D2ZxcYyr2bYNmDOMCUkM+JhyJQ0= +github.com/pocketbase/pocketbase v0.29.0 h1:oL6qvkU2QSybClVtQdaq9Z1F3Wk59iKYCfIaf1R8KUs= +github.com/pocketbase/pocketbase v0.29.0/go.mod h1:SqyH7o/3e+/uLySATlJqxH4S8gyU6R0adG56ZSV1vuU= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/povsister/scp v0.0.0-20250504051308-e467f71ea63c h1:1+j5JHz9mUzYSp0scuF6hzvJP28EDBFe5eBJb0xnGk4= -github.com/povsister/scp v0.0.0-20250504051308-e467f71ea63c/go.mod h1:CiJNEeV6v0tUCNul/+gTjl+FgjfImoiuptJB9AEzqjE= +github.com/povsister/scp v0.0.0-20250701154629-777cf82de5df h1:zEgSHrxo8f6hGG1xCaqunfBq8hlfDmFd1JM0QXiQi7o= +github.com/povsister/scp v0.0.0-20250701154629-777cf82de5df/go.mod h1:CiJNEeV6v0tUCNul/+gTjl+FgjfImoiuptJB9AEzqjE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= @@ -794,8 +788,8 @@ github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWN github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samber/lo v1.50.0 h1:XrG0xOeHs+4FQ8gJR97zDz5uOFMW7OwFWiFVzqopKgY= -github.com/samber/lo v1.50.0/go.mod h1:RjZyNk6WSnUFRKK6EyOhsRJMqft3G+pg7dCWHQCWvsc= +github.com/samber/lo v1.51.0 h1:kysRYLbHy/MB7kQZf5DSN50JHmMsNEdeY24VzJFu7wI= +github.com/samber/lo v1.51.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -815,8 +809,9 @@ github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE= github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -839,35 +834,33 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1193 h1:zOWZKDVA3kvA5/b+AwKzDtz5ewdiibeKxVqtCFJSTNI= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1193/go.mod h1:ufxDBGyS3X/9QKkZzuOFKLNra9FmSfgAHBO/FlFZaTU= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1188 h1:zzaIE12soTfyAgRvBYhb5bYxFXRCelvYXDEfvtkT5Y4= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1188/go.mod h1:qIWFhWbmMuUaWCCKVSkdJ1BzKEOqkMeo+uKYS6jJimQ= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1163/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1172/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1182/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1183/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1188/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1191/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1193 h1:anxhOjL4WrQDqUcX7eT8VEaQITiKWllKwsH1fEt6lBw= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1193/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128 h1:mrJ5Fbkd7sZIJ5F6oRfh5zebPQaudPH9Y0+GUmFytYU= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1128/go.mod h1:zbsYIBT+VTX4z4ocjTAdLBIWyNYj3z0BRqd0iPdnjsk= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.1163 h1:putqrH5n1SVRqFWHOylVqYI5yLQUjRTkHqZPLT2yeVY= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.1163/go.mod h1:aEWRXlAvovPUUoS3kVB/LVWEQ19WqzTj2lXGvR1YArY= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.1193 h1:VtXqRnzGz3KheXu2msNPvA/fUYQGsVVRC30WgyAUEqg= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.1193/go.mod h1:42I1OwaedHR6Yvg7J6UYoOjNYUYfFqwaeEkvx3x+NZc= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1172 h1:6SUO0hTie3zxnUEMxmhnS1iRIXpAukSZV27Nrx4NwIk= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1172/go.mod h1:tmN4zfu70SD0iee3qfpc09NRLel30zGoAuzIs4X0Kfs= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1193 h1:tmACSthp5JLjrdxzng6XFs4gfQcZHBTTVlXR0tO6hSk= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1193/go.mod h1:LWf5UPUl41EQICrq0jswgQEO/BtRQY+CxAI6X+i709o= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.1191 h1:4l1Db+yFh9HgqNynYbG93khxLtXSBwnXZgNmc88jOE0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.1191/go.mod h1:y8if4wInFJoO6PU0/741VEYREHPtfxljhJ5HFD2ZkEA= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.1183 h1:3fvxkF/R1WaO937Wrx5ZCYoIof1X9sqSDXL218uRfJY= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.1183/go.mod h1:d47RTYqj/2xjIk/lmq8bQ9deUwfEQcWhPQxUgqZnz24= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1182 h1:2DaykFM5mXvQBvuhQEU/aOG5amissS31XI1wZh+FeMA= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1182/go.mod h1:pTAgdVcS28xFIARJXhg10hx2+g/Q9FqVkAkal3ARNfc= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1207 h1:FO4Q4UNwLP6achx7Y8EblzeVDG4BW66aGG4Hk7y5r9U= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1207/go.mod h1:YQW7rko8ub/X7RJWS/Yqb8fG30Wk4EEmnZI7GTnKBp4= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1212 h1:PrOVwyGIVITOP51HzfBqiD3PDrWJ3ZrijsiYyEj8Wn4= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1212/go.mod h1:EDYceO3jwZ8FU7LWjXpZGeCO4Ti3iqeg2j2NZTMBHQs= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1200/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1207/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1208/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1209/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1210/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1211/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1212/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1213 h1:ChLfbQsFFiBoolNyZ4Umvrg90QrdsnYH0KiKZwOhLkE= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1213/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.1200 h1:SqfiAwdDQx1SG2XKMBBxwUTZSBlVNFCVt/hynkl6JHM= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.1200/go.mod h1:zwjcd7dfjsmAPD7yEHHY36tnDM5ts5rUgThXGvsZ+OE= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.1208 h1:GLCCKdL1yWCSAF7hinVnOmOGgMfKXDrWkOuvhAhIg8I= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.1208/go.mod h1:0TssSKHt8SCgjMTaxr1Fjfrp+OUTqp+tkglNoXIkCyM= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1209 h1:2cYGQZktchIE3jjn1qglPwSCGg2kaQBW8k5xbUIEWIw= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.1209/go.mod h1:u14H5ciHEeHMPQL1e6HwHf5gAHc4h65c5gDMaF4dF38= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1211 h1:SXEmqWgiSln9UDElTFz2XwZAwxLS2F92fOeWygMFA9I= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.1211/go.mod h1:k0C4B9RPQcL++fMFS32d8nAl6ApXs8+Nfusk1HugCis= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.1212 h1:LUeCZrOPScN5HVRvT+Vz+MJ0aOHE0kqhkCy/UXdzRJc= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.1212/go.mod h1:mWIN9z1o7n3T59FAu0bpPq2iKG4VcmHHWTe74Cz6wN0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.1210 h1:DbRK20aFfzpnFEUbzuBaeMmIMrpQs5LCZIZlPTmvJ68= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.1210/go.mod h1:8Gy21lo1a5wUAzrzhmgXF/4zhulI5sbW3HwGt5i5qzc= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1213 h1:/2TWW5pHhxHcft+aj9tLS3o+s8ZfrYaXC+eZo1eMyko= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1213/go.mod h1:xzGeque72VBwuOin47PdjPh5axADALnYc9WR5g/plBU= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -878,22 +871,18 @@ github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= -github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= -github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ucloud/ucloud-sdk-go v0.22.44 h1:AuWtd6xw2abQ8MAAI6ebWIYsTpoUfE6v2WMY8s5inPY= -github.com/ucloud/ucloud-sdk-go v0.22.44/go.mod h1:dyLmFHmUfgb4RZKYQP9IArlvQ2pxzFthfhwxRzOEPIw= +github.com/ucloud/ucloud-sdk-go v0.22.45 h1:OLqf286gsVg4KdMKp9SdyflgDiKDEQcyJsfFUDWppwU= +github.com/ucloud/ucloud-sdk-go v0.22.45/go.mod h1:dyLmFHmUfgb4RZKYQP9IArlvQ2pxzFthfhwxRzOEPIw= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.17 h1:j3czHCTIG/xwjzQ71bwM57+Wg7R1XTe757o6PeCh+B4= -github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.17/go.mod h1:IrjK84IJJTuOZOTMv/P18Ydjy/x+ow7fF7q11jAxXLM= +github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.18 h1:uint/YlMWuQ5et0ab+AOHq+re+yi8pOvjS77gker8ms= +github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.18/go.mod h1:IrjK84IJJTuOZOTMv/P18Ydjy/x+ow7fF7q11jAxXLM= github.com/volcengine/volc-sdk-golang v1.0.23/go.mod h1:AfG/PZRUkHJ9inETvbjNifTDgut25Wbkm2QoYBTbvyU= -github.com/volcengine/volc-sdk-golang v1.0.212 h1:evyoDoYTPqc1j23cnTnbHO7Vu813O2VERWQ/FVm8z+k= -github.com/volcengine/volc-sdk-golang v1.0.212/go.mod h1:stZX+EPgv1vF4nZwOlEe8iGcriUPRBKX8zA19gXycOQ= -github.com/volcengine/volcengine-go-sdk v1.1.18 h1:tVcp1m6R8fgwZFb/MaltrpZY7b2+vYNbmO1MHlDSXIs= -github.com/volcengine/volcengine-go-sdk v1.1.18/go.mod h1:EyKoi6t6eZxoPNGr2GdFCZti2Skd7MO3eUzx7TtSvNo= +github.com/volcengine/volc-sdk-golang v1.0.216 h1:+wAq8RvxpGECveRJaAXZFpzrZoQ33WjMuRyd9iY2Oc0= +github.com/volcengine/volc-sdk-golang v1.0.216/go.mod h1:zHJlaqiMbIB+0mcrsZPTwOb3FB7S/0MCfqlnO8R7hlM= +github.com/volcengine/volcengine-go-sdk v1.1.23 h1:wa4ytrLa1UBc/+/R4hEJDtBYD+TpHxLLh5+G+J1x1Rg= +github.com/volcengine/volcengine-go-sdk v1.1.23/go.mod h1:EyKoi6t6eZxoPNGr2GdFCZti2Skd7MO3eUzx7TtSvNo= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= @@ -924,13 +913,16 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -961,8 +953,8 @@ golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOM golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -976,14 +968,14 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.28.0 h1:gdem5JW1OLS4FbkWgLO+7ZeFzYtL3xClb97GaUzYMFE= -golang.org/x/image v0.28.0/go.mod h1:GUJYXtnGKEUgggyzh+Vxt+AviiCcyiwpsl8iQ8MvwGY= +golang.org/x/image v0.29.0 h1:HcdsyR4Gsuys/Axh0rDEmlBmB68rW1U9BUdB3UVHsas= +golang.org/x/image v0.29.0/go.mod h1:RVJROnf3SLK8d26OW91j4FrIHGbsJ8QnbEocVTOWQDA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1009,8 +1001,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1066,8 +1058,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1093,8 +1085,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1173,8 +1165,8 @@ golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1190,8 +1182,8 @@ golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= +golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1210,15 +1202,15 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1273,8 +1265,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1369,8 +1361,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1389,8 +1381,8 @@ gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/ns1/ns1-go.v2 v2.13.0 h1:I5NNqI9Bi1SGK92TVkOvLTwux5LNrix/99H2datVh48= -gopkg.in/ns1/ns1-go.v2 v2.13.0/go.mod h1:pfaU0vECVP7DIOr453z03HXS6dFJpXdNRwOyRzwmPSc= +gopkg.in/ns1/ns1-go.v2 v2.14.4 h1:77eP71rZ24I+9k1gITgjJXRyJzzmflA9oPUkYPB/wyc= +gopkg.in/ns1/ns1-go.v2 v2.14.4/go.mod h1:pfaU0vECVP7DIOr453z03HXS6dFJpXdNRwOyRzwmPSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1404,7 +1396,6 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1414,12 +1405,12 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.33.2 h1:YgwIS5jKfA+BZg//OQhkJNIfie/kmRsO0BmNaVSimvY= -k8s.io/api v0.33.2/go.mod h1:fhrbphQJSM2cXzCWgqU29xLDuks4mu7ti9vveEnpSXs= -k8s.io/apimachinery v0.33.2 h1:IHFVhqg59mb8PJWTLi8m1mAoepkUNYmptHsV+Z1m5jY= -k8s.io/apimachinery v0.33.2/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= -k8s.io/client-go v0.33.2 h1:z8CIcc0P581x/J1ZYf4CNzRKxRvQAwoAolYPbtQes+E= -k8s.io/client-go v0.33.2/go.mod h1:9mCgT4wROvL948w6f6ArJNb7yQd7QsvqavDeZHvNmHo= +k8s.io/api v0.33.3 h1:SRd5t//hhkI1buzxb288fy2xvjubstenEKL9K51KBI8= +k8s.io/api v0.33.3/go.mod h1:01Y/iLUjNBM3TAvypct7DIj0M0NIZc+PzAHCIo0CYGE= +k8s.io/apimachinery v0.33.3 h1:4ZSrmNa0c/ZpZJhAgRdcsFcZOw1PQU1bALVQ0B3I5LA= +k8s.io/apimachinery v0.33.3/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= +k8s.io/client-go v0.33.3 h1:M5AfDnKfYmVJif92ngN532gFqakcGi6RvaOF16efrpA= +k8s.io/client-go v0.33.3/go.mod h1:luqKBQggEf3shbxHY4uVENAxrDISLOarxpTKMiUuujg= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4= @@ -1463,7 +1454,8 @@ sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxO sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -software.sslmate.com/src/go-pkcs12 v0.5.0 h1:EC6R394xgENTpZ4RltKydeDUjtlM5drOYIG9c6TVj2M= -software.sslmate.com/src/go-pkcs12 v0.5.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +software.sslmate.com/src/go-pkcs12 v0.6.0 h1:f3sQittAeF+pao32Vb+mkli+ZyT+VwKaD014qFGq6oU= +software.sslmate.com/src/go-pkcs12 v0.6.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= diff --git a/internal/app/app.go b/internal/app/app.go index 62de2c9a3..04f42d189 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -23,6 +23,23 @@ func GetApp() core.App { pb.RootCmd.Flags().MarkHidden("encryptionEnv") pb.RootCmd.Flags().MarkHidden("queryTimeout") + pb.OnBootstrap().BindFunc(func(e *core.BootstrapEvent) error { + err := e.Next() + if err != nil { + return err + } + + settings := pb.Settings() + settings.Batch.Enabled = true + settings.Batch.MaxRequests = 1000 + settings.Batch.Timeout = 30 + if err := pb.Save(settings); err != nil { + return err + } + + return nil + }) + instance = pb }) diff --git a/internal/applicant/applicant.go b/internal/applicant/applicant.go index c6d5608d6..fed38fc9b 100644 --- a/internal/applicant/applicant.go +++ b/internal/applicant/applicant.go @@ -16,13 +16,13 @@ import ( "github.com/go-acme/lego/v4/challenge" "github.com/go-acme/lego/v4/challenge/dns01" "github.com/go-acme/lego/v4/lego" + "github.com/samber/lo" "golang.org/x/exp/slices" "golang.org/x/time/rate" "github.com/certimate-go/certimate/internal/domain" "github.com/certimate-go/certimate/internal/repository" xmaps "github.com/certimate-go/certimate/pkg/utils/maps" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type ApplyResult struct { @@ -55,7 +55,7 @@ func NewWithWorkflowNode(config ApplicantWithWorkflowNodeConfig) (Applicant, err nodeCfg := config.Node.GetConfigForApply() options := &applicantProviderOptions{ - Domains: xslices.Filter(strings.Split(nodeCfg.Domains, ";"), func(s string) bool { return s != "" }), + Domains: lo.Filter(strings.Split(nodeCfg.Domains, ";"), func(s string, _ int) bool { return s != "" }), ContactEmail: nodeCfg.ContactEmail, Provider: domain.ACMEDns01ProviderType(nodeCfg.Provider), ProviderAccessConfig: make(map[string]any), @@ -65,7 +65,7 @@ func NewWithWorkflowNode(config ApplicantWithWorkflowNodeConfig) (Applicant, err CAProviderServiceConfig: nodeCfg.CAProviderConfig, KeyAlgorithm: nodeCfg.KeyAlgorithm, ACMEProfile: nodeCfg.ACMEProfile, - Nameservers: xslices.Filter(strings.Split(nodeCfg.Nameservers, ";"), func(s string) bool { return s != "" }), + Nameservers: lo.Filter(strings.Split(nodeCfg.Nameservers, ";"), func(s string, _ int) bool { return s != "" }), DnsPropagationWait: nodeCfg.DnsPropagationWait, DnsPropagationTimeout: nodeCfg.DnsPropagationTimeout, DnsTTL: nodeCfg.DnsTTL, diff --git a/internal/certificate/service.go b/internal/certificate/service.go index 5cea386da..4df15799c 100644 --- a/internal/certificate/service.go +++ b/internal/certificate/service.go @@ -6,7 +6,6 @@ import ( "context" "encoding/json" "fmt" - "strconv" "strings" "time" @@ -16,16 +15,9 @@ import ( "github.com/certimate-go/certimate/internal/app" "github.com/certimate-go/certimate/internal/domain" "github.com/certimate-go/certimate/internal/domain/dtos" - "github.com/certimate-go/certimate/internal/notify" - "github.com/certimate-go/certimate/internal/repository" xcert "github.com/certimate-go/certimate/pkg/utils/cert" ) -const ( - defaultExpireSubject = "有 ${COUNT} 张证书即将过期" - defaultExpireMessage = "有 ${COUNT} 张证书即将过期,域名分别为 ${DOMAINS},请保持关注!" -) - type certificateRepository interface { ListExpireSoon(ctx context.Context) ([]*domain.Certificate, error) GetById(ctx context.Context, id string) (*domain.Certificate, error) @@ -49,24 +41,6 @@ func NewCertificateService(certificateRepo certificateRepository, settingsRepo s } func (s *CertificateService) InitSchedule(ctx context.Context) error { - // 每日发送过期证书提醒 - app.GetScheduler().MustAdd("certificateExpireSoonNotify", "0 0 * * *", func() { - certificates, err := s.certificateRepo.ListExpireSoon(context.Background()) - if err != nil { - app.GetLogger().Error("failed to get certificates which expire soon", "err", err) - return - } - - notification := buildExpireSoonNotification(certificates) - if notification == nil { - return - } - - if err := notify.SendToAllChannels(notification.Subject, notification.Message); err != nil { - app.GetLogger().Error("failed to send notification", "err", err) - } - }) - // 每日清理过期证书 app.GetScheduler().MustAdd("certificateExpiredCleanup", "0 0 * * *", func() { settings, err := s.settingsRepo.GetByName(ctx, "persistence") @@ -75,12 +49,12 @@ func (s *CertificateService) InitSchedule(ctx context.Context) error { return } - var settingsContent *domain.PersistenceSettingsContent + var settingsContent *domain.SettingsContentAsPersistence json.Unmarshal([]byte(settings.Content), &settingsContent) if settingsContent != nil && settingsContent.ExpiredCertificatesMaxDaysRetention != 0 { ret, err := s.certificateRepo.DeleteWhere( context.Background(), - dbx.NewExp(fmt.Sprintf("expireAt 0 { - subject = templates.NotifyTemplates[0].Subject - message = templates.NotifyTemplates[0].Message - } - } - - // 替换变量 - count := len(certificates) - domains := make([]string, count) - for i, record := range certificates { - domains[i] = record.SubjectAltNames - } - countStr := strconv.Itoa(count) - domainStr := strings.Join(domains, ";") - subject = strings.ReplaceAll(subject, "${COUNT}", countStr) - subject = strings.ReplaceAll(subject, "${DOMAINS}", domainStr) - message = strings.ReplaceAll(message, "${COUNT}", countStr) - message = strings.ReplaceAll(message, "${DOMAINS}", domainStr) - - // 返回消息 - return &struct { - Subject string - Message string - }{Subject: subject, Message: message} -} diff --git a/internal/deployer/providers.go b/internal/deployer/providers.go index 61ae87859..103240f4d 100644 --- a/internal/deployer/providers.go +++ b/internal/deployer/providers.go @@ -5,6 +5,8 @@ import ( "net/http" "strings" + "github.com/samber/lo" + "github.com/certimate-go/certimate/internal/domain" "github.com/certimate-go/certimate/pkg/core" p1PanelConsole "github.com/certimate-go/certimate/pkg/core/ssl-deployer/providers/1panel-console" @@ -107,7 +109,6 @@ import ( pWebhook "github.com/certimate-go/certimate/pkg/core/ssl-deployer/providers/webhook" xhttp "github.com/certimate-go/certimate/pkg/utils/http" xmaps "github.com/certimate-go/certimate/pkg/utils/maps" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type deployerProviderOptions struct { @@ -206,8 +207,8 @@ func createSSLDeployerProvider(options *deployerProviderOptions) (core.SSLDeploy AccessKeySecret: access.AccessKeySecret, ResourceGroupId: access.ResourceGroupId, Region: xmaps.GetString(options.ProviderServiceConfig, "region"), - ResourceIds: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }), - ContactIds: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "contactIds"), ";"), func(s string) bool { return s != "" }), + ResourceIds: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceIds"), ";"), func(s string, _ int) bool { return s != "" }), + ContactIds: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "contactIds"), ";"), func(s string, _ int) bool { return s != "" }), }) return deployer, err @@ -522,7 +523,7 @@ func createSSLDeployerProvider(options *deployerProviderOptions) (core.SSLDeploy AllowInsecureConnections: access.AllowInsecureConnections, SiteType: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "siteType", "other"), SiteName: xmaps.GetString(options.ProviderServiceConfig, "siteName"), - SiteNames: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "siteNames"), ";"), func(s string) bool { return s != "" }), + SiteNames: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "siteNames"), ";"), func(s string, _ int) bool { return s != "" }), }) return deployer, err @@ -1211,7 +1212,7 @@ func createSSLDeployerProvider(options *deployerProviderOptions) (core.SSLDeploy SecretKey: access.SecretKey, Endpoint: xmaps.GetString(options.ProviderServiceConfig, "endpoint"), ZoneId: xmaps.GetString(options.ProviderServiceConfig, "zoneId"), - Domains: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "domains"), ";"), func(s string) bool { return s != "" }), + Domains: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "domains"), ";"), func(s string, _ int) bool { return s != "" }), }) return deployer, err @@ -1251,7 +1252,7 @@ func createSSLDeployerProvider(options *deployerProviderOptions) (core.SSLDeploy Endpoint: xmaps.GetString(options.ProviderServiceConfig, "endpoint"), Region: xmaps.GetString(options.ProviderServiceConfig, "region"), ResourceType: xmaps.GetString(options.ProviderServiceConfig, "resourceType"), - ResourceIds: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceIds"), ";"), func(s string) bool { return s != "" }), + ResourceIds: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceIds"), ";"), func(s string, _ int) bool { return s != "" }), }) return deployer, err @@ -1262,8 +1263,8 @@ func createSSLDeployerProvider(options *deployerProviderOptions) (core.SSLDeploy Endpoint: xmaps.GetString(options.ProviderServiceConfig, "endpoint"), CertificateId: xmaps.GetString(options.ProviderServiceConfig, "certificateId"), IsReplaced: xmaps.GetBool(options.ProviderServiceConfig, "isReplaced"), - ResourceTypes: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceTypes"), ";"), func(s string) bool { return s != "" }), - ResourceRegions: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceRegions"), ";"), func(s string) bool { return s != "" }), + ResourceTypes: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceTypes"), ";"), func(s string, _ int) bool { return s != "" }), + ResourceRegions: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "resourceRegions"), ";"), func(s string, _ int) bool { return s != "" }), }) return deployer, err @@ -1464,7 +1465,7 @@ func createSSLDeployerProvider(options *deployerProviderOptions) (core.SSLDeploy deployer, err := pWangsuCDN.NewSSLDeployerProvider(&pWangsuCDN.SSLDeployerProviderConfig{ AccessKeyId: access.AccessKeyId, AccessKeySecret: access.AccessKeySecret, - Domains: xslices.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "domains"), ";"), func(s string) bool { return s != "" }), + Domains: lo.Filter(strings.Split(xmaps.GetString(options.ProviderServiceConfig, "domains"), ";"), func(s string, _ int) bool { return s != "" }), }) return deployer, err @@ -1522,7 +1523,7 @@ func createSSLDeployerProvider(options *deployerProviderOptions) (core.SSLDeploy deployer, err := pWebhook.NewSSLDeployerProvider(&pWebhook.SSLDeployerProviderConfig{ WebhookUrl: access.Url, - WebhookData: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "webhookData", access.DefaultDataForDeployment), + WebhookData: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "webhookData", access.DataStringForDeployment), Method: access.Method, Headers: mergedHeaders, AllowInsecureConnections: access.AllowInsecureConnections, diff --git a/internal/domain/access.go b/internal/domain/access.go index dd63ada1f..c40307850 100644 --- a/internal/domain/access.go +++ b/internal/domain/access.go @@ -139,8 +139,8 @@ type AccessConfigForDingTalkBot struct { } type AccessConfigForDiscordBot struct { - BotToken string `json:"botToken"` - DefaultChannelId string `json:"defaultChannelId,omitempty"` + BotToken string `json:"botToken"` + ChannelId string `json:"channelId,omitempty"` } type AccessConfigForDNSLA struct { @@ -167,14 +167,14 @@ type AccessConfigForEdgio struct { } type AccessConfigForEmail struct { - SmtpHost string `json:"smtpHost"` - SmtpPort int32 `json:"smtpPort"` - SmtpTls bool `json:"smtpTls"` - Username string `json:"username"` - Password string `json:"password"` - DefaultSenderAddress string `json:"defaultSenderAddress,omitempty"` - DefaultSenderName string `json:"defaultSenderName,omitempty"` - DefaultReceiverAddress string `json:"defaultReceiverAddress,omitempty"` + SmtpHost string `json:"smtpHost"` + SmtpPort int32 `json:"smtpPort"` + SmtpTls bool `json:"smtpTls"` + Username string `json:"username"` + Password string `json:"password"` + SenderAddress string `json:"senderAddress"` + SenderName string `json:"senderName"` + ReceiverAddress string `json:"receiverAddress,omitempty"` } type AccessConfigForFlexCDN struct { @@ -251,10 +251,10 @@ type AccessConfigForLeCDN struct { } type AccessConfigForMattermost struct { - ServerUrl string `json:"serverUrl"` - Username string `json:"username"` - Password string `json:"password"` - DefaultChannelId string `json:"defaultChannelId,omitempty"` + ServerUrl string `json:"serverUrl"` + Username string `json:"username"` + Password string `json:"password"` + ChannelId string `json:"channelId,omitempty"` } type AccessConfigForNamecheap struct { @@ -326,8 +326,8 @@ type AccessConfigForSafeLine struct { } type AccessConfigForSlackBot struct { - BotToken string `json:"botToken"` - DefaultChannelId string `json:"defaultChannelId,omitempty"` + BotToken string `json:"botToken"` + ChannelId string `json:"channelId,omitempty"` } type AccessConfigForSpaceship struct { @@ -360,8 +360,8 @@ type AccessConfigForSSLCom struct { } type AccessConfigForTelegramBot struct { - BotToken string `json:"botToken"` - DefaultChatId int64 `json:"defaultChatId,omitempty"` + BotToken string `json:"botToken"` + ChatId int64 `json:"chatId,omitempty"` } type AccessConfigForTencentCloud struct { @@ -402,12 +402,12 @@ type AccessConfigForWangsu struct { } type AccessConfigForWebhook struct { - Url string `json:"url"` - Method string `json:"method,omitempty"` - HeadersString string `json:"headers,omitempty"` - AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"` - DefaultDataForDeployment string `json:"defaultDataForDeployment,omitempty"` - DefaultDataForNotification string `json:"defaultDataForNotification,omitempty"` + Url string `json:"url"` + Method string `json:"method,omitempty"` + HeadersString string `json:"headers,omitempty"` + DataStringForDeployment string `json:"dataForDeployment,omitempty"` + DataStringForNotification string `json:"dataForNotification,omitempty"` + AllowInsecureConnections bool `json:"allowInsecureConnections,omitempty"` } type AccessConfigForWeComBot struct { diff --git a/internal/domain/certificate.go b/internal/domain/certificate.go index 6ade5c5ff..ffa4b24a8 100644 --- a/internal/domain/certificate.go +++ b/internal/domain/certificate.go @@ -23,16 +23,16 @@ type Certificate struct { IssuerOrg string `json:"issuerOrg" db:"issuerOrg"` IssuerCertificate string `json:"issuerCertificate" db:"issuerCertificate"` KeyAlgorithm CertificateKeyAlgorithmType `json:"keyAlgorithm" db:"keyAlgorithm"` - EffectAt time.Time `json:"effectAt" db:"effectAt"` - ExpireAt time.Time `json:"expireAt" db:"expireAt"` + ValidityNotBefore time.Time `json:"validityNotBefore" db:"validityNotBefore"` + ValidityNotAfter time.Time `json:"validityNotAfter" db:"validityNotAfter"` ACMEAccountUrl string `json:"acmeAccountUrl" db:"acmeAccountUrl"` ACMECertUrl string `json:"acmeCertUrl" db:"acmeCertUrl"` ACMECertStableUrl string `json:"acmeCertStableUrl" db:"acmeCertStableUrl"` ACMERenewed bool `json:"acmeRenewed" db:"acmeRenewed"` - WorkflowId string `json:"workflowId" db:"workflowId"` + WorkflowId string `json:"workflowId" db:"workflowRef"` + WorkflowRunId string `json:"workflowRunId" db:"workflowRunRef"` + WorkflowOutputId string `json:"workflowOutputId" db:"workflowOutputRef"` WorkflowNodeId string `json:"workflowNodeId" db:"workflowNodeId"` - WorkflowRunId string `json:"workflowRunId" db:"workflowRunId"` - WorkflowOutputId string `json:"workflowOutputId" db:"workflowOutputId"` DeletedAt *time.Time `json:"deleted" db:"deleted"` } @@ -40,8 +40,8 @@ func (c *Certificate) PopulateFromX509(certX509 *x509.Certificate) *Certificate c.SubjectAltNames = strings.Join(certX509.DNSNames, ";") c.SerialNumber = strings.ToUpper(certX509.SerialNumber.Text(16)) c.IssuerOrg = strings.Join(certX509.Issuer.Organization, ";") - c.EffectAt = certX509.NotBefore - c.ExpireAt = certX509.NotAfter + c.ValidityNotBefore = certX509.NotBefore + c.ValidityNotAfter = certX509.NotAfter switch certX509.PublicKeyAlgorithm { case x509.RSA: @@ -120,8 +120,8 @@ func (c *Certificate) PopulateFromPEM(certPEM, privkeyPEM string) *Certificate { type CertificateSourceType string const ( - CertificateSourceTypeWorkflow = CertificateSourceType("workflow") - CertificateSourceTypeUpload = CertificateSourceType("upload") + CertificateSourceTypeRequest = CertificateSourceType("request") + CertificateSourceTypeUpload = CertificateSourceType("upload") ) type CertificateKeyAlgorithmType string diff --git a/internal/domain/dtos/notify.go b/internal/domain/dtos/notify.go index 395aebf1a..1a2d11a00 100644 --- a/internal/domain/dtos/notify.go +++ b/internal/domain/dtos/notify.go @@ -1,7 +1,5 @@ package dtos -import "github.com/certimate-go/certimate/internal/domain" - type NotifyTestPushReq struct { - Channel domain.NotifyChannelType `json:"channel"` + Provider string `json:"provider"` } diff --git a/internal/domain/notify.go b/internal/domain/notify.go deleted file mode 100644 index 1a244e9b1..000000000 --- a/internal/domain/notify.go +++ /dev/null @@ -1,25 +0,0 @@ -package domain - -type NotifyChannelType string - -/* -消息通知渠道常量值。 - - 注意:如果追加新的常量值,请保持以 ASCII 排序。 - NOTICE: If you add new constant, please keep ASCII order. -*/ -// Deprecated: v0.4.x 将废弃 -const ( - NotifyChannelTypeBark = NotifyChannelType("bark") - NotifyChannelTypeDingTalk = NotifyChannelType("dingtalk") - NotifyChannelTypeEmail = NotifyChannelType("email") - NotifyChannelTypeGotify = NotifyChannelType("gotify") - NotifyChannelTypeLark = NotifyChannelType("lark") - NotifyChannelTypeMattermost = NotifyChannelType("mattermost") - NotifyChannelTypePushover = NotifyChannelType("pushover") - NotifyChannelTypePushPlus = NotifyChannelType("pushplus") - NotifyChannelTypeServerChan = NotifyChannelType("serverchan") - NotifyChannelTypeTelegram = NotifyChannelType("telegram") - NotifyChannelTypeWebhook = NotifyChannelType("webhook") - NotifyChannelTypeWeCom = NotifyChannelType("wecom") -) diff --git a/internal/domain/settings.go b/internal/domain/settings.go index 7063ed83e..6ef2f4db6 100644 --- a/internal/domain/settings.go +++ b/internal/domain/settings.go @@ -1,10 +1,5 @@ package domain -import ( - "encoding/json" - "fmt" -) - const CollectionNameSettings = "settings" type Settings struct { @@ -13,33 +8,7 @@ type Settings struct { Content string `json:"content" db:"content"` } -// Deprecated: v0.4.x 将废弃 -type NotifyTemplatesSettingsContent struct { - NotifyTemplates []struct { - Subject string `json:"subject"` - Message string `json:"message"` - } `json:"notifyTemplates"` -} - -// Deprecated: v0.4.x 将废弃 -type NotifyChannelsSettingsContent map[string]map[string]any - -// Deprecated: v0.4.x 将废弃 -func (s *Settings) GetNotifyChannelConfig(channel string) (map[string]any, error) { - conf := &NotifyChannelsSettingsContent{} - if err := json.Unmarshal([]byte(s.Content), conf); err != nil { - return nil, err - } - - v, ok := (*conf)[channel] - if !ok { - return nil, fmt.Errorf("channel \"%s\" not found", channel) - } - - return v, nil -} - -type PersistenceSettingsContent struct { +type SettingsContentAsPersistence struct { WorkflowRunsMaxDaysRetention int `json:"workflowRunsMaxDaysRetention"` ExpiredCertificatesMaxDaysRetention int `json:"expiredCertificatesMaxDaysRetention"` } diff --git a/internal/domain/workflow.go b/internal/domain/workflow.go index 16895229a..20048af27 100644 --- a/internal/domain/workflow.go +++ b/internal/domain/workflow.go @@ -20,7 +20,7 @@ type Workflow struct { Content *WorkflowNode `json:"content" db:"content"` Draft *WorkflowNode `json:"draft" db:"draft"` HasDraft bool `json:"hasDraft" db:"hasDraft"` - LastRunId string `json:"lastRunId" db:"lastRunId"` + LastRunId string `json:"lastRunId" db:"lastRunRef"` LastRunStatus WorkflowRunStatusType `json:"lastRunStatus" db:"lastRunStatus"` LastRunTime time.Time `json:"lastRunTime" db:"lastRunTime"` } @@ -45,8 +45,8 @@ const ( type WorkflowTriggerType string const ( - WorkflowTriggerTypeAuto = WorkflowTriggerType("auto") - WorkflowTriggerTypeManual = WorkflowTriggerType("manual") + WorkflowTriggerTypeScheduled = WorkflowTriggerType("scheduled") + WorkflowTriggerTypeManual = WorkflowTriggerType("manual") ) type WorkflowNode struct { @@ -55,8 +55,8 @@ type WorkflowNode struct { Name string `json:"name"` Config map[string]any `json:"config"` - Inputs []WorkflowNodeIO `json:"inputs"` - Outputs []WorkflowNodeIO `json:"outputs"` + Inputs []WorkflowNodeIO `json:"inputs,omitempty"` + Outputs []WorkflowNodeIO `json:"outputs,omitempty"` Next *WorkflowNode `json:"next,omitempty"` Branches []WorkflowNode `json:"branches,omitempty"` @@ -107,7 +107,6 @@ type WorkflowNodeConfigForDeploy struct { } type WorkflowNodeConfigForNotify struct { - Channel string `json:"channel,omitempty"` // Deprecated: v0.4.x 将废弃 Provider string `json:"provider"` // 通知提供商 ProviderAccessId string `json:"providerAccessId"` // 通知提供商授权记录 ID ProviderConfig map[string]any `json:"providerConfig,omitempty"` // 通知提供商额外配置 @@ -173,7 +172,6 @@ func (n *WorkflowNode) GetConfigForDeploy() WorkflowNodeConfigForDeploy { func (n *WorkflowNode) GetConfigForNotify() WorkflowNodeConfigForNotify { return WorkflowNodeConfigForNotify{ - Channel: xmaps.GetString(n.Config, "channel"), Provider: xmaps.GetString(n.Config, "provider"), ProviderAccessId: xmaps.GetString(n.Config, "providerAccessId"), ProviderConfig: xmaps.GetKVMapAny(n.Config, "providerConfig"), diff --git a/internal/domain/workflow_log.go b/internal/domain/workflow_log.go index 05eef5a7c..20757c636 100644 --- a/internal/domain/workflow_log.go +++ b/internal/domain/workflow_log.go @@ -1,17 +1,20 @@ package domain -import "strings" +import ( + "log/slog" + "strings" +) const CollectionNameWorkflowLog = "workflow_logs" type WorkflowLog struct { Meta - WorkflowId string `json:"workflowId" db:"workflowId"` - RunId string `json:"workflorunIdwId" db:"runId"` + WorkflowId string `json:"workflowId" db:"workflowRef"` + RunId string `json:"runId" db:"runRef"` NodeId string `json:"nodeId" db:"nodeId"` NodeName string `json:"nodeName" db:"nodeName"` Timestamp int64 `json:"timestamp" db:"timestamp"` // 毫秒级时间戳 - Level string `json:"level" db:"level"` + Level int32 `json:"level" db:"level"` Message string `json:"message" db:"message"` Data map[string]any `json:"data" db:"data"` } @@ -21,7 +24,7 @@ type WorkflowLogs []WorkflowLog func (r WorkflowLogs) ErrorString() string { var builder strings.Builder for _, log := range r { - if log.Level == "ERROR" { + if log.Level >= int32(slog.LevelError) { builder.WriteString(log.Message) builder.WriteString("\n") } diff --git a/internal/domain/workflow_output.go b/internal/domain/workflow_output.go index 57af169b2..1ad97a3d9 100644 --- a/internal/domain/workflow_output.go +++ b/internal/domain/workflow_output.go @@ -4,8 +4,8 @@ const CollectionNameWorkflowOutput = "workflow_output" type WorkflowOutput struct { Meta - WorkflowId string `json:"workflowId" db:"workflow"` - RunId string `json:"runId" db:"runId"` + WorkflowId string `json:"workflowId" db:"workflowRef"` + RunId string `json:"runId" db:"runRef"` NodeId string `json:"nodeId" db:"nodeId"` Node *WorkflowNode `json:"node" db:"node"` Outputs []WorkflowNodeIO `json:"outputs" db:"outputs"` diff --git a/internal/domain/workflow_run.go b/internal/domain/workflow_run.go index 407afc73a..f409aa107 100644 --- a/internal/domain/workflow_run.go +++ b/internal/domain/workflow_run.go @@ -8,7 +8,7 @@ const CollectionNameWorkflowRun = "workflow_run" type WorkflowRun struct { Meta - WorkflowId string `json:"workflowId" db:"workflowId"` + WorkflowId string `json:"workflowId" db:"workflowRef"` Status WorkflowRunStatusType `json:"status" db:"status"` Trigger WorkflowTriggerType `json:"trigger" db:"trigger"` StartedAt time.Time `json:"startedAt" db:"startedAt"` diff --git a/internal/notify/notify.go b/internal/notify/notify.go deleted file mode 100644 index c4af9e196..000000000 --- a/internal/notify/notify.go +++ /dev/null @@ -1,81 +0,0 @@ -package notify - -import ( - "context" - "encoding/json" - "fmt" - - "golang.org/x/sync/errgroup" - - "github.com/certimate-go/certimate/internal/domain" - "github.com/certimate-go/certimate/internal/repository" - "github.com/certimate-go/certimate/pkg/core" - xmaps "github.com/certimate-go/certimate/pkg/utils/maps" -) - -// Deprecated: v0.4.x 将废弃 -func SendToAllChannels(subject, message string) error { - notifiers, err := getEnabledNotifiers() - if err != nil { - return err - } - if len(notifiers) == 0 { - return nil - } - - var eg errgroup.Group - for _, n := range notifiers { - if n == nil { - continue - } - - eg.Go(func() error { - _, err := n.Notify(context.Background(), subject, message) - return err - }) - } - - err = eg.Wait() - return err -} - -// Deprecated: v0.4.x 将废弃 -func SendToChannel(subject, message string, channel string, channelConfig map[string]any) error { - notifier, err := createNotifierProviderUseGlobalSettings(domain.NotifyChannelType(channel), channelConfig) - if err != nil { - return err - } - - _, err = notifier.Notify(context.Background(), subject, message) - return err -} - -// Deprecated: v0.4.x 将废弃 -func getEnabledNotifiers() ([]core.Notifier, error) { - settingsRepo := repository.NewSettingsRepository() - settings, err := settingsRepo.GetByName(context.Background(), "notifyChannels") - if err != nil { - return nil, fmt.Errorf("find notifyChannels error: %w", err) - } - - rs := make(map[string]map[string]any) - if err := json.Unmarshal([]byte(settings.Content), &rs); err != nil { - return nil, fmt.Errorf("unmarshal notifyChannels error: %w", err) - } - - notifiers := make([]core.Notifier, 0) - for k, v := range rs { - if !xmaps.GetBool(v, "enabled") { - continue - } - - notifier, err := createNotifierProviderUseGlobalSettings(domain.NotifyChannelType(k), v) - if err != nil { - continue - } - - notifiers = append(notifiers, notifier) - } - - return notifiers, nil -} diff --git a/internal/notify/providers.go b/internal/notify/providers.go index 872f5d26a..2b54e45e0 100644 --- a/internal/notify/providers.go +++ b/internal/notify/providers.go @@ -53,7 +53,7 @@ func createNotifierProvider(options *notifierProviderOptions) (core.Notifier, er return pDiscordBot.NewNotifierProvider(&pDiscordBot.NotifierProviderConfig{ BotToken: access.BotToken, - ChannelId: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "channelId", access.DefaultChannelId), + ChannelId: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "channelId", access.ChannelId), }) } @@ -70,9 +70,9 @@ func createNotifierProvider(options *notifierProviderOptions) (core.Notifier, er SmtpTls: access.SmtpTls, Username: access.Username, Password: access.Password, - SenderAddress: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "senderAddress", access.DefaultSenderAddress), - SenderName: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "senderName", access.DefaultSenderName), - ReceiverAddress: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "receiverAddress", access.DefaultReceiverAddress), + SenderAddress: access.SenderAddress, + SenderName: access.SenderName, + ReceiverAddress: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "receiverAddress", access.ReceiverAddress), }) } @@ -99,7 +99,7 @@ func createNotifierProvider(options *notifierProviderOptions) (core.Notifier, er ServerUrl: access.ServerUrl, Username: access.Username, Password: access.Password, - ChannelId: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "channelId", access.DefaultChannelId), + ChannelId: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "channelId", access.ChannelId), }) } @@ -112,7 +112,7 @@ func createNotifierProvider(options *notifierProviderOptions) (core.Notifier, er return pSlackBot.NewNotifierProvider(&pSlackBot.NotifierProviderConfig{ BotToken: access.BotToken, - ChannelId: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "channelId", access.DefaultChannelId), + ChannelId: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "channelId", access.ChannelId), }) } @@ -125,7 +125,7 @@ func createNotifierProvider(options *notifierProviderOptions) (core.Notifier, er return pTelegramBot.NewNotifierProvider(&pTelegramBot.NotifierProviderConfig{ BotToken: access.BotToken, - ChatId: xmaps.GetOrDefaultInt64(options.ProviderServiceConfig, "chatId", access.DefaultChatId), + ChatId: xmaps.GetOrDefaultInt64(options.ProviderServiceConfig, "chatId", access.ChatId), }) } @@ -158,7 +158,7 @@ func createNotifierProvider(options *notifierProviderOptions) (core.Notifier, er return pWebhook.NewNotifierProvider(&pWebhook.NotifierProviderConfig{ WebhookUrl: access.Url, - WebhookData: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "webhookData", access.DefaultDataForNotification), + WebhookData: xmaps.GetOrDefaultString(options.ProviderServiceConfig, "webhookData", access.DataStringForNotification), Method: access.Method, Headers: mergedHeaders, AllowInsecureConnections: access.AllowInsecureConnections, diff --git a/internal/notify/providers_deprecated.go b/internal/notify/providers_deprecated.go deleted file mode 100644 index 00855dc81..000000000 --- a/internal/notify/providers_deprecated.go +++ /dev/null @@ -1,108 +0,0 @@ -package notify - -import ( - "fmt" - - "github.com/certimate-go/certimate/internal/domain" - "github.com/certimate-go/certimate/pkg/core" - pBark "github.com/certimate-go/certimate/pkg/core/notifier/providers/bark" - pDingTalk "github.com/certimate-go/certimate/pkg/core/notifier/providers/dingtalkbot" - pEmail "github.com/certimate-go/certimate/pkg/core/notifier/providers/email" - pGotify "github.com/certimate-go/certimate/pkg/core/notifier/providers/gotify" - pLark "github.com/certimate-go/certimate/pkg/core/notifier/providers/larkbot" - pMattermost "github.com/certimate-go/certimate/pkg/core/notifier/providers/mattermost" - pPushover "github.com/certimate-go/certimate/pkg/core/notifier/providers/pushover" - pPushPlus "github.com/certimate-go/certimate/pkg/core/notifier/providers/pushplus" - pServerChan "github.com/certimate-go/certimate/pkg/core/notifier/providers/serverchan" - pTelegram "github.com/certimate-go/certimate/pkg/core/notifier/providers/telegrambot" - pWebhook "github.com/certimate-go/certimate/pkg/core/notifier/providers/webhook" - pWeCom "github.com/certimate-go/certimate/pkg/core/notifier/providers/wecombot" - xmaps "github.com/certimate-go/certimate/pkg/utils/maps" -) - -// Deprecated: v0.4.x 将废弃 -func createNotifierProviderUseGlobalSettings(channel domain.NotifyChannelType, channelConfig map[string]any) (core.Notifier, error) { - /* - 注意:如果追加新的常量值,请保持以 ASCII 排序。 - NOTICE: If you add new constant, please keep ASCII order. - */ - switch channel { - case domain.NotifyChannelTypeBark: - return pBark.NewNotifierProvider(&pBark.NotifierProviderConfig{ - DeviceKey: xmaps.GetString(channelConfig, "deviceKey"), - ServerUrl: xmaps.GetString(channelConfig, "serverUrl"), - }) - - case domain.NotifyChannelTypeDingTalk: - return pDingTalk.NewNotifierProvider(&pDingTalk.NotifierProviderConfig{ - WebhookUrl: "https://oapi.dingtalk.com/robot/send?access_token=" + xmaps.GetString(channelConfig, "accessToken"), - Secret: xmaps.GetString(channelConfig, "secret"), - }) - - case domain.NotifyChannelTypeEmail: - return pEmail.NewNotifierProvider(&pEmail.NotifierProviderConfig{ - SmtpHost: xmaps.GetString(channelConfig, "smtpHost"), - SmtpPort: xmaps.GetInt32(channelConfig, "smtpPort"), - SmtpTls: xmaps.GetOrDefaultBool(channelConfig, "smtpTLS", true), - Username: xmaps.GetOrDefaultString(channelConfig, "username", xmaps.GetString(channelConfig, "senderAddress")), - Password: xmaps.GetString(channelConfig, "password"), - SenderAddress: xmaps.GetString(channelConfig, "senderAddress"), - ReceiverAddress: xmaps.GetString(channelConfig, "receiverAddress"), - }) - - case domain.NotifyChannelTypeGotify: - return pGotify.NewNotifierProvider(&pGotify.NotifierProviderConfig{ - ServerUrl: xmaps.GetString(channelConfig, "url"), - Token: xmaps.GetString(channelConfig, "token"), - Priority: xmaps.GetOrDefaultInt64(channelConfig, "priority", 1), - }) - - case domain.NotifyChannelTypeLark: - return pLark.NewNotifierProvider(&pLark.NotifierProviderConfig{ - WebhookUrl: xmaps.GetString(channelConfig, "webhookUrl"), - }) - - case domain.NotifyChannelTypeMattermost: - return pMattermost.NewNotifierProvider(&pMattermost.NotifierProviderConfig{ - ServerUrl: xmaps.GetString(channelConfig, "serverUrl"), - ChannelId: xmaps.GetString(channelConfig, "channelId"), - Username: xmaps.GetString(channelConfig, "username"), - Password: xmaps.GetString(channelConfig, "password"), - }) - - case domain.NotifyChannelTypePushover: - return pPushover.NewNotifierProvider(&pPushover.NotifierProviderConfig{ - Token: xmaps.GetString(channelConfig, "token"), - User: xmaps.GetString(channelConfig, "user"), - }) - - case domain.NotifyChannelTypePushPlus: - return pPushPlus.NewNotifierProvider(&pPushPlus.NotifierProviderConfig{ - Token: xmaps.GetString(channelConfig, "token"), - }) - - case domain.NotifyChannelTypeServerChan: - return pServerChan.NewNotifierProvider(&pServerChan.NotifierProviderConfig{ - ServerUrl: xmaps.GetString(channelConfig, "url"), - }) - - case domain.NotifyChannelTypeTelegram: - return pTelegram.NewNotifierProvider(&pTelegram.NotifierProviderConfig{ - BotToken: xmaps.GetString(channelConfig, "apiToken"), - ChatId: xmaps.GetInt64(channelConfig, "chatId"), - }) - - case domain.NotifyChannelTypeWebhook: - return pWebhook.NewNotifierProvider(&pWebhook.NotifierProviderConfig{ - WebhookUrl: xmaps.GetString(channelConfig, "url"), - AllowInsecureConnections: xmaps.GetBool(channelConfig, "allowInsecureConnections"), - }) - - case domain.NotifyChannelTypeWeCom: - return pWeCom.NewNotifierProvider(&pWeCom.NotifierProviderConfig{ - WebhookUrl: xmaps.GetString(channelConfig, "webhookUrl"), - }) - } - - return nil, fmt.Errorf("unsupported notifier channel '%s'", channelConfig) -} diff --git a/internal/notify/service.go b/internal/notify/service.go index 26d5b856c..b689d9db0 100644 --- a/internal/notify/service.go +++ b/internal/notify/service.go @@ -4,44 +4,21 @@ import ( "context" "fmt" - "github.com/certimate-go/certimate/internal/domain" "github.com/certimate-go/certimate/internal/domain/dtos" ) -// Deprecated: v0.4.x 将废弃 const ( - notifyTestTitle = "测试通知" - notifyTestBody = "欢迎使用 Certimate ,这是一条测试通知。" + notifyTestTitle = "[Certimate] Notification Test" + notifyTestBody = "Welcome to use Certimate!" ) -// Deprecated: v0.4.x 将废弃 -type settingsRepository interface { - GetByName(ctx context.Context, name string) (*domain.Settings, error) +type NotifyService struct{} + +func NewNotifyService() *NotifyService { + return &NotifyService{} } -// Deprecated: v0.4.x 将废弃 -type NotifyService struct { - settingsRepo settingsRepository -} - -// Deprecated: v0.4.x 将废弃 -func NewNotifyService(settingsRepo settingsRepository) *NotifyService { - return &NotifyService{ - settingsRepo: settingsRepo, - } -} - -// Deprecated: v0.4.x 将废弃 -func (n *NotifyService) Test(ctx context.Context, req *dtos.NotifyTestPushReq) error { - settings, err := n.settingsRepo.GetByName(ctx, "notifyChannels") - if err != nil { - return fmt.Errorf("failed to get notify channels settings: %w", err) - } - - channelConfig, err := settings.GetNotifyChannelConfig(string(req.Channel)) - if err != nil { - return fmt.Errorf("failed to get notify channel \"%s\" config: %w", req.Channel, err) - } - - return SendToChannel(notifyTestTitle, notifyTestBody, string(req.Channel), channelConfig) +func (n *NotifyService) TestPush(ctx context.Context, req *dtos.NotifyTestPushReq) error { + // TODO: 测试通知 + return fmt.Errorf("not implemented") } diff --git a/internal/repository/certificate.go b/internal/repository/certificate.go index 11426dbee..5c8abd33b 100644 --- a/internal/repository/certificate.go +++ b/internal/repository/certificate.go @@ -21,8 +21,8 @@ func NewCertificateRepository() *CertificateRepository { func (r *CertificateRepository) ListExpireSoon(ctx context.Context) ([]*domain.Certificate, error) { records, err := app.GetApp().FindAllRecords( domain.CollectionNameCertificate, - dbx.NewExp("expireAt>DATETIME('now')"), - dbx.NewExp("expireAtDATETIME('now')"), + dbx.NewExp("validityNotAfter DATETIME('now') and expireAt < DATETIME('now', '+20 days') AND deleted = ''"). + NewQuery("SELECT COUNT(*) AS total FROM certificate WHERE validityNotAfter > DATETIME('now') and validityNotAfter < DATETIME('now', '+20 days') AND deleted = ''"). One(&certExpireSoonTotal); err != nil { return nil, err } @@ -43,7 +43,7 @@ func (r *StatisticsRepository) Get(ctx context.Context) (*domain.Statistics, err Total int `db:"total"` }{} if err := app.GetDB(). - NewQuery("SELECT COUNT(*) AS total FROM certificate WHERE expireAt < DATETIME('now') AND deleted = ''"). + NewQuery("SELECT COUNT(*) AS total FROM certificate WHERE validityNotAfter < DATETIME('now') AND deleted = ''"). One(&certExpiredTotal); err != nil { return nil, err } diff --git a/internal/repository/workflow.go b/internal/repository/workflow.go index 3367644be..a5c32a8b5 100644 --- a/internal/repository/workflow.go +++ b/internal/repository/workflow.go @@ -18,13 +18,13 @@ func NewWorkflowRepository() *WorkflowRepository { return &WorkflowRepository{} } -func (r *WorkflowRepository) ListEnabledAuto(ctx context.Context) ([]*domain.Workflow, error) { +func (r *WorkflowRepository) ListEnabledScheduled(ctx context.Context) ([]*domain.Workflow, error) { records, err := app.GetApp().FindRecordsByFilter( domain.CollectionNameWorkflow, "enabled={:enabled} && trigger={:trigger}", "-created", 0, 0, - dbx.Params{"enabled": true, "trigger": string(domain.WorkflowTriggerTypeAuto)}, + dbx.Params{"enabled": true, "trigger": string(domain.WorkflowTriggerTypeScheduled)}, ) if err != nil { return nil, err @@ -82,7 +82,7 @@ func (r *WorkflowRepository) Save(ctx context.Context, workflow *domain.Workflow record.Set("content", workflow.Content) record.Set("draft", workflow.Draft) record.Set("hasDraft", workflow.HasDraft) - record.Set("lastRunId", workflow.LastRunId) + record.Set("lastRunRef", workflow.LastRunId) record.Set("lastRunStatus", string(workflow.LastRunStatus)) record.Set("lastRunTime", workflow.LastRunTime) if err := app.GetApp().Save(record); err != nil { @@ -124,7 +124,7 @@ func (r *WorkflowRepository) castRecordToModel(record *core.Record) (*domain.Wor Content: content, Draft: draft, HasDraft: record.GetBool("hasDraft"), - LastRunId: record.GetString("lastRunId"), + LastRunId: record.GetString("lastRunRef"), LastRunStatus: domain.WorkflowRunStatusType(record.GetString("lastRunStatus")), LastRunTime: record.GetDateTime("lastRunTime").Time(), } diff --git a/internal/repository/workflow_log.go b/internal/repository/workflow_log.go index 11bad3275..948326a67 100644 --- a/internal/repository/workflow_log.go +++ b/internal/repository/workflow_log.go @@ -21,7 +21,7 @@ func NewWorkflowLogRepository() *WorkflowLogRepository { func (r *WorkflowLogRepository) ListByWorkflowRunId(ctx context.Context, workflowRunId string) ([]*domain.WorkflowLog, error) { records, err := app.GetApp().FindRecordsByFilter( domain.CollectionNameWorkflowLog, - "runId={:runId}", + "runRef={:runId}", "timestamp", 0, 0, dbx.Params{"runId": workflowRunId}, @@ -62,8 +62,8 @@ func (r *WorkflowLogRepository) Save(ctx context.Context, workflowLog *domain.Wo } } - record.Set("workflowId", workflowLog.WorkflowId) - record.Set("runId", workflowLog.RunId) + record.Set("workflowRef", workflowLog.WorkflowId) + record.Set("runRef", workflowLog.RunId) record.Set("nodeId", workflowLog.NodeId) record.Set("nodeName", workflowLog.NodeName) record.Set("timestamp", workflowLog.Timestamp) @@ -99,12 +99,12 @@ func (r *WorkflowLogRepository) castRecordToModel(record *core.Record) (*domain. CreatedAt: record.GetDateTime("created").Time(), UpdatedAt: record.GetDateTime("updated").Time(), }, - WorkflowId: record.GetString("workflowId"), - RunId: record.GetString("runId"), + WorkflowId: record.GetString("workflowRef"), + RunId: record.GetString("runRef"), NodeId: record.GetString("nodeId"), NodeName: record.GetString("nodeName"), Timestamp: int64(record.GetInt("timestamp")), - Level: record.GetString("level"), + Level: int32(record.GetInt("level")), Message: record.GetString("message"), Data: logdata, } diff --git a/internal/repository/workflow_output.go b/internal/repository/workflow_output.go index 5b8b72fb9..88ff9ea73 100644 --- a/internal/repository/workflow_output.go +++ b/internal/repository/workflow_output.go @@ -123,8 +123,8 @@ func (r *WorkflowOutputRepository) castRecordToModel(record *core.Record) (*doma CreatedAt: record.GetDateTime("created").Time(), UpdatedAt: record.GetDateTime("updated").Time(), }, - WorkflowId: record.GetString("workflowId"), - RunId: record.GetString("runId"), + WorkflowId: record.GetString("workflowRef"), + RunId: record.GetString("runRef"), NodeId: record.GetString("nodeId"), Node: node, Outputs: outputs, @@ -148,8 +148,8 @@ func (r *WorkflowOutputRepository) saveRecord(workflowOutput *domain.WorkflowOut return record, err } } - record.Set("workflowId", workflowOutput.WorkflowId) - record.Set("runId", workflowOutput.RunId) + record.Set("workflowRef", workflowOutput.WorkflowId) + record.Set("runRef", workflowOutput.RunId) record.Set("nodeId", workflowOutput.NodeId) record.Set("node", workflowOutput.Node) record.Set("outputs", workflowOutput.Outputs) diff --git a/internal/repository/workflow_run.go b/internal/repository/workflow_run.go index 01051be95..d128e9bcd 100644 --- a/internal/repository/workflow_run.go +++ b/internal/repository/workflow_run.go @@ -50,7 +50,7 @@ func (r *WorkflowRunRepository) Save(ctx context.Context, workflowRun *domain.Wo } err = app.GetApp().RunInTransaction(func(txApp core.App) error { - record.Set("workflowId", workflowRun.WorkflowId) + record.Set("workflowRef", workflowRun.WorkflowId) record.Set("trigger", string(workflowRun.Trigger)) record.Set("status", string(workflowRun.Status)) record.Set("startedAt", workflowRun.StartedAt) @@ -70,7 +70,7 @@ func (r *WorkflowRunRepository) Save(ctx context.Context, workflowRun *domain.Wo workflowRecord, err := txApp.FindRecordById(domain.CollectionNameWorkflow, workflowRun.WorkflowId) if err != nil { return err - } else if workflowRun.Id == workflowRecord.GetString("lastRunId") { + } else if workflowRun.Id == workflowRecord.GetString("lastRunRef") { workflowRecord.IgnoreUnchangedFields(true) workflowRecord.Set("lastRunStatus", record.GetString("status")) err = txApp.Save(workflowRecord) @@ -79,7 +79,7 @@ func (r *WorkflowRunRepository) Save(ctx context.Context, workflowRun *domain.Wo } } else if workflowRecord.GetDateTime("lastRunTime").Time().IsZero() || workflowRun.StartedAt.After(workflowRecord.GetDateTime("lastRunTime").Time()) { workflowRecord.IgnoreUnchangedFields(true) - workflowRecord.Set("lastRunId", record.Id) + workflowRecord.Set("lastRunRef", record.Id) workflowRecord.Set("lastRunStatus", record.GetString("status")) workflowRecord.Set("lastRunTime", record.GetString("startedAt")) err = txApp.Save(workflowRecord) @@ -136,7 +136,7 @@ func (r *WorkflowRunRepository) castRecordToModel(record *core.Record) (*domain. CreatedAt: record.GetDateTime("created").Time(), UpdatedAt: record.GetDateTime("updated").Time(), }, - WorkflowId: record.GetString("workflowId"), + WorkflowId: record.GetString("workflowRef"), Status: domain.WorkflowRunStatusType(record.GetString("status")), Trigger: domain.WorkflowTriggerType(record.GetString("trigger")), StartedAt: record.GetDateTime("startedAt").Time(), diff --git a/internal/rest/handlers/certificate.go b/internal/rest/handlers/certificate.go index 192ea9fee..fa75f59a3 100644 --- a/internal/rest/handlers/certificate.go +++ b/internal/rest/handlers/certificate.go @@ -11,7 +11,7 @@ import ( ) type certificateService interface { - ArchiveFile(ctx context.Context, req *dtos.CertificateArchiveFileReq) (*dtos.CertificateArchiveFileResp, error) + DownloadArchivedFile(ctx context.Context, req *dtos.CertificateArchiveFileReq) (*dtos.CertificateArchiveFileResp, error) ValidateCertificate(ctx context.Context, req *dtos.CertificateValidateCertificateReq) (*dtos.CertificateValidateCertificateResp, error) ValidatePrivateKey(ctx context.Context, req *dtos.CertificateValidatePrivateKeyReq) (*dtos.CertificateValidatePrivateKeyResp, error) } @@ -38,7 +38,7 @@ func (handler *CertificateHandler) archiveFile(e *core.RequestEvent) error { return resp.Err(e, err) } - if res, err := handler.service.ArchiveFile(e.Request.Context(), req); err != nil { + if res, err := handler.service.DownloadArchivedFile(e.Request.Context(), req); err != nil { return resp.Err(e, err) } else { return resp.Ok(e, res) diff --git a/internal/rest/handlers/notify.go b/internal/rest/handlers/notify.go index a20863e38..cc203d5fd 100644 --- a/internal/rest/handlers/notify.go +++ b/internal/rest/handlers/notify.go @@ -11,7 +11,7 @@ import ( ) type notifyService interface { - Test(ctx context.Context, req *dtos.NotifyTestPushReq) error + TestPush(ctx context.Context, req *dtos.NotifyTestPushReq) error } type NotifyHandler struct { @@ -33,7 +33,7 @@ func (handler *NotifyHandler) test(e *core.RequestEvent) error { return resp.Err(e, err) } - if err := handler.service.Test(e.Request.Context(), req); err != nil { + if err := handler.service.TestPush(e.Request.Context(), req); err != nil { return resp.Err(e, err) } diff --git a/internal/rest/routes/routes.go b/internal/rest/routes/routes.go index 4f021ba5b..960297b35 100644 --- a/internal/rest/routes/routes.go +++ b/internal/rest/routes/routes.go @@ -32,7 +32,7 @@ func Register(router *router.Router[*core.RequestEvent]) { certificateSvc = certificate.NewCertificateService(certificateRepo, settingsRepo) workflowSvc = workflow.NewWorkflowService(workflowRepo, workflowRunRepo, settingsRepo) statisticsSvc = statistics.NewStatisticsService(statisticsRepo) - notifySvc = notify.NewNotifyService(settingsRepo) + notifySvc = notify.NewNotifyService() group := router.Group("/api") group.Bind(apis.RequireSuperuserAuth()) diff --git a/internal/workflow/dispatcher/dispatcher.go b/internal/workflow/dispatcher/dispatcher.go index 3ba74e805..70ff43c56 100644 --- a/internal/workflow/dispatcher/dispatcher.go +++ b/internal/workflow/dispatcher/dispatcher.go @@ -12,9 +12,10 @@ import ( "sync" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/internal/app" "github.com/certimate-go/certimate/internal/domain" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) var maxWorkers = 1 @@ -126,7 +127,7 @@ func (d *WorkflowDispatcher) Cancel(runId string) { // 移除排队中的 WorkflowRun d.queueMutex.Lock() - d.queue = xslices.Filter(d.queue, func(d *WorkflowWorkerData) bool { + d.queue = lo.Filter(d.queue, func(d *WorkflowWorkerData, _ int) bool { return d.RunId != runId }) d.queueMutex.Unlock() diff --git a/internal/workflow/dispatcher/invoker.go b/internal/workflow/dispatcher/invoker.go index 8fbf3134a..27bc439b5 100644 --- a/internal/workflow/dispatcher/invoker.go +++ b/internal/workflow/dispatcher/invoker.go @@ -83,7 +83,7 @@ func (w *workflowInvoker) processNode(ctx context.Context, node *domain.Workflow log.NodeId = current.Id log.NodeName = current.Name log.Timestamp = record.Time.UnixMilli() - log.Level = record.Level.String() + log.Level = int32(record.Level) log.Message = record.Message log.Data = record.Data log.CreatedAt = record.Time diff --git a/internal/workflow/event.go b/internal/workflow/event.go index 9451377c9..a8a04e47c 100644 --- a/internal/workflow/event.go +++ b/internal/workflow/event.go @@ -57,8 +57,8 @@ func onWorkflowRecordCreateOrUpdate(ctx context.Context, record *core.Record) er enabled := record.GetBool("enabled") trigger := record.GetString("trigger") - // 如果是手动触发或未启用,移除定时任务 - if !enabled || trigger == string(domain.WorkflowTriggerTypeManual) { + // 如果非定时触发或未启用,移除定时任务 + if !enabled || trigger != string(domain.WorkflowTriggerTypeScheduled) { scheduler.Remove(fmt.Sprintf("workflow#%s", workflowId)) return nil } @@ -68,7 +68,7 @@ func onWorkflowRecordCreateOrUpdate(ctx context.Context, record *core.Record) er workflowSrv := NewWorkflowService(repository.NewWorkflowRepository(), repository.NewWorkflowRunRepository(), repository.NewSettingsRepository()) workflowSrv.StartRun(ctx, &dtos.WorkflowStartRunReq{ WorkflowId: workflowId, - RunTrigger: domain.WorkflowTriggerTypeAuto, + RunTrigger: domain.WorkflowTriggerTypeScheduled, }) }) if err != nil { diff --git a/internal/workflow/node-processor/apply_node.go b/internal/workflow/node-processor/apply_node.go index 7f174b154..2878daee9 100644 --- a/internal/workflow/node-processor/apply_node.go +++ b/internal/workflow/node-processor/apply_node.go @@ -79,7 +79,7 @@ func (n *applyNode) Process(ctx context.Context) error { } certificate := &domain.Certificate{ - Source: domain.CertificateSourceTypeWorkflow, + Source: domain.CertificateSourceTypeRequest, Certificate: applyResult.FullChainCertificate, PrivateKey: applyResult.PrivateKey, IssuerCertificate: applyResult.IssuerCertificate, @@ -115,7 +115,7 @@ func (n *applyNode) Process(ctx context.Context) error { // 记录中间结果 n.outputs[outputKeyForNodeSkipped] = strconv.FormatBool(false) n.outputs[outputKeyForCertificateValidity] = strconv.FormatBool(true) - n.outputs[outputKeyForCertificateDaysLeft] = strconv.FormatInt(int64(time.Until(certificate.ExpireAt).Hours()/24), 10) + n.outputs[outputKeyForCertificateDaysLeft] = strconv.FormatInt(int64(time.Until(certificate.ValidityNotAfter).Hours()/24), 10) n.logger.Info("application completed") return nil @@ -158,7 +158,7 @@ func (n *applyNode) checkCanSkip(ctx context.Context, lastOutput *domain.Workflo lastCertificate, _ := n.certRepo.GetByWorkflowRunIdAndNodeId(ctx, lastOutput.RunId, lastOutput.NodeId) if lastCertificate != nil { renewalInterval := time.Duration(thisNodeCfg.SkipBeforeExpiryDays) * time.Hour * 24 - expirationTime := time.Until(lastCertificate.ExpireAt) + expirationTime := time.Until(lastCertificate.ValidityNotAfter) if expirationTime > renewalInterval { daysLeft := int(expirationTime.Hours() / 24) // TODO: 优化此处逻辑,[checkCanSkip] 方法不应该修改中间结果,违背单一职责 diff --git a/internal/workflow/node-processor/notify_node.go b/internal/workflow/node-processor/notify_node.go index 3fe6df0e2..090a9f2de 100644 --- a/internal/workflow/node-processor/notify_node.go +++ b/internal/workflow/node-processor/notify_node.go @@ -33,33 +33,6 @@ func (n *notifyNode) Process(ctx context.Context) error { nodeCfg := n.node.GetConfigForNotify() n.logger.Info("ready to send notification ...", slog.Any("config", nodeCfg)) - if nodeCfg.Provider == "" { - // Deprecated: v0.4.x 将废弃 - // 兼容旧版本的通知渠道 - n.logger.Warn("WARNING! you are using the notification channel from global settings, which will be deprecated in the future") - - // 获取通知配置 - settings, err := n.settingsRepo.GetByName(ctx, "notifyChannels") - if err != nil { - return err - } - - // 获取通知渠道 - channelConfig, err := settings.GetNotifyChannelConfig(nodeCfg.Channel) - if err != nil { - return err - } - - // 发送通知 - if err := notify.SendToChannel(nodeCfg.Subject, nodeCfg.Message, nodeCfg.Channel, channelConfig); err != nil { - n.logger.Warn("failed to send notification", slog.String("channel", nodeCfg.Channel)) - return err - } - - n.logger.Info("notification completed") - return nil - } - // 检测是否可以跳过本次执行 if skippable := n.checkCanSkip(ctx); skippable { n.logger.Info(fmt.Sprintf("skip this notification, because all the previous nodes have been skipped")) diff --git a/internal/workflow/node-processor/upload_node.go b/internal/workflow/node-processor/upload_node.go index be28241c0..3112d0806 100644 --- a/internal/workflow/node-processor/upload_node.go +++ b/internal/workflow/node-processor/upload_node.go @@ -74,7 +74,7 @@ func (n *uploadNode) Process(ctx context.Context) error { // 记录中间结果 n.outputs[outputKeyForNodeSkipped] = strconv.FormatBool(false) n.outputs[outputKeyForCertificateValidity] = strconv.FormatBool(true) - n.outputs[outputKeyForCertificateDaysLeft] = strconv.FormatInt(int64(time.Until(certificate.ExpireAt).Hours()/24), 10) + n.outputs[outputKeyForCertificateDaysLeft] = strconv.FormatInt(int64(time.Until(certificate.ValidityNotAfter).Hours()/24), 10) n.logger.Info("uploading completed") return nil @@ -95,7 +95,7 @@ func (n *uploadNode) checkCanSkip(ctx context.Context, lastOutput *domain.Workfl lastCertificate, _ := n.certRepo.GetByWorkflowRunIdAndNodeId(ctx, lastOutput.RunId, lastOutput.NodeId) if lastCertificate != nil { - daysLeft := int(time.Until(lastCertificate.ExpireAt).Hours() / 24) + daysLeft := int(time.Until(lastCertificate.ValidityNotAfter).Hours() / 24) n.outputs[outputKeyForCertificateValidity] = strconv.FormatBool(daysLeft > 0) n.outputs[outputKeyForCertificateDaysLeft] = strconv.FormatInt(int64(daysLeft), 10) diff --git a/internal/workflow/service.go b/internal/workflow/service.go index 9085cc25c..c90a2cb9a 100644 --- a/internal/workflow/service.go +++ b/internal/workflow/service.go @@ -16,7 +16,7 @@ import ( ) type workflowRepository interface { - ListEnabledAuto(ctx context.Context) ([]*domain.Workflow, error) + ListEnabledScheduled(ctx context.Context) ([]*domain.Workflow, error) GetById(ctx context.Context, id string) (*domain.Workflow, error) Save(ctx context.Context, workflow *domain.Workflow) (*domain.Workflow, error) } @@ -59,7 +59,7 @@ func (s *WorkflowService) InitSchedule(ctx context.Context) error { return } - var settingsContent *domain.PersistenceSettingsContent + var settingsContent *domain.SettingsContentAsPersistence json.Unmarshal([]byte(settings.Content), &settingsContent) if settingsContent != nil && settingsContent.WorkflowRunsMaxDaysRetention != 0 { ret, err := s.workflowRunRepo.DeleteWhere( @@ -80,7 +80,7 @@ func (s *WorkflowService) InitSchedule(ctx context.Context) error { // 工作流 { - workflows, err := s.workflowRepo.ListEnabledAuto(ctx) + workflows, err := s.workflowRepo.ListEnabledScheduled(ctx) if err != nil { return err } @@ -91,7 +91,7 @@ func (s *WorkflowService) InitSchedule(ctx context.Context) error { err := app.GetScheduler().Add(fmt.Sprintf("workflow#%s", workflow.Id), workflow.TriggerCron, func() { s.StartRun(ctx, &dtos.WorkflowStartRunReq{ WorkflowId: workflow.Id, - RunTrigger: domain.WorkflowTriggerTypeAuto, + RunTrigger: domain.WorkflowTriggerTypeScheduled, }) }) if err != nil { diff --git a/migrations/1753272000_v0.4.0_migrate.go b/migrations/1753272000_v0.4.0_migrate.go new file mode 100644 index 000000000..4523c8ae5 --- /dev/null +++ b/migrations/1753272000_v0.4.0_migrate.go @@ -0,0 +1,581 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + tracer := NewTracer("v0.4.0") + tracer.Printf("go ...") + + // update collection `access` + { + collection, err := app.FindCollectionByNameOrId("4yzbv8urny5ja1e") + if err != nil { + return err + } else if collection != nil { + records, err := app.FindAllRecords(collection) + if err != nil { + return err + } + + for _, record := range records { + changed := false + + provider := record.GetString("provider") + config := make(map[string]any) + if err := record.UnmarshalJSONField("config", &config); err != nil { + return err + } + + switch provider { + case "discordbot", "mattermost", "slackbot": + if _, ok := config["defaultChannelId"]; ok { + config["channelId"] = config["defaultChannelId"] + delete(config, "defaultChannelId") + record.Set("config", config) + changed = true + } + + case "email": + if _, ok := config["defaultSenderAddress"]; ok { + config["senderAddress"] = config["defaultSenderAddress"] + delete(config, "defaultSenderAddress") + record.Set("config", config) + changed = true + } + if _, ok := config["defaultSenderName"]; ok { + config["senderName"] = config["defaultSenderName"] + delete(config, "defaultSenderName") + record.Set("config", config) + changed = true + } + if _, ok := config["defaultReceiverAddress"]; ok { + config["receiverAddress"] = config["defaultReceiverAddress"] + delete(config, "defaultReceiverAddress") + record.Set("config", config) + changed = true + } + + case "telegrambot": + if _, ok := config["defaultChatId"]; ok { + config["chatId"] = config["defaultChatId"] + delete(config, "defaultChatId") + record.Set("config", config) + changed = true + } + + case "webhook": + if _, ok := config["defaultDataForDeployment"]; ok { + config["dataForDeployment"] = config["defaultDataForDeployment"] + delete(config, "defaultDataForDeployment") + record.Set("config", config) + changed = true + } + if _, ok := config["defaultDataForNotification"]; ok { + config["dataForNotification"] = config["defaultDataForNotification"] + delete(config, "defaultDataForNotification") + record.Set("config", config) + changed = true + } + } + + if changed { + if err := app.Save(record); err != nil { + return err + } + + tracer.Printf("record #%s in collection '%s' updated", record.Id, collection.Name) + } + } + } + } + + // update collection `certificate` + { + collection, err := app.FindCollectionByNameOrId("4szxr9x43tpj6np") + if err != nil { + return err + } else if collection != nil { + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "by9hetqi", + "maxSelect": 1, + "name": "source", + "presentable": false, + "required": false, + "system": false, + "type": "select", + "values": [ + "request", + "upload" + ] + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(9, []byte(`{ + "hidden": false, + "id": "v40aqzpd", + "max": "", + "min": "", + "name": "validityNotBefore", + "presentable": false, + "required": false, + "system": false, + "type": "date" + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(10, []byte(`{ + "hidden": false, + "id": "zgpdby2k", + "max": "", + "min": "", + "name": "validityNotAfter", + "presentable": false, + "required": false, + "system": false, + "type": "date" + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(15, []byte(`{ + "cascadeDelete": false, + "collectionId": "tovyif5ax6j62ur", + "hidden": false, + "id": "uvqfamb1", + "maxSelect": 1, + "minSelect": 0, + "name": "workflowRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(16, []byte(`{ + "cascadeDelete": false, + "collectionId": "qjp8lygssgwyqyz", + "hidden": false, + "id": "relation3917999135", + "maxSelect": 1, + "minSelect": 0, + "name": "workflowRunRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(17, []byte(`{ + "cascadeDelete": false, + "collectionId": "bqnxb95f2cooowp", + "hidden": false, + "id": "2ohlr0yd", + "maxSelect": 1, + "minSelect": 0, + "name": "workflowOutputRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX `+"`"+`idx_Jx8TXzDCmw`+"`"+` ON `+"`"+`certificate`+"`"+` (`+"`"+`workflowRef`+"`"+`)", + "CREATE INDEX `+"`"+`idx_2cRXqNDyyp`+"`"+` ON `+"`"+`certificate`+"`"+` (`+"`"+`workflowRunRef`+"`"+`)", + "CREATE INDEX `+"`"+`idx_kcKpgAZapk`+"`"+` ON `+"`"+`certificate`+"`"+` (`+"`"+`workflowNodeId`+"`"+`)" + ] + }`), &collection); err != nil { + return err + } + + if err := app.Save(collection); err != nil { + return err + } + + if _, err := app.DB().NewQuery("UPDATE certificate SET source = 'request' WHERE source = 'workflow'").Execute(); err != nil { + return err + } + + tracer.Printf("collection '%s' updated", collection.Name) + } + } + + // update collection `workflow` + { + collection, err := app.FindCollectionByNameOrId("tovyif5ax6j62ur") + if err != nil { + return err + } else if collection != nil { + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "hidden": false, + "id": "vqoajwjq", + "maxSelect": 1, + "name": "trigger", + "presentable": false, + "required": false, + "system": false, + "type": "select", + "values": [ + "manual", + "scheduled" + ] + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(9, []byte(`{ + "cascadeDelete": false, + "collectionId": "qjp8lygssgwyqyz", + "hidden": false, + "id": "a23wkj9x", + "maxSelect": 1, + "minSelect": 0, + "name": "lastRunRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := app.Save(collection); err != nil { + return err + } + + if _, err := app.DB().NewQuery("UPDATE workflow SET trigger = 'scheduled' WHERE trigger = 'auto'").Execute(); err != nil { + return err + } + + tracer.Printf("collection '%s' updated", collection.Name) + + records, err := app.FindAllRecords(collection) + if err != nil { + return err + } else { + for _, record := range records { + changed := false + + draft := make(map[string]any) + if err := record.UnmarshalJSONField("draft", &draft); err == nil { + if _, ok := draft["config"]; ok { + config := draft["config"].(map[string]any) + if _, ok := config["trigger"]; ok { + trigger := config["trigger"].(string) + if trigger == "auto" { + config["trigger"] = "scheduled" + record.Set("draft", draft) + changed = true + } + } + } + } + + content := make(map[string]any) + if err := record.UnmarshalJSONField("content", &content); err == nil { + if _, ok := content["config"]; ok { + config := content["config"].(map[string]any) + if _, ok := config["trigger"]; ok { + trigger := config["trigger"].(string) + if trigger == "auto" { + config["trigger"] = "scheduled" + record.Set("content", content) + changed = true + } + } + } + } + + if changed { + if err := app.Save(record); err != nil { + return err + } + + tracer.Printf("record #%s in collection '%s' updated", record.Id, collection.Name) + } + } + } + } + } + + // update collection `workflow_run` + { + collection, err := app.FindCollectionByNameOrId("qjp8lygssgwyqyz") + if err != nil { + return err + } else if collection != nil { + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "tovyif5ax6j62ur", + "hidden": false, + "id": "m8xfsyyy", + "maxSelect": 1, + "minSelect": 0, + "name": "workflowRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "hidden": false, + "id": "jlroa3fk", + "maxSelect": 1, + "name": "trigger", + "presentable": false, + "required": false, + "system": false, + "type": "select", + "values": [ + "manual", + "scheduled" + ] + }`)); err != nil { + return err + } + + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX `+"`"+`idx_7ZpfjTFsD2`+"`"+` ON `+"`"+`workflow_run`+"`"+` (`+"`"+`workflowRef`+"`"+`)" + ] + }`), &collection); err != nil { + return err + } + + if err := app.Save(collection); err != nil { + return err + } + + if _, err := app.DB().NewQuery("UPDATE workflow_run SET trigger = 'scheduled' WHERE trigger = 'auto'").Execute(); err != nil { + return err + } + + tracer.Printf("collection '%s' updated", collection.Name) + + records, err := app.FindAllRecords(collection) + if err != nil { + return err + } else { + for _, record := range records { + changed := false + + detail := make(map[string]any) + if err := record.UnmarshalJSONField("detail", &detail); err == nil { + if _, ok := detail["config"]; ok { + config := detail["config"].(map[string]any) + if _, ok := config["trigger"]; ok { + trigger := config["trigger"].(string) + if trigger == "auto" { + config["trigger"] = "scheduled" + record.Set("detail", detail) + changed = true + } + } + } + } + + if changed { + if err := app.Save(record); err != nil { + return err + } + + tracer.Printf("record #%s in collection '%s' updated", record.Id, collection.Name) + } + } + } + } + } + + // update collection `workflow_output` + { + collection, err := app.FindCollectionByNameOrId("bqnxb95f2cooowp") + if err != nil { + return err + } else if collection != nil { + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX `+"`"+`idx_BYoQPsz4my`+"`"+` ON `+"`"+`workflow_output`+"`"+` (`+"`"+`workflowRef`+"`"+`)", + "CREATE INDEX `+"`"+`idx_O9zxLETuxJ`+"`"+` ON `+"`"+`workflow_output`+"`"+` (`+"`"+`runRef`+"`"+`)", + "CREATE INDEX `+"`"+`idx_luac8Ul34G`+"`"+` ON `+"`"+`workflow_output`+"`"+` (`+"`"+`nodeId`+"`"+`)" + ] + }`), &collection); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "tovyif5ax6j62ur", + "hidden": false, + "id": "jka88auc", + "maxSelect": 1, + "minSelect": 0, + "name": "workflowRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "cascadeDelete": true, + "collectionId": "qjp8lygssgwyqyz", + "hidden": false, + "id": "relation821863227", + "maxSelect": 1, + "minSelect": 0, + "name": "runRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := app.Save(collection); err != nil { + return err + } + + tracer.Printf("collection '%s' updated", collection.Name) + } + } + + // update collection `workflow_logs` + { + collection, err := app.FindCollectionByNameOrId("pbc_1682296116") + if err != nil { + return err + } else if collection != nil { + if field := collection.Fields.GetByName("level"); field != nil && field.Type() == "text" { + if _, err := app.DB().NewQuery("UPDATE workflow_logs SET level = -4 WHERE level = 'DEBUG'").Execute(); err != nil { + return err + } + if _, err := app.DB().NewQuery("UPDATE workflow_logs SET level = 0 WHERE level = 'INFO'").Execute(); err != nil { + return err + } + if _, err := app.DB().NewQuery("UPDATE workflow_logs SET level = 4 WHERE level = 'WARN'").Execute(); err != nil { + return err + } + if _, err := app.DB().NewQuery("UPDATE workflow_logs SET level = 8 WHERE level = 'ERROR'").Execute(); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(7, []byte(`{ + "hidden": false, + "id": "number760395071", + "max": null, + "min": null, + "name": "levelTmp", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }`)); err != nil { + return err + } + if err := app.Save(collection); err != nil { + return err + } + + collection.Fields.RemoveById(field.GetId()) + if err := app.Save(collection); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(6, []byte(`{ + "hidden": false, + "id": "number760395071", + "max": null, + "min": null, + "name": "level", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }`)); err != nil { + return err + } + if err := app.Save(collection); err != nil { + return err + } + } + + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "tovyif5ax6j62ur", + "hidden": false, + "id": "relation3371272342", + "maxSelect": 1, + "minSelect": 0, + "name": "workflowRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "cascadeDelete": true, + "collectionId": "qjp8lygssgwyqyz", + "hidden": false, + "id": "relation821863227", + "maxSelect": 1, + "minSelect": 0, + "name": "runRef", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX `+"`"+`idx_IOlpy6XuJ2`+"`"+` ON `+"`"+`workflow_logs`+"`"+` (`+"`"+`workflowRef`+"`"+`)", + "CREATE INDEX `+"`"+`idx_qVlTb2yl7v`+"`"+` ON `+"`"+`workflow_logs`+"`"+` (`+"`"+`runRef`+"`"+`)", + "CREATE INDEX `+"`"+`idx_UL4tdCXNlA`+"`"+` ON `+"`"+`workflow_logs`+"`"+` (`+"`"+`nodeId`+"`"+`)" + ] + }`), &collection); err != nil { + return err + } + + if err := app.Save(collection); err != nil { + return err + } + + tracer.Printf("collection '%s' updated", collection.Name) + } + } + + tracer.Printf("done") + return nil + }, func(app core.App) error { + return nil + }) +} diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/internal/lego.go index f472de753..9a5b61caf 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/ctcccloud/internal/lego.go @@ -8,9 +8,9 @@ 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" ctyundns "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/dns" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) const ( @@ -129,9 +129,9 @@ func (d *DNSProvider) findDNSRecordId(zoneName, subDomain string) (int32, error) // 查询解析记录列表 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11264&data=181&isNormal=1&vid=259 request := &ctyundns.QueryRecordListRequest{} - request.Domain = xtypes.ToPtr(zoneName) - request.Host = xtypes.ToPtr(subDomain) - request.Type = xtypes.ToPtr("TXT") + request.Domain = lo.ToPtr(zoneName) + request.Host = lo.ToPtr(subDomain) + request.Type = lo.ToPtr("TXT") response, err := d.client.QueryRecordList(request) if err != nil { @@ -155,13 +155,13 @@ func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) er // 新增解析记录 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11259&data=181&isNormal=1&vid=259 request := &ctyundns.AddRecordRequest{ - Domain: xtypes.ToPtr(zoneName), - Host: xtypes.ToPtr(subDomain), - Type: xtypes.ToPtr("TXT"), - LineCode: xtypes.ToPtr("Default"), - Value: xtypes.ToPtr(value), - State: xtypes.ToPtr(int32(1)), - TTL: xtypes.ToPtr(int32(d.config.TTL)), + Domain: lo.ToPtr(zoneName), + Host: lo.ToPtr(subDomain), + Type: lo.ToPtr("TXT"), + LineCode: lo.ToPtr("Default"), + Value: lo.ToPtr(value), + State: lo.ToPtr(int32(1)), + TTL: lo.ToPtr(int32(d.config.TTL)), } _, err := d.client.AddRecord(request) return err @@ -169,14 +169,14 @@ func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) er // 修改解析记录 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11261&data=181&isNormal=1&vid=259 request := &ctyundns.UpdateRecordRequest{ - RecordId: xtypes.ToPtr(recordId), - Domain: xtypes.ToPtr(zoneName), - Host: xtypes.ToPtr(subDomain), - Type: xtypes.ToPtr("TXT"), - LineCode: xtypes.ToPtr("Default"), - Value: xtypes.ToPtr(value), - State: xtypes.ToPtr(int32(1)), - TTL: xtypes.ToPtr(int32(d.config.TTL)), + RecordId: lo.ToPtr(recordId), + Domain: lo.ToPtr(zoneName), + Host: lo.ToPtr(subDomain), + Type: lo.ToPtr("TXT"), + LineCode: lo.ToPtr("Default"), + Value: lo.ToPtr(value), + State: lo.ToPtr(int32(1)), + TTL: lo.ToPtr(int32(d.config.TTL)), } _, err := d.client.UpdateRecord(request) return err @@ -195,7 +195,7 @@ func (d *DNSProvider) removeDNSRecord(zoneName, subDomain string) error { // 删除解析记录 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11262&data=181&isNormal=1&vid=259 request := &ctyundns.DeleteRecordRequest{ - RecordId: xtypes.ToPtr(recordId), + RecordId: lo.ToPtr(recordId), } _, err = d.client.DeleteRecord(request) return err diff --git a/pkg/core/ssl-applicator/acme-dns01/providers/gname/internal/lego.go b/pkg/core/ssl-applicator/acme-dns01/providers/gname/internal/lego.go index cd6692622..2d2252d72 100644 --- a/pkg/core/ssl-applicator/acme-dns01/providers/gname/internal/lego.go +++ b/pkg/core/ssl-applicator/acme-dns01/providers/gname/internal/lego.go @@ -8,9 +8,9 @@ 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" gnamesdk "github.com/certimate-go/certimate/pkg/sdk3rd/gname" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) const ( @@ -131,9 +131,9 @@ func (d *DNSProvider) findDNSRecord(zoneName, subDomain string) (*gnamesdk.Domai pageSize := int32(20) for { request := &gnamesdk.ListDomainResolutionRequest{ - ZoneName: xtypes.ToPtr(zoneName), - Page: xtypes.ToPtr(page), - PageSize: xtypes.ToPtr(pageSize), + ZoneName: lo.ToPtr(zoneName), + Page: lo.ToPtr(page), + PageSize: lo.ToPtr(pageSize), } response, err := d.client.ListDomainResolution(request) @@ -168,23 +168,23 @@ func (d *DNSProvider) addOrUpdateDNSRecord(zoneName, subDomain, value string) er if record == nil { request := &gnamesdk.AddDomainResolutionRequest{ - ZoneName: xtypes.ToPtr(zoneName), - RecordType: xtypes.ToPtr("TXT"), - RecordName: xtypes.ToPtr(subDomain), - RecordValue: xtypes.ToPtr(value), - TTL: xtypes.ToPtr(int32(d.config.TTL)), + ZoneName: lo.ToPtr(zoneName), + RecordType: lo.ToPtr("TXT"), + RecordName: lo.ToPtr(subDomain), + RecordValue: lo.ToPtr(value), + TTL: lo.ToPtr(int32(d.config.TTL)), } _, err := d.client.AddDomainResolution(request) return err } else { recordId, _ := record.ID.Int64() request := &gnamesdk.ModifyDomainResolutionRequest{ - ID: xtypes.ToPtr(recordId), - ZoneName: xtypes.ToPtr(zoneName), - RecordType: xtypes.ToPtr("TXT"), - RecordName: xtypes.ToPtr(subDomain), - RecordValue: xtypes.ToPtr(value), - TTL: xtypes.ToPtr(int32(d.config.TTL)), + ID: lo.ToPtr(recordId), + ZoneName: lo.ToPtr(zoneName), + RecordType: lo.ToPtr("TXT"), + RecordName: lo.ToPtr(subDomain), + RecordValue: lo.ToPtr(value), + TTL: lo.ToPtr(int32(d.config.TTL)), } _, err := d.client.ModifyDomainResolution(request) return err @@ -203,8 +203,8 @@ func (d *DNSProvider) removeDNSRecord(zoneName, subDomain string) error { recordId, _ := record.ID.Int64() request := &gnamesdk.DeleteDomainResolutionRequest{ - ZoneName: xtypes.ToPtr(zoneName), - RecordID: xtypes.ToPtr(recordId), + ZoneName: lo.ToPtr(zoneName), + RecordID: lo.ToPtr(recordId), } _, err = d.client.DeleteDomainResolution(request) return err diff --git a/pkg/core/ssl-deployer/providers/aliyun-alb/aliyun_alb.go b/pkg/core/ssl-deployer/providers/aliyun-alb/aliyun_alb.go index ae3ca2eb7..5dc26cb3e 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-alb/aliyun_alb.go +++ b/pkg/core/ssl-deployer/providers/aliyun-alb/aliyun_alb.go @@ -13,11 +13,11 @@ import ( alicas "github.com/alibabacloud-go/cas-20200407/v3/client" aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "golang.org/x/exp/slices" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/aliyun-cas" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -70,9 +70,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, ResourceGroupId: config.ResourceGroupId, - Region: ifelse. - If[string](config.Region == "" || strings.HasPrefix(config.Region, "cn-")). - Then("cn-hangzhou"). + Region: lo. + If(config.Region == "" || strings.HasPrefix(config.Region, "cn-"), "cn-hangzhou"). Else("ap-southeast-1"), }) if err != nil { 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 788166204..4bc55d044 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-apigw/aliyun_apigw.go +++ b/pkg/core/ssl-deployer/providers/aliyun-apigw/aliyun_apigw.go @@ -12,11 +12,10 @@ import ( alicloudapi "github.com/alibabacloud-go/cloudapi-20160714/v5/client" aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/aliyun-cas" - "github.com/certimate-go/certimate/pkg/utils/ifelse" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -68,9 +67,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, ResourceGroupId: config.ResourceGroupId, - Region: ifelse. - If[string](config.Region == "" || strings.HasPrefix(config.Region, "cn-")). - Then("cn-hangzhou"). + Region: lo. + If(config.Region == "" || strings.HasPrefix(config.Region, "cn-"), "cn-hangzhou"). Else("ap-southeast-1"), }) if err != nil { @@ -159,7 +157,7 @@ func (d *SSLDeployerProvider) deployToCloudNative(ctx context.Context, certPEM s } listDomainsReq := &aliapig.ListDomainsRequest{ - ResourceGroupId: xtypes.ToPtrOrZeroNil(d.config.ResourceGroupId), + ResourceGroupId: lo.EmptyableToPtr(d.config.ResourceGroupId), GatewayId: tea.String(d.config.GatewayId), NameLike: tea.String(d.config.Domain), PageNumber: tea.Int32(listDomainsPageNumber), diff --git a/pkg/core/ssl-deployer/providers/aliyun-ddos/aliyun_ddos.go b/pkg/core/ssl-deployer/providers/aliyun-ddos/aliyun_ddos.go index 10788365f..12f8ceec6 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-ddos/aliyun_ddos.go +++ b/pkg/core/ssl-deployer/providers/aliyun-ddos/aliyun_ddos.go @@ -11,10 +11,10 @@ import ( aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliddos "github.com/alibabacloud-go/ddoscoo-20200101/v4/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/aliyun-cas" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -53,9 +53,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, ResourceGroupId: config.ResourceGroupId, - Region: ifelse. - If[string](config.Region == "" || strings.HasPrefix(config.Region, "cn-")). - Then("cn-hangzhou"). + Region: lo. + If(config.Region == "" || strings.HasPrefix(config.Region, "cn-"), "cn-hangzhou"). Else("ap-southeast-1"), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go b/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go index f2afa2228..ea388d391 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go +++ b/pkg/core/ssl-deployer/providers/aliyun-esa/aliyun_esa.go @@ -11,10 +11,10 @@ import ( aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliesa "github.com/alibabacloud-go/esa-20240910/v2/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/aliyun-cas" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -53,9 +53,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, ResourceGroupId: config.ResourceGroupId, - Region: ifelse. - If[string](config.Region == "" || strings.HasPrefix(config.Region, "cn-")). - Then("cn-hangzhou"). + Region: lo. + If(config.Region == "" || strings.HasPrefix(config.Region, "cn-"), "cn-hangzhou"). Else("ap-southeast-1"), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/aliyun-ga/aliyun_ga.go b/pkg/core/ssl-deployer/providers/aliyun-ga/aliyun_ga.go index d29b65b7d..6cd00d6ea 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-ga/aliyun_ga.go +++ b/pkg/core/ssl-deployer/providers/aliyun-ga/aliyun_ga.go @@ -10,10 +10,10 @@ import ( aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" aliga "github.com/alibabacloud-go/ga-20191120/v3/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/aliyun-cas" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type SSLDeployerProviderConfig struct { @@ -256,14 +256,14 @@ func (d *SSLDeployerProvider) updateListenerCertificate(ctx context.Context, clo } } else { // 指定 SNI,需部署到扩展域名 - if xslices.Some(listenerAdditionalCertificates, func(item *aliga.ListListenerCertificatesResponseBodyCertificates) bool { + if lo.SomeBy(listenerAdditionalCertificates, func(item *aliga.ListListenerCertificatesResponseBodyCertificates) bool { return tea.StringValue(item.CertificateId) == cloudCertId }) { d.logger.Info("no need to update ga listener additional certificate") return nil } - if xslices.Some(listenerAdditionalCertificates, func(item *aliga.ListListenerCertificatesResponseBodyCertificates) bool { + if lo.SomeBy(listenerAdditionalCertificates, func(item *aliga.ListListenerCertificatesResponseBodyCertificates) bool { return tea.StringValue(item.Domain) == d.config.Domain }) { // 为监听替换扩展证书 diff --git a/pkg/core/ssl-deployer/providers/aliyun-nlb/aliyun_nlb.go b/pkg/core/ssl-deployer/providers/aliyun-nlb/aliyun_nlb.go index 18a49e59e..85bdfa56f 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-nlb/aliyun_nlb.go +++ b/pkg/core/ssl-deployer/providers/aliyun-nlb/aliyun_nlb.go @@ -10,10 +10,10 @@ import ( aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" alinlb "github.com/alibabacloud-go/nlb-20220430/v2/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/aliyun-cas" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -58,9 +58,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, ResourceGroupId: config.ResourceGroupId, - Region: ifelse. - If[string](config.Region == "" || strings.HasPrefix(config.Region, "cn-")). - Then("cn-hangzhou"). + Region: lo. + If(config.Region == "" || strings.HasPrefix(config.Region, "cn-"), "cn-hangzhou"). Else("ap-southeast-1"), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/aliyun-waf/aliyun_waf.go b/pkg/core/ssl-deployer/providers/aliyun-waf/aliyun_waf.go index d4e74ffeb..75816bfbe 100644 --- a/pkg/core/ssl-deployer/providers/aliyun-waf/aliyun_waf.go +++ b/pkg/core/ssl-deployer/providers/aliyun-waf/aliyun_waf.go @@ -10,12 +10,10 @@ import ( aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" "github.com/alibabacloud-go/tea/tea" aliwaf "github.com/alibabacloud-go/waf-openapi-20211001/v5/client" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/aliyun-cas" - "github.com/certimate-go/certimate/pkg/utils/ifelse" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -58,9 +56,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv AccessKeyId: config.AccessKeyId, AccessKeySecret: config.AccessKeySecret, ResourceGroupId: config.ResourceGroupId, - Region: ifelse. - If[string](config.Region == "" || strings.HasPrefix(config.Region, "cn-")). - Then("cn-hangzhou"). + Region: lo. + If(config.Region == "" || strings.HasPrefix(config.Region, "cn-"), "cn-hangzhou"). Else("ap-southeast-1"), }) if err != nil { @@ -118,7 +115,7 @@ func (d *SSLDeployerProvider) deployToWAF3(ctx context.Context, certPEM string, // 查询默认 SSL/TLS 设置 // REF: https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-describedefaulthttps describeDefaultHttpsReq := &aliwaf.DescribeDefaultHttpsRequest{ - ResourceManagerResourceGroupId: xtypes.ToPtrOrZeroNil(d.config.ResourceGroupId), + ResourceManagerResourceGroupId: lo.EmptyableToPtr(d.config.ResourceGroupId), InstanceId: tea.String(d.config.InstanceId), RegionId: tea.String(d.config.Region), } @@ -131,7 +128,7 @@ func (d *SSLDeployerProvider) deployToWAF3(ctx context.Context, certPEM string, // 修改默认 SSL/TLS 设置 // REF: https://help.aliyun.com/zh/waf/web-application-firewall-3-0/developer-reference/api-waf-openapi-2021-10-01-modifydefaulthttps modifyDefaultHttpsReq := &aliwaf.ModifyDefaultHttpsRequest{ - ResourceManagerResourceGroupId: xtypes.ToPtrOrZeroNil(d.config.ResourceGroupId), + ResourceManagerResourceGroupId: lo.EmptyableToPtr(d.config.ResourceGroupId), InstanceId: tea.String(d.config.InstanceId), RegionId: tea.String(d.config.Region), CertId: tea.String(upres.CertId), @@ -245,7 +242,7 @@ func assign(source *aliwaf.ModifyDomainRequest, target *aliwaf.DescribeDomainDet } if target.Listen.HttpPorts != nil { - source.Listen.HttpPorts = xslices.Map(target.Listen.HttpPorts, func(v *int64) *int32 { + source.Listen.HttpPorts = lo.Map(target.Listen.HttpPorts, func(v *int64, _ int) *int32 { if v == nil { return nil } @@ -254,7 +251,7 @@ func assign(source *aliwaf.ModifyDomainRequest, target *aliwaf.DescribeDomainDet } if target.Listen.HttpsPorts != nil { - source.Listen.HttpsPorts = xslices.Map(target.Listen.HttpsPorts, func(v *int64) *int32 { + source.Listen.HttpsPorts = lo.Map(target.Listen.HttpsPorts, func(v *int64, _ int) *int32 { if v == nil { return nil } @@ -289,7 +286,7 @@ func assign(source *aliwaf.ModifyDomainRequest, target *aliwaf.DescribeDomainDet } if target.Redirect.Backends != nil { - source.Redirect.Backends = xslices.Map(target.Redirect.Backends, func(v *aliwaf.DescribeDomainDetailResponseBodyRedirectBackends) *string { + source.Redirect.Backends = lo.Map(target.Redirect.Backends, func(v *aliwaf.DescribeDomainDetailResponseBodyRedirectBackends, _ int) *string { if v == nil { return nil } @@ -298,7 +295,7 @@ func assign(source *aliwaf.ModifyDomainRequest, target *aliwaf.DescribeDomainDet } if target.Redirect.BackupBackends != nil { - source.Redirect.BackupBackends = xslices.Map(target.Redirect.BackupBackends, func(v *aliwaf.DescribeDomainDetailResponseBodyRedirectBackupBackends) *string { + source.Redirect.BackupBackends = lo.Map(target.Redirect.BackupBackends, func(v *aliwaf.DescribeDomainDetailResponseBodyRedirectBackupBackends, _ int) *string { if v == nil { return nil } @@ -335,7 +332,7 @@ func assign(source *aliwaf.ModifyDomainRequest, target *aliwaf.DescribeDomainDet } if target.Redirect.RequestHeaders != nil { - source.Redirect.RequestHeaders = xslices.Map(target.Redirect.RequestHeaders, func(v *aliwaf.DescribeDomainDetailResponseBodyRedirectRequestHeaders) *aliwaf.ModifyDomainRequestRedirectRequestHeaders { + source.Redirect.RequestHeaders = lo.Map(target.Redirect.RequestHeaders, func(v *aliwaf.DescribeDomainDetailResponseBodyRedirectRequestHeaders, _ int) *aliwaf.ModifyDomainRequestRedirectRequestHeaders { if v == nil { return nil } diff --git a/pkg/core/ssl-deployer/providers/apisix/apisix.go b/pkg/core/ssl-deployer/providers/apisix/apisix.go index 2a42eeb14..5867be48f 100644 --- a/pkg/core/ssl-deployer/providers/apisix/apisix.go +++ b/pkg/core/ssl-deployer/providers/apisix/apisix.go @@ -7,10 +7,11 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" apisixsdk "github.com/certimate-go/certimate/pkg/sdk3rd/apisix" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -89,11 +90,11 @@ func (d *SSLDeployerProvider) deployToCertificate(ctx context.Context, certPEM s // 更新 SSL 证书 // REF: https://apisix.apache.org/zh/docs/apisix/admin-api/#ssl updateSSLReq := &apisixsdk.UpdateSSLRequest{ - Cert: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), - SNIs: xtypes.ToPtr(certX509.DNSNames), - Type: xtypes.ToPtr("server"), - Status: xtypes.ToPtr(int32(1)), + Cert: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), + SNIs: lo.ToPtr(certX509.DNSNames), + Type: lo.ToPtr("server"), + Status: lo.ToPtr(int32(1)), } updateSSLResp, err := d.sdkClient.UpdateSSL(d.config.CertificateId, updateSSLReq) d.logger.Debug("sdk request 'apisix.UpdateSSL'", slog.String("sslId", d.config.CertificateId), slog.Any("request", updateSSLReq), slog.Any("response", updateSSLResp)) diff --git a/pkg/core/ssl-deployer/providers/baiducloud-appblb/baiducloud_appblb.go b/pkg/core/ssl-deployer/providers/baiducloud-appblb/baiducloud_appblb.go index f649e6d6b..207d2b0a0 100644 --- a/pkg/core/ssl-deployer/providers/baiducloud-appblb/baiducloud_appblb.go +++ b/pkg/core/ssl-deployer/providers/baiducloud-appblb/baiducloud_appblb.go @@ -10,10 +10,10 @@ import ( bceappblb "github.com/baidubce/bce-sdk-go/services/appblb" "github.com/google/uuid" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/baiducloud-cert" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type SSLDeployerProviderConfig struct { @@ -284,7 +284,7 @@ func (d *SSLDeployerProvider) updateHttpsListenerCertificate(ctx context.Context ListenerPort: uint16(cloudHttpsListenerPort), Scheduler: describeAppHTTPSListenersResp.ListenerList[0].Scheduler, CertIds: describeAppHTTPSListenersResp.ListenerList[0].CertIds, - AdditionalCertDomains: xslices.Map(describeAppHTTPSListenersResp.ListenerList[0].AdditionalCertDomains, func(domain bceappblb.AdditionalCertDomainsModel) bceappblb.AdditionalCertDomainsModel { + AdditionalCertDomains: lo.Map(describeAppHTTPSListenersResp.ListenerList[0].AdditionalCertDomains, func(domain bceappblb.AdditionalCertDomainsModel, _ int) bceappblb.AdditionalCertDomainsModel { if domain.Host == d.config.Domain { return bceappblb.AdditionalCertDomainsModel{ Host: domain.Host, diff --git a/pkg/core/ssl-deployer/providers/baiducloud-blb/baiducloud_blb.go b/pkg/core/ssl-deployer/providers/baiducloud-blb/baiducloud_blb.go index e33d8ab27..7ce9460a9 100644 --- a/pkg/core/ssl-deployer/providers/baiducloud-blb/baiducloud_blb.go +++ b/pkg/core/ssl-deployer/providers/baiducloud-blb/baiducloud_blb.go @@ -10,10 +10,10 @@ import ( bceblb "github.com/baidubce/bce-sdk-go/services/blb" "github.com/google/uuid" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/baiducloud-cert" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type SSLDeployerProviderConfig struct { @@ -282,7 +282,7 @@ func (d *SSLDeployerProvider) updateHttpsListenerCertificate(ctx context.Context ClientToken: generateClientToken(), ListenerPort: uint16(cloudHttpsListenerPort), CertIds: describeHTTPSListenersResp.ListenerList[0].CertIds, - AdditionalCertDomains: xslices.Map(describeHTTPSListenersResp.ListenerList[0].AdditionalCertDomains, func(domain bceblb.AdditionalCertDomainsModel) bceblb.AdditionalCertDomainsModel { + AdditionalCertDomains: lo.Map(describeHTTPSListenersResp.ListenerList[0].AdditionalCertDomains, func(domain bceblb.AdditionalCertDomainsModel, _ int) bceblb.AdditionalCertDomainsModel { if domain.Host == d.config.Domain { return bceblb.AdditionalCertDomainsModel{ Host: domain.Host, diff --git a/pkg/core/ssl-deployer/providers/baishan-cdn/baishan_cdn.go b/pkg/core/ssl-deployer/providers/baishan-cdn/baishan_cdn.go index a5a5f1c37..7ded574b7 100644 --- a/pkg/core/ssl-deployer/providers/baishan-cdn/baishan_cdn.go +++ b/pkg/core/ssl-deployer/providers/baishan-cdn/baishan_cdn.go @@ -10,9 +10,10 @@ import ( "strings" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" bssdk "github.com/certimate-go/certimate/pkg/sdk3rd/baishan" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -69,9 +70,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // REF: https://portal.baishancloud.com/track/document/downloadPdf/1441 certificateId := "" setDomainCertificateReq := &bssdk.SetDomainCertificateRequest{ - Name: xtypes.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), - Certificate: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Name: lo.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), + Certificate: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } setDomainCertificateResp, err := d.sdkClient.SetDomainCertificate(setDomainCertificateReq) d.logger.Debug("sdk request 'baishan.SetDomainCertificate'", slog.Any("request", setDomainCertificateReq), slog.Any("response", setDomainCertificateResp)) @@ -94,8 +95,8 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 查询域名配置 // REF: https://portal.baishancloud.com/track/document/api/1/1065 getDomainConfigReq := &bssdk.GetDomainConfigRequest{ - Domains: xtypes.ToPtr(d.config.Domain), - Config: xtypes.ToPtr([]string{"https"}), + Domains: lo.ToPtr(d.config.Domain), + Config: lo.ToPtr([]string{"https"}), } getDomainConfigResp, err := d.sdkClient.GetDomainConfig(getDomainConfigReq) d.logger.Debug("sdk request 'baishan.GetDomainConfig'", slog.Any("request", getDomainConfigReq), slog.Any("response", getDomainConfigResp)) @@ -108,7 +109,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 设置域名配置 // REF: https://portal.baishancloud.com/track/document/api/1/1045 setDomainConfigReq := &bssdk.SetDomainConfigRequest{ - Domains: xtypes.ToPtr(d.config.Domain), + Domains: lo.ToPtr(d.config.Domain), Config: &bssdk.DomainConfig{ Https: &bssdk.DomainConfigHttps{ CertId: json.Number(certificateId), @@ -128,9 +129,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // REF: https://portal.baishancloud.com/track/document/downloadPdf/1441 setDomainCertificateReq := &bssdk.SetDomainCertificateRequest{ CertificateId: &d.config.CertificateId, - Name: xtypes.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), - Certificate: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Name: lo.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), + Certificate: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } setDomainCertificateResp, err := d.sdkClient.SetDomainCertificate(setDomainCertificateReq) d.logger.Debug("sdk request 'baishan.SetDomainCertificate'", slog.Any("request", setDomainCertificateReq), slog.Any("response", setDomainCertificateResp)) diff --git a/pkg/core/ssl-deployer/providers/baotapanel-site/baotapanel_site.go b/pkg/core/ssl-deployer/providers/baotapanel-site/baotapanel_site.go index 27380a39e..07d690f14 100644 --- a/pkg/core/ssl-deployer/providers/baotapanel-site/baotapanel_site.go +++ b/pkg/core/ssl-deployer/providers/baotapanel-site/baotapanel_site.go @@ -7,9 +7,10 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" btsdk "github.com/certimate-go/certimate/pkg/sdk3rd/btpanel" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type SSLDeployerProviderConfig struct { @@ -101,7 +102,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 设置站点证书 sslSetBatchCertToSiteReq := &btsdk.SSLSetBatchCertToSiteRequest{ - BatchInfo: xslices.Map(d.config.SiteNames, func(siteName string) *btsdk.SSLSetBatchCertToSiteRequestBatchInfo { + BatchInfo: lo.Map(d.config.SiteNames, func(siteName string, _ int) *btsdk.SSLSetBatchCertToSiteRequestBatchInfo { return &btsdk.SSLSetBatchCertToSiteRequestBatchInfo{ SiteName: siteName, SSLHash: sslCertSaveCertResp.SSLHash, diff --git a/pkg/core/ssl-deployer/providers/baotawaf-console/baotawaf_console.go b/pkg/core/ssl-deployer/providers/baotawaf-console/baotawaf_console.go index 81091f16e..1080a7392 100644 --- a/pkg/core/ssl-deployer/providers/baotawaf-console/baotawaf_console.go +++ b/pkg/core/ssl-deployer/providers/baotawaf-console/baotawaf_console.go @@ -7,9 +7,10 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" btwafsdk "github.com/certimate-go/certimate/pkg/sdk3rd/btwaf" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -57,8 +58,8 @@ func (d *SSLDeployerProvider) SetLogger(logger *slog.Logger) { func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privkeyPEM string) (*core.SSLDeployResult, error) { // 设置面板 SSL configSetCertReq := &btwafsdk.ConfigSetCertRequest{ - CertContent: xtypes.ToPtr(certPEM), - KeyContent: xtypes.ToPtr(privkeyPEM), + CertContent: lo.ToPtr(certPEM), + KeyContent: lo.ToPtr(privkeyPEM), } configSetCertResp, err := d.sdkClient.ConfigSetCert(configSetCertReq) d.logger.Debug("sdk request 'bt.ConfigSetCert'", slog.Any("request", configSetCertReq), slog.Any("response", configSetCertResp)) diff --git a/pkg/core/ssl-deployer/providers/baotawaf-site/baotawaf_site.go b/pkg/core/ssl-deployer/providers/baotawaf-site/baotawaf_site.go index 8955d10f8..6659c62da 100644 --- a/pkg/core/ssl-deployer/providers/baotawaf-site/baotawaf_site.go +++ b/pkg/core/ssl-deployer/providers/baotawaf-site/baotawaf_site.go @@ -7,9 +7,10 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" btwafsdk "github.com/certimate-go/certimate/pkg/sdk3rd/btwaf" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -80,9 +81,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke } getSiteListReq := &btwafsdk.GetSiteListRequest{ - SiteName: xtypes.ToPtr(d.config.SiteName), - Page: xtypes.ToPtr(getSitListPage), - PageSize: xtypes.ToPtr(getSitListPageSize), + SiteName: lo.ToPtr(d.config.SiteName), + Page: lo.ToPtr(getSitListPage), + PageSize: lo.ToPtr(getSitListPageSize), } getSiteListResp, err := d.sdkClient.GetSiteList(getSiteListReq) d.logger.Debug("sdk request 'bt.GetSiteList'", slog.Any("request", getSiteListReq), slog.Any("response", getSiteListResp)) @@ -111,14 +112,14 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 修改站点配置 modifySiteReq := &btwafsdk.ModifySiteRequest{ - SiteId: xtypes.ToPtr(siteId), - Type: xtypes.ToPtr("openCert"), + SiteId: lo.ToPtr(siteId), + Type: lo.ToPtr("openCert"), Server: &btwafsdk.SiteServerInfo{ - ListenSSLPorts: xtypes.ToPtr([]int32{d.config.SitePort}), + ListenSSLPorts: lo.ToPtr([]int32{d.config.SitePort}), SSL: &btwafsdk.SiteServerSSLInfo{ - IsSSL: xtypes.ToPtr(int32(1)), - FullChain: xtypes.ToPtr(certPEM), - PrivateKey: xtypes.ToPtr(privkeyPEM), + IsSSL: lo.ToPtr(int32(1)), + FullChain: lo.ToPtr(certPEM), + PrivateKey: lo.ToPtr(privkeyPEM), }, }, } diff --git a/pkg/core/ssl-deployer/providers/cachefly/cachefly.go b/pkg/core/ssl-deployer/providers/cachefly/cachefly.go index 431385d4b..6b2cf9081 100644 --- a/pkg/core/ssl-deployer/providers/cachefly/cachefly.go +++ b/pkg/core/ssl-deployer/providers/cachefly/cachefly.go @@ -6,9 +6,10 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" cacheflysdk "github.com/certimate-go/certimate/pkg/sdk3rd/cachefly" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -53,8 +54,8 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 上传证书 // REF: https://api.cachefly.com/api/2.5/docs#tag/Certificates/paths/~1certificates/post createCertificateReq := &cacheflysdk.CreateCertificateRequest{ - Certificate: xtypes.ToPtr(certPEM), - CertificateKey: xtypes.ToPtr(privkeyPEM), + Certificate: lo.ToPtr(certPEM), + CertificateKey: lo.ToPtr(privkeyPEM), } createCertificateResp, err := d.sdkClient.CreateCertificate(createCertificateReq) d.logger.Debug("sdk request 'cachefly.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp)) diff --git a/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go b/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go index 7c04873cd..491a7761d 100644 --- a/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go +++ b/pkg/core/ssl-deployer/providers/cdnfly/cdnfly.go @@ -9,9 +9,10 @@ import ( "log/slog" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" cdnflysdk "github.com/certimate-go/certimate/pkg/sdk3rd/cdnfly" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -102,10 +103,10 @@ func (d *SSLDeployerProvider) deployToSite(ctx context.Context, certPEM string, // 添加单个证书 // REF: https://doc.cdnfly.cn/wangzhanzhengshu-v1-certs.html#%E6%B7%BB%E5%8A%A0%E5%8D%95%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%E8%AF%81%E4%B9%A6-%E5%A4%9A%E4%B8%AA%E8%AF%81%E4%B9%A6%E6%97%B6%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F%E4%B8%BA%E6%95%B0%E7%BB%84 createCertificateReq := &cdnflysdk.CreateCertRequest{ - Name: xtypes.ToPtr(fmt.Sprintf("certimate-%d", time.Now().UnixMilli())), - Type: xtypes.ToPtr("custom"), - Cert: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Name: lo.ToPtr(fmt.Sprintf("certimate-%d", time.Now().UnixMilli())), + Type: lo.ToPtr("custom"), + Cert: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } createCertificateResp, err := d.sdkClient.CreateCert(createCertificateReq) d.logger.Debug("sdk request 'cdnfly.CreateCert'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp)) @@ -120,7 +121,7 @@ func (d *SSLDeployerProvider) deployToSite(ctx context.Context, certPEM string, updateSiteHttpsListenMap["cert"] = createCertificateResp.Data updateSiteHttpsListenData, _ := json.Marshal(updateSiteHttpsListenMap) updateSiteReq := &cdnflysdk.UpdateSiteRequest{ - HttpsListen: xtypes.ToPtr(string(updateSiteHttpsListenData)), + HttpsListen: lo.ToPtr(string(updateSiteHttpsListenData)), } updateSiteResp, err := d.sdkClient.UpdateSite(d.config.SiteId, updateSiteReq) d.logger.Debug("sdk request 'cdnfly.UpdateSite'", slog.String("siteId", d.config.SiteId), slog.Any("request", updateSiteReq), slog.Any("response", updateSiteResp)) @@ -139,9 +140,9 @@ func (d *SSLDeployerProvider) deployToCertificate(ctx context.Context, certPEM s // 修改单个证书 // REF: https://doc.cdnfly.cn/wangzhanzhengshu-v1-certs.html#%E4%BF%AE%E6%94%B9%E5%8D%95%E4%B8%AA%E8%AF%81%E4%B9%A6 updateCertReq := &cdnflysdk.UpdateCertRequest{ - Type: xtypes.ToPtr("custom"), - Cert: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Type: lo.ToPtr("custom"), + Cert: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } updateCertResp, err := d.sdkClient.UpdateCert(d.config.CertificateId, updateCertReq) d.logger.Debug("sdk request 'cdnfly.UpdateCert'", slog.String("certId", d.config.CertificateId), slog.Any("request", updateCertReq), slog.Any("response", updateCertResp)) diff --git a/pkg/core/ssl-deployer/providers/ctcccloud-ao/ctcccloud_ao.go b/pkg/core/ssl-deployer/providers/ctcccloud-ao/ctcccloud_ao.go index 0e6d9831f..6dd6c8107 100644 --- a/pkg/core/ssl-deployer/providers/ctcccloud-ao/ctcccloud_ao.go +++ b/pkg/core/ssl-deployer/providers/ctcccloud-ao/ctcccloud_ao.go @@ -7,11 +7,11 @@ import ( "log/slog" "strconv" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/ctcccloud-ao" ctyunao "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/ao" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -82,8 +82,8 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 域名基础及加速配置查询 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=113&api=13412&data=174&isNormal=1&vid=167 getDomainConfigReq := &ctyunao.GetDomainConfigRequest{ - Domain: xtypes.ToPtr(d.config.Domain), - ProductCode: xtypes.ToPtr("020"), + Domain: lo.ToPtr(d.config.Domain), + ProductCode: lo.ToPtr("020"), } getDomainConfigResp, err := d.sdkClient.GetDomainConfig(getDomainConfigReq) d.logger.Debug("sdk request 'cdn.GetDomainConfig'", slog.Any("request", getDomainConfigReq), slog.Any("response", getDomainConfigResp)) @@ -94,9 +94,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 域名基础及加速配置修改 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=113&api=13413&data=174&isNormal=1&vid=167 modifyDomainConfigReq := &ctyunao.ModifyDomainConfigRequest{ - Domain: xtypes.ToPtr(d.config.Domain), - ProductCode: xtypes.ToPtr(getDomainConfigResp.ReturnObj.ProductCode), - Origin: xslices.Map(getDomainConfigResp.ReturnObj.Origin, func(item *ctyunao.DomainOriginConfigWithWeight) *ctyunao.DomainOriginConfig { + Domain: lo.ToPtr(d.config.Domain), + ProductCode: lo.ToPtr(getDomainConfigResp.ReturnObj.ProductCode), + Origin: lo.Map(getDomainConfigResp.ReturnObj.Origin, func(item *ctyunao.DomainOriginConfigWithWeight, _ int) *ctyunao.DomainOriginConfig { weight := item.Weight if weight == 0 { weight = 1 @@ -107,8 +107,8 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke Weight: strconv.Itoa(int(weight)), } }), - HttpsStatus: xtypes.ToPtr("on"), - CertName: xtypes.ToPtr(upres.CertName), + HttpsStatus: lo.ToPtr("on"), + CertName: lo.ToPtr(upres.CertName), } modifyDomainConfigResp, err := d.sdkClient.ModifyDomainConfig(modifyDomainConfigReq) d.logger.Debug("sdk request 'cdn.ModifyDomainConfig'", slog.Any("request", modifyDomainConfigReq), slog.Any("response", modifyDomainConfigResp)) diff --git a/pkg/core/ssl-deployer/providers/ctcccloud-cdn/ctcccloud_cdn.go b/pkg/core/ssl-deployer/providers/ctcccloud-cdn/ctcccloud_cdn.go index dbe2dade3..687c3ec30 100644 --- a/pkg/core/ssl-deployer/providers/ctcccloud-cdn/ctcccloud_cdn.go +++ b/pkg/core/ssl-deployer/providers/ctcccloud-cdn/ctcccloud_cdn.go @@ -6,10 +6,11 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/ctcccloud-cdn" ctyuncdn "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/cdn" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -80,7 +81,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 查询域名配置信息 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=108&api=11304&data=161&isNormal=1&vid=154 queryDomainDetailReq := &ctyuncdn.QueryDomainDetailRequest{ - Domain: xtypes.ToPtr(d.config.Domain), + Domain: lo.ToPtr(d.config.Domain), } queryDomainDetailResp, err := d.sdkClient.QueryDomainDetail(queryDomainDetailReq) d.logger.Debug("sdk request 'cdn.QueryDomainDetail'", slog.Any("request", queryDomainDetailReq), slog.Any("response", queryDomainDetailResp)) @@ -91,9 +92,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 修改域名配置 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=108&api=11308&data=161&isNormal=1&vid=154 updateDomainReq := &ctyuncdn.UpdateDomainRequest{ - Domain: xtypes.ToPtr(d.config.Domain), - HttpsStatus: xtypes.ToPtr("on"), - CertName: xtypes.ToPtr(upres.CertName), + Domain: lo.ToPtr(d.config.Domain), + HttpsStatus: lo.ToPtr("on"), + CertName: lo.ToPtr(upres.CertName), } updateDomainResp, err := d.sdkClient.UpdateDomain(updateDomainReq) d.logger.Debug("sdk request 'cdn.UpdateDomain'", slog.Any("request", updateDomainReq), slog.Any("response", updateDomainResp)) diff --git a/pkg/core/ssl-deployer/providers/ctcccloud-elb/ctcccloud_elb.go b/pkg/core/ssl-deployer/providers/ctcccloud-elb/ctcccloud_elb.go index 6e4375e54..e4ab99d44 100644 --- a/pkg/core/ssl-deployer/providers/ctcccloud-elb/ctcccloud_elb.go +++ b/pkg/core/ssl-deployer/providers/ctcccloud-elb/ctcccloud_elb.go @@ -7,10 +7,11 @@ import ( "log/slog" "strings" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/ctcccloud-elb" ctyunelb "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/elb" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -118,8 +119,8 @@ func (d *SSLDeployerProvider) deployToLoadbalancer(ctx context.Context, cloudCer } listListenersReq := &ctyunelb.ListListenersRequest{ - RegionID: xtypes.ToPtr(d.config.RegionId), - LoadBalancerID: xtypes.ToPtr(d.config.LoadbalancerId), + RegionID: lo.ToPtr(d.config.RegionId), + LoadBalancerID: lo.ToPtr(d.config.LoadbalancerId), } listListenersResp, err := d.sdkClient.ListListeners(listListenersReq) d.logger.Debug("sdk request 'elb.ListListeners'", slog.Any("request", listListenersReq), slog.Any("response", listListenersResp)) @@ -179,9 +180,9 @@ func (d *SSLDeployerProvider) updateListenerCertificate(ctx context.Context, clo // 更新监听器 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=24&api=5652&data=88&isNormal=1&vid=82 setLoadBalancerHTTPSListenerAttributeReq := &ctyunelb.UpdateListenerRequest{ - RegionID: xtypes.ToPtr(d.config.RegionId), - ListenerID: xtypes.ToPtr(cloudListenerId), - CertificateID: xtypes.ToPtr(cloudCertId), + RegionID: lo.ToPtr(d.config.RegionId), + ListenerID: lo.ToPtr(cloudListenerId), + CertificateID: lo.ToPtr(cloudCertId), } setLoadBalancerHTTPSListenerAttributeResp, err := d.sdkClient.UpdateListener(setLoadBalancerHTTPSListenerAttributeReq) d.logger.Debug("sdk request 'elb.UpdateListener'", slog.Any("request", setLoadBalancerHTTPSListenerAttributeReq), slog.Any("response", setLoadBalancerHTTPSListenerAttributeResp)) diff --git a/pkg/core/ssl-deployer/providers/ctcccloud-icdn/ctcccloud_icdn.go b/pkg/core/ssl-deployer/providers/ctcccloud-icdn/ctcccloud_icdn.go index 22f4d27bf..ad589ce08 100644 --- a/pkg/core/ssl-deployer/providers/ctcccloud-icdn/ctcccloud_icdn.go +++ b/pkg/core/ssl-deployer/providers/ctcccloud-icdn/ctcccloud_icdn.go @@ -6,10 +6,11 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/ctcccloud-icdn" ctyunicdn "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/icdn" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -80,7 +81,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 查询域名配置信息 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=112&api=10849&data=173&isNormal=1&vid=166 queryDomainDetailReq := &ctyunicdn.QueryDomainDetailRequest{ - Domain: xtypes.ToPtr(d.config.Domain), + Domain: lo.ToPtr(d.config.Domain), } queryDomainDetailResp, err := d.sdkClient.QueryDomainDetail(queryDomainDetailReq) d.logger.Debug("sdk request 'icdn.QueryDomainDetail'", slog.Any("request", queryDomainDetailReq), slog.Any("response", queryDomainDetailResp)) @@ -91,9 +92,9 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 修改域名配置 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=112&api=10853&data=173&isNormal=1&vid=166 updateDomainReq := &ctyunicdn.UpdateDomainRequest{ - Domain: xtypes.ToPtr(d.config.Domain), - HttpsStatus: xtypes.ToPtr("on"), - CertName: xtypes.ToPtr(upres.CertName), + Domain: lo.ToPtr(d.config.Domain), + HttpsStatus: lo.ToPtr("on"), + CertName: lo.ToPtr(upres.CertName), } updateDomainResp, err := d.sdkClient.UpdateDomain(updateDomainReq) d.logger.Debug("sdk request 'icdn.UpdateDomain'", slog.Any("request", updateDomainReq), slog.Any("response", updateDomainResp)) diff --git a/pkg/core/ssl-deployer/providers/ctcccloud-lvdn/ctcccloud_lvdn.go b/pkg/core/ssl-deployer/providers/ctcccloud-lvdn/ctcccloud_lvdn.go index 47228dde4..971796e0f 100644 --- a/pkg/core/ssl-deployer/providers/ctcccloud-lvdn/ctcccloud_lvdn.go +++ b/pkg/core/ssl-deployer/providers/ctcccloud-lvdn/ctcccloud_lvdn.go @@ -6,10 +6,11 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/ctcccloud-lvdn" ctyunlvdn "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/lvdn" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -80,8 +81,8 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 查询域名配置信息 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=125&api=11473&data=183&isNormal=1&vid=261 queryDomainDetailReq := &ctyunlvdn.QueryDomainDetailRequest{ - Domain: xtypes.ToPtr(d.config.Domain), - ProductCode: xtypes.ToPtr("005"), + Domain: lo.ToPtr(d.config.Domain), + ProductCode: lo.ToPtr("005"), } queryDomainDetailResp, err := d.sdkClient.QueryDomainDetail(queryDomainDetailReq) d.logger.Debug("sdk request 'lvdn.QueryDomainDetail'", slog.Any("request", queryDomainDetailReq), slog.Any("response", queryDomainDetailResp)) @@ -92,10 +93,10 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 修改域名配置 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=108&api=11308&data=161&isNormal=1&vid=154 updateDomainReq := &ctyunlvdn.UpdateDomainRequest{ - Domain: xtypes.ToPtr(d.config.Domain), - ProductCode: xtypes.ToPtr("005"), - HttpsSwitch: xtypes.ToPtr(int32(1)), - CertName: xtypes.ToPtr(upres.CertName), + Domain: lo.ToPtr(d.config.Domain), + ProductCode: lo.ToPtr("005"), + HttpsSwitch: lo.ToPtr(int32(1)), + CertName: lo.ToPtr(upres.CertName), } updateDomainResp, err := d.sdkClient.UpdateDomain(updateDomainReq) d.logger.Debug("sdk request 'lvdn.UpdateDomain'", slog.Any("request", updateDomainReq), slog.Any("response", updateDomainResp)) diff --git a/pkg/core/ssl-deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go b/pkg/core/ssl-deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go index b7293de4b..49cb4064f 100644 --- a/pkg/core/ssl-deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go +++ b/pkg/core/ssl-deployer/providers/huaweicloud-cdn/huaweicloud_cdn.go @@ -10,10 +10,10 @@ import ( hccdn "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2" hccdnmodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2/model" hccdnregion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cdn/v2/region" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/huaweicloud-scm" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -95,7 +95,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 查询加速域名配置 // REF: https://support.huaweicloud.com/api-cdn/ShowDomainFullConfig.html showDomainFullConfigReq := &hccdnmodel.ShowDomainFullConfigRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), DomainName: d.config.Domain, } showDomainFullConfigResp, err := d.sdkClient.ShowDomainFullConfig(showDomainFullConfigReq) @@ -110,12 +110,12 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke updateDomainMultiCertificatesReqBodyContent := &hccdnmodel.UpdateDomainMultiCertificatesRequestBodyContent{} updateDomainMultiCertificatesReqBodyContent.DomainName = d.config.Domain updateDomainMultiCertificatesReqBodyContent.HttpsSwitch = 1 - updateDomainMultiCertificatesReqBodyContent.CertificateType = xtypes.ToPtr(int32(2)) - updateDomainMultiCertificatesReqBodyContent.ScmCertificateId = xtypes.ToPtr(upres.CertId) - updateDomainMultiCertificatesReqBodyContent.CertName = xtypes.ToPtr(upres.CertName) + updateDomainMultiCertificatesReqBodyContent.CertificateType = lo.ToPtr(int32(2)) + updateDomainMultiCertificatesReqBodyContent.ScmCertificateId = lo.ToPtr(upres.CertId) + updateDomainMultiCertificatesReqBodyContent.CertName = lo.ToPtr(upres.CertName) updateDomainMultiCertificatesReqBodyContent = assign(updateDomainMultiCertificatesReqBodyContent, showDomainFullConfigResp.Configs) updateDomainMultiCertificatesReq := &hccdnmodel.UpdateDomainMultiCertificatesRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), Body: &hccdnmodel.UpdateDomainMultiCertificatesRequestBody{ Https: updateDomainMultiCertificatesReqBodyContent, }, @@ -168,11 +168,11 @@ func assign(source *hccdnmodel.UpdateDomainMultiCertificatesRequestBodyContent, } if *target.OriginProtocol == "follow" { - source.AccessOriginWay = xtypes.ToPtr(int32(1)) + source.AccessOriginWay = lo.ToPtr(int32(1)) } else if *target.OriginProtocol == "http" { - source.AccessOriginWay = xtypes.ToPtr(int32(2)) + source.AccessOriginWay = lo.ToPtr(int32(2)) } else if *target.OriginProtocol == "https" { - source.AccessOriginWay = xtypes.ToPtr(int32(3)) + source.AccessOriginWay = lo.ToPtr(int32(3)) } if target.ForceRedirect != nil { @@ -190,7 +190,7 @@ func assign(source *hccdnmodel.UpdateDomainMultiCertificatesRequestBodyContent, if target.Https != nil { if *target.Https.Http2Status == "on" { - source.Http2 = xtypes.ToPtr(int32(1)) + source.Http2 = lo.ToPtr(int32(1)) } } diff --git a/pkg/core/ssl-deployer/providers/huaweicloud-elb/huaweicloud_elb.go b/pkg/core/ssl-deployer/providers/huaweicloud-elb/huaweicloud_elb.go index 6325fbe80..3723f1265 100644 --- a/pkg/core/ssl-deployer/providers/huaweicloud-elb/huaweicloud_elb.go +++ b/pkg/core/ssl-deployer/providers/huaweicloud-elb/huaweicloud_elb.go @@ -14,11 +14,11 @@ import ( hciam "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3" hciammodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3/model" hciamregion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3/region" + "github.com/samber/lo" "golang.org/x/exp/slices" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/huaweicloud-elb" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -126,8 +126,8 @@ func (d *SSLDeployerProvider) deployToCertificate(ctx context.Context, certPEM s CertificateId: d.config.CertificateId, Body: &hcelbmodel.UpdateCertificateRequestBody{ Certificate: &hcelbmodel.UpdateCertificateOption{ - Certificate: xtypes.ToPtr(certPEM), - PrivateKey: xtypes.ToPtr(privkeyPEM), + Certificate: lo.ToPtr(certPEM), + PrivateKey: lo.ToPtr(privkeyPEM), }, }, } @@ -169,13 +169,13 @@ func (d *SSLDeployerProvider) deployToLoadbalancer(ctx context.Context, certPEM } listListenersReq := &hcelbmodel.ListListenersRequest{ - Limit: xtypes.ToPtr(listListenersLimit), + Limit: lo.ToPtr(listListenersLimit), Marker: listListenersMarker, Protocol: &[]string{"HTTPS", "TERMINATED_HTTPS"}, LoadbalancerId: &[]string{showLoadBalancerResp.Loadbalancer.Id}, } if d.config.EnterpriseProjectId != "" { - listListenersReq.EnterpriseProjectId = xtypes.ToPtr([]string{d.config.EnterpriseProjectId}) + listListenersReq.EnterpriseProjectId = lo.ToPtr([]string{d.config.EnterpriseProjectId}) } listListenersResp, err := d.sdkClient.ListListeners(listListenersReq) d.logger.Debug("sdk request 'elb.ListListeners'", slog.Any("request", listListenersReq), slog.Any("response", listListenersResp)) @@ -269,7 +269,7 @@ func (d *SSLDeployerProvider) modifyListenerCertificate(ctx context.Context, clo ListenerId: cloudListenerId, Body: &hcelbmodel.UpdateListenerRequestBody{ Listener: &hcelbmodel.UpdateListenerOption{ - DefaultTlsContainerRef: xtypes.ToPtr(cloudCertId), + DefaultTlsContainerRef: lo.ToPtr(cloudCertId), }, }, } @@ -317,7 +317,7 @@ func (d *SSLDeployerProvider) modifyListenerCertificate(ctx context.Context, clo } if showListenerResp.Listener.SniMatchAlgo != "" { - updateListenerReq.Body.Listener.SniMatchAlgo = xtypes.ToPtr(showListenerResp.Listener.SniMatchAlgo) + updateListenerReq.Body.Listener.SniMatchAlgo = lo.ToPtr(showListenerResp.Listener.SniMatchAlgo) } } updateListenerResp, err := d.sdkClient.UpdateListener(updateListenerReq) diff --git a/pkg/core/ssl-deployer/providers/huaweicloud-waf/huaweicloud_waf.go b/pkg/core/ssl-deployer/providers/huaweicloud-waf/huaweicloud_waf.go index 900594882..a0950ef5e 100644 --- a/pkg/core/ssl-deployer/providers/huaweicloud-waf/huaweicloud_waf.go +++ b/pkg/core/ssl-deployer/providers/huaweicloud-waf/huaweicloud_waf.go @@ -15,10 +15,10 @@ import ( hcwaf "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1" hcwafmodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/model" hcwafregion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/region" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/huaweicloud-waf" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -128,7 +128,7 @@ func (d *SSLDeployerProvider) deployToCertificate(ctx context.Context, certPEM s // 查询证书 // REF: https://support.huaweicloud.com/api-waf/ShowCertificate.html showCertificateReq := &hcwafmodel.ShowCertificateRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), CertificateId: d.config.CertificateId, } showCertificateResp, err := d.sdkClient.ShowCertificate(showCertificateReq) @@ -140,12 +140,12 @@ func (d *SSLDeployerProvider) deployToCertificate(ctx context.Context, certPEM s // 更新证书 // REF: https://support.huaweicloud.com/api-waf/UpdateCertificate.html updateCertificateReq := &hcwafmodel.UpdateCertificateRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), CertificateId: d.config.CertificateId, Body: &hcwafmodel.UpdateCertificateRequestBody{ Name: *showCertificateResp.Name, - Content: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Content: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), }, } updateCertificateResp, err := d.sdkClient.UpdateCertificate(updateCertificateReq) @@ -183,10 +183,10 @@ func (d *SSLDeployerProvider) deployToCloudServer(ctx context.Context, certPEM s } listHostReq := &hcwafmodel.ListHostRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), - Hostname: xtypes.ToPtr(strings.TrimPrefix(d.config.Domain, "*")), - Page: xtypes.ToPtr(listHostPage), - Pagesize: xtypes.ToPtr(listHostPageSize), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), + Hostname: lo.ToPtr(strings.TrimPrefix(d.config.Domain, "*")), + Page: lo.ToPtr(listHostPage), + Pagesize: lo.ToPtr(listHostPageSize), } listHostResp, err := d.sdkClient.ListHost(listHostReq) d.logger.Debug("sdk request 'waf.ListHost'", slog.Any("request", listHostReq), slog.Any("response", listHostResp)) @@ -216,11 +216,11 @@ func (d *SSLDeployerProvider) deployToCloudServer(ctx context.Context, certPEM s // 更新云模式防护域名的配置 // REF: https://support.huaweicloud.com/api-waf/UpdateHost.html updateHostReq := &hcwafmodel.UpdateHostRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), InstanceId: hostId, Body: &hcwafmodel.UpdateHostRequestBody{ - Certificateid: xtypes.ToPtr(upres.CertId), - Certificatename: xtypes.ToPtr(upres.CertName), + Certificateid: lo.ToPtr(upres.CertId), + Certificatename: lo.ToPtr(upres.CertName), }, } updateHostResp, err := d.sdkClient.UpdateHost(updateHostReq) @@ -258,10 +258,10 @@ func (d *SSLDeployerProvider) deployToPremiumHost(ctx context.Context, certPEM s } listPremiumHostReq := &hcwafmodel.ListPremiumHostRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), - Hostname: xtypes.ToPtr(strings.TrimPrefix(d.config.Domain, "*")), - Page: xtypes.ToPtr(fmt.Sprintf("%d", listPremiumHostPage)), - Pagesize: xtypes.ToPtr(fmt.Sprintf("%d", listPremiumHostPageSize)), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), + Hostname: lo.ToPtr(strings.TrimPrefix(d.config.Domain, "*")), + Page: lo.ToPtr(fmt.Sprintf("%d", listPremiumHostPage)), + Pagesize: lo.ToPtr(fmt.Sprintf("%d", listPremiumHostPageSize)), } listPremiumHostResp, err := d.sdkClient.ListPremiumHost(listPremiumHostReq) d.logger.Debug("sdk request 'waf.ListPremiumHost'", slog.Any("request", listPremiumHostReq), slog.Any("response", listPremiumHostResp)) @@ -291,11 +291,11 @@ func (d *SSLDeployerProvider) deployToPremiumHost(ctx context.Context, certPEM s // 修改独享模式域名配置 // REF: https://support.huaweicloud.com/api-waf/UpdatePremiumHost.html updatePremiumHostReq := &hcwafmodel.UpdatePremiumHostRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(d.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(d.config.EnterpriseProjectId), HostId: hostId, Body: &hcwafmodel.UpdatePremiumHostRequestBody{ - Certificateid: xtypes.ToPtr(upres.CertId), - Certificatename: xtypes.ToPtr(upres.CertName), + Certificateid: lo.ToPtr(upres.CertId), + Certificatename: lo.ToPtr(upres.CertName), }, } updatePremiumHostResp, err := d.sdkClient.UpdatePremiumHost(updatePremiumHostReq) diff --git a/pkg/core/ssl-deployer/providers/jdcloud-alb/jdcloud_alb.go b/pkg/core/ssl-deployer/providers/jdcloud-alb/jdcloud_alb.go index 121f1bec6..c6b0e3258 100644 --- a/pkg/core/ssl-deployer/providers/jdcloud-alb/jdcloud_alb.go +++ b/pkg/core/ssl-deployer/providers/jdcloud-alb/jdcloud_alb.go @@ -12,10 +12,10 @@ import ( jdlbapi "github.com/jdcloud-api/jdcloud-sdk-go/services/lb/apis" jdlbclient "github.com/jdcloud-api/jdcloud-sdk-go/services/lb/client" jdlbmodel "github.com/jdcloud-api/jdcloud-sdk-go/services/lb/models" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/jdcloud-ssl" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type SSLDeployerProviderConfig struct { @@ -225,7 +225,7 @@ func (d *SSLDeployerProvider) updateListenerCertificate(ctx context.Context, clo } else { // 指定 SNI,需部署到扩展证书 - extCertSpecs := xslices.Filter(describeListenerResp.Result.Listener.ExtensionCertificateSpecs, func(extCertSpec jdlbmodel.ExtensionCertificateSpec) bool { + extCertSpecs := lo.Filter(describeListenerResp.Result.Listener.ExtensionCertificateSpecs, func(extCertSpec jdlbmodel.ExtensionCertificateSpec, _ int) bool { return extCertSpec.Domain == d.config.Domain }) if len(extCertSpecs) == 0 { @@ -237,7 +237,7 @@ func (d *SSLDeployerProvider) updateListenerCertificate(ctx context.Context, clo updateListenerCertificatesReq := jdlbapi.NewUpdateListenerCertificatesRequest( d.config.RegionId, cloudListenerId, - xslices.Map(extCertSpecs, func(extCertSpec jdlbmodel.ExtensionCertificateSpec) jdlbmodel.ExtCertificateUpdateSpec { + lo.Map(extCertSpecs, func(extCertSpec jdlbmodel.ExtensionCertificateSpec, _ int) jdlbmodel.ExtCertificateUpdateSpec { return jdlbmodel.ExtCertificateUpdateSpec{ CertificateBindId: extCertSpec.CertificateBindId, CertificateId: &cloudCertId, diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-cdn/tencentcloud_cdn.go b/pkg/core/ssl-deployer/providers/tencentcloud-cdn/tencentcloud_cdn.go index a605acd23..9af49f98a 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-cdn/tencentcloud_cdn.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-cdn/tencentcloud_cdn.go @@ -7,6 +7,7 @@ import ( "log/slog" "strings" + "github.com/samber/lo" tccdn "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" @@ -14,7 +15,6 @@ import ( "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -55,9 +55,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go b/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go index 892bc9446..ee0b9a700 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-clb/tencentcloud_clb.go @@ -8,6 +8,7 @@ import ( "strings" "time" + "github.com/samber/lo" tcclb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" @@ -15,7 +16,6 @@ import ( "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -67,9 +67,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { @@ -176,10 +175,13 @@ func (d *SSLDeployerProvider) deployViaSslService(ctx context.Context, cloudCert return fmt.Errorf("failed to execute sdk request 'ssl.DescribeHostDeployRecordDetail': %w", err) } - var runningCount, succeededCount, failedCount, totalCount int64 + var pendingCount, runningCount, succeededCount, failedCount, totalCount int64 if describeHostDeployRecordDetailResp.Response.TotalCount == nil { return errors.New("unexpected tencentcloud deployment job status") } else { + if describeHostDeployRecordDetailResp.Response.PendingTotalCount != nil { + pendingCount = *describeHostDeployRecordDetailResp.Response.PendingTotalCount + } if describeHostDeployRecordDetailResp.Response.RunningTotalCount != nil { runningCount = *describeHostDeployRecordDetailResp.Response.RunningTotalCount } @@ -201,7 +203,7 @@ func (d *SSLDeployerProvider) deployViaSslService(ctx context.Context, cloudCert } } - d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (running: %d, succeeded: %d, failed: %d, total: %d) ...", runningCount, succeededCount, failedCount, totalCount)) + d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (pending: %d, running: %d, succeeded: %d, failed: %d, total: %d) ...", pendingCount, runningCount, succeededCount, failedCount, totalCount)) time.Sleep(time.Second * 5) } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go b/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go index 71b415378..d0d0e6492 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-cos/tencentcloud_cos.go @@ -123,10 +123,13 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke return nil, fmt.Errorf("failed to execute sdk request 'ssl.DescribeHostDeployRecordDetail': %w", err) } - var runningCount, succeededCount, failedCount, totalCount int64 + var pendingCount, runningCount, succeededCount, failedCount, totalCount int64 if describeHostDeployRecordDetailResp.Response.TotalCount == nil { return nil, errors.New("unexpected tencentcloud deployment job status") } else { + if describeHostDeployRecordDetailResp.Response.PendingTotalCount != nil { + pendingCount = *describeHostDeployRecordDetailResp.Response.PendingTotalCount + } if describeHostDeployRecordDetailResp.Response.RunningTotalCount != nil { runningCount = *describeHostDeployRecordDetailResp.Response.RunningTotalCount } @@ -148,7 +151,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke } } - d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (running: %d, succeeded: %d, failed: %d, total: %d) ...", runningCount, succeededCount, failedCount, totalCount)) + d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (pending: %d, running: %d, succeeded: %d, failed: %d, total: %d) ...", pendingCount, runningCount, succeededCount, failedCount, totalCount)) time.Sleep(time.Second * 5) } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-css/tencentcloud_css.go b/pkg/core/ssl-deployer/providers/tencentcloud-css/tencentcloud_css.go index cdfbc3d82..6a3147424 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-css/tencentcloud_css.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-css/tencentcloud_css.go @@ -7,13 +7,13 @@ import ( "log/slog" "strings" + "github.com/samber/lo" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" tclive "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live/v20180801" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -49,9 +49,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-ecdn/tencentcloud_ecdn.go b/pkg/core/ssl-deployer/providers/tencentcloud-ecdn/tencentcloud_ecdn.go index 4984496ef..29b0ce0e2 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-ecdn/tencentcloud_ecdn.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-ecdn/tencentcloud_ecdn.go @@ -7,6 +7,7 @@ import ( "log/slog" "strings" + "github.com/samber/lo" tccdn "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" @@ -14,7 +15,6 @@ import ( "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -55,9 +55,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-eo/tencentcloud_eo.go b/pkg/core/ssl-deployer/providers/tencentcloud-eo/tencentcloud_eo.go index e2fcaf7d4..15559306c 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-eo/tencentcloud_eo.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-eo/tencentcloud_eo.go @@ -7,13 +7,13 @@ import ( "log/slog" "strings" + "github.com/samber/lo" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" tcteo "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo/v20220901" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -51,9 +51,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-gaap/tencentcloud_gaap.go b/pkg/core/ssl-deployer/providers/tencentcloud-gaap/tencentcloud_gaap.go index c6d32af46..f1299a9ef 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-gaap/tencentcloud_gaap.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-gaap/tencentcloud_gaap.go @@ -7,14 +7,13 @@ import ( "log/slog" "strings" + "github.com/samber/lo" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" tcgaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -56,9 +55,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { @@ -137,7 +135,7 @@ func (d *SSLDeployerProvider) modifyHttpsListenerCertificate(ctx context.Context // 修改 HTTPS 监听器配置 // REF: https://cloud.tencent.com/document/api/608/36996 modifyHTTPSListenerAttributeReq := tcgaap.NewModifyHTTPSListenerAttributeRequest() - modifyHTTPSListenerAttributeReq.ProxyId = xtypes.ToPtrOrZeroNil(d.config.ProxyId) + modifyHTTPSListenerAttributeReq.ProxyId = lo.EmptyableToPtr(d.config.ProxyId) modifyHTTPSListenerAttributeReq.ListenerId = common.StringPtr(cloudListenerId) modifyHTTPSListenerAttributeReq.CertificateId = common.StringPtr(cloudCertId) modifyHTTPSListenerAttributeResp, err := d.sdkClient.ModifyHTTPSListenerAttribute(modifyHTTPSListenerAttributeReq) diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-scf/tencentcloud_scf.go b/pkg/core/ssl-deployer/providers/tencentcloud-scf/tencentcloud_scf.go index 83f1da377..d9b90fd10 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-scf/tencentcloud_scf.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-scf/tencentcloud_scf.go @@ -7,13 +7,13 @@ import ( "log/slog" "strings" + "github.com/samber/lo" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" tcscf "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf/v20180416" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -51,9 +51,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go index 65a269911..a3f6f0157 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-deploy/tencentcloud_ssl_deploy.go @@ -124,10 +124,13 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke return nil, fmt.Errorf("failed to execute sdk request 'ssl.DescribeHostDeployRecordDetail': %w", err) } - var runningCount, succeededCount, failedCount, totalCount int64 + var pendingCount, runningCount, succeededCount, failedCount, totalCount int64 if describeHostDeployRecordDetailResp.Response.TotalCount == nil { return nil, errors.New("unexpected tencentcloud deployment job status") } else { + if describeHostDeployRecordDetailResp.Response.PendingTotalCount != nil { + pendingCount = *describeHostDeployRecordDetailResp.Response.PendingTotalCount + } if describeHostDeployRecordDetailResp.Response.RunningTotalCount != nil { runningCount = *describeHostDeployRecordDetailResp.Response.RunningTotalCount } @@ -149,7 +152,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke } } - d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (running: %d, succeeded: %d, failed: %d, total: %d) ...", runningCount, succeededCount, failedCount, totalCount)) + d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (pending: %d, running: %d, succeeded: %d, failed: %d, total: %d) ...", pendingCount, runningCount, succeededCount, failedCount, totalCount)) time.Sleep(time.Second * 5) } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go index ae0281056..4395818e1 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-ssl-update/tencentcloud_ssl_update.go @@ -157,10 +157,13 @@ func (d *SSLDeployerProvider) executeUpdateCertificateInstance(ctx context.Conte return fmt.Errorf("failed to execute sdk request 'ssl.DescribeHostUpdateRecordDetail': %w", err) } - var runningCount, succeededCount, failedCount, totalCount int64 + var pendingCount, runningCount, succeededCount, failedCount, totalCount int64 if describeHostUpdateRecordDetailResp.Response.TotalCount == nil { return errors.New("unexpected tencentcloud deployment job status") } else { + if describeHostUpdateRecordDetailResp.Response.PendingTotalCount != nil { + pendingCount = *describeHostUpdateRecordDetailResp.Response.PendingTotalCount + } if describeHostUpdateRecordDetailResp.Response.RunningTotalCount != nil { runningCount = *describeHostUpdateRecordDetailResp.Response.RunningTotalCount } @@ -182,7 +185,7 @@ func (d *SSLDeployerProvider) executeUpdateCertificateInstance(ctx context.Conte } } - d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (running: %d, succeeded: %d, failed: %d, total: %d) ...", runningCount, succeededCount, failedCount, totalCount)) + d.logger.Info(fmt.Sprintf("waiting for tencentcloud deployment job completion (pending: %d, running: %d, succeeded: %d, failed: %d, total: %d) ...", pendingCount, runningCount, succeededCount, failedCount, totalCount)) time.Sleep(time.Second * 5) } diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-vod/tencentcloud_vod.go b/pkg/core/ssl-deployer/providers/tencentcloud-vod/tencentcloud_vod.go index 9a1ece3fd..40cfd83df 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-vod/tencentcloud_vod.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-vod/tencentcloud_vod.go @@ -7,13 +7,13 @@ import ( "log/slog" "strings" + "github.com/samber/lo" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" tcvod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod/v20180717" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -51,9 +51,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/tencentcloud-waf/tencentcloud_waf.go b/pkg/core/ssl-deployer/providers/tencentcloud-waf/tencentcloud_waf.go index 3bad8d411..1ef0afae6 100644 --- a/pkg/core/ssl-deployer/providers/tencentcloud-waf/tencentcloud_waf.go +++ b/pkg/core/ssl-deployer/providers/tencentcloud-waf/tencentcloud_waf.go @@ -7,13 +7,13 @@ import ( "log/slog" "strings" + "github.com/samber/lo" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" tcwaf "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/tencentcloud-ssl" - "github.com/certimate-go/certimate/pkg/utils/ifelse" ) type SSLDeployerProviderConfig struct { @@ -55,9 +55,8 @@ func NewSSLDeployerProvider(config *SSLDeployerProviderConfig) (*SSLDeployerProv sslmgr, err := sslmgrsp.NewSSLManagerProvider(&sslmgrsp.SSLManagerProviderConfig{ SecretId: config.SecretId, SecretKey: config.SecretKey, - Endpoint: ifelse. - If[string](strings.HasSuffix(strings.TrimSpace(config.Endpoint), "intl.tencentcloudapi.com")). - Then("ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 + Endpoint: lo. + If(strings.HasSuffix(config.Endpoint, "intl.tencentcloudapi.com"), "ssl.intl.tencentcloudapi.com"). // 国际站使用独立的接口端点 Else(""), }) if err != nil { diff --git a/pkg/core/ssl-deployer/providers/volcengine-alb/volcengine_alb.go b/pkg/core/ssl-deployer/providers/volcengine-alb/volcengine_alb.go index 2e561f758..592e963d9 100644 --- a/pkg/core/ssl-deployer/providers/volcengine-alb/volcengine_alb.go +++ b/pkg/core/ssl-deployer/providers/volcengine-alb/volcengine_alb.go @@ -6,13 +6,13 @@ import ( "fmt" "log/slog" + "github.com/samber/lo" vealb "github.com/volcengine/volcengine-go-sdk/service/alb" ve "github.com/volcengine/volcengine-go-sdk/volcengine" vesession "github.com/volcengine/volcengine-go-sdk/volcengine/session" "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/volcengine-certcenter" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type SSLDeployerProviderConfig struct { @@ -232,14 +232,14 @@ func (d *SSLDeployerProvider) updateListenerCertificate(ctx context.Context, clo // REF: https://www.volcengine.com/docs/6767/113683 modifyListenerAttributesReq := &vealb.ModifyListenerAttributesInput{ ListenerId: ve.String(cloudListenerId), - DomainExtensions: xslices.Map( - xslices.Filter( + DomainExtensions: lo.Map( + lo.Filter( describeListenerAttributesResp.DomainExtensions, - func(domain *vealb.DomainExtensionForDescribeListenerAttributesOutput) bool { + func(domain *vealb.DomainExtensionForDescribeListenerAttributesOutput, _ int) bool { return *domain.Domain == d.config.Domain }, ), - func(domain *vealb.DomainExtensionForDescribeListenerAttributesOutput) *vealb.DomainExtensionForModifyListenerAttributesInput { + func(domain *vealb.DomainExtensionForDescribeListenerAttributesOutput, _ int) *vealb.DomainExtensionForModifyListenerAttributesInput { return &vealb.DomainExtensionForModifyListenerAttributesInput{ DomainExtensionId: domain.DomainExtensionId, Domain: domain.Domain, diff --git a/pkg/core/ssl-deployer/providers/wangsu-cdn/wangsu_cdn.go b/pkg/core/ssl-deployer/providers/wangsu-cdn/wangsu_cdn.go index 8ccce8457..88c9a95ea 100644 --- a/pkg/core/ssl-deployer/providers/wangsu-cdn/wangsu_cdn.go +++ b/pkg/core/ssl-deployer/providers/wangsu-cdn/wangsu_cdn.go @@ -8,10 +8,11 @@ import ( "strconv" "strings" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/wangsu-certificate" wangsusdk "github.com/certimate-go/certimate/pkg/sdk3rd/wangsu/cdn" - xslices "github.com/certimate-go/certimate/pkg/utils/slices" ) type SSLDeployerProviderConfig struct { @@ -84,7 +85,7 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke certId, _ := strconv.ParseInt(upres.CertId, 10, 64) batchUpdateCertificateConfigReq := &wangsusdk.BatchUpdateCertificateConfigRequest{ CertificateId: certId, - DomainNames: xslices.Map(d.config.Domains, func(domain string) string { + DomainNames: lo.Map(d.config.Domains, func(domain string, _ int) string { // "*.example.com" → ".example.com",适配网宿云 CDN 要求的泛域名格式 return strings.TrimPrefix(domain, "*") }), diff --git a/pkg/core/ssl-deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go b/pkg/core/ssl-deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go index becc7de13..7bd651291 100644 --- a/pkg/core/ssl-deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go +++ b/pkg/core/ssl-deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go @@ -16,10 +16,11 @@ import ( "strconv" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" wangsucdn "github.com/certimate-go/certimate/pkg/sdk3rd/wangsu/cdnpro" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -98,10 +99,10 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke return nil, fmt.Errorf("failed to encrypt private key: %w", err) } certificateNewVersionInfo := &wangsucdn.CertificateVersionInfo{ - PrivateKey: xtypes.ToPtr(encryptedPrivateKey), - Certificate: xtypes.ToPtr(certPEM), + PrivateKey: lo.ToPtr(encryptedPrivateKey), + Certificate: lo.ToPtr(certPEM), IdentificationInfo: &wangsucdn.CertificateVersionIdentificationInfo{ - CommonName: xtypes.ToPtr(certX509.Subject.CommonName), + CommonName: lo.ToPtr(certX509.Subject.CommonName), SubjectAlternativeNames: &certX509.DNSNames, }, } @@ -120,8 +121,8 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 创建证书 createCertificateReq := &wangsucdn.CreateCertificateRequest{ Timestamp: timestamp, - Name: xtypes.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), - AutoRenew: xtypes.ToPtr("Off"), + Name: lo.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), + AutoRenew: lo.ToPtr("Off"), NewVersion: certificateNewVersionInfo, } createCertificateResp, err := d.sdkClient.CreateCertificate(createCertificateReq) @@ -143,8 +144,8 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 更新证书 updateCertificateReq := &wangsucdn.UpdateCertificateRequest{ Timestamp: timestamp, - Name: xtypes.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), - AutoRenew: xtypes.ToPtr("Off"), + Name: lo.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), + AutoRenew: lo.ToPtr("Off"), NewVersion: certificateNewVersionInfo, } updateCertificateResp, err := d.sdkClient.UpdateCertificate(d.config.CertificateId, updateCertificateReq) @@ -171,18 +172,18 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 创建部署任务 // REF: https://www.wangsu.com/document/api-doc/27034 createDeploymentTaskReq := &wangsucdn.CreateDeploymentTaskRequest{ - Name: xtypes.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), - Target: xtypes.ToPtr(d.config.Environment), + Name: lo.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), + Target: lo.ToPtr(d.config.Environment), Actions: &[]wangsucdn.DeploymentTaskActionInfo{ { - Action: xtypes.ToPtr("deploy_cert"), - CertificateId: xtypes.ToPtr(wangsuCertId), - Version: xtypes.ToPtr(wangsuCertVer), + Action: lo.ToPtr("deploy_cert"), + CertificateId: lo.ToPtr(wangsuCertId), + Version: lo.ToPtr(wangsuCertVer), }, }, } if d.config.WebhookId != "" { - createDeploymentTaskReq.Webhook = xtypes.ToPtr(d.config.WebhookId) + createDeploymentTaskReq.Webhook = lo.ToPtr(d.config.WebhookId) } createDeploymentTaskResp, err := d.sdkClient.CreateDeploymentTask(createDeploymentTaskReq) d.logger.Debug("sdk request 'cdnpro.CreateCertificate'", slog.Any("request", createDeploymentTaskReq), slog.Any("response", createDeploymentTaskResp)) diff --git a/pkg/core/ssl-deployer/providers/wangsu-certificate/wangsu_certificate.go b/pkg/core/ssl-deployer/providers/wangsu-certificate/wangsu_certificate.go index 196456155..eac71a46c 100644 --- a/pkg/core/ssl-deployer/providers/wangsu-certificate/wangsu_certificate.go +++ b/pkg/core/ssl-deployer/providers/wangsu-certificate/wangsu_certificate.go @@ -7,10 +7,11 @@ import ( "log/slog" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" sslmgrsp "github.com/certimate-go/certimate/pkg/core/ssl-manager/providers/wangsu-certificate" wangsusdk "github.com/certimate-go/certimate/pkg/sdk3rd/wangsu/certificate" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLDeployerProviderConfig struct { @@ -79,10 +80,10 @@ func (d *SSLDeployerProvider) Deploy(ctx context.Context, certPEM string, privke // 修改证书 // REF: https://www.wangsu.com/document/api-doc/25568?productCode=certificatemanagement updateCertificateReq := &wangsusdk.UpdateCertificateRequest{ - Name: xtypes.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), - Certificate: xtypes.ToPtr(certPEM), - PrivateKey: xtypes.ToPtr(privkeyPEM), - Comment: xtypes.ToPtr("upload from certimate"), + Name: lo.ToPtr(fmt.Sprintf("certimate_%d", time.Now().UnixMilli())), + Certificate: lo.ToPtr(certPEM), + PrivateKey: lo.ToPtr(privkeyPEM), + Comment: lo.ToPtr("upload from certimate"), } updateCertificateResp, err := d.sdkClient.UpdateCertificate(d.config.CertificateId, updateCertificateReq) d.logger.Debug("sdk request 'certificatemanagement.UpdateCertificate'", slog.Any("request", updateCertificateReq), slog.Any("response", updateCertificateResp)) diff --git a/pkg/core/ssl-manager/providers/aliyun-cas/aliyun_cas.go b/pkg/core/ssl-manager/providers/aliyun-cas/aliyun_cas.go index d445fd797..d76eb357d 100644 --- a/pkg/core/ssl-manager/providers/aliyun-cas/aliyun_cas.go +++ b/pkg/core/ssl-manager/providers/aliyun-cas/aliyun_cas.go @@ -11,10 +11,10 @@ import ( alicas "github.com/alibabacloud-go/cas-20200407/v3/client" aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -81,7 +81,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } listUserCertificateOrderReq := &alicas.ListUserCertificateOrderRequest{ - ResourceGroupId: xtypes.ToPtrOrZeroNil(m.config.ResourceGroupId), + ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId), CurrentPage: tea.Int64(listUserCertificateOrderPage), ShowSize: tea.Int64(listUserCertificateOrderLimit), OrderType: tea.String("CERT"), @@ -157,7 +157,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 上传新证书 // REF: https://help.aliyun.com/zh/ssl-certificate/developer-reference/api-cas-2020-04-07-uploadusercertificate uploadUserCertificateReq := &alicas.UploadUserCertificateRequest{ - ResourceGroupId: xtypes.ToPtrOrZeroNil(m.config.ResourceGroupId), + ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId), Name: tea.String(certName), Cert: tea.String(certPEM), Key: tea.String(privkeyPEM), diff --git a/pkg/core/ssl-manager/providers/aliyun-slb/aliyun_slb.go b/pkg/core/ssl-manager/providers/aliyun-slb/aliyun_slb.go index 3bf2aa90e..a761dcc6d 100644 --- a/pkg/core/ssl-manager/providers/aliyun-slb/aliyun_slb.go +++ b/pkg/core/ssl-manager/providers/aliyun-slb/aliyun_slb.go @@ -14,10 +14,10 @@ import ( aliopen "github.com/alibabacloud-go/darabonba-openapi/v2/client" alislb "github.com/alibabacloud-go/slb-20140515/v4/client" "github.com/alibabacloud-go/tea/tea" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -74,7 +74,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 查询证书列表,避免重复上传 // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-describeservercertificates describeServerCertificatesReq := &alislb.DescribeServerCertificatesRequest{ - ResourceGroupId: xtypes.ToPtrOrZeroNil(m.config.ResourceGroupId), + ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId), RegionId: tea.String(m.config.Region), } describeServerCertificatesResp, err := m.sdkClient.DescribeServerCertificates(describeServerCertificatesReq) @@ -113,7 +113,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 上传新证书 // REF: https://help.aliyun.com/zh/slb/classic-load-balancer/developer-reference/api-slb-2014-05-15-uploadservercertificate uploadServerCertificateReq := &alislb.UploadServerCertificateRequest{ - ResourceGroupId: xtypes.ToPtrOrZeroNil(m.config.ResourceGroupId), + ResourceGroupId: lo.EmptyableToPtr(m.config.ResourceGroupId), RegionId: tea.String(m.config.Region), ServerCertificateName: tea.String(certName), ServerCertificate: tea.String(certPEM), diff --git a/pkg/core/ssl-manager/providers/ctcccloud-ao/ctcccloud_ao.go b/pkg/core/ssl-manager/providers/ctcccloud-ao/ctcccloud_ao.go index b2b74e7b3..be382a0e4 100644 --- a/pkg/core/ssl-manager/providers/ctcccloud-ao/ctcccloud_ao.go +++ b/pkg/core/ssl-manager/providers/ctcccloud-ao/ctcccloud_ao.go @@ -9,10 +9,11 @@ import ( "strings" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" ctyunao "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/ao" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -74,9 +75,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } listCertsReq := &ctyunao.ListCertsRequest{ - Page: xtypes.ToPtr(listCertPage), - PerPage: xtypes.ToPtr(listCertPerPage), - UsageMode: xtypes.ToPtr(int32(0)), + Page: lo.ToPtr(listCertPage), + PerPage: lo.ToPtr(listCertPerPage), + UsageMode: lo.ToPtr(int32(0)), } listCertsResp, err := m.sdkClient.ListCerts(listCertsReq) m.logger.Debug("sdk request 'ao.ListCerts'", slog.Any("request", listCertsReq), slog.Any("response", listCertsResp)) @@ -106,7 +107,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 查询证书详情 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=113&api=13015&data=174&isNormal=1&vid=167 queryCertReq := &ctyunao.QueryCertRequest{ - Id: xtypes.ToPtr(certRecord.Id), + Id: lo.ToPtr(certRecord.Id), } queryCertResp, err := m.sdkClient.QueryCert(queryCertReq) m.logger.Debug("sdk request 'ao.QueryCert'", slog.Any("request", queryCertReq), slog.Any("response", queryCertResp)) @@ -150,9 +151,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 创建证书 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=113&api=13014&data=174&isNormal=1&vid=167 createCertReq := &ctyunao.CreateCertRequest{ - Name: xtypes.ToPtr(certName), - Certs: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Name: lo.ToPtr(certName), + Certs: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } createCertResp, err := m.sdkClient.CreateCert(createCertReq) m.logger.Debug("sdk request 'ao.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp)) diff --git a/pkg/core/ssl-manager/providers/ctcccloud-cdn/ctcccloud_cdn.go b/pkg/core/ssl-manager/providers/ctcccloud-cdn/ctcccloud_cdn.go index 3158d3776..48b5a0399 100644 --- a/pkg/core/ssl-manager/providers/ctcccloud-cdn/ctcccloud_cdn.go +++ b/pkg/core/ssl-manager/providers/ctcccloud-cdn/ctcccloud_cdn.go @@ -9,10 +9,11 @@ import ( "strings" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" ctyuncdn "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/cdn" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -74,9 +75,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } queryCertListReq := &ctyuncdn.QueryCertListRequest{ - Page: xtypes.ToPtr(queryCertListPage), - PerPage: xtypes.ToPtr(queryCertListPerPage), - UsageMode: xtypes.ToPtr(int32(0)), + Page: lo.ToPtr(queryCertListPage), + PerPage: lo.ToPtr(queryCertListPerPage), + UsageMode: lo.ToPtr(int32(0)), } queryCertListResp, err := m.sdkClient.QueryCertList(queryCertListReq) m.logger.Debug("sdk request 'cdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp)) @@ -106,7 +107,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 查询证书详情 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=108&api=10899&data=161&isNormal=1&vid=154 queryCertDetailReq := &ctyuncdn.QueryCertDetailRequest{ - Id: xtypes.ToPtr(certRecord.Id), + Id: lo.ToPtr(certRecord.Id), } queryCertDetailResp, err := m.sdkClient.QueryCertDetail(queryCertDetailReq) m.logger.Debug("sdk request 'cdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp)) @@ -150,9 +151,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 创建证书 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=108&api=10893&data=161&isNormal=1&vid=154 createCertReq := &ctyuncdn.CreateCertRequest{ - Name: xtypes.ToPtr(certName), - Certs: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Name: lo.ToPtr(certName), + Certs: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } createCertResp, err := m.sdkClient.CreateCert(createCertReq) m.logger.Debug("sdk request 'cdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp)) diff --git a/pkg/core/ssl-manager/providers/ctcccloud-cms/ctcccloud_cms.go b/pkg/core/ssl-manager/providers/ctcccloud-cms/ctcccloud_cms.go index c05ce078b..104ccce62 100644 --- a/pkg/core/ssl-manager/providers/ctcccloud-cms/ctcccloud_cms.go +++ b/pkg/core/ssl-manager/providers/ctcccloud-cms/ctcccloud_cms.go @@ -10,10 +10,11 @@ import ( "strings" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" ctyuncms "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/cms" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -74,11 +75,11 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 上传证书 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=152&api=17243&data=204&isNormal=1&vid=283 uploadCertificateReq := &ctyuncms.UploadCertificateRequest{ - Name: xtypes.ToPtr(certName), - Certificate: xtypes.ToPtr(serverCertPEM), - CertificateChain: xtypes.ToPtr(intermediaCertPEM), - PrivateKey: xtypes.ToPtr(privkeyPEM), - EncryptionStandard: xtypes.ToPtr("INTERNATIONAL"), + Name: lo.ToPtr(certName), + Certificate: lo.ToPtr(serverCertPEM), + CertificateChain: lo.ToPtr(intermediaCertPEM), + PrivateKey: lo.ToPtr(privkeyPEM), + EncryptionStandard: lo.ToPtr("INTERNATIONAL"), } uploadCertificateResp, err := m.sdkClient.UploadCertificate(uploadCertificateReq) m.logger.Debug("sdk request 'cms.UploadCertificate'", slog.Any("request", uploadCertificateReq), slog.Any("response", uploadCertificateResp)) @@ -126,10 +127,10 @@ func (m *SSLManagerProvider) findCertIfExists(ctx context.Context, certPEM strin } getCertificateListReq := &ctyuncms.GetCertificateListRequest{ - PageNum: xtypes.ToPtr(getCertificateListPageNum), - PageSize: xtypes.ToPtr(getCertificateListPageSize), - Keyword: xtypes.ToPtr(certX509.Subject.CommonName), - Origin: xtypes.ToPtr("UPLOAD"), + PageNum: lo.ToPtr(getCertificateListPageNum), + PageSize: lo.ToPtr(getCertificateListPageSize), + Keyword: lo.ToPtr(certX509.Subject.CommonName), + Origin: lo.ToPtr("UPLOAD"), } getCertificateListResp, err := m.sdkClient.GetCertificateList(getCertificateListReq) m.logger.Debug("sdk request 'cms.GetCertificateList'", slog.Any("request", getCertificateListReq), slog.Any("response", getCertificateListResp)) diff --git a/pkg/core/ssl-manager/providers/ctcccloud-elb/ctcccloud_elb.go b/pkg/core/ssl-manager/providers/ctcccloud-elb/ctcccloud_elb.go index 4103d41d4..f048e6f66 100644 --- a/pkg/core/ssl-manager/providers/ctcccloud-elb/ctcccloud_elb.go +++ b/pkg/core/ssl-manager/providers/ctcccloud-elb/ctcccloud_elb.go @@ -8,11 +8,11 @@ import ( "time" "github.com/google/uuid" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" ctyunelb "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/elb" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -67,7 +67,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 查询证书列表,避免重复上传 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=24&api=5692&data=88&isNormal=1&vid=82 listCertificatesReq := &ctyunelb.ListCertificatesRequest{ - RegionID: xtypes.ToPtr(m.config.RegionId), + RegionID: lo.ToPtr(m.config.RegionId), } listCertificatesResp, err := m.sdkClient.ListCertificates(listCertificatesReq) m.logger.Debug("sdk request 'elb.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp)) @@ -104,13 +104,13 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 创建证书 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=24&api=5685&data=88&isNormal=1&vid=82 createCertificateReq := &ctyunelb.CreateCertificateRequest{ - ClientToken: xtypes.ToPtr(generateClientToken()), - RegionID: xtypes.ToPtr(m.config.RegionId), - Name: xtypes.ToPtr(certName), - Description: xtypes.ToPtr("upload from certimate"), - Type: xtypes.ToPtr("Server"), - Certificate: xtypes.ToPtr(certPEM), - PrivateKey: xtypes.ToPtr(privkeyPEM), + ClientToken: lo.ToPtr(generateClientToken()), + RegionID: lo.ToPtr(m.config.RegionId), + Name: lo.ToPtr(certName), + Description: lo.ToPtr("upload from certimate"), + Type: lo.ToPtr("Server"), + Certificate: lo.ToPtr(certPEM), + PrivateKey: lo.ToPtr(privkeyPEM), } createCertificateResp, err := m.sdkClient.CreateCertificate(createCertificateReq) m.logger.Debug("sdk request 'elb.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp)) diff --git a/pkg/core/ssl-manager/providers/ctcccloud-icdn/ctcccloud_icdn.go b/pkg/core/ssl-manager/providers/ctcccloud-icdn/ctcccloud_icdn.go index 5c9b0070f..878172165 100644 --- a/pkg/core/ssl-manager/providers/ctcccloud-icdn/ctcccloud_icdn.go +++ b/pkg/core/ssl-manager/providers/ctcccloud-icdn/ctcccloud_icdn.go @@ -9,10 +9,11 @@ import ( "strings" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" ctyunicdn "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/icdn" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -74,9 +75,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } queryCertListReq := &ctyunicdn.QueryCertListRequest{ - Page: xtypes.ToPtr(queryCertListPage), - PerPage: xtypes.ToPtr(queryCertListPerPage), - UsageMode: xtypes.ToPtr(int32(0)), + Page: lo.ToPtr(queryCertListPage), + PerPage: lo.ToPtr(queryCertListPerPage), + UsageMode: lo.ToPtr(int32(0)), } queryCertListResp, err := m.sdkClient.QueryCertList(queryCertListReq) m.logger.Debug("sdk request 'icdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp)) @@ -106,7 +107,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 查询证书详情 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=112&api=10837&data=173&isNormal=1&vid=166 queryCertDetailReq := &ctyunicdn.QueryCertDetailRequest{ - Id: xtypes.ToPtr(certRecord.Id), + Id: lo.ToPtr(certRecord.Id), } queryCertDetailResp, err := m.sdkClient.QueryCertDetail(queryCertDetailReq) m.logger.Debug("sdk request 'icdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp)) @@ -150,9 +151,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 创建证书 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=112&api=10835&data=173&isNormal=1&vid=166 createCertReq := &ctyunicdn.CreateCertRequest{ - Name: xtypes.ToPtr(certName), - Certs: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Name: lo.ToPtr(certName), + Certs: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } createCertResp, err := m.sdkClient.CreateCert(createCertReq) m.logger.Debug("sdk request 'icdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp)) diff --git a/pkg/core/ssl-manager/providers/ctcccloud-lvdn/ctcccloud_lvdn.go b/pkg/core/ssl-manager/providers/ctcccloud-lvdn/ctcccloud_lvdn.go index dbcd48692..ae7cc31ec 100644 --- a/pkg/core/ssl-manager/providers/ctcccloud-lvdn/ctcccloud_lvdn.go +++ b/pkg/core/ssl-manager/providers/ctcccloud-lvdn/ctcccloud_lvdn.go @@ -9,10 +9,11 @@ import ( "strings" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" ctyunlvdn "github.com/certimate-go/certimate/pkg/sdk3rd/ctyun/lvdn" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -74,9 +75,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } queryCertListReq := &ctyunlvdn.QueryCertListRequest{ - Page: xtypes.ToPtr(queryCertListPage), - PerPage: xtypes.ToPtr(queryCertListPerPage), - UsageMode: xtypes.ToPtr(int32(0)), + Page: lo.ToPtr(queryCertListPage), + PerPage: lo.ToPtr(queryCertListPerPage), + UsageMode: lo.ToPtr(int32(0)), } queryCertListResp, err := m.sdkClient.QueryCertList(queryCertListReq) m.logger.Debug("sdk request 'lvdn.QueryCertList'", slog.Any("request", queryCertListReq), slog.Any("response", queryCertListResp)) @@ -106,7 +107,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 查询证书详情 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=125&api=11449&data=183&isNormal=1&vid=261 queryCertDetailReq := &ctyunlvdn.QueryCertDetailRequest{ - Id: xtypes.ToPtr(certRecord.Id), + Id: lo.ToPtr(certRecord.Id), } queryCertDetailResp, err := m.sdkClient.QueryCertDetail(queryCertDetailReq) m.logger.Debug("sdk request 'lvdn.QueryCertDetail'", slog.Any("request", queryCertDetailReq), slog.Any("response", queryCertDetailResp)) @@ -150,9 +151,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 创建证书 // REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=125&api=11436&data=183&isNormal=1&vid=261 createCertReq := &ctyunlvdn.CreateCertRequest{ - Name: xtypes.ToPtr(certName), - Certs: xtypes.ToPtr(certPEM), - Key: xtypes.ToPtr(privkeyPEM), + Name: lo.ToPtr(certName), + Certs: lo.ToPtr(certPEM), + Key: lo.ToPtr(privkeyPEM), } createCertResp, err := m.sdkClient.CreateCert(createCertReq) m.logger.Debug("sdk request 'lvdn.CreateCert'", slog.Any("request", createCertReq), slog.Any("response", createCertResp)) diff --git a/pkg/core/ssl-manager/providers/huaweicloud-elb/huaweicloud_elb.go b/pkg/core/ssl-manager/providers/huaweicloud-elb/huaweicloud_elb.go index 15ad5e6fe..29b33c805 100644 --- a/pkg/core/ssl-manager/providers/huaweicloud-elb/huaweicloud_elb.go +++ b/pkg/core/ssl-manager/providers/huaweicloud-elb/huaweicloud_elb.go @@ -15,10 +15,10 @@ import ( hciam "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3" hciammodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3/model" hciamregion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3/region" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -84,7 +84,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } listCertificatesReq := &hcelbmodel.ListCertificatesRequest{ - Limit: xtypes.ToPtr(listCertificatesLimit), + Limit: lo.ToPtr(listCertificatesLimit), Marker: listCertificatesMarker, Type: &[]string{"server"}, } @@ -141,11 +141,11 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey createCertificateReq := &hcelbmodel.CreateCertificateRequest{ Body: &hcelbmodel.CreateCertificateRequestBody{ Certificate: &hcelbmodel.CreateCertificateOption{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(m.config.EnterpriseProjectId), - ProjectId: xtypes.ToPtr(projectId), - Name: xtypes.ToPtr(certName), - Certificate: xtypes.ToPtr(certPEM), - PrivateKey: xtypes.ToPtr(privkeyPEM), + EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId), + ProjectId: lo.ToPtr(projectId), + Name: lo.ToPtr(certName), + Certificate: lo.ToPtr(certPEM), + PrivateKey: lo.ToPtr(privkeyPEM), }, }, } diff --git a/pkg/core/ssl-manager/providers/huaweicloud-scm/huaweicloud_scm.go b/pkg/core/ssl-manager/providers/huaweicloud-scm/huaweicloud_scm.go index e60010b83..b9c1a02b0 100644 --- a/pkg/core/ssl-manager/providers/huaweicloud-scm/huaweicloud_scm.go +++ b/pkg/core/ssl-manager/providers/huaweicloud-scm/huaweicloud_scm.go @@ -12,10 +12,10 @@ import ( hcscm "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/scm/v3" hcscmmodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/scm/v3/model" hcscmregion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/scm/v3/region" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -82,11 +82,11 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } listCertificatesReq := &hcscmmodel.ListCertificatesRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(m.config.EnterpriseProjectId), - Limit: xtypes.ToPtr(listCertificatesLimit), - Offset: xtypes.ToPtr(listCertificatesOffset), - SortDir: xtypes.ToPtr("DESC"), - SortKey: xtypes.ToPtr("certExpiredTime"), + EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId), + Limit: lo.ToPtr(listCertificatesLimit), + Offset: lo.ToPtr(listCertificatesOffset), + SortDir: lo.ToPtr("DESC"), + SortKey: lo.ToPtr("certExpiredTime"), } listCertificatesResp, err := m.sdkClient.ListCertificates(listCertificatesReq) m.logger.Debug("sdk request 'scm.ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp)) @@ -156,7 +156,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // REF: https://support.huaweicloud.com/api-ccm/ImportCertificate.html importCertificateReq := &hcscmmodel.ImportCertificateRequest{ Body: &hcscmmodel.ImportCertificateRequestBody{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(m.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId), Name: certName, Certificate: certPEM, PrivateKey: privkeyPEM, diff --git a/pkg/core/ssl-manager/providers/huaweicloud-waf/huaweicloud_waf.go b/pkg/core/ssl-manager/providers/huaweicloud-waf/huaweicloud_waf.go index 73492f53d..4ae36ac29 100644 --- a/pkg/core/ssl-manager/providers/huaweicloud-waf/huaweicloud_waf.go +++ b/pkg/core/ssl-manager/providers/huaweicloud-waf/huaweicloud_waf.go @@ -15,10 +15,10 @@ import ( hcwaf "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1" hcwafmodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/model" hcwafregion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/region" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -85,9 +85,9 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey } listCertificatesReq := &hcwafmodel.ListCertificatesRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(m.config.EnterpriseProjectId), - Page: xtypes.ToPtr(listCertificatesPage), - Pagesize: xtypes.ToPtr(listCertificatesPageSize), + EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId), + Page: lo.ToPtr(listCertificatesPage), + Pagesize: lo.ToPtr(listCertificatesPageSize), } listCertificatesResp, err := m.sdkClient.ListCertificates(listCertificatesReq) m.logger.Debug("sdk request 'waf.ShowCertificate'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp)) @@ -98,7 +98,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey if listCertificatesResp.Items != nil { for _, certItem := range *listCertificatesResp.Items { showCertificateReq := &hcwafmodel.ShowCertificateRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(m.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId), CertificateId: certItem.Id, } showCertificateResp, err := m.sdkClient.ShowCertificate(showCertificateReq) @@ -143,7 +143,7 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 创建证书 // REF: https://support.huaweicloud.com/api-waf/CreateCertificate.html createCertificateReq := &hcwafmodel.CreateCertificateRequest{ - EnterpriseProjectId: xtypes.ToPtrOrZeroNil(m.config.EnterpriseProjectId), + EnterpriseProjectId: lo.EmptyableToPtr(m.config.EnterpriseProjectId), Body: &hcwafmodel.CreateCertificateRequestBody{ Name: certName, Content: certPEM, diff --git a/pkg/core/ssl-manager/providers/wangsu-certificate/wangsu_certificate.go b/pkg/core/ssl-manager/providers/wangsu-certificate/wangsu_certificate.go index c94d8ca68..d74829aff 100644 --- a/pkg/core/ssl-manager/providers/wangsu-certificate/wangsu_certificate.go +++ b/pkg/core/ssl-manager/providers/wangsu-certificate/wangsu_certificate.go @@ -9,10 +9,11 @@ import ( "strings" "time" + "github.com/samber/lo" + "github.com/certimate-go/certimate/pkg/core" wangsusdk "github.com/certimate-go/certimate/pkg/sdk3rd/wangsu/certificate" xcert "github.com/certimate-go/certimate/pkg/utils/cert" - xtypes "github.com/certimate-go/certimate/pkg/utils/types" ) type SSLManagerProviderConfig struct { @@ -100,10 +101,10 @@ func (m *SSLManagerProvider) Upload(ctx context.Context, certPEM string, privkey // 新增证书 // REF: https://www.wangsu.com/document/api-doc/25199?productCode=certificatemanagement createCertificateReq := &wangsusdk.CreateCertificateRequest{ - Name: xtypes.ToPtr(certName), - Certificate: xtypes.ToPtr(certPEM), - PrivateKey: xtypes.ToPtr(privkeyPEM), - Comment: xtypes.ToPtr("upload from certimate"), + Name: lo.ToPtr(certName), + Certificate: lo.ToPtr(certPEM), + PrivateKey: lo.ToPtr(privkeyPEM), + Comment: lo.ToPtr("upload from certimate"), } createCertificateResp, err := m.sdkClient.CreateCertificate(createCertificateReq) m.logger.Debug("sdk request 'certificatemanagement.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp)) diff --git a/pkg/sdk3rd/edgio/README.md b/pkg/forks/github.com/Edgio/README.md similarity index 100% rename from pkg/sdk3rd/edgio/README.md rename to pkg/forks/github.com/Edgio/README.md diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/cdn_configuration.go b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/cdn_configuration.go similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/cdn_configuration.go rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/cdn_configuration.go diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/environment.go b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/environment.go similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/environment.go rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/environment.go diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/property.go b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/property.go similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/property.go rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/property.go diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/purge.go b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/purge.go similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/purge.go rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/purge.go diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/tls_cert.go b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/tls_cert.go similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/tls_cert.go rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/dtos/tls_cert.go diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client.go b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client.go similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client.go rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client.go diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client_interface.go b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client_interface.go similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client_interface.go rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/applications/v7/edgio_client_interface.go diff --git a/pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/go.mod b/pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/go.mod similarity index 100% rename from pkg/sdk3rd/edgio/edgio-api@v0.0.0-workspace/go.mod rename to pkg/forks/github.com/Edgio/edgio-api@v0.0.0-workspace/go.mod diff --git a/pkg/sdk3rd/cmcc/README.md b/pkg/forks/gitlab.ecloud.com/ecloud/README.md similarity index 100% rename from pkg/sdk3rd/cmcc/README.md rename to pkg/forks/gitlab.ecloud.com/ecloud/README.md diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/client.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/client.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/client.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/client.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/go.mod b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/go.mod similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/go.mod rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/go.mod diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_tags.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_tags.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_tags.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_openapi_response_tags.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_response_tags.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_response_tags.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/create_record_response_tags.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/create_record_response_tags.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_openapi_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/delete_record_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/delete_record_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_query.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_query.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_query.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_query.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_data.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_data.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_data.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_data.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_tags.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_tags.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_tags.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_openapi_response_tags.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_query.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_query.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_query.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_query.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_response_results.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_response_results.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/list_record_response_results.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/list_record_response_results.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_tags.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_tags.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_tags.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_openapi_response_tags.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_response_body.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_response_body.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkclouddns@v1.0.1/model/modify_record_response_body.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkclouddns@v1.0.1/model/modify_record_response_body.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/api_client.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/api_client.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/api_client.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/api_client.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/api_response.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/api_response.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/api_response.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/api_response.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/config/config.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/config/config.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/config/config.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/config/config.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/configuration.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/configuration.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/configuration.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/configuration.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/go.mod b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/go.mod similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/go.mod rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/go.mod diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/http_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/http_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/http_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/http_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/open_api_request.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/open_api_request.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/open_api_request.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/open_api_request.go diff --git a/pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/position/http_position.go b/pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/position/http_position.go similarity index 100% rename from pkg/sdk3rd/cmcc/ecloudsdkcore@v1.0.0/position/http_position.go rename to pkg/forks/gitlab.ecloud.com/ecloud/ecloudsdkcore@v1.0.0/position/http_position.go diff --git a/pkg/logging/handler.go b/pkg/logging/handler.go index 7cdacdd7b..519cf18bf 100644 --- a/pkg/logging/handler.go +++ b/pkg/logging/handler.go @@ -2,7 +2,6 @@ package logging import ( "context" - "fmt" "log/slog" "sync" @@ -114,22 +113,10 @@ func (h *HookHandler) Handle(ctx context.Context, r slog.Record) error { log := &Record{ Time: r.Time, + Level: r.Level, Message: r.Message, Data: types.JSONMap[any](data), } - switch r.Level { - case slog.LevelDebug: - log.Level = LevelDebug - case slog.LevelInfo: - log.Level = LevelInfo - case slog.LevelWarn: - log.Level = LevelWarn - case slog.LevelError: - log.Level = LevelError - default: - log.Level = Level(fmt.Sprintf("LV(%d)", r.Level)) - } - if err := h.writeRecord(ctx, log); err != nil { return err } diff --git a/pkg/logging/level.go b/pkg/logging/level.go deleted file mode 100644 index 1aefe84d6..000000000 --- a/pkg/logging/level.go +++ /dev/null @@ -1,31 +0,0 @@ -package logging - -import "log/slog" - -type Level string - -const ( - LevelDebug Level = "DEBUG" - LevelInfo Level = "INFO" - LevelWarn Level = "WARN" - LevelError Level = "ERROR" -) - -func (l Level) String() string { - return string(l) -} - -func (l Level) Level() slog.Level { - switch l { - case LevelDebug: - return slog.LevelDebug - case LevelInfo: - return slog.LevelInfo - case LevelWarn: - return slog.LevelWarn - case LevelError: - return slog.LevelError - default: - return slog.Level(-1) - } -} diff --git a/pkg/logging/record.go b/pkg/logging/record.go index 38208535d..951e613dc 100644 --- a/pkg/logging/record.go +++ b/pkg/logging/record.go @@ -1,6 +1,7 @@ package logging import ( + "log/slog" "time" types "github.com/pocketbase/pocketbase/tools/types" @@ -8,7 +9,7 @@ import ( type Record struct { Time time.Time - Level Level + Level slog.Level Message string Data types.JSONMap[any] } diff --git a/pkg/utils/ifelse/ifelse.go b/pkg/utils/ifelse/ifelse.go deleted file mode 100644 index 2e1bc388b..000000000 --- a/pkg/utils/ifelse/ifelse.go +++ /dev/null @@ -1,84 +0,0 @@ -package ifelse - -type branch[T any] struct { - cond bool - fn func() T -} - -type ifExpr[T any] struct { - cond bool -} - -type thenExpr[T any] struct { - branches []branch[T] -} - -type elseIfExpr[T any] struct { - branches []branch[T] - cond bool -} - -// 用法示例: -// -// result := ifelse.If[string](age < 18).Then("child"). -// ElseIf(age < 60).Then("adult"). -// ElseIf(age < 120).Then("senior"). -// Else("invalid") -func If[T any](condition bool) *ifExpr[T] { - return &ifExpr[T]{cond: condition} -} - -func (e *ifExpr[T]) Then(consequent T) *thenExpr[T] { - return &thenExpr[T]{ - branches: []branch[T]{ - {cond: e.cond, fn: func() T { return consequent }}, - }, - } -} - -func (e *ifExpr[T]) ThenFunc(consequent func() T) *thenExpr[T] { - return &thenExpr[T]{ - branches: []branch[T]{ - {cond: e.cond, fn: consequent}, - }, - } -} - -func (e *thenExpr[T]) ElseIf(condition bool) *elseIfExpr[T] { - return &elseIfExpr[T]{ - branches: e.branches, - cond: condition, - } -} - -func (e *elseIfExpr[T]) Then(alternative T) *thenExpr[T] { - branch := branch[T]{cond: e.cond, fn: func() T { return alternative }} - return &thenExpr[T]{ - branches: append(e.branches, branch), - } -} - -func (e *elseIfExpr[T]) ThenFunc(alternativeFunc func() T) *thenExpr[T] { - branch := branch[T]{cond: e.cond, fn: alternativeFunc} - return &thenExpr[T]{ - branches: append(e.branches, branch), - } -} - -func (e *thenExpr[T]) Else(alternative T) T { - for _, b := range e.branches { - if b.cond { - return b.fn() - } - } - return alternative -} - -func (e *thenExpr[T]) ElseFunc(alternativeFunc func() T) T { - for _, b := range e.branches { - if b.cond { - return b.fn() - } - } - return alternativeFunc() -} diff --git a/pkg/utils/ifelse/ifelse_test.go b/pkg/utils/ifelse/ifelse_test.go deleted file mode 100644 index 516564872..000000000 --- a/pkg/utils/ifelse/ifelse_test.go +++ /dev/null @@ -1,196 +0,0 @@ -package ifelse_test - -import ( - "testing" - - "github.com/certimate-go/certimate/pkg/utils/ifelse" -) - -func TestIfTrue(t *testing.T) { - result := ifelse.If[string](true). - Then("true branch"). - Else("false branch") - - if result != "true branch" { - t.Errorf("Expected 'true branch', got '%s'", result) - } -} - -func TestIfFalse(t *testing.T) { - result := ifelse.If[string](false). - Then("true branch"). - Else("false branch") - - if result != "false branch" { - t.Errorf("Expected 'false branch', got '%s'", result) - } -} - -func TestElseIfFirstMatch(t *testing.T) { - result := ifelse.If[string](false). - Then("should not run"). - ElseIf(true). - Then("elseif branch"). - Else("should not run") - - if result != "elseif branch" { - t.Errorf("Expected 'elseif branch', got '%s'", result) - } -} - -func TestElseIfSecondMatch(t *testing.T) { - result := ifelse.If[string](false). - Then("should not run"). - ElseIf(false). - Then("should not run"). - ElseIf(true). - Then("second elseif"). - Else("should not run") - - if result != "second elseif" { - t.Errorf("Expected 'second elseif', got '%s'", result) - } -} - -func TestMultipleConditions(t *testing.T) { - result := ifelse.If[string](1 > 2). - Then("impossible"). - ElseIf(2+2 == 5). - Then("false math"). - ElseIf(3*3 == 9). - Then("correct math"). - Else("fallback") - - if result != "correct math" { - t.Errorf("Expected 'correct math', got '%s'", result) - } -} - -func TestAllConditionsFalse(t *testing.T) { - result := ifelse.If[int](false). - Then(1). - ElseIf(false). - Then(2). - ElseIf(false). - Then(3). - Else(99) - - if result != 99 { - t.Errorf("Expected 99, got %d", result) - } -} - -func TestLazyEvaluationThen(t *testing.T) { - called := []string{} - - result := ifelse.If[string](true). - ThenFunc(func() string { - called = append(called, "then") - return "then" - }). - ElseIf(true). - ThenFunc(func() string { - called = append(called, "elseif") - return "elseif" - }). - ElseFunc(func() string { - called = append(called, "else") - return "else" - }) - - // 验证结果和调用情况 - if result != "then" { - t.Errorf("Expected 'then', got '%s'", result) - } - - if len(called) != 1 || called[0] != "then" { - t.Errorf("Expected only 'then' called, got %v", called) - } -} - -func TestLazyEvaluationElseIf(t *testing.T) { - called := []string{} - - result := ifelse.If[string](false). - ThenFunc(func() string { - called = append(called, "then") - return "then" - }). - ElseIf(true). - ThenFunc(func() string { - called = append(called, "elseif") - return "elseif" - }). - ElseFunc(func() string { - called = append(called, "else") - return "else" - }) - - // 验证结果和调用情况 - if result != "elseif" { - t.Errorf("Expected 'elseif', got '%s'", result) - } - - if len(called) != 1 || called[0] != "elseif" { - t.Errorf("Expected only 'elseif' called, got %v", called) - } -} - -func TestLazyEvaluationElse(t *testing.T) { - called := []string{} - - result := ifelse.If[string](false). - ThenFunc(func() string { - called = append(called, "then") - return "then" - }). - ElseIf(false). - ThenFunc(func() string { - called = append(called, "elseif") - return "elseif" - }). - ElseFunc(func() string { - called = append(called, "else") - return "else" - }) - - // 验证结果和调用情况 - if result != "else" { - t.Errorf("Expected 'else', got '%s'", result) - } - - if len(called) != 1 || called[0] != "else" { - t.Errorf("Expected only 'else' called, got %v", called) - } -} - -func TestMixedValueAndFunc(t *testing.T) { - result := ifelse.If[int](false). - Then(0). - ElseIf(false). - ThenFunc(func() int { - return 1 - }). - ElseIf(true). - Then(2). - Else(3) - - if result != 2 { - t.Errorf("Expected 2, got %d", result) - } -} - -func TestComplexNumericLogic(t *testing.T) { - x := 15 - result := ifelse.If[string](x < 10). - Then("single digit"). - ElseIf(x < 20). - Then("teens"). - ElseIf(x < 30). - Then("twenties"). - Else("older") - - if result != "teens" { - t.Errorf("Expected 'teens', got '%s'", result) - } -} diff --git a/pkg/utils/ifelse/ternary.go b/pkg/utils/ifelse/ternary.go deleted file mode 100644 index a2a060f0b..000000000 --- a/pkg/utils/ifelse/ternary.go +++ /dev/null @@ -1,35 +0,0 @@ -package ifelse - -// 三目条件函数。 -// -// 入参: -// - condition: 条件。 -// - consequent: 条件为真时返回的值。 -// - alternative: 条件为假时返回的值。 -// -// 出参: -// - 若 condition 的为真,将返回 consequent;否则,将返回 alternative。 -func Ternary[T any](condition bool, consequent, alternative T) T { - if condition { - return consequent - } else { - return alternative - } -} - -// 与 [Ternary] 类似,但返回值支持延迟计算函数。 -// -// 入参: -// - condition: 条件。 -// - consequentFunc: 条件为真时返回的计算函数。 -// - alternativeFunc: 条件为假时返回的计算函数。 -// -// 出参: -// - 若 condition 的为真,将返回 consequentFunc 的计算结果;否则,将返回 alternativeFunc 的计算结果。 -func TernaryFunc[T any](condition bool, consequentFunc, alternativeFunc func() T) T { - if condition { - return consequentFunc() - } else { - return alternativeFunc() - } -} diff --git a/pkg/utils/slices/iter.go b/pkg/utils/slices/iter.go deleted file mode 100644 index 04a97a9d9..000000000 --- a/pkg/utils/slices/iter.go +++ /dev/null @@ -1,69 +0,0 @@ -package slices - -// 创建给定切片一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。 -// -// 入参: -// - slice: 原切片。 -// - filter: 为切片中的每个元素执行的函数。它应该返回一个布尔值以指使是否将元素保留在结果切片中。 -// -// 出参: -// - 新切片。 -func Filter[T any](slice []T, filter func(T) bool) []T { - var result []T - for _, item := range slice { - if filter(item) { - result = append(result, item) - } - } - return result -} - -// 创建一个新切片,这个新切片由原切片中的每个元素都调用一次提供的函数后的返回值组成。 -// -// 入参: -// - slice: 原切片。 -// - mapper: 为切片中的每个元素执行的函数。它的返回值作为一个元素被添加为新切片中。 -// -// 出参: -// - 新切片。 -func Map[T1 any, T2 any](slice []T1, mapper func(T1) T2) []T2 { - result := make([]T2, 0, len(slice)) - for _, item := range slice { - result = append(result, mapper(item)) - } - return result -} - -// 测试切片中是否每个元素都通过了由提供的函数实现的测试。 -// -// 入参: -// - slice: 切片。 -// - condition: 为切片中的每个元素执行的函数。它应该返回一个布尔值以指示元素是否通过测试。 -// -// 出参: -// - 测试结果。 -func Every[T any](slice []T, condition func(T) bool) bool { - for _, item := range slice { - if !condition(item) { - return false - } - } - return true -} - -// 测试切片中是否至少有一个元素通过了由提供的函数实现的测试。 -// -// 入参: -// - slice: 切片。 -// - condition: 为切片中的每个元素执行的函数。它应该返回一个布尔值以指示元素是否通过测试。 -// -// 出参: -// - 测试结果。 -func Some[T any](slice []T, condition func(T) bool) bool { - for _, item := range slice { - if condition(item) { - return true - } - } - return false -} diff --git a/pkg/utils/types/assert.go b/pkg/utils/types/assert.go deleted file mode 100644 index b6701430b..000000000 --- a/pkg/utils/types/assert.go +++ /dev/null @@ -1,28 +0,0 @@ -package types - -import ( - "reflect" -) - -// 判断对象是否为 nil。 -// 与直接使用 `obj == nil` 不同,该函数会正确判断接口类型对象的真实值是否为空。 -// -// 入参: -// - value:待判断的对象。 -// -// 出参: -// - 如果对象值为 nil,则返回 true;否则返回 false。 -func IsNil(obj any) bool { - if obj == nil { - return true - } - - v := reflect.ValueOf(obj) - if v.Kind() == reflect.Ptr { - return v.IsNil() - } else if v.Kind() == reflect.Interface { - return v.Elem().IsNil() - } - - return false -} diff --git a/pkg/utils/types/cast.go b/pkg/utils/types/cast.go deleted file mode 100644 index 4420b90f8..000000000 --- a/pkg/utils/types/cast.go +++ /dev/null @@ -1,47 +0,0 @@ -package types - -import ( - "reflect" -) - -// 将对象转换为指针。 -// -// 入参: -// - 待转换的对象。 -// -// 出参: -// - 返回对象的指针。 -func ToPtr[T any](v T) (p *T) { - return &v -} - -// 将非零值的对象转换为指针。 -// 与 [ToPtr] 不同的是,如果对象的值为零值,则返回 nil。 -// -// 入参: -// - 待转换的对象。 -// -// 出参: -// - 返回对象的指针。 -func ToPtrOrZeroNil[T any](v T) (p *T) { - if reflect.ValueOf(v).IsZero() { - return nil - } - - return &v -} - -// 将指针转换为对象。 -// -// 入参: -// - 待转换的指针。 -// -// 出参: -// - 返回指针指向的对象。如果指针为空,则返回对象的零值。 -func ToVal[T any](p *T) (v T) { - if IsNil(p) { - return v - } - - return *p -} diff --git a/ui/package-lock.json b/ui/package-lock.json index 5d4734b39..8822b6dbf 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -32,7 +32,7 @@ "react": "^18.3.1", "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.3.1", - "react-i18next": "^15.6.0", + "react-i18next": "^15.6.1", "react-router-dom": "^7.7.0", "tailwind-merge": "^3.3.1", "zod": "^4.0.5", @@ -53,7 +53,7 @@ "eslint": "^9.31.0", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.4", - "eslint-plugin-better-tailwindcss": "^3.7.0", + "eslint-plugin-better-tailwindcss": "^3.7.1", "eslint-plugin-import": "^2.32.0", "eslint-plugin-prettier": "^5.5.3", "eslint-plugin-react-hooks": "^5.2.0", @@ -62,7 +62,7 @@ "prettier": "^3.6.2", "tailwindcss": "^4.1.11", "typescript": "^5.8.3", - "typescript-eslint": "^8.37.0", + "typescript-eslint": "^8.38.0", "vite": "^6.3.5" } }, @@ -2668,9 +2668,9 @@ } }, "node_modules/@eslint/css-tree": { - "version": "3.6.1", - "resolved": "https://registry.npmmirror.com/@eslint/css-tree/-/css-tree-3.6.1.tgz", - "integrity": "sha512-5DIsBME23tUQD5zHD+T38lC2DG4jB8x8JRa+yDncLne2TIZA0VuCpcSazOX1EC+sM/q8w24qeevXfmfsIxAeqA==", + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/@eslint/css-tree/-/css-tree-3.6.2.tgz", + "integrity": "sha512-ttB4VQguJdWxPVfX/6xB0ugWVeTe6I3nv9izeR+xPcQbtFVb3lhKbcTScWTXZu+OF0PLoLavX7zBiYtLwnlB9w==", "dev": true, "dependencies": { "mdn-data": "2.21.0", @@ -2980,9 +2980,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.2.7", - "resolved": "https://registry.npmmirror.com/@pkgr/core/-/core-0.2.7.tgz", - "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "version": "0.2.9", + "resolved": "https://registry.npmmirror.com/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" @@ -3840,16 +3840,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz", - "integrity": "sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz", + "integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.37.0", - "@typescript-eslint/type-utils": "8.37.0", - "@typescript-eslint/utils": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/type-utils": "8.38.0", + "@typescript-eslint/utils": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -3863,7 +3863,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.37.0", + "@typescript-eslint/parser": "^8.38.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } @@ -3878,15 +3878,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.37.0.tgz", - "integrity": "sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.38.0.tgz", + "integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.37.0", - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", "debug": "^4.3.4" }, "engines": { @@ -3902,13 +3902,13 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/project-service/-/project-service-8.37.0.tgz", - "integrity": "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", + "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", "dev": true, "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.37.0", - "@typescript-eslint/types": "^8.37.0", + "@typescript-eslint/tsconfig-utils": "^8.38.0", + "@typescript-eslint/types": "^8.38.0", "debug": "^4.3.4" }, "engines": { @@ -3923,13 +3923,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz", - "integrity": "sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", + "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0" + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3940,9 +3940,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz", - "integrity": "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", + "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3956,14 +3956,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz", - "integrity": "sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz", + "integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0", - "@typescript-eslint/utils": "8.37.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/utils": "8.38.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -3980,9 +3980,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.37.0.tgz", - "integrity": "sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3993,15 +3993,15 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.37.0.tgz", - "integrity": "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", + "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", "dev": true, "dependencies": { - "@typescript-eslint/project-service": "8.37.0", - "@typescript-eslint/tsconfig-utils": "8.37.0", - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/visitor-keys": "8.37.0", + "@typescript-eslint/project-service": "8.38.0", + "@typescript-eslint/tsconfig-utils": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4021,15 +4021,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.37.0.tgz", - "integrity": "sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.38.0.tgz", + "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.37.0", - "@typescript-eslint/types": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0" + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4044,12 +4044,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz", - "integrity": "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", + "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/types": "8.38.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -5661,17 +5661,17 @@ } }, "node_modules/eslint-plugin-better-tailwindcss": { - "version": "3.7.0", - "resolved": "https://registry.npmmirror.com/eslint-plugin-better-tailwindcss/-/eslint-plugin-better-tailwindcss-3.7.0.tgz", - "integrity": "sha512-8xMy1h3v5X9m9r1E6bNc49WOYYcxk6ld+67UJOz9gFZ48BzG8KR430nrGkZbWNhbQTR5i0f2c3mtLgQbVXWZkA==", + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-better-tailwindcss/-/eslint-plugin-better-tailwindcss-3.7.1.tgz", + "integrity": "sha512-ROTCf93dM9PcSiXVxXpfN/CK8WTAwjImi//c1DUjBfgRbMyXjkp5JPy/CAf+gJIElzSPkDPvMaFrg08NtXJ1Qg==", "dev": true, "dependencies": { - "@eslint/css-tree": "^3.6.1", + "@eslint/css-tree": "^3.6.2", "enhanced-resolve": "^5.18.2", "jiti": "^2.4.2", "postcss": "^8.5.6", "postcss-import": "^16.1.1", - "synckit": "^0.11.8", + "synckit": "^0.11.11", "tailwind-csstree": "^0.1.1", "tsconfig-paths-webpack-plugin": "^4.2.0" }, @@ -8471,9 +8471,9 @@ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, "node_modules/react-i18next": { - "version": "15.6.0", - "resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-15.6.0.tgz", - "integrity": "sha512-W135dB0rDfiFmbMipC17nOhGdttO5mzH8BivY+2ybsQBbXvxWIwl3cmeH3T9d+YPBSJu/ouyJKFJTtkK7rJofw==", + "version": "15.6.1", + "resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-15.6.1.tgz", + "integrity": "sha512-uGrzSsOUUe2sDBG/+FJq2J1MM+Y4368/QW8OLEKSFvnDflHBbZhSd1u3UkW0Z06rMhZmnB/AQrhCpYfE5/5XNg==", "dependencies": { "@babel/runtime": "^7.27.6", "html-parse-stringify": "^3.0.1" @@ -9242,12 +9242,12 @@ } }, "node_modules/synckit": { - "version": "0.11.8", - "resolved": "https://registry.npmmirror.com/synckit/-/synckit-0.11.8.tgz", - "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "version": "0.11.11", + "resolved": "https://registry.npmmirror.com/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, "dependencies": { - "@pkgr/core": "^0.2.4" + "@pkgr/core": "^0.2.9" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9593,15 +9593,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmmirror.com/typescript-eslint/-/typescript-eslint-8.37.0.tgz", - "integrity": "sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==", + "version": "8.38.0", + "resolved": "https://registry.npmmirror.com/typescript-eslint/-/typescript-eslint-8.38.0.tgz", + "integrity": "sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.37.0", - "@typescript-eslint/parser": "8.37.0", - "@typescript-eslint/typescript-estree": "8.37.0", - "@typescript-eslint/utils": "8.37.0" + "@typescript-eslint/eslint-plugin": "8.38.0", + "@typescript-eslint/parser": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0", + "@typescript-eslint/utils": "8.38.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/ui/package.json b/ui/package.json index 44b476fa1..385077524 100644 --- a/ui/package.json +++ b/ui/package.json @@ -34,7 +34,7 @@ "react": "^18.3.1", "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.3.1", - "react-i18next": "^15.6.0", + "react-i18next": "^15.6.1", "react-router-dom": "^7.7.0", "tailwind-merge": "^3.3.1", "zod": "^4.0.5", @@ -55,7 +55,7 @@ "eslint": "^9.31.0", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.4", - "eslint-plugin-better-tailwindcss": "^3.7.0", + "eslint-plugin-better-tailwindcss": "^3.7.1", "eslint-plugin-import": "^2.32.0", "eslint-plugin-prettier": "^5.5.3", "eslint-plugin-react-hooks": "^5.2.0", @@ -64,7 +64,7 @@ "prettier": "^3.6.2", "tailwindcss": "^4.1.11", "typescript": "^5.8.3", - "typescript-eslint": "^8.37.0", + "typescript-eslint": "^8.38.0", "vite": "^6.3.5" } } diff --git a/ui/src/App.tsx b/ui/src/App.tsx index 47e50c056..dc75fbbea 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -93,6 +93,7 @@ const RootApp = () => { Layout: { ...antdTheme?.components?.Layout, bodyBg: "transparent", + headerBg: "transparent", siderBg: "transparent", }, Dropdown: { diff --git a/ui/src/api/notify.ts b/ui/src/api/notify.ts index b98a16104..b46f71771 100644 --- a/ui/src/api/notify.ts +++ b/ui/src/api/notify.ts @@ -2,7 +2,7 @@ import { ClientResponseError } from "pocketbase"; import { getPocketBase } from "@/repository/_pocketbase"; -export const notifyTest = async (channel: string) => { +export const notifyTest = async (provider: string) => { const pb = getPocketBase(); const resp = await pb.send("/api/notify/test", { @@ -11,7 +11,7 @@ export const notifyTest = async (channel: string) => { "Content-Type": "application/json", }, body: { - channel, + provider, }, }); diff --git a/ui/src/components/access/AccessEditDrawer.tsx b/ui/src/components/access/AccessEditDrawer.tsx index 13ccb2d2e..0a1d29f79 100644 --- a/ui/src/components/access/AccessEditDrawer.tsx +++ b/ui/src/components/access/AccessEditDrawer.tsx @@ -126,4 +126,29 @@ const AccessEditDrawer = ({ mode, data, loading, trigger, usage, afterSubmit, .. ); }; -export default AccessEditDrawer; +const useProps = () => { + const [data, setData] = useState(); + const [open, setOpen] = useState(false); + + const onOpenChange = (open: boolean) => { + setOpen(open); + + if (!open) { + setData(undefined); + } + }; + + return { + data, + open, + setData, + setOpen, + onOpenChange, + }; +}; + +const _default = Object.assign(AccessEditDrawer, { + useProps, +}); + +export default _default; diff --git a/ui/src/components/access/AccessForm.tsx b/ui/src/components/access/AccessForm.tsx index 0b37526bb..2109505fc 100644 --- a/ui/src/components/access/AccessForm.tsx +++ b/ui/src/components/access/AccessForm.tsx @@ -126,15 +126,17 @@ const AccessForm = forwardRef(({ className, const providerFilter = useMemo(() => { switch (usage) { case "dns": - return (record: AccessProvider) => record.usages.includes(ACCESS_USAGES.DNS); + return (_: string, option: AccessProvider) => option.usages.includes(ACCESS_USAGES.DNS); case "hosting": - return (record: AccessProvider) => record.usages.includes(ACCESS_USAGES.HOSTING); + return (_: string, option: AccessProvider) => option.usages.includes(ACCESS_USAGES.HOSTING); case "dns-hosting": - return (record: AccessProvider) => record.usages.includes(ACCESS_USAGES.DNS) || record.usages.includes(ACCESS_USAGES.HOSTING); + return (_: string, option: AccessProvider) => option.usages.includes(ACCESS_USAGES.DNS) || option.usages.includes(ACCESS_USAGES.HOSTING); case "ca": - return (record: AccessProvider) => record.usages.includes(ACCESS_USAGES.CA); + return (_: string, option: AccessProvider) => option.usages.includes(ACCESS_USAGES.CA); case "notification": - return (record: AccessProvider) => record.usages.includes(ACCESS_USAGES.NOTIFICATION); + return (_: string, option: AccessProvider) => option.usages.includes(ACCESS_USAGES.NOTIFICATION); + default: + console.warn(`[certimate] unsupported provider usage: '${usage}'`); } return undefined; @@ -369,9 +371,9 @@ const AccessForm = forwardRef(({ className, fallback={ } @@ -382,11 +384,11 @@ const AccessForm = forwardRef(({ className, diff --git a/ui/src/components/access/AccessFormDiscordBotConfig.tsx b/ui/src/components/access/AccessFormDiscordBotConfig.tsx index c6bc85e52..c01b76ec6 100644 --- a/ui/src/components/access/AccessFormDiscordBotConfig.tsx +++ b/ui/src/components/access/AccessFormDiscordBotConfig.tsx @@ -29,7 +29,7 @@ const AccessFormDiscordBotConfig = ({ form: formInst, formName, disabled, initia .string(t("access.form.discordbot_token.placeholder")) .min(1, t("access.form.discordbot_token.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), - defaultChannelId: z.string().nullish(), + channelId: z.string().nullish(), }); const formRule = createSchemaFieldRule(formSchema); @@ -56,12 +56,12 @@ const AccessFormDiscordBotConfig = ({ form: formInst, formName, disabled, initia } + tooltip={} > - + ); diff --git a/ui/src/components/access/AccessFormEmailConfig.tsx b/ui/src/components/access/AccessFormEmailConfig.tsx index e5848494e..6b5df5514 100644 --- a/ui/src/components/access/AccessFormEmailConfig.tsx +++ b/ui/src/components/access/AccessFormEmailConfig.tsx @@ -23,6 +23,9 @@ const initFormModel = (): AccessFormEmailConfigFieldValues => { smtpTls: true, username: "", password: "", + senderAddress: "", + senderName: "", + receiverAddress: "", }; }; @@ -47,15 +50,9 @@ const AccessFormEmailConfig = ({ form: formInst, formName, disabled, initialValu .string() .min(1, t("access.form.email_password.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), - defaultSenderAddress: z - .string() - .nullish() - .refine((v) => { - if (!v) return true; - return validEmailAddress(v); - }, t("common.errmsg.email_invalid")), - defaultSenderName: z.string().nullish(), - defaultReceiverAddress: z + senderAddress: z.email(t("common.errmsg.email_invalid")), + senderName: z.string().nullish(), + receiverAddress: z .string() .nullish() .refine((v) => { @@ -112,16 +109,16 @@ const AccessFormEmailConfig = ({ form: formInst, formName, disabled, initialValu - - + + - - + + - - + + ); diff --git a/ui/src/components/access/AccessFormMattermostConfig.tsx b/ui/src/components/access/AccessFormMattermostConfig.tsx index 178987f51..c42a328ec 100644 --- a/ui/src/components/access/AccessFormMattermostConfig.tsx +++ b/ui/src/components/access/AccessFormMattermostConfig.tsx @@ -30,7 +30,7 @@ const AccessFormMattermostConfig = ({ form: formInst, formName, disabled, initia serverUrl: z.url(t("common.errmsg.url_invalid")), username: z.string().nonempty(t("access.form.mattermost_username.placeholder")), password: z.string().nonempty(t("access.form.mattermost_password.placeholder")), - defaultChannelId: z.string().nullish(), + channelId: z.string().nullish(), }); const formRule = createSchemaFieldRule(formSchema); @@ -65,12 +65,12 @@ const AccessFormMattermostConfig = ({ form: formInst, formName, disabled, initia } + tooltip={} > - + ); diff --git a/ui/src/components/access/AccessFormSlackBotConfig.tsx b/ui/src/components/access/AccessFormSlackBotConfig.tsx index 6c7b6e9c5..a12fea3bb 100644 --- a/ui/src/components/access/AccessFormSlackBotConfig.tsx +++ b/ui/src/components/access/AccessFormSlackBotConfig.tsx @@ -29,7 +29,7 @@ const AccessFormSlackBotConfig = ({ form: formInst, formName, disabled, initialV .string(t("access.form.slackbot_token.placeholder")) .min(1, t("access.form.slackbot_token.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), - defaultChannelId: z.string().nullish(), + channelId: z.string().nullish(), }); const formRule = createSchemaFieldRule(formSchema); @@ -56,12 +56,12 @@ const AccessFormSlackBotConfig = ({ form: formInst, formName, disabled, initialV } + tooltip={} > - + ); diff --git a/ui/src/components/access/AccessFormTelegramBotConfig.tsx b/ui/src/components/access/AccessFormTelegramBotConfig.tsx index 993e3da57..423aae797 100644 --- a/ui/src/components/access/AccessFormTelegramBotConfig.tsx +++ b/ui/src/components/access/AccessFormTelegramBotConfig.tsx @@ -29,16 +29,12 @@ const AccessFormTelegramBotConfig = ({ form: formInst, formName, disabled, initi .string(t("access.form.telegrambot_token.placeholder")) .min(1, t("access.form.telegrambot_token.placeholder")) .max(256, t("common.errmsg.string_max", { max: 256 })), - defaultChatId: z + chatId: z .preprocess( (v) => (v == null || v === "" ? undefined : Number(v)), - z - .number() - .nullish() - .refine((v) => { - if (v == null || v + "" === "") return true; - return !Number.isNaN(+v!) && +v! !== 0; - }, t("access.form.telegrambot_default_chat_id.placeholder")) + z.number().refine((v) => { + return !Number.isNaN(+v!) && +v! !== 0; + }, t("access.form.telegrambot_chat_id.placeholder")) ) .nullish(), }); @@ -67,12 +63,12 @@ const AccessFormTelegramBotConfig = ({ form: formInst, formName, disabled, initi } + tooltip={} > - + ); diff --git a/ui/src/components/access/AccessFormWebhookConfig.tsx b/ui/src/components/access/AccessFormWebhookConfig.tsx index a83b6692c..7e18c2727 100644 --- a/ui/src/components/access/AccessFormWebhookConfig.tsx +++ b/ui/src/components/access/AccessFormWebhookConfig.tsx @@ -25,7 +25,7 @@ const initFormModel = (): AccessFormWebhookConfigFieldValues => { method: "POST", headers: "Content-Type: application/json", allowInsecureConnections: false, - defaultDataForDeployment: JSON.stringify( + dataForDeployment: JSON.stringify( { name: "${DOMAINS}", cert: "${CERTIFICATE}", @@ -34,7 +34,7 @@ const initFormModel = (): AccessFormWebhookConfigFieldValues => { null, 2 ), - defaultDataForNotification: JSON.stringify( + dataForNotification: JSON.stringify( { subject: "${SUBJECT}", message: "${MESSAGE}", @@ -65,7 +65,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa } return true; }, t("access.form.webhook_headers.errmsg.invalid")), - defaultDataForDeployment: z + dataForDeployment: z .string() .nullish() .refine((v) => { @@ -78,8 +78,8 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa } catch { return false; } - }, t("access.form.webhook_default_data.errmsg.json_invalid")), - defaultDataForNotification: z + }, t("access.form.webhook_data.errmsg.json_invalid")), + dataForNotification: z .string() .nullish() .refine((v) => { @@ -92,7 +92,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa } catch { return false; } - }, t("access.form.webhook_default_data.errmsg.json_invalid")), + }, t("access.form.webhook_data.errmsg.json_invalid")), allowInsecureConnections: z.boolean().nullish(), }); const formRule = createSchemaFieldRule(formSchema); @@ -105,27 +105,27 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa }; const handleWebhookDataForDeploymentBlur = () => { - const value = formInst.getFieldValue("defaultDataForDeployment"); + const value = formInst.getFieldValue("dataForDeployment"); try { const json = JSON.stringify(JSON.parse(value), null, 2); - formInst.setFieldValue("defaultDataForDeployment", json); + formInst.setFieldValue("dataForDeployment", json); } catch { return; } }; const handleWebhookDataForNotificationBlur = () => { - const value = formInst.getFieldValue("defaultDataForNotification"); + const value = formInst.getFieldValue("dataForNotification"); try { const json = JSON.stringify(JSON.parse(value), null, 2); - formInst.setFieldValue("defaultDataForNotification", json); + formInst.setFieldValue("dataForNotification", json); } catch { return; } }; const handlePresetDataForDeploymentClick = () => { - formInst.setFieldValue("defaultDataForDeployment", initFormModel().defaultDataForDeployment); + formInst.setFieldValue("dataForDeployment", initFormModel().dataForDeployment); }; const handlePresetDataForNotificationClick = (key: string) => { @@ -135,7 +135,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json\r\nAuthorization: Bearer "); formInst.setFieldValue( - "defaultDataForNotification", + "dataForNotification", JSON.stringify( { title: "${SUBJECT}", @@ -153,7 +153,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json\r\nAuthorization: Bearer "); formInst.setFieldValue( - "defaultDataForNotification", + "dataForNotification", JSON.stringify( { title: "${SUBJECT}", @@ -171,7 +171,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json"); formInst.setFieldValue( - "defaultDataForNotification", + "dataForNotification", JSON.stringify( { topic: "", @@ -190,7 +190,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json"); formInst.setFieldValue( - "defaultDataForNotification", + "dataForNotification", JSON.stringify( { token: "", @@ -209,7 +209,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json"); formInst.setFieldValue( - "defaultDataForNotification", + "dataForNotification", JSON.stringify( { token: "", @@ -227,7 +227,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json"); formInst.setFieldValue( - "defaultDataForNotification", + "dataForNotification", JSON.stringify( { title: "${SUBJECT}", @@ -244,7 +244,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json"); formInst.setFieldValue( - "defaultDataForNotification", + "dataForNotification", JSON.stringify( { text: "${SUBJECT}", @@ -259,7 +259,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa default: formInst.setFieldValue("method", "POST"); formInst.setFieldValue("headers", "Content-Type: application/json"); - formInst.setFieldValue("defaultDataForNotification", initFormModel().defaultDataForNotification); + formInst.setFieldValue("dataForNotification", initFormModel().dataForNotification); break; } }; @@ -308,7 +308,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa - + - } /> + } /> @@ -339,7 +339,7 @@ const AccessFormWebhookConfig = ({ form: formInst, formName, disabled, initialVa