mirror of
https://github.com/certimate-go/certimate.git
synced 2026-09-24 23:10:13 +08:00
Merge pull request #1023 from fudiwei:main
This commit is contained in:
@@ -8,14 +8,14 @@ require (
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates v1.4.0
|
||||
github.com/G-Core/gcorelabscdn-go v1.0.34
|
||||
github.com/G-Core/gcorelabscdn-go v1.0.35
|
||||
github.com/alibabacloud-go/alb-20200616/v2 v2.2.9
|
||||
github.com/alibabacloud-go/apig-20240327/v5 v5.0.1
|
||||
github.com/alibabacloud-go/cas-20200407/v4 v4.0.3
|
||||
github.com/alibabacloud-go/cdn-20180510/v8 v8.0.2
|
||||
github.com/alibabacloud-go/cloudapi-20160714/v5 v5.7.7
|
||||
github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.13
|
||||
github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.2
|
||||
github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.4
|
||||
github.com/alibabacloud-go/esa-20240910/v2 v2.39.2
|
||||
github.com/alibabacloud-go/fc-20230330/v4 v4.6.3
|
||||
github.com/alibabacloud-go/fc-open-20210406/v2 v2.0.12
|
||||
@@ -25,18 +25,18 @@ require (
|
||||
github.com/alibabacloud-go/slb-20140515/v4 v4.0.10
|
||||
github.com/alibabacloud-go/tea v1.3.13
|
||||
github.com/alibabacloud-go/vod-20170321/v4 v4.10.0
|
||||
github.com/alibabacloud-go/waf-openapi-20211001/v6 v6.6.0
|
||||
github.com/alibabacloud-go/waf-openapi-20211001/v6 v6.7.0
|
||||
github.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.3.0
|
||||
github.com/aws/aws-sdk-go-v2/service/acm v1.37.6
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.55.2
|
||||
github.com/aws/aws-sdk-go-v2/service/iam v1.49.0
|
||||
github.com/aws/aws-sdk-go-v2/service/acm v1.37.10
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.55.3
|
||||
github.com/aws/aws-sdk-go-v2/service/iam v1.49.1
|
||||
github.com/baidubce/bce-sdk-go v0.9.250
|
||||
github.com/byteplus-sdk/byteplus-sdk-golang v1.0.58
|
||||
github.com/go-acme/lego/v4 v4.27.0
|
||||
github.com/go-acme/lego/v4 v4.28.0
|
||||
github.com/go-cmd/cmd v1.4.3
|
||||
github.com/go-resty/resty/v2 v2.16.5
|
||||
github.com/go-viper/mapstructure/v2 v2.4.0
|
||||
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.172
|
||||
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.173
|
||||
github.com/jdcloud-api/jdcloud-sdk-go v1.64.0
|
||||
github.com/kong/go-kong v0.69.0
|
||||
github.com/libdns/dynv6 v1.0.0
|
||||
@@ -59,10 +59,10 @@ require (
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.1.47
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.1.13
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.1.36
|
||||
github.com/ucloud/ucloud-sdk-go v0.22.54
|
||||
github.com/ucloud/ucloud-sdk-go v0.22.56
|
||||
github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.21
|
||||
github.com/volcengine/volc-sdk-golang v1.0.224
|
||||
github.com/volcengine/volcengine-go-sdk v1.1.44
|
||||
github.com/volcengine/volc-sdk-golang v1.0.225
|
||||
github.com/volcengine/volcengine-go-sdk v1.1.46
|
||||
github.com/xhit/go-str2duration/v2 v2.1.0
|
||||
gitlab.ecloud.com/ecloud/ecloudsdkclouddns v1.0.1
|
||||
gitlab.ecloud.com/ecloud/ecloudsdkcore v1.0.0
|
||||
@@ -87,7 +87,7 @@ 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.58.4 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.59.1 // indirect
|
||||
github.com/buger/goterm v1.0.4 // indirect
|
||||
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
|
||||
github.com/diskfs/go-diskfs v1.5.0 // indirect
|
||||
@@ -124,10 +124,9 @@ require (
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // 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/bunny-go v0.1.0 // indirect
|
||||
github.com/nrdcg/desec v0.11.1 // indirect
|
||||
github.com/nrdcg/goacmedns v0.2.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
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
|
||||
@@ -147,7 +146,7 @@ require (
|
||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // 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.15.0 // indirect
|
||||
gopkg.in/ns1/ns1-go.v2 v2.15.1 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
k8s.io/klog/v2 v2.130.1 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
|
||||
@@ -169,18 +168,18 @@ require (
|
||||
github.com/alibabacloud-go/tea-xml v1.1.3 // indirect
|
||||
github.com/aliyun/credentials-go v1.4.7 // indirect
|
||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2 v1.39.4
|
||||
github.com/aws/aws-sdk-go-v2/config v1.31.12
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.16
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.11 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.11 // 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.13.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.29.6 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6 // indirect
|
||||
github.com/aws/aws-sdk-go-v2 v1.39.5
|
||||
github.com/aws/aws-sdk-go-v2/config v1.31.15
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.19
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.11 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.12 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.12 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.11 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.29.8 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.38.9 // indirect
|
||||
github.com/aws/smithy-go v1.23.1 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||
github.com/clbanning/mxj/v2 v2.7.0 // indirect
|
||||
|
||||
@@ -66,8 +66,8 @@ 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.34 h1:Qpvd4xKGFSejBf9Fw+BrCbnvdm9/d/tfAAw94G7/0OE=
|
||||
github.com/G-Core/gcorelabscdn-go v1.0.34/go.mod h1:iSGXaTvZBzDHQW+rKFS918BgFVpONcyLEijwh8WsXpE=
|
||||
github.com/G-Core/gcorelabscdn-go v1.0.35 h1:7UFoL1jSb8e+JN1xxQisGE8gtflqx1vM1gH7wa9fa1E=
|
||||
github.com/G-Core/gcorelabscdn-go v1.0.35/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=
|
||||
@@ -125,8 +125,8 @@ github.com/alibabacloud-go/darabonba-string v1.0.2 h1:E714wms5ibdzCqGeYJ9JCFywE5
|
||||
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.2 h1:KvHAZ1yCJ6NnF6aeqhR0e8kuc7zCrUAkS7+2RyQaJJU=
|
||||
github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.2/go.mod h1:fBEEvkfQEp5k7yfMzU4n0zWcibHDoGfakv3YaopBdiI=
|
||||
github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.4 h1:7QCjt29gSpdF1/BXto4GJLozAshNPbR6Obo/8pXlao4=
|
||||
github.com/alibabacloud-go/ddoscoo-20200101/v4 v4.0.4/go.mod h1:EXd820TvsKZyYHxdkkAtPFqS5Cjp3zAmKxQ9yZ4YLCk=
|
||||
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=
|
||||
@@ -193,8 +193,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.10.0 h1:e28BNu9IRhCtHI5HA+2ZRG4r9SDftAyp258q9py2tRU=
|
||||
github.com/alibabacloud-go/vod-20170321/v4 v4.10.0/go.mod h1:IkHD+fJL2oWvs9oxyp5Dc651AO5eptIP5PRsH0ofraA=
|
||||
github.com/alibabacloud-go/waf-openapi-20211001/v6 v6.6.0 h1:UCKCmA7hnnSlGUCVF31Z8v/+3UloJtyqNGV/ITAtr7U=
|
||||
github.com/alibabacloud-go/waf-openapi-20211001/v6 v6.6.0/go.mod h1:Pi1XJ9yMR6weUxPMDqVaT+mhHeeSPRdMZh2fl4VCKLs=
|
||||
github.com/alibabacloud-go/waf-openapi-20211001/v6 v6.7.0 h1:PBX4pFYXV8Ey+QKJYV3G0AC7X926jTFG2zVd5gRkCL4=
|
||||
github.com/alibabacloud-go/waf-openapi-20211001/v6 v6.7.0/go.mod h1:Pi1XJ9yMR6weUxPMDqVaT+mhHeeSPRdMZh2fl4VCKLs=
|
||||
github.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.3.0 h1:wQlqotpyjYPjJz+Noh5bRu7Snmydk8SKC5Z6u1CR20Y=
|
||||
github.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.3.0/go.mod h1:FTzydeQVmR24FI0D6XWUOMKckjXehM/jgMn1xC+DA9M=
|
||||
github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
|
||||
@@ -218,39 +218,39 @@ 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.39.4 h1:qTsQKcdQPHnfGYBBs+Btl8QwxJeoWcOcPcixK90mRhg=
|
||||
github.com/aws/aws-sdk-go-v2 v1.39.4/go.mod h1:yWSxrnioGUZ4WVv9TgMrNUeLV3PFESn/v+6T/Su8gnM=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.31.12 h1:pYM1Qgy0dKZLHX2cXslNacbcEFMkDMl+Bcj5ROuS6p8=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.31.12/go.mod h1:/MM0dyD7KSDPR+39p9ZNVKaHDLb9qnfDurvVS2KAhN8=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.16 h1:4JHirI4zp958zC026Sm+V4pSDwW4pwLefKrc0bF2lwI=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.16/go.mod h1:qQMtGx9OSw7ty1yLclzLxXCRbrkjWAM7JnObZjmCB7I=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9 h1:Mv4Bc0mWmv6oDuSWTKnk+wgeqPL5DRFu5bQL9BGPQ8Y=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9/go.mod h1:IKlKfRppK2a1y0gy1yH6zD+yX5uplJ6UuPlgd48dJiQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.11 h1:7AANQZkF3ihM8fbdftpjhken0TP9sBzFbV/Ze/Y4HXA=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.11/go.mod h1:NTF4QCGkm6fzVwncpkFQqoquQyOolcyXfbpC98urj+c=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.11 h1:ShdtWUZT37LCAA4Mw2kJAJtzaszfSHFb5n25sdcv4YE=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.11/go.mod h1:7bUb2sSr2MZ3M/N+VyETLTQtInemHXb/Fl3s8CLzm0Y=
|
||||
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.37.6 h1:48oGbMpBSzihrU145gpjrxySIs+VNGCXu9kLTLAdJJg=
|
||||
github.com/aws/aws-sdk-go-v2/service/acm v1.37.6/go.mod h1:4Xgg9iUMFMpWd19UokmUwBCU6fqNJ7LPo11YYt3/xl4=
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.55.2 h1:MnDEmZz8maF6Ge2GaK6T16jqPDhyesUODhMheFqUBqU=
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.55.2/go.mod h1:Ql3i8VKmdfYCcDhG6OpVkGM60IN9fPDV/7aMHCH3lds=
|
||||
github.com/aws/aws-sdk-go-v2 v1.39.5 h1:e/SXuia3rkFtapghJROrydtQpfQaaUgd1cUvyO1mp2w=
|
||||
github.com/aws/aws-sdk-go-v2 v1.39.5/go.mod h1:yWSxrnioGUZ4WVv9TgMrNUeLV3PFESn/v+6T/Su8gnM=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.31.15 h1:gE3M4xuNXfC/9bG4hyowGm/35uQTi7bUKeYs5e/6uvU=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.31.15/go.mod h1:HvnvGJoE2I95KAIW8kkWVPJ4XhdrlvwJpV6pEzFQa8o=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.19 h1:Jc1zzwkSY1QbkEcLujwqRTXOdvW8ppND3jRBb/VhBQc=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.18.19/go.mod h1:DIfQ9fAk5H0pGtnqfqkbSIzky82qYnGvh06ASQXXg6A=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.11 h1:X7X4YKb+c0rkI6d4uJ5tEMxXgCZ+jZ/D6mvkno8c8Uw=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.11/go.mod h1:EqM6vPZQsZHYvC4Cai35UDg/f5NCEU+vp0WfbVqVcZc=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.12 h1:p/9flfXdoAnwJnuW9xHEAFY22R3A6skYkW19JFF9F+8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.12/go.mod h1:ZTLHakoVCTtW8AaLGSwJ3LXqHD9uQKnOcv1TrpO6u2k=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.12 h1:2lTWFvRcnWFFLzHWmtddu5MTchc5Oj2OOey++99tPZ0=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.12/go.mod h1:hI92pK+ho8HVcWMHKHrK3Uml4pfG7wvL86FzO0LVtQQ=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
|
||||
github.com/aws/aws-sdk-go-v2/service/acm v1.37.10 h1:kORfSAFKQJuV+86FiEzSG4yDVPSBTPL2hcNdUHiTfjw=
|
||||
github.com/aws/aws-sdk-go-v2/service/acm v1.37.10/go.mod h1:socc8VxK7qg7mAEMa192VhUkNsikgtzsWHpAGGfSbfE=
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.55.3 h1:I1cy4m75ZT4A1pOdIS9gRiJ3Sp3oAQDnoSr7FdH0cWw=
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.55.3/go.mod h1:af/zNle59yEZVwKlGorGjIYteuW2QkFKIli28DsM26g=
|
||||
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.49.0 h1:3wiwzsfXBaykcbC4c6vaWkx9B46LXhFR8jyVMCZXK/k=
|
||||
github.com/aws/aws-sdk-go-v2/service/iam v1.49.0/go.mod h1:QvuzFFqvuknv43XjhxdWTMHt1ESYlQPaLJtb6iBlD3M=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 h1:5r34CgVOD4WZudeEKZ9/iKpiT6cM1JyEROpXjOcdWv8=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9/go.mod h1:dB12CEbNWPbzO2uC6QSWHteqOg4JfBVJOojbAoAUb5I=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.58.4 h1:KycXrohD5OxAZ5h02YechO2gevvoHfAPAaJM5l8zqb0=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.58.4/go.mod h1:xNLZLn4SusktBQ5moqUOgiDKGz3a7vHwF4W0KD+WBPc=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.29.6 h1:A1oRkiSQOWstGh61y4Wc/yQ04sqrQZr1Si/oAXj20/s=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.29.6/go.mod h1:5PfYspyCU5Vw1wNPsxi15LZovOnULudOQuVxphSflQA=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1 h1:5fm5RTONng73/QA73LhCNR7UT9RpFH3hR6HWL6bIgVY=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1/go.mod h1:xBEjWD13h+6nq+z4AkqSfSvqRKFgDIQeaMguAJndOWo=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6 h1:p3jIvqYwUZgu/XYeI48bJxOhvm47hZb5HUQ0tn6Q9kA=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6/go.mod h1:WtKK+ppze5yKPkZ0XwqIVWD4beCwv056ZbPQNoeHqM8=
|
||||
github.com/aws/aws-sdk-go-v2/service/iam v1.49.1 h1:eTd/dueph9k4ZPn2s2uMmzDrBpwtRchhVxYk4ZT7SDU=
|
||||
github.com/aws/aws-sdk-go-v2/service/iam v1.49.1/go.mod h1:OZUVTVNvBruorgXsEUctXiCDdmho+pY+l5O1P3JtKxY=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 h1:xtuxji5CS0JknaXoACOunXOYOQzgfTvGAc9s2QdCJA4=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2/go.mod h1:zxwi0DIR0rcRcgdbl7E2MSOvxDyyXGBlScvBkARFaLQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.11 h1:GpMf3z2KJa4RnJ0ew3Hac+hRFYLZ9DDjfgXjuW+pB54=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.11/go.mod h1:6MZP3ZI4QQsgUCFTwMZA2V0sEriNQ8k2hmoHF3qjimQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.59.1 h1:KuoA/cmy/yK8n9v/d6WH36cZwGxFOrn0TmZ4lNN3MKQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.59.1/go.mod h1:BymbICXBfXQHO6i+yTBhocA9a6DM0uMDQqYelqa9wzs=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.29.8 h1:M5nimZmugcZUO9wG7iVtROxPhiqyZX6ejS1lxlDPbTU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.29.8/go.mod h1:mbef/pgKhtKRwrigPPs7SSSKZgytzP8PQ6P6JAAdqyM=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.3 h1:S5GuJZpYxE0lKeMHKn+BRTz6PTFpgThyJ+5mYfux7BM=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.3/go.mod h1:X4OF+BTd7HIb3L+tc4UlWHVrpgwZZIVENU15pRDVTI0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.38.9 h1:Ekml5vGg6sHSZLZJQJagefnVe6PmqC2oiRkBq4F7fU0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.38.9/go.mod h1:/e15V+o1zFHWdH3u7lpI3rVBcxszktIKuHKCY2/py+k=
|
||||
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
|
||||
github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M=
|
||||
github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
|
||||
@@ -351,8 +351,8 @@ github.com/ganigeorgiev/fexpr v0.5.0/go.mod h1:RyGiGqmeXhEQ6+mlGdnUleLHgtzzu/VGO
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-acme/alidns-20150109/v4 v4.6.1 h1:Dch3aWRcw4U62+jKPjPQN3iW3TPvgIywATbvHzojXeo=
|
||||
github.com/go-acme/alidns-20150109/v4 v4.6.1/go.mod h1:RBcqBA5IvUWtlpjx6dC6EkPVyBNLQ+mR18XoaP38BFY=
|
||||
github.com/go-acme/lego/v4 v4.27.0 h1:cIhWd7Uj4BNFLEF3IpwuMkukVVRs5qjlp4KdUGa75yU=
|
||||
github.com/go-acme/lego/v4 v4.27.0/go.mod h1:9FfNZHZmg6hf5CWOp4Lzo4gU8aBEvqZvrwdkBboa+4g=
|
||||
github.com/go-acme/lego/v4 v4.28.0 h1:URKsCcybo7SjqqZckeBcDN9Vl29/bKS///75tcNkMHQ=
|
||||
github.com/go-acme/lego/v4 v4.28.0/go.mod h1:bzjilr03IgbaOwlH396hq5W56Bi0/uoRwW/JM8hP7m4=
|
||||
github.com/go-acme/tencentclouddnspod v1.1.10 h1:ERVJ4mc3cT4Nb3+n6H/c1AwZnChGBqLoymE0NVYscKI=
|
||||
github.com/go-acme/tencentclouddnspod v1.1.10/go.mod h1:Bo/0YQJ/99FM+44HmCQkByuptX1tJsJ9V14MGV/2Qco=
|
||||
github.com/go-cmd/cmd v1.4.3 h1:6y3G+3UqPerXvPcXvj+5QNPHT02BUw7p6PsqRxLNA7Y=
|
||||
@@ -545,8 +545,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.172 h1:68VUVbLKwBxPh8tjCXwnLO/d8/thdZ+ExpxdFMEdK5A=
|
||||
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.172/go.mod h1:M+yna96Fx9o5GbIUnF3OvVvQGjgfVSyeJbV9Yb1z/wI=
|
||||
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.173 h1:Y4ixGadyrK9xHw6Z+cyiiME3SBXepEcUoiT+B8C5FoQ=
|
||||
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.173/go.mod h1:M+yna96Fx9o5GbIUnF3OvVvQGjgfVSyeJbV9Yb1z/wI=
|
||||
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=
|
||||
@@ -689,14 +689,12 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS
|
||||
github.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w=
|
||||
github.com/ncruces/go-strftime v1.0.0/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-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/bunny-go v0.1.0 h1:GAHTRpHaG/TxfLZlqoJ8OJFzw8rI74+jOTkzxWh0uHA=
|
||||
github.com/nrdcg/bunny-go v0.1.0/go.mod h1:u+C9dgsspgtWVaAz6QkyV17s9fxD8viwwKoxb9XMz1A=
|
||||
github.com/nrdcg/desec v0.11.1 h1:ilpKmCr4gGsLcyq3RHfHNmlRzm9fzT2XbWxoVaUCS0s=
|
||||
github.com/nrdcg/desec v0.11.1/go.mod h1:2LuxHlOcwML/7cntu0eimONmA1U+ZxFDAonoSXr4igQ=
|
||||
github.com/nrdcg/goacmedns v0.2.0 h1:ADMbThobzEMnr6kg2ohs4KGa3LFqmgiBA22/6jUWJR0=
|
||||
github.com/nrdcg/goacmedns v0.2.0/go.mod h1:T5o6+xvSLrQpugmwHvrSNkzWht0UGAwj2ACBMhh73Cg=
|
||||
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.5.0 h1:6QNxT/XxE+f5B+7QlfWorthNzOzcGlBLRQxqi6YeBrE=
|
||||
github.com/nrdcg/namesilo v0.5.0/go.mod h1:4UkwlwQfDt74kSGmhLaDylnBrD94IfflnpoEaj6T2qw=
|
||||
github.com/nrdcg/porkbun v0.4.0 h1:rWweKlwo1PToQ3H+tEO9gPRW0wzzgmI/Ob3n2Guticw=
|
||||
@@ -877,18 +875,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/ucloud/ucloud-sdk-go v0.22.54 h1:eNZeYApGPWm22sXoHOFd3fP+mNqwyeFGR5E3CnOXxv8=
|
||||
github.com/ucloud/ucloud-sdk-go v0.22.54/go.mod h1:dyLmFHmUfgb4RZKYQP9IArlvQ2pxzFthfhwxRzOEPIw=
|
||||
github.com/ucloud/ucloud-sdk-go v0.22.56 h1:bUzoUxT06lI6psFN654btMPdzI4MtaWl6RC/4YmMlBs=
|
||||
github.com/ucloud/ucloud-sdk-go v0.22.56/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.21 h1:t6OkemY2V5wi6YNWB5ezqTrQM+/+bu0Bf35H9XrP5kQ=
|
||||
github.com/volcengine/ve-tos-golang-sdk/v2 v2.7.21/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.224 h1:k9Vtg64tQAgFTOGWzhyL0b0axuTuExXbLNVlslWlBZI=
|
||||
github.com/volcengine/volc-sdk-golang v1.0.224/go.mod h1:zHJlaqiMbIB+0mcrsZPTwOb3FB7S/0MCfqlnO8R7hlM=
|
||||
github.com/volcengine/volcengine-go-sdk v1.1.44 h1:WLoLlzt67ZlJeow55PPx65/Mh52DewVXqkHcFSodM9w=
|
||||
github.com/volcengine/volcengine-go-sdk v1.1.44/go.mod h1:oxoVo+A17kvkwPkIeIHPVLjSw7EQAm+l/Vau1YGHN+A=
|
||||
github.com/volcengine/volc-sdk-golang v1.0.225 h1:z50OEuSiK+5H2Mhw0ziLE0YfsV9MGUf30nMI/08W8T0=
|
||||
github.com/volcengine/volc-sdk-golang v1.0.225/go.mod h1:zHJlaqiMbIB+0mcrsZPTwOb3FB7S/0MCfqlnO8R7hlM=
|
||||
github.com/volcengine/volcengine-go-sdk v1.1.46 h1:Fl1SfTDdNelERa/Y7nWeGCokEJgD1zIjP0RvIdEoYPc=
|
||||
github.com/volcengine/volcengine-go-sdk v1.1.46/go.mod h1:oxoVo+A17kvkwPkIeIHPVLjSw7EQAm+l/Vau1YGHN+A=
|
||||
github.com/vultr/govultr/v3 v3.24.0 h1:fTTTj0VBve+Miy+wGhlb90M2NMDfpGFi6Frlj3HVy6M=
|
||||
github.com/vultr/govultr/v3 v3.24.0/go.mod h1:9WwnWGCKnwDlNjHjtt+j+nP+0QWq6hQXzaHgddqrLWY=
|
||||
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
|
||||
@@ -1390,8 +1388,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.15.0 h1:cE3xSMdSCV8kf9SQldzqgW/Ueh7sv3yO2JwKtYxxz3E=
|
||||
gopkg.in/ns1/ns1-go.v2 v2.15.0/go.mod h1:pfaU0vECVP7DIOr453z03HXS6dFJpXdNRwOyRzwmPSc=
|
||||
gopkg.in/ns1/ns1-go.v2 v2.15.1 h1:8rri2TzAPYcVbBGXn48+dz1Xg30PzHfZ4k8A9JOS0Z0=
|
||||
gopkg.in/ns1/ns1-go.v2 v2.15.1/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=
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package applicators
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/go-acme/lego/v4/challenge"
|
||||
|
||||
"github.com/certimate-go/certimate/internal/domain"
|
||||
"github.com/certimate-go/certimate/pkg/core/ssl-applicator/acme-dns01/providers/hostingde"
|
||||
xmaps "github.com/certimate-go/certimate/pkg/utils/maps"
|
||||
)
|
||||
|
||||
func init() {
|
||||
if err := ACMEDns01Registries.Register(domain.ACMEDns01ProviderTypeHostingde, func(options *ProviderFactoryOptions) (challenge.Provider, error) {
|
||||
credentials := domain.AccessConfigForHostingde{}
|
||||
if err := xmaps.Populate(options.ProviderAccessConfig, &credentials); err != nil {
|
||||
return nil, fmt.Errorf("failed to populate provider access config: %w", err)
|
||||
}
|
||||
|
||||
provider, err := hostingde.NewChallengeProvider(&hostingde.ChallengeProviderConfig{
|
||||
ApiKey: credentials.ApiKey,
|
||||
DnsPropagationTimeout: options.DnsPropagationTimeout,
|
||||
DnsTTL: options.DnsTTL,
|
||||
})
|
||||
return provider, err
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
@@ -247,6 +247,10 @@ type AccessConfigForHetzner struct {
|
||||
ApiToken string `json:"apiToken"`
|
||||
}
|
||||
|
||||
type AccessConfigForHostingde struct {
|
||||
ApiKey string `json:"apiKey"`
|
||||
}
|
||||
|
||||
type AccessConfigForHostinger struct {
|
||||
ApiToken string `json:"apiToken"`
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ type Certificate struct {
|
||||
KeyAlgorithm CertificateKeyAlgorithmType `json:"keyAlgorithm" db:"keyAlgorithm"`
|
||||
ValidityNotBefore time.Time `json:"validityNotBefore" db:"validityNotBefore"`
|
||||
ValidityNotAfter time.Time `json:"validityNotAfter" db:"validityNotAfter"`
|
||||
ValidityInterval int32 `json:"validityInterval" db:"validityInterval"`
|
||||
ACMEAcctUrl string `json:"acmeAcctUrl" db:"acmeAcctUrl"`
|
||||
ACMECertUrl string `json:"acmeCertUrl" db:"acmeCertUrl"`
|
||||
ACMECertStableUrl string `json:"acmeCertStableUrl" db:"acmeCertStableUrl"`
|
||||
@@ -43,6 +44,7 @@ func (c *Certificate) PopulateFromX509(certX509 *x509.Certificate) *Certificate
|
||||
c.IssuerOrg = strings.Join(certX509.Issuer.Organization, ";")
|
||||
c.ValidityNotBefore = certX509.NotBefore
|
||||
c.ValidityNotAfter = certX509.NotAfter
|
||||
c.ValidityInterval = int32(certX509.NotAfter.Sub(certX509.NotBefore).Seconds())
|
||||
|
||||
keyAlgorithm, keySize, _ := xcryptokey.GetPublicKeyAlgorithm(certX509.PublicKey)
|
||||
switch keyAlgorithm {
|
||||
|
||||
@@ -54,6 +54,7 @@ const (
|
||||
AccessProviderTypeGoEdge = AccessProviderType("goedge")
|
||||
AccessProviderTypeGoogleTrustServices = AccessProviderType("googletrustservices")
|
||||
AccessProviderTypeHetzner = AccessProviderType("hetzner")
|
||||
AccessProviderTypeHostingde = AccessProviderType("hostingde")
|
||||
AccessProviderTypeHostinger = AccessProviderType("hostinger")
|
||||
AccessProviderTypeHuaweiCloud = AccessProviderType("huaweicloud")
|
||||
AccessProviderTypeIONOS = AccessProviderType("ionos")
|
||||
@@ -165,6 +166,7 @@ const (
|
||||
ACMEDns01ProviderTypeGname = ACMEDns01ProviderType(AccessProviderTypeGname)
|
||||
ACMEDns01ProviderTypeGoDaddy = ACMEDns01ProviderType(AccessProviderTypeGoDaddy)
|
||||
ACMEDns01ProviderTypeHetzner = ACMEDns01ProviderType(AccessProviderTypeHetzner)
|
||||
ACMEDns01ProviderTypeHostingde = ACMEDns01ProviderType(AccessProviderTypeHostingde)
|
||||
ACMEDns01ProviderTypeHostinger = ACMEDns01ProviderType(AccessProviderTypeHostinger)
|
||||
ACMEDns01ProviderTypeHuaweiCloud = ACMEDns01ProviderType(AccessProviderTypeHuaweiCloud) // 兼容旧值,等同于 [ACMEDns01ProviderTypeHuaweiCloudDNS]
|
||||
ACMEDns01ProviderTypeHuaweiCloudDNS = ACMEDns01ProviderType(AccessProviderTypeHuaweiCloud + "-dns")
|
||||
|
||||
@@ -126,6 +126,7 @@ func (r *CertificateRepository) Save(ctx context.Context, certificate *domain.Ce
|
||||
record.Set("keyAlgorithm", string(certificate.KeyAlgorithm))
|
||||
record.Set("validityNotBefore", certificate.ValidityNotBefore)
|
||||
record.Set("validityNotAfter", certificate.ValidityNotAfter)
|
||||
record.Set("validityInterval", certificate.ValidityInterval)
|
||||
record.Set("acmeAcctUrl", certificate.ACMEAcctUrl)
|
||||
record.Set("acmeCertUrl", certificate.ACMECertUrl)
|
||||
record.Set("acmeCertStableUrl", certificate.ACMECertStableUrl)
|
||||
@@ -188,6 +189,7 @@ func (r *CertificateRepository) castRecordToModel(record *core.Record) (*domain.
|
||||
KeyAlgorithm: domain.CertificateKeyAlgorithmType(record.GetString("keyAlgorithm")),
|
||||
ValidityNotBefore: record.GetDateTime("validityNotBefore").Time(),
|
||||
ValidityNotAfter: record.GetDateTime("validityNotAfter").Time(),
|
||||
ValidityInterval: int32(record.GetInt("validityInterval")),
|
||||
ACMEAcctUrl: record.GetString("acmeAcctUrl"),
|
||||
ACMECertUrl: record.GetString("acmeCertUrl"),
|
||||
ACMECertStableUrl: record.GetString("acmeCertStableUrl"),
|
||||
|
||||
@@ -14,12 +14,28 @@ func init() {
|
||||
// update collection `certificate`
|
||||
// - rename field `acmeRenewed` to `isRenewed`
|
||||
// - add field `isRevoked`
|
||||
// - add field `validityInterval`
|
||||
{
|
||||
collection, err := app.FindCollectionByNameOrId("4szxr9x43tpj6np")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := collection.Fields.AddMarshaledJSONAt(10, []byte(`{
|
||||
"hidden": false,
|
||||
"id": "number2453290051",
|
||||
"max": null,
|
||||
"min": null,
|
||||
"name": "validityInterval",
|
||||
"onlyInt": false,
|
||||
"presentable": false,
|
||||
"required": false,
|
||||
"system": false,
|
||||
"type": "number"
|
||||
}`)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := collection.Fields.AddMarshaledJSONAt(14, []byte(`{
|
||||
"hidden": false,
|
||||
"id": "bool810050391",
|
||||
@@ -47,6 +63,10 @@ func init() {
|
||||
if err := app.Save(collection); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := app.DB().NewQuery("UPDATE certificate SET validityInterval = (STRFTIME('%s', validityNotAfter) - STRFTIME('%s', validityNotBefore))").Execute(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// adapt to new workflow data structure
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package hostingde
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/go-acme/lego/v4/providers/dns/hostingde"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core"
|
||||
)
|
||||
|
||||
type ChallengeProviderConfig struct {
|
||||
ApiKey string `json:"apiKey"`
|
||||
DnsPropagationTimeout int32 `json:"dnsPropagationTimeout,omitempty"`
|
||||
DnsTTL int32 `json:"dnsTTL,omitempty"`
|
||||
}
|
||||
|
||||
func NewChallengeProvider(config *ChallengeProviderConfig) (core.ACMEChallenger, error) {
|
||||
if config == nil {
|
||||
return nil, errors.New("the configuration of the acme challenge provider is nil")
|
||||
}
|
||||
|
||||
providerConfig := hostingde.NewDefaultConfig()
|
||||
providerConfig.APIKey = config.ApiKey
|
||||
if config.DnsPropagationTimeout != 0 {
|
||||
providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second
|
||||
}
|
||||
if config.DnsTTL != 0 {
|
||||
providerConfig.TTL = int(config.DnsTTL)
|
||||
}
|
||||
|
||||
provider, err := hostingde.NewDNSProviderConfig(providerConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return provider, nil
|
||||
}
|
||||
Generated
+71
-62
@@ -18,8 +18,8 @@
|
||||
"@uiw/codemirror-extensions-basic-setup": "^4.25.2",
|
||||
"@uiw/codemirror-theme-vscode": "^4.25.2",
|
||||
"@uiw/react-codemirror": "^4.25.2",
|
||||
"ahooks": "^3.9.5",
|
||||
"antd": "^5.27.6",
|
||||
"ahooks": "^3.9.6",
|
||||
"antd": "^5.28.0",
|
||||
"antd-zod": "^7.0.0",
|
||||
"clsx": "^2.1.1",
|
||||
"cron-parser": "^5.4.0",
|
||||
@@ -33,15 +33,15 @@
|
||||
"react": "^18.3.1",
|
||||
"react-copy-to-clipboard": "^5.1.0",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-i18next": "^16.2.0",
|
||||
"react-router-dom": "^7.9.4",
|
||||
"react-i18next": "^16.2.3",
|
||||
"react-router-dom": "^7.9.5",
|
||||
"tailwind-merge": "^3.3.1",
|
||||
"yaml": "^2.8.1",
|
||||
"zod": "^4.1.12",
|
||||
"zustand": "^5.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.38.0",
|
||||
"@eslint/js": "^9.39.0",
|
||||
"@tailwindcss/postcss": "^4.1.16",
|
||||
"@tailwindcss/vite": "^4.1.16",
|
||||
"@types/file-saver": "^2.0.7",
|
||||
@@ -52,7 +52,7 @@
|
||||
"@types/react-dom": "^18.3.7",
|
||||
"@vitejs/plugin-legacy": "^7.2.1",
|
||||
"@vitejs/plugin-react": "^5.1.0",
|
||||
"eslint": "^9.38.0",
|
||||
"eslint": "^9.39.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-import-resolver-typescript": "^4.4.4",
|
||||
"eslint-plugin-better-tailwindcss": "^3.7.10",
|
||||
@@ -2258,23 +2258,24 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/config-helpers": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/config-helpers/-/config-helpers-0.4.1.tgz",
|
||||
"integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==",
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
|
||||
"integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@eslint/core": "^0.16.0"
|
||||
"@eslint/core": "^0.17.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/core": {
|
||||
"version": "0.16.0",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/core/-/core-0.16.0.tgz",
|
||||
"integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==",
|
||||
"version": "0.17.0",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/core/-/core-0.17.0.tgz",
|
||||
"integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.15"
|
||||
},
|
||||
@@ -2331,9 +2332,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "9.38.0",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/js/-/js-9.38.0.tgz",
|
||||
"integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==",
|
||||
"version": "9.39.0",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/js/-/js-9.39.0.tgz",
|
||||
"integrity": "sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -2354,12 +2355,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/plugin-kit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz",
|
||||
"integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==",
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmmirror.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
|
||||
"integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@eslint/core": "^0.16.0",
|
||||
"@eslint/core": "^0.17.0",
|
||||
"levn": "^0.4.1"
|
||||
},
|
||||
"engines": {
|
||||
@@ -3178,6 +3180,7 @@
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@rc-component/async-validator/-/async-validator-5.0.4.tgz",
|
||||
"integrity": "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.24.4"
|
||||
},
|
||||
@@ -3259,9 +3262,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rc-component/qrcode": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/@rc-component/qrcode/-/qrcode-1.0.1.tgz",
|
||||
"integrity": "sha512-g8eeeaMyFXVlq8cZUeaxCDhfIYjpao0l9cvm5gFwKXy/Vm1yDWV7h2sjH5jHYzdFedlVKBpATFB1VKMrHzwaWQ==",
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@rc-component/qrcode/-/qrcode-1.1.0.tgz",
|
||||
"integrity": "sha512-ABA80Yer0c6I2+moqNY0kF3Y1NxIT6wDP/EINIqbiRbfZKP1HtHpKMh8WuTXLgVGYsoWG2g9/n0PgM8KdnJb4Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.24.7",
|
||||
"classnames": "^2.3.2"
|
||||
@@ -4010,7 +4014,8 @@
|
||||
"version": "7.0.15",
|
||||
"resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
|
||||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/json5": {
|
||||
"version": "0.0.29",
|
||||
@@ -4746,9 +4751,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ahooks": {
|
||||
"version": "3.9.5",
|
||||
"resolved": "https://registry.npmmirror.com/ahooks/-/ahooks-3.9.5.tgz",
|
||||
"integrity": "sha512-TrjXie49Q8HuHKTa84Fm9A+famMDAG1+7a9S9Gq6RQ0h90Jgqmiq3CkObuRjWT/C4d6nRZCw35Y2k2fmybb5eA==",
|
||||
"version": "3.9.6",
|
||||
"resolved": "https://registry.npmmirror.com/ahooks/-/ahooks-3.9.6.tgz",
|
||||
"integrity": "sha512-Mr7f05swd5SmKlR9SZo5U6M0LsL4ErweLzpdgXjA1JPmnZ78Vr6wzx0jUtvoxrcqGKYnX0Yjc02iEASVxHFPjQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
@@ -4761,9 +4767,6 @@
|
||||
"screenfull": "^5.0.0",
|
||||
"tslib": "^2.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||
@@ -4801,9 +4804,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/antd": {
|
||||
"version": "5.27.6",
|
||||
"resolved": "https://registry.npmmirror.com/antd/-/antd-5.27.6.tgz",
|
||||
"integrity": "sha512-70HrjVbzDXvtiUQ5MP1XdNudr/wGAk9Ivaemk6f36yrAeJurJSmZ8KngOIilolLRHdGuNc6/Vk+4T1OZpSjpag==",
|
||||
"version": "5.28.0",
|
||||
"resolved": "https://registry.npmmirror.com/antd/-/antd-5.28.0.tgz",
|
||||
"integrity": "sha512-AmCvyhWGHzlDQ6sfnGBBrFm/8sLPbBI8d/NDBsecliKqrTZUMr07TAQldo43iowwKzvgKxxuRoUHaBaYcBMdQA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7.2.1",
|
||||
@@ -4815,7 +4818,7 @@
|
||||
"@babel/runtime": "^7.26.0",
|
||||
"@rc-component/color-picker": "~2.0.1",
|
||||
"@rc-component/mutate-observer": "^1.1.0",
|
||||
"@rc-component/qrcode": "~1.0.1",
|
||||
"@rc-component/qrcode": "~1.1.0",
|
||||
"@rc-component/tour": "~1.15.1",
|
||||
"@rc-component/trigger": "^2.3.0",
|
||||
"classnames": "^2.5.1",
|
||||
@@ -4827,7 +4830,7 @@
|
||||
"rc-dialog": "~9.6.0",
|
||||
"rc-drawer": "~7.3.0",
|
||||
"rc-dropdown": "~4.2.1",
|
||||
"rc-field-form": "~2.7.0",
|
||||
"rc-field-form": "~2.7.1",
|
||||
"rc-image": "~7.12.0",
|
||||
"rc-input": "~1.8.0",
|
||||
"rc-input-number": "~9.5.0",
|
||||
@@ -4851,7 +4854,7 @@
|
||||
"rc-tooltip": "~6.4.0",
|
||||
"rc-tree": "~5.13.1",
|
||||
"rc-tree-select": "~5.27.0",
|
||||
"rc-upload": "~4.9.2",
|
||||
"rc-upload": "~4.11.0",
|
||||
"rc-util": "^5.44.4",
|
||||
"scroll-into-view-if-needed": "^3.1.0",
|
||||
"throttle-debounce": "^5.0.2"
|
||||
@@ -5347,6 +5350,7 @@
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/cookie/-/cookie-1.0.2.tgz",
|
||||
"integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
@@ -5782,20 +5786,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "9.38.0",
|
||||
"resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.38.0.tgz",
|
||||
"integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==",
|
||||
"version": "9.39.0",
|
||||
"resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.39.0.tgz",
|
||||
"integrity": "sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.8.0",
|
||||
"@eslint-community/regexpp": "^4.12.1",
|
||||
"@eslint/config-array": "^0.21.1",
|
||||
"@eslint/config-helpers": "^0.4.1",
|
||||
"@eslint/core": "^0.16.0",
|
||||
"@eslint/config-helpers": "^0.4.2",
|
||||
"@eslint/core": "^0.17.0",
|
||||
"@eslint/eslintrc": "^3.3.1",
|
||||
"@eslint/js": "9.38.0",
|
||||
"@eslint/plugin-kit": "^0.4.0",
|
||||
"@eslint/js": "9.39.0",
|
||||
"@eslint/plugin-kit": "^0.4.1",
|
||||
"@humanfs/node": "^0.16.6",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@humanwhocodes/retry": "^0.4.2",
|
||||
@@ -8256,9 +8260,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-field-form": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmmirror.com/rc-field-form/-/rc-field-form-2.7.0.tgz",
|
||||
"integrity": "sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==",
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmmirror.com/rc-field-form/-/rc-field-form-2.7.1.tgz",
|
||||
"integrity": "sha512-vKeSifSJ6HoLaAB+B8aq/Qgm8a3dyxROzCtKNCsBQgiverpc4kWDQihoUwzUj+zNWJOykwSY4dNX3QrGwtVb9A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.0",
|
||||
"@rc-component/async-validator": "^5.0.3",
|
||||
@@ -8691,9 +8696,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-upload": {
|
||||
"version": "4.9.2",
|
||||
"resolved": "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.9.2.tgz",
|
||||
"integrity": "sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ==",
|
||||
"version": "4.11.0",
|
||||
"resolved": "https://registry.npmmirror.com/rc-upload/-/rc-upload-4.11.0.tgz",
|
||||
"integrity": "sha512-ZUyT//2JAehfHzjWowqROcwYJKnZkIUGWaTE/VogVrepSl7AFNbQf4+zGfX4zl9Vrj/Jm8scLO0R6UlPDKK4wA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"classnames": "^2.2.5",
|
||||
@@ -8776,9 +8782,9 @@
|
||||
"integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
|
||||
},
|
||||
"node_modules/react-i18next": {
|
||||
"version": "16.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-16.2.0.tgz",
|
||||
"integrity": "sha512-giCEDa6NtQYvuLGW9xaBo4HCVxT0Y8jrOpX/uSnd+lZ3Dmm/2BNrGNEgRZzWDkSobmE6IWPJ+/Ow9Rhi/gP6+g==",
|
||||
"version": "16.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-16.2.3.tgz",
|
||||
"integrity": "sha512-O0t2zvmIz7nHWKNfIL+O/NTIbpTaOPY0vZov779hegbep3IZ+xcqkeVPKWBSXwzdkiv77q8zmq9toKIUys1x3A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.27.6",
|
||||
@@ -8818,9 +8824,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-router": {
|
||||
"version": "7.9.4",
|
||||
"resolved": "https://registry.npmmirror.com/react-router/-/react-router-7.9.4.tgz",
|
||||
"integrity": "sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA==",
|
||||
"version": "7.9.5",
|
||||
"resolved": "https://registry.npmmirror.com/react-router/-/react-router-7.9.5.tgz",
|
||||
"integrity": "sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cookie": "^1.0.1",
|
||||
"set-cookie-parser": "^2.6.0"
|
||||
@@ -8839,11 +8846,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-router-dom": {
|
||||
"version": "7.9.4",
|
||||
"resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-7.9.4.tgz",
|
||||
"integrity": "sha512-f30P6bIkmYvnHHa5Gcu65deIXoA2+r3Eb6PJIAddvsT9aGlchMatJ51GgpU470aSqRRbFX22T70yQNUGuW3DfA==",
|
||||
"version": "7.9.5",
|
||||
"resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-7.9.5.tgz",
|
||||
"integrity": "sha512-mkEmq/K8tKN63Ae2M7Xgz3c9l9YNbY+NHH6NNeUmLA3kDkhKXRsNb/ZpxaEunvGo2/3YXdk5EJU3Hxp3ocaBPw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"react-router": "7.9.4"
|
||||
"react-router": "7.9.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
@@ -9200,9 +9208,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/set-cookie-parser": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
|
||||
"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
|
||||
"integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/set-function-length": {
|
||||
"version": "1.2.2",
|
||||
|
||||
+6
-6
@@ -20,8 +20,8 @@
|
||||
"@uiw/codemirror-extensions-basic-setup": "^4.25.2",
|
||||
"@uiw/codemirror-theme-vscode": "^4.25.2",
|
||||
"@uiw/react-codemirror": "^4.25.2",
|
||||
"ahooks": "^3.9.5",
|
||||
"antd": "^5.27.6",
|
||||
"ahooks": "^3.9.6",
|
||||
"antd": "^5.28.0",
|
||||
"antd-zod": "^7.0.0",
|
||||
"clsx": "^2.1.1",
|
||||
"cron-parser": "^5.4.0",
|
||||
@@ -35,15 +35,15 @@
|
||||
"react": "^18.3.1",
|
||||
"react-copy-to-clipboard": "^5.1.0",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-i18next": "^16.2.0",
|
||||
"react-router-dom": "^7.9.4",
|
||||
"react-i18next": "^16.2.3",
|
||||
"react-router-dom": "^7.9.5",
|
||||
"tailwind-merge": "^3.3.1",
|
||||
"yaml": "^2.8.1",
|
||||
"zod": "^4.1.12",
|
||||
"zustand": "^5.0.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.38.0",
|
||||
"@eslint/js": "^9.39.0",
|
||||
"@tailwindcss/postcss": "^4.1.16",
|
||||
"@tailwindcss/vite": "^4.1.16",
|
||||
"@types/file-saver": "^2.0.7",
|
||||
@@ -54,7 +54,7 @@
|
||||
"@types/react-dom": "^18.3.7",
|
||||
"@vitejs/plugin-legacy": "^7.2.1",
|
||||
"@vitejs/plugin-react": "^5.1.0",
|
||||
"eslint": "^9.38.0",
|
||||
"eslint": "^9.39.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-import-resolver-typescript": "^4.4.4",
|
||||
"eslint-plugin-better-tailwindcss": "^3.7.10",
|
||||
|
||||
@@ -1 +1 @@
|
||||
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1684" width="200" height="200"><path d="M482.687 74.101c10.109-5.627 19.662-12.497 30.785-15.998 8.506-2.192 16.685 2.323 23.883 6.38 117.253 68.08 235.062 135.312 352.118 203.753-40.338 22.115-79.662 46.063-119.805 68.506-27.677 15.148-62.814 13.74-89.771-2.388-48.289-28.135-96.871-55.78-145.127-84.014-8.997-5.692-21.232-5.889-30.654-1.21-49.728 28.724-99.456 57.58-149.282 86.173-27.056 15.834-61.963 15.867-89.314 0.687a26252.906 26252.906 0 0 1-113.785-65.628c-0.229-1.178-0.72-3.533-0.949-4.744 110.776-63.533 221.256-127.722 331.9-191.517z" fill="#72AF2D" p-id="1685"></path><path d="M115.552 719.744c0.49-135.148-0.622-270.329 0.556-405.477 32.617 19.367 65.595 38.08 98.441 57.088 12.76 7.427 26.27 14.199 36.74 24.864 15.769 16.39 26.042 38.67 25.845 61.637 0.033 54.57 0.131 109.172-0.065 163.774-1.047 12.203 3.304 25.65 14.493 31.963 40.567 23.72 81.396 47.045 122.095 70.6 14.362 8.638 29.771 15.9 42.4 27.057 18.156 17.11 28.756 41.777 29.116 66.707-0.033 44.559-0.196 89.15 0.066 133.709-10.175-3.468-18.877-9.848-28.201-14.984-108.55-62.716-217.167-125.366-325.652-188.148-10.207-5.66-17.143-16.947-15.834-28.79z" fill="#118CCF" p-id="1686"></path><path d="M815.143 367.397c30.753-17.47 61.015-35.824 92.095-52.705 0.196 135.017-0.066 270.035 0.13 405.052 0.819 11.582-5.3 23.163-15.637 28.627-110.416 63.86-220.896 127.558-331.312 191.386-7.328 4.45-14.722 8.8-22.508 12.432-0.098-44.82 0.065-89.64-0.098-134.428-0.426-31.538 17.47-62.16 44.558-78.06 49.074-28.43 98.245-56.664 147.286-85.159 8.245-4.515 15.311-13.053 14.919-22.9 0.13-55.683 0.065-111.398 0-167.08-0.033-23.784 8.048-47.732 24.21-65.398 12.497-14.362 30.36-22.083 46.357-31.767z" fill="#DA4525" p-id="1687"></path></svg>
|
||||
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><path d="M482.687 74.101c10.109-5.627 19.662-12.497 30.785-15.998 8.506-2.192 16.685 2.323 23.883 6.38 117.253 68.08 235.062 135.312 352.118 203.753-40.338 22.115-79.662 46.063-119.805 68.506-27.677 15.148-62.814 13.74-89.771-2.388-48.289-28.135-96.871-55.78-145.127-84.014-8.997-5.692-21.232-5.889-30.654-1.21-49.728 28.724-99.456 57.58-149.282 86.173-27.056 15.834-61.963 15.867-89.314 0.687a26252.906 26252.906 0 0 1-113.785-65.628c-0.229-1.178-0.72-3.533-0.949-4.744 110.776-63.533 221.256-127.722 331.9-191.517z" fill="#72AF2D"></path><path d="M115.552 719.744c0.49-135.148-0.622-270.329 0.556-405.477 32.617 19.367 65.595 38.08 98.441 57.088 12.76 7.427 26.27 14.199 36.74 24.864 15.769 16.39 26.042 38.67 25.845 61.637 0.033 54.57 0.131 109.172-0.065 163.774-1.047 12.203 3.304 25.65 14.493 31.963 40.567 23.72 81.396 47.045 122.095 70.6 14.362 8.638 29.771 15.9 42.4 27.057 18.156 17.11 28.756 41.777 29.116 66.707-0.033 44.559-0.196 89.15 0.066 133.709-10.175-3.468-18.877-9.848-28.201-14.984-108.55-62.716-217.167-125.366-325.652-188.148-10.207-5.66-17.143-16.947-15.834-28.79z" fill="#118CCF"></path><path d="M815.143 367.397c30.753-17.47 61.015-35.824 92.095-52.705 0.196 135.017-0.066 270.035 0.13 405.052 0.819 11.582-5.3 23.163-15.637 28.627-110.416 63.86-220.896 127.558-331.312 191.386-7.328 4.45-14.722 8.8-22.508 12.432-0.098-44.82 0.065-89.64-0.098-134.428-0.426-31.538 17.47-62.16 44.558-78.06 49.074-28.43 98.245-56.664 147.286-85.159 8.245-4.515 15.311-13.053 14.919-22.9 0.13-55.683 0.065-111.398 0-167.08-0.033-23.784 8.048-47.732 24.21-65.398 12.497-14.362 30.36-22.083 46.357-31.767z" fill="#DA4525"></path></svg>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-11 -1 209 219" fill="none"><g xmlns="http://www.w3.org/2000/svg"><path d="M101.56 201.22c-33.24 4.25-67.28-14-85.84-41.13C4.99995 144.35-.0900482 125.88-.482179e-4 106.88.0799518 89 4.58995 63 18.08 49.82c20.53-20.07 23.61 26.94 25 38.24 2.313 18.253 4.647 36.503 7 54.75 3.67 28.48 17.41 63.09 51.48 58.41z" fill="#fbb03b"/><path d="M171.78 214.88C143.1 224.8 108.92 210.21 94.2399 184.19c-9.45-17.153-11.481-37.423-5.6199-56.11C94.38 110.52 104.62 117.42 109.62 130.42c10.38 26.65 21.2 99.58 62.16 84.46z" fill="#1b4964"/><path d="M77.1499 15.46C110.32 11.22 144.36 29.15 162.96 56.26c10.78 15.72 15.76 34.14 15.7 53.12C178.6 126.38 173.98 156.63 159.29 167.96c-20.67 15.94-22.57-30.53-23.94-41.26C133.02 108.44 130.74 90.18 128.35 71.93 124.65 43.57 110.56 10.87 77.1499 15.46z" fill="#e6302b"/><path d="M5.44995 3.12C33.54-6.59 66.94 7.22 82 32.26 91.443 48.38 94.238 67.545 89.79 85.69c-4.36 17.38-14.7901 19.81-21.7001 3.23C56.9099 62.15 47.34-11.92 5.44995 3.12z" fill="#8cc63f"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -1,4 +1,3 @@
|
||||
import { useMemo } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Form, type FormInstance, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
@@ -11,91 +10,7 @@ import { useAntdForm } from "@/hooks";
|
||||
|
||||
import { FormNestedFieldsContextProvider } from "./forms/_context";
|
||||
import { useProviderFilterByUsage } from "./forms/_hooks";
|
||||
import AccessConfigFieldsProvider1Panel from "./forms/AccessConfigFieldsProvider1Panel";
|
||||
import AccessConfigFieldsProviderACMECA from "./forms/AccessConfigFieldsProviderACMECA";
|
||||
import AccessConfigFieldsProviderACMEDNS from "./forms/AccessConfigFieldsProviderACMEDNS";
|
||||
import AccessConfigFieldsProviderACMEHttpReq from "./forms/AccessConfigFieldsProviderACMEHttpReq";
|
||||
import AccessConfigFieldsProviderActalisSSL from "./forms/AccessConfigFieldsProviderActalisSSL";
|
||||
import AccessConfigFieldsProviderAliyun from "./forms/AccessConfigFieldsProviderAliyun";
|
||||
import AccessConfigFieldsProviderAPISIX from "./forms/AccessConfigFieldsProviderAPISIX";
|
||||
import AccessConfigFieldsProviderAWS from "./forms/AccessConfigFieldsProviderAWS";
|
||||
import AccessConfigFieldsProviderAzure from "./forms/AccessConfigFieldsProviderAzure";
|
||||
import AccessConfigFieldsProviderBaiduCloud from "./forms/AccessConfigFieldsProviderBaiduCloud";
|
||||
import AccessConfigFieldsProviderBaishan from "./forms/AccessConfigFieldsProviderBaishan";
|
||||
import AccessConfigFieldsProviderBaotaPanel from "./forms/AccessConfigFieldsProviderBaotaPanel";
|
||||
import AccessConfigFieldsProviderBaotaPanelGo from "./forms/AccessConfigFieldsProviderBaotaPanelGo";
|
||||
import AccessConfigFieldsProviderBaotaWAF from "./forms/AccessConfigFieldsProviderBaotaWAF";
|
||||
import AccessConfigFieldsProviderBookMyName from "./forms/AccessConfigFieldsProviderBookMyName";
|
||||
import AccessConfigFieldsProviderBunny from "./forms/AccessConfigFieldsProviderBunny";
|
||||
import AccessConfigFieldsProviderBytePlus from "./forms/AccessConfigFieldsProviderBytePlus";
|
||||
import AccessConfigFieldsProviderCacheFly from "./forms/AccessConfigFieldsProviderCacheFly";
|
||||
import AccessConfigFieldsProviderCdnfly from "./forms/AccessConfigFieldsProviderCdnfly";
|
||||
import AccessConfigFieldsProviderCloudflare from "./forms/AccessConfigFieldsProviderCloudflare";
|
||||
import AccessConfigFieldsProviderClouDNS from "./forms/AccessConfigFieldsProviderClouDNS";
|
||||
import AccessConfigFieldsProviderCMCCCloud from "./forms/AccessConfigFieldsProviderCMCCCloud";
|
||||
import AccessConfigFieldsProviderConstellix from "./forms/AccessConfigFieldsProviderConstellix";
|
||||
import AccessConfigFieldsProviderCTCCCloud from "./forms/AccessConfigFieldsProviderCTCCCloud";
|
||||
import AccessConfigFieldsProviderDeSEC from "./forms/AccessConfigFieldsProviderDeSEC";
|
||||
import AccessConfigFieldsProviderDigitalOcean from "./forms/AccessConfigFieldsProviderDigitalOcean";
|
||||
import AccessConfigFieldsProviderDingTalkBot from "./forms/AccessConfigFieldsProviderDingTalkBot";
|
||||
import AccessConfigFieldsProviderDiscordBot from "./forms/AccessConfigFieldsProviderDiscordBot";
|
||||
import AccessConfigFieldsProviderDNSLA from "./forms/AccessConfigFieldsProviderDNSLA";
|
||||
import AccessConfigFieldsProviderDogeCloud from "./forms/AccessConfigFieldsProviderDogeCloud";
|
||||
import AccessConfigFieldsProviderDuckDNS from "./forms/AccessConfigFieldsProviderDuckDNS";
|
||||
import AccessConfigFieldsProviderDynv6 from "./forms/AccessConfigFieldsProviderDynv6";
|
||||
import AccessConfigFieldsProviderEmail from "./forms/AccessConfigFieldsProviderEmail";
|
||||
import AccessConfigFieldsProviderFlexCDN from "./forms/AccessConfigFieldsProviderFlexCDN";
|
||||
import AccessConfigFieldsProviderGandinet from "./forms/AccessConfigFieldsProviderGandinet";
|
||||
import AccessConfigFieldsProviderGcore from "./forms/AccessConfigFieldsProviderGcore";
|
||||
import AccessConfigFieldsProviderGlobalSignAtlas from "./forms/AccessConfigFieldsProviderGlobalSignAtlas";
|
||||
import AccessConfigFieldsProviderGname from "./forms/AccessConfigFieldsProviderGname";
|
||||
import AccessConfigFieldsProviderGoDaddy from "./forms/AccessConfigFieldsProviderGoDaddy";
|
||||
import AccessConfigFieldsProviderGoEdge from "./forms/AccessConfigFieldsProviderGoEdge";
|
||||
import AccessConfigFieldsProviderGoogleTrustServices from "./forms/AccessConfigFieldsProviderGoogleTrustServices";
|
||||
import AccessConfigFieldsProviderHetzner from "./forms/AccessConfigFieldsProviderHetzner";
|
||||
import AccessConfigFieldsProviderHostinger from "./forms/AccessConfigFieldsProviderHostinger";
|
||||
import AccessConfigFieldsProviderHuaweiCloud from "./forms/AccessConfigFieldsProviderHuaweiCloud";
|
||||
import AccessConfigFieldsProviderIONOS from "./forms/AccessConfigFieldsProviderIONOS";
|
||||
import AccessConfigFieldsProviderJDCloud from "./forms/AccessConfigFieldsProviderJDCloud";
|
||||
import AccessConfigFieldsProviderKong from "./forms/AccessConfigFieldsProviderKong";
|
||||
import AccessConfigFieldsProviderKubernetes from "./forms/AccessConfigFieldsProviderKubernetes";
|
||||
import AccessConfigFieldsProviderLarkBot from "./forms/AccessConfigFieldsProviderLarkBot";
|
||||
import AccessConfigFieldsProviderLeCDN from "./forms/AccessConfigFieldsProviderLeCDN";
|
||||
import AccessConfigFieldsProviderLinode from "./forms/AccessConfigFieldsProviderLinode";
|
||||
import AccessConfigFieldsProviderMattermost from "./forms/AccessConfigFieldsProviderMattermost";
|
||||
import AccessConfigFieldsProviderNamecheap from "./forms/AccessConfigFieldsProviderNamecheap";
|
||||
import AccessConfigFieldsProviderNameDotCom from "./forms/AccessConfigFieldsProviderNameDotCom";
|
||||
import AccessConfigFieldsProviderNameSilo from "./forms/AccessConfigFieldsProviderNameSilo";
|
||||
import AccessConfigFieldsProviderNetcup from "./forms/AccessConfigFieldsProviderNetcup";
|
||||
import AccessConfigFieldsProviderNetlify from "./forms/AccessConfigFieldsProviderNetlify";
|
||||
import AccessConfigFieldsProviderNS1 from "./forms/AccessConfigFieldsProviderNS1";
|
||||
import AccessConfigFieldsProviderPorkbun from "./forms/AccessConfigFieldsProviderPorkbun";
|
||||
import AccessConfigFieldsProviderPowerDNS from "./forms/AccessConfigFieldsProviderPowerDNS";
|
||||
import AccessConfigFieldsProviderProxmoxVE from "./forms/AccessConfigFieldsProviderProxmoxVE";
|
||||
import AccessConfigFieldsProviderQiniu from "./forms/AccessConfigFieldsProviderQiniu";
|
||||
import AccessConfigFieldsProviderRainYun from "./forms/AccessConfigFieldsProviderRainYun";
|
||||
import AccessConfigFieldsProviderRatPanel from "./forms/AccessConfigFieldsProviderRatPanel";
|
||||
import AccessConfigFieldsProviderRFC2136 from "./forms/AccessConfigFieldsProviderRFC2136";
|
||||
import AccessConfigFieldsProviderSafeLine from "./forms/AccessConfigFieldsProviderSafeLine";
|
||||
import AccessConfigFieldsProviderSectigo from "./forms/AccessConfigFieldsProviderSectigo";
|
||||
import AccessConfigFieldsProviderSlackBot from "./forms/AccessConfigFieldsProviderSlackBot";
|
||||
import AccessConfigFieldsProviderSpaceship from "./forms/AccessConfigFieldsProviderSpaceship";
|
||||
import AccessConfigFieldsProviderSSH from "./forms/AccessConfigFieldsProviderSSH";
|
||||
import AccessConfigFieldsProviderSSLCom from "./forms/AccessConfigFieldsProviderSSLCom";
|
||||
import AccessConfigFieldsProviderTechnitiumDNS from "./forms/AccessConfigFieldsProviderTechnitiumDNS";
|
||||
import AccessConfigFieldsProviderTelegramBot from "./forms/AccessConfigFieldsProviderTelegramBot";
|
||||
import AccessConfigFieldsProviderTencentCloud from "./forms/AccessConfigFieldsProviderTencentCloud";
|
||||
import AccessConfigFieldsProviderUCloud from "./forms/AccessConfigFieldsProviderUCloud";
|
||||
import AccessConfigFieldsProviderUniCloud from "./forms/AccessConfigFieldsProviderUniCloud";
|
||||
import AccessConfigFieldsProviderUpyun from "./forms/AccessConfigFieldsProviderUpyun";
|
||||
import AccessConfigFieldsProviderVercel from "./forms/AccessConfigFieldsProviderVercel";
|
||||
import AccessConfigFieldsProviderVolcEngine from "./forms/AccessConfigFieldsProviderVolcEngine";
|
||||
import AccessConfigFieldsProviderVultr from "./forms/AccessConfigFieldsProviderVultr";
|
||||
import AccessConfigFieldsProviderWangsu from "./forms/AccessConfigFieldsProviderWangsu";
|
||||
import AccessConfigFieldsProviderWebhook from "./forms/AccessConfigFieldsProviderWebhook";
|
||||
import AccessConfigFieldsProviderWeComBot from "./forms/AccessConfigFieldsProviderWeComBot";
|
||||
import AccessConfigFieldsProviderWestcn from "./forms/AccessConfigFieldsProviderWestcn";
|
||||
import AccessConfigFieldsProviderZeroSSL from "./forms/AccessConfigFieldsProviderZeroSSL";
|
||||
import AccessConfigFieldsProvider from "./forms/AccessConfigFieldsProvider";
|
||||
|
||||
export type AccessFormModes = "create" | "modify";
|
||||
export type AccessFormUsages = "dns" | "hosting" | "dns-hosting" | "ca" | "notification";
|
||||
@@ -114,6 +29,8 @@ export interface AccessFormProps {
|
||||
const AccessForm = ({ className, style, disabled, initialValues, mode, usage, onFormValuesChange, ...props }: AccessFormProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const providerFilter = useProviderFilterByUsage(usage);
|
||||
|
||||
const formSchema = z.object({
|
||||
name: z
|
||||
.string(t("access.form.name.placeholder"))
|
||||
@@ -130,274 +47,27 @@ const AccessForm = ({ className, style, disabled, initialValues, mode, usage, on
|
||||
initialValues: initialValues,
|
||||
});
|
||||
|
||||
const providerFilter = useProviderFilterByUsage(usage);
|
||||
|
||||
const fieldProvider = Form.useWatch<string>("provider", { form: formInst, preserve: true });
|
||||
|
||||
const nestedProviderConfigFields = useMemo(() => {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
switch (fieldProvider) {
|
||||
case ACCESS_PROVIDERS["1PANEL"]: {
|
||||
return <AccessConfigFieldsProvider1Panel />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.ACMECA: {
|
||||
return <AccessConfigFieldsProviderACMECA />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.ACMEDNS: {
|
||||
return <AccessConfigFieldsProviderACMEDNS />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.ACMEHTTPREQ: {
|
||||
return <AccessConfigFieldsProviderACMEHttpReq />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.ACTALISSSL: {
|
||||
return <AccessConfigFieldsProviderActalisSSL />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.ALIYUN: {
|
||||
return <AccessConfigFieldsProviderAliyun />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.APISIX: {
|
||||
return <AccessConfigFieldsProviderAPISIX />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.AWS: {
|
||||
return <AccessConfigFieldsProviderAWS />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.AZURE: {
|
||||
return <AccessConfigFieldsProviderAzure />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BAIDUCLOUD: {
|
||||
return <AccessConfigFieldsProviderBaiduCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BAISHAN: {
|
||||
return <AccessConfigFieldsProviderBaishan />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BAOTAPANEL: {
|
||||
return <AccessConfigFieldsProviderBaotaPanel />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BAOTAPANELGO: {
|
||||
return <AccessConfigFieldsProviderBaotaPanelGo />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BAOTAWAF: {
|
||||
return <AccessConfigFieldsProviderBaotaWAF />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BOOKMYNAME: {
|
||||
return <AccessConfigFieldsProviderBookMyName />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BUNNY: {
|
||||
return <AccessConfigFieldsProviderBunny />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.BYTEPLUS: {
|
||||
return <AccessConfigFieldsProviderBytePlus />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.CACHEFLY: {
|
||||
return <AccessConfigFieldsProviderCacheFly />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.CDNFLY: {
|
||||
return <AccessConfigFieldsProviderCdnfly />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.CLOUDFLARE: {
|
||||
return <AccessConfigFieldsProviderCloudflare />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.CLOUDNS: {
|
||||
return <AccessConfigFieldsProviderClouDNS />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.CMCCCLOUD: {
|
||||
return <AccessConfigFieldsProviderCMCCCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.CONSTELLIX: {
|
||||
return <AccessConfigFieldsProviderConstellix />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.CTCCCLOUD: {
|
||||
return <AccessConfigFieldsProviderCTCCCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DESEC: {
|
||||
return <AccessConfigFieldsProviderDeSEC />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DIGITALOCEAN: {
|
||||
return <AccessConfigFieldsProviderDigitalOcean />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DINGTALKBOT: {
|
||||
return <AccessConfigFieldsProviderDingTalkBot />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DISCORDBOT: {
|
||||
return <AccessConfigFieldsProviderDiscordBot />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DNSLA: {
|
||||
return <AccessConfigFieldsProviderDNSLA />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DOGECLOUD: {
|
||||
return <AccessConfigFieldsProviderDogeCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DUCKDNS: {
|
||||
return <AccessConfigFieldsProviderDuckDNS />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.DYNV6: {
|
||||
return <AccessConfigFieldsProviderDynv6 />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.EMAIL: {
|
||||
return <AccessConfigFieldsProviderEmail />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.FLEXCDN: {
|
||||
return <AccessConfigFieldsProviderFlexCDN />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.GANDINET: {
|
||||
return <AccessConfigFieldsProviderGandinet />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.GCORE: {
|
||||
return <AccessConfigFieldsProviderGcore />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.GNAME: {
|
||||
return <AccessConfigFieldsProviderGname />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.GODADDY: {
|
||||
return <AccessConfigFieldsProviderGoDaddy />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.GOEDGE: {
|
||||
return <AccessConfigFieldsProviderGoEdge />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.GLOBALSIGNATLAS: {
|
||||
return <AccessConfigFieldsProviderGlobalSignAtlas />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.GOOGLETRUSTSERVICES: {
|
||||
return <AccessConfigFieldsProviderGoogleTrustServices />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.HETZNER: {
|
||||
return <AccessConfigFieldsProviderHetzner />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.HOSTINGER: {
|
||||
return <AccessConfigFieldsProviderHostinger />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.HUAWEICLOUD: {
|
||||
return <AccessConfigFieldsProviderHuaweiCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.IONOS: {
|
||||
return <AccessConfigFieldsProviderIONOS />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.JDCLOUD: {
|
||||
return <AccessConfigFieldsProviderJDCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.KONG: {
|
||||
return <AccessConfigFieldsProviderKong />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.KUBERNETES: {
|
||||
return <AccessConfigFieldsProviderKubernetes />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.LARKBOT: {
|
||||
return <AccessConfigFieldsProviderLarkBot />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.LECDN: {
|
||||
return <AccessConfigFieldsProviderLeCDN />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.LINODE: {
|
||||
return <AccessConfigFieldsProviderLinode />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.MATTERMOST: {
|
||||
return <AccessConfigFieldsProviderMattermost />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.NAMECHEAP: {
|
||||
return <AccessConfigFieldsProviderNamecheap />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.NAMEDOTCOM: {
|
||||
return <AccessConfigFieldsProviderNameDotCom />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.NAMESILO: {
|
||||
return <AccessConfigFieldsProviderNameSilo />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.NETCUP: {
|
||||
return <AccessConfigFieldsProviderNetcup />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.NETLIFY: {
|
||||
return <AccessConfigFieldsProviderNetlify />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.NS1: {
|
||||
return <AccessConfigFieldsProviderNS1 />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.PORKBUN: {
|
||||
return <AccessConfigFieldsProviderPorkbun />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.POWERDNS: {
|
||||
return <AccessConfigFieldsProviderPowerDNS />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.PROXMOXVE: {
|
||||
return <AccessConfigFieldsProviderProxmoxVE />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.QINIU: {
|
||||
return <AccessConfigFieldsProviderQiniu />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.RAINYUN: {
|
||||
return <AccessConfigFieldsProviderRainYun />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.RATPANEL: {
|
||||
return <AccessConfigFieldsProviderRatPanel />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.RFC2136: {
|
||||
return <AccessConfigFieldsProviderRFC2136 />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.SAFELINE: {
|
||||
return <AccessConfigFieldsProviderSafeLine />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.SECTIGO: {
|
||||
return <AccessConfigFieldsProviderSectigo />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.SLACKBOT: {
|
||||
return <AccessConfigFieldsProviderSlackBot />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.SPACESHIP: {
|
||||
return <AccessConfigFieldsProviderSpaceship />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.SSLCOM: {
|
||||
return <AccessConfigFieldsProviderSSLCom />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.SSH: {
|
||||
return <AccessConfigFieldsProviderSSH disabled={disabled} />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.TECHNITIUMDNS: {
|
||||
return <AccessConfigFieldsProviderTechnitiumDNS />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.TELEGRAMBOT: {
|
||||
return <AccessConfigFieldsProviderTelegramBot />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.TENCENTCLOUD: {
|
||||
return <AccessConfigFieldsProviderTencentCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.UCLOUD: {
|
||||
return <AccessConfigFieldsProviderUCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.UNICLOUD: {
|
||||
return <AccessConfigFieldsProviderUniCloud />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.UPYUN: {
|
||||
return <AccessConfigFieldsProviderUpyun />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.VERCEL: {
|
||||
return <AccessConfigFieldsProviderVercel />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.VOLCENGINE: {
|
||||
return <AccessConfigFieldsProviderVolcEngine />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.VULTR: {
|
||||
return <AccessConfigFieldsProviderVultr />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.WANGSU: {
|
||||
return <AccessConfigFieldsProviderWangsu />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.WEBHOOK: {
|
||||
const webhookUsage = usage === "notification" ? "notification" : usage === "hosting" || usage === "dns-hosting" ? "deployment" : "none";
|
||||
return <AccessConfigFieldsProviderWebhook usage={webhookUsage} />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.WECOMBOT: {
|
||||
return <AccessConfigFieldsProviderWeComBot />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.WESTCN: {
|
||||
return <AccessConfigFieldsProviderWestcn />;
|
||||
}
|
||||
case ACCESS_PROVIDERS.ZEROSSL: {
|
||||
return <AccessConfigFieldsProviderZeroSSL />;
|
||||
}
|
||||
}
|
||||
}, [disabled, usage, fieldProvider]);
|
||||
const renderNestedFieldProviderComponent = AccessConfigFieldsProvider.useComponent(fieldProvider, {
|
||||
initProps: (provider) => {
|
||||
let props: object = { disabled: disabled };
|
||||
|
||||
switch (provider) {
|
||||
case ACCESS_PROVIDERS.WEBHOOK:
|
||||
{
|
||||
props = {
|
||||
...props,
|
||||
usage: usage === "notification" ? "notification" : usage === "hosting" || usage === "dns-hosting" ? "deployment" : "none",
|
||||
};
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return props;
|
||||
},
|
||||
deps: [disabled, usage],
|
||||
});
|
||||
|
||||
return (
|
||||
<Form
|
||||
@@ -434,7 +104,7 @@ const AccessForm = ({ className, style, disabled, initialValues, mode, usage, on
|
||||
</Form.Item>
|
||||
|
||||
<FormNestedFieldsContextProvider value={{ parentNamePath: "config" }}>
|
||||
<>{nestedProviderConfigFields}</>
|
||||
{renderNestedFieldProviderComponent && <>{renderNestedFieldProviderComponent}</>}
|
||||
</FormNestedFieldsContextProvider>
|
||||
</Form>
|
||||
);
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import { ACCESS_PROVIDERS, type AccessProviderType } from "@/domain/provider";
|
||||
|
||||
import AccessConfigFieldsProvider1Panel from "./AccessConfigFieldsProvider1Panel";
|
||||
import AccessConfigFieldsProviderACMECA from "./AccessConfigFieldsProviderACMECA";
|
||||
import AccessConfigFieldsProviderACMEDNS from "./AccessConfigFieldsProviderACMEDNS";
|
||||
import AccessConfigFieldsProviderACMEHttpReq from "./AccessConfigFieldsProviderACMEHttpReq";
|
||||
import AccessConfigFieldsProviderActalisSSL from "./AccessConfigFieldsProviderActalisSSL";
|
||||
import AccessConfigFieldsProviderAliyun from "./AccessConfigFieldsProviderAliyun";
|
||||
import AccessConfigFieldsProviderAPISIX from "./AccessConfigFieldsProviderAPISIX";
|
||||
import AccessConfigFieldsProviderAWS from "./AccessConfigFieldsProviderAWS";
|
||||
import AccessConfigFieldsProviderAzure from "./AccessConfigFieldsProviderAzure";
|
||||
import AccessConfigFieldsProviderBaiduCloud from "./AccessConfigFieldsProviderBaiduCloud";
|
||||
import AccessConfigFieldsProviderBaishan from "./AccessConfigFieldsProviderBaishan";
|
||||
import AccessConfigFieldsProviderBaotaPanel from "./AccessConfigFieldsProviderBaotaPanel";
|
||||
import AccessConfigFieldsProviderBaotaPanelGo from "./AccessConfigFieldsProviderBaotaPanelGo";
|
||||
import AccessConfigFieldsProviderBaotaWAF from "./AccessConfigFieldsProviderBaotaWAF";
|
||||
import AccessConfigFieldsProviderBookMyName from "./AccessConfigFieldsProviderBookMyName";
|
||||
import AccessConfigFieldsProviderBunny from "./AccessConfigFieldsProviderBunny";
|
||||
import AccessConfigFieldsProviderBytePlus from "./AccessConfigFieldsProviderBytePlus";
|
||||
import AccessConfigFieldsProviderCacheFly from "./AccessConfigFieldsProviderCacheFly";
|
||||
import AccessConfigFieldsProviderCdnfly from "./AccessConfigFieldsProviderCdnfly";
|
||||
import AccessConfigFieldsProviderCloudflare from "./AccessConfigFieldsProviderCloudflare";
|
||||
import AccessConfigFieldsProviderClouDNS from "./AccessConfigFieldsProviderClouDNS";
|
||||
import AccessConfigFieldsProviderCMCCCloud from "./AccessConfigFieldsProviderCMCCCloud";
|
||||
import AccessConfigFieldsProviderConstellix from "./AccessConfigFieldsProviderConstellix";
|
||||
import AccessConfigFieldsProviderCTCCCloud from "./AccessConfigFieldsProviderCTCCCloud";
|
||||
import AccessConfigFieldsProviderDeSEC from "./AccessConfigFieldsProviderDeSEC";
|
||||
import AccessConfigFieldsProviderDigitalOcean from "./AccessConfigFieldsProviderDigitalOcean";
|
||||
import AccessConfigFieldsProviderDingTalkBot from "./AccessConfigFieldsProviderDingTalkBot";
|
||||
import AccessConfigFieldsProviderDiscordBot from "./AccessConfigFieldsProviderDiscordBot";
|
||||
import AccessConfigFieldsProviderDNSLA from "./AccessConfigFieldsProviderDNSLA";
|
||||
import AccessConfigFieldsProviderDogeCloud from "./AccessConfigFieldsProviderDogeCloud";
|
||||
import AccessConfigFieldsProviderDuckDNS from "./AccessConfigFieldsProviderDuckDNS";
|
||||
import AccessConfigFieldsProviderDynv6 from "./AccessConfigFieldsProviderDynv6";
|
||||
import AccessConfigFieldsProviderEmail from "./AccessConfigFieldsProviderEmail";
|
||||
import AccessConfigFieldsProviderFlexCDN from "./AccessConfigFieldsProviderFlexCDN";
|
||||
import AccessConfigFieldsProviderGandinet from "./AccessConfigFieldsProviderGandinet";
|
||||
import AccessConfigFieldsProviderGcore from "./AccessConfigFieldsProviderGcore";
|
||||
import AccessConfigFieldsProviderGlobalSignAtlas from "./AccessConfigFieldsProviderGlobalSignAtlas";
|
||||
import AccessConfigFieldsProviderGname from "./AccessConfigFieldsProviderGname";
|
||||
import AccessConfigFieldsProviderGoDaddy from "./AccessConfigFieldsProviderGoDaddy";
|
||||
import AccessConfigFieldsProviderGoEdge from "./AccessConfigFieldsProviderGoEdge";
|
||||
import AccessConfigFieldsProviderGoogleTrustServices from "./AccessConfigFieldsProviderGoogleTrustServices";
|
||||
import AccessConfigFieldsProviderHetzner from "./AccessConfigFieldsProviderHetzner";
|
||||
import AccessConfigFieldsProviderHostingde from "./AccessConfigFieldsProviderHostingde";
|
||||
import AccessConfigFieldsProviderHostinger from "./AccessConfigFieldsProviderHostinger";
|
||||
import AccessConfigFieldsProviderHuaweiCloud from "./AccessConfigFieldsProviderHuaweiCloud";
|
||||
import AccessConfigFieldsProviderIONOS from "./AccessConfigFieldsProviderIONOS";
|
||||
import AccessConfigFieldsProviderJDCloud from "./AccessConfigFieldsProviderJDCloud";
|
||||
import AccessConfigFieldsProviderKong from "./AccessConfigFieldsProviderKong";
|
||||
import AccessConfigFieldsProviderKubernetes from "./AccessConfigFieldsProviderKubernetes";
|
||||
import AccessConfigFieldsProviderLarkBot from "./AccessConfigFieldsProviderLarkBot";
|
||||
import AccessConfigFieldsProviderLeCDN from "./AccessConfigFieldsProviderLeCDN";
|
||||
import AccessConfigFieldsProviderLinode from "./AccessConfigFieldsProviderLinode";
|
||||
import AccessConfigFieldsProviderMattermost from "./AccessConfigFieldsProviderMattermost";
|
||||
import AccessConfigFieldsProviderNamecheap from "./AccessConfigFieldsProviderNamecheap";
|
||||
import AccessConfigFieldsProviderNameDotCom from "./AccessConfigFieldsProviderNameDotCom";
|
||||
import AccessConfigFieldsProviderNameSilo from "./AccessConfigFieldsProviderNameSilo";
|
||||
import AccessConfigFieldsProviderNetcup from "./AccessConfigFieldsProviderNetcup";
|
||||
import AccessConfigFieldsProviderNetlify from "./AccessConfigFieldsProviderNetlify";
|
||||
import AccessConfigFieldsProviderNS1 from "./AccessConfigFieldsProviderNS1";
|
||||
import AccessConfigFieldsProviderPorkbun from "./AccessConfigFieldsProviderPorkbun";
|
||||
import AccessConfigFieldsProviderPowerDNS from "./AccessConfigFieldsProviderPowerDNS";
|
||||
import AccessConfigFieldsProviderProxmoxVE from "./AccessConfigFieldsProviderProxmoxVE";
|
||||
import AccessConfigFieldsProviderQiniu from "./AccessConfigFieldsProviderQiniu";
|
||||
import AccessConfigFieldsProviderRainYun from "./AccessConfigFieldsProviderRainYun";
|
||||
import AccessConfigFieldsProviderRatPanel from "./AccessConfigFieldsProviderRatPanel";
|
||||
import AccessConfigFieldsProviderRFC2136 from "./AccessConfigFieldsProviderRFC2136";
|
||||
import AccessConfigFieldsProviderSafeLine from "./AccessConfigFieldsProviderSafeLine";
|
||||
import AccessConfigFieldsProviderSectigo from "./AccessConfigFieldsProviderSectigo";
|
||||
import AccessConfigFieldsProviderSlackBot from "./AccessConfigFieldsProviderSlackBot";
|
||||
import AccessConfigFieldsProviderSpaceship from "./AccessConfigFieldsProviderSpaceship";
|
||||
import AccessConfigFieldsProviderSSH from "./AccessConfigFieldsProviderSSH";
|
||||
import AccessConfigFieldsProviderSSLCom from "./AccessConfigFieldsProviderSSLCom";
|
||||
import AccessConfigFieldsProviderTechnitiumDNS from "./AccessConfigFieldsProviderTechnitiumDNS";
|
||||
import AccessConfigFieldsProviderTelegramBot from "./AccessConfigFieldsProviderTelegramBot";
|
||||
import AccessConfigFieldsProviderTencentCloud from "./AccessConfigFieldsProviderTencentCloud";
|
||||
import AccessConfigFieldsProviderUCloud from "./AccessConfigFieldsProviderUCloud";
|
||||
import AccessConfigFieldsProviderUniCloud from "./AccessConfigFieldsProviderUniCloud";
|
||||
import AccessConfigFieldsProviderUpyun from "./AccessConfigFieldsProviderUpyun";
|
||||
import AccessConfigFieldsProviderVercel from "./AccessConfigFieldsProviderVercel";
|
||||
import AccessConfigFieldsProviderVolcEngine from "./AccessConfigFieldsProviderVolcEngine";
|
||||
import AccessConfigFieldsProviderVultr from "./AccessConfigFieldsProviderVultr";
|
||||
import AccessConfigFieldsProviderWangsu from "./AccessConfigFieldsProviderWangsu";
|
||||
import AccessConfigFieldsProviderWebhook from "./AccessConfigFieldsProviderWebhook";
|
||||
import AccessConfigFieldsProviderWeComBot from "./AccessConfigFieldsProviderWeComBot";
|
||||
import AccessConfigFieldsProviderWestcn from "./AccessConfigFieldsProviderWestcn";
|
||||
import AccessConfigFieldsProviderZeroSSL from "./AccessConfigFieldsProviderZeroSSL";
|
||||
|
||||
const providerComponentMap: Partial<Record<AccessProviderType, React.ComponentType<any>>> = {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
[ACCESS_PROVIDERS["1PANEL"]]: AccessConfigFieldsProvider1Panel,
|
||||
[ACCESS_PROVIDERS.ACMECA]: AccessConfigFieldsProviderACMECA,
|
||||
[ACCESS_PROVIDERS.ACMEDNS]: AccessConfigFieldsProviderACMEDNS,
|
||||
[ACCESS_PROVIDERS.ACMEHTTPREQ]: AccessConfigFieldsProviderACMEHttpReq,
|
||||
[ACCESS_PROVIDERS.ACTALISSSL]: AccessConfigFieldsProviderActalisSSL,
|
||||
[ACCESS_PROVIDERS.ALIYUN]: AccessConfigFieldsProviderAliyun,
|
||||
[ACCESS_PROVIDERS.APISIX]: AccessConfigFieldsProviderAPISIX,
|
||||
[ACCESS_PROVIDERS.AWS]: AccessConfigFieldsProviderAWS,
|
||||
[ACCESS_PROVIDERS.AZURE]: AccessConfigFieldsProviderAzure,
|
||||
[ACCESS_PROVIDERS.BAIDUCLOUD]: AccessConfigFieldsProviderBaiduCloud,
|
||||
[ACCESS_PROVIDERS.BAISHAN]: AccessConfigFieldsProviderBaishan,
|
||||
[ACCESS_PROVIDERS.BAOTAPANEL]: AccessConfigFieldsProviderBaotaPanel,
|
||||
[ACCESS_PROVIDERS.BAOTAPANELGO]: AccessConfigFieldsProviderBaotaPanelGo,
|
||||
[ACCESS_PROVIDERS.BAOTAWAF]: AccessConfigFieldsProviderBaotaWAF,
|
||||
[ACCESS_PROVIDERS.BOOKMYNAME]: AccessConfigFieldsProviderBookMyName,
|
||||
[ACCESS_PROVIDERS.BUNNY]: AccessConfigFieldsProviderBunny,
|
||||
[ACCESS_PROVIDERS.BYTEPLUS]: AccessConfigFieldsProviderBytePlus,
|
||||
[ACCESS_PROVIDERS.CACHEFLY]: AccessConfigFieldsProviderCacheFly,
|
||||
[ACCESS_PROVIDERS.CDNFLY]: AccessConfigFieldsProviderCdnfly,
|
||||
[ACCESS_PROVIDERS.CLOUDFLARE]: AccessConfigFieldsProviderCloudflare,
|
||||
[ACCESS_PROVIDERS.CLOUDNS]: AccessConfigFieldsProviderClouDNS,
|
||||
[ACCESS_PROVIDERS.CMCCCLOUD]: AccessConfigFieldsProviderCMCCCloud,
|
||||
[ACCESS_PROVIDERS.CONSTELLIX]: AccessConfigFieldsProviderConstellix,
|
||||
[ACCESS_PROVIDERS.CTCCCLOUD]: AccessConfigFieldsProviderCTCCCloud,
|
||||
[ACCESS_PROVIDERS.DESEC]: AccessConfigFieldsProviderDeSEC,
|
||||
[ACCESS_PROVIDERS.DIGITALOCEAN]: AccessConfigFieldsProviderDigitalOcean,
|
||||
[ACCESS_PROVIDERS.DINGTALKBOT]: AccessConfigFieldsProviderDingTalkBot,
|
||||
[ACCESS_PROVIDERS.DISCORDBOT]: AccessConfigFieldsProviderDiscordBot,
|
||||
[ACCESS_PROVIDERS.DNSLA]: AccessConfigFieldsProviderDNSLA,
|
||||
[ACCESS_PROVIDERS.DOGECLOUD]: AccessConfigFieldsProviderDogeCloud,
|
||||
[ACCESS_PROVIDERS.DUCKDNS]: AccessConfigFieldsProviderDuckDNS,
|
||||
[ACCESS_PROVIDERS.DYNV6]: AccessConfigFieldsProviderDynv6,
|
||||
[ACCESS_PROVIDERS.EMAIL]: AccessConfigFieldsProviderEmail,
|
||||
[ACCESS_PROVIDERS.FLEXCDN]: AccessConfigFieldsProviderFlexCDN,
|
||||
[ACCESS_PROVIDERS.GANDINET]: AccessConfigFieldsProviderGandinet,
|
||||
[ACCESS_PROVIDERS.GCORE]: AccessConfigFieldsProviderGcore,
|
||||
[ACCESS_PROVIDERS.GNAME]: AccessConfigFieldsProviderGname,
|
||||
[ACCESS_PROVIDERS.GODADDY]: AccessConfigFieldsProviderGoDaddy,
|
||||
[ACCESS_PROVIDERS.GOEDGE]: AccessConfigFieldsProviderGoEdge,
|
||||
[ACCESS_PROVIDERS.GLOBALSIGNATLAS]: AccessConfigFieldsProviderGlobalSignAtlas,
|
||||
[ACCESS_PROVIDERS.GOOGLETRUSTSERVICES]: AccessConfigFieldsProviderGoogleTrustServices,
|
||||
[ACCESS_PROVIDERS.HETZNER]: AccessConfigFieldsProviderHetzner,
|
||||
[ACCESS_PROVIDERS.HOSTINGDE]: AccessConfigFieldsProviderHostingde,
|
||||
[ACCESS_PROVIDERS.HOSTINGER]: AccessConfigFieldsProviderHostinger,
|
||||
[ACCESS_PROVIDERS.HUAWEICLOUD]: AccessConfigFieldsProviderHuaweiCloud,
|
||||
[ACCESS_PROVIDERS.IONOS]: AccessConfigFieldsProviderIONOS,
|
||||
[ACCESS_PROVIDERS.JDCLOUD]: AccessConfigFieldsProviderJDCloud,
|
||||
[ACCESS_PROVIDERS.KONG]: AccessConfigFieldsProviderKong,
|
||||
[ACCESS_PROVIDERS.KUBERNETES]: AccessConfigFieldsProviderKubernetes,
|
||||
[ACCESS_PROVIDERS.LARKBOT]: AccessConfigFieldsProviderLarkBot,
|
||||
[ACCESS_PROVIDERS.LECDN]: AccessConfigFieldsProviderLeCDN,
|
||||
[ACCESS_PROVIDERS.LINODE]: AccessConfigFieldsProviderLinode,
|
||||
[ACCESS_PROVIDERS.MATTERMOST]: AccessConfigFieldsProviderMattermost,
|
||||
[ACCESS_PROVIDERS.NAMECHEAP]: AccessConfigFieldsProviderNamecheap,
|
||||
[ACCESS_PROVIDERS.NAMEDOTCOM]: AccessConfigFieldsProviderNameDotCom,
|
||||
[ACCESS_PROVIDERS.NAMESILO]: AccessConfigFieldsProviderNameSilo,
|
||||
[ACCESS_PROVIDERS.NETCUP]: AccessConfigFieldsProviderNetcup,
|
||||
[ACCESS_PROVIDERS.NETLIFY]: AccessConfigFieldsProviderNetlify,
|
||||
[ACCESS_PROVIDERS.NS1]: AccessConfigFieldsProviderNS1,
|
||||
[ACCESS_PROVIDERS.PORKBUN]: AccessConfigFieldsProviderPorkbun,
|
||||
[ACCESS_PROVIDERS.POWERDNS]: AccessConfigFieldsProviderPowerDNS,
|
||||
[ACCESS_PROVIDERS.PROXMOXVE]: AccessConfigFieldsProviderProxmoxVE,
|
||||
[ACCESS_PROVIDERS.QINIU]: AccessConfigFieldsProviderQiniu,
|
||||
[ACCESS_PROVIDERS.RAINYUN]: AccessConfigFieldsProviderRainYun,
|
||||
[ACCESS_PROVIDERS.RATPANEL]: AccessConfigFieldsProviderRatPanel,
|
||||
[ACCESS_PROVIDERS.RFC2136]: AccessConfigFieldsProviderRFC2136,
|
||||
[ACCESS_PROVIDERS.SAFELINE]: AccessConfigFieldsProviderSafeLine,
|
||||
[ACCESS_PROVIDERS.SECTIGO]: AccessConfigFieldsProviderSectigo,
|
||||
[ACCESS_PROVIDERS.SLACKBOT]: AccessConfigFieldsProviderSlackBot,
|
||||
[ACCESS_PROVIDERS.SPACESHIP]: AccessConfigFieldsProviderSpaceship,
|
||||
[ACCESS_PROVIDERS.SSLCOM]: AccessConfigFieldsProviderSSLCom,
|
||||
[ACCESS_PROVIDERS.SSH]: AccessConfigFieldsProviderSSH,
|
||||
[ACCESS_PROVIDERS.TECHNITIUMDNS]: AccessConfigFieldsProviderTechnitiumDNS,
|
||||
[ACCESS_PROVIDERS.TELEGRAMBOT]: AccessConfigFieldsProviderTelegramBot,
|
||||
[ACCESS_PROVIDERS.TENCENTCLOUD]: AccessConfigFieldsProviderTencentCloud,
|
||||
[ACCESS_PROVIDERS.UCLOUD]: AccessConfigFieldsProviderUCloud,
|
||||
[ACCESS_PROVIDERS.UNICLOUD]: AccessConfigFieldsProviderUniCloud,
|
||||
[ACCESS_PROVIDERS.UPYUN]: AccessConfigFieldsProviderUpyun,
|
||||
[ACCESS_PROVIDERS.VERCEL]: AccessConfigFieldsProviderVercel,
|
||||
[ACCESS_PROVIDERS.VOLCENGINE]: AccessConfigFieldsProviderVolcEngine,
|
||||
[ACCESS_PROVIDERS.VULTR]: AccessConfigFieldsProviderVultr,
|
||||
[ACCESS_PROVIDERS.WANGSU]: AccessConfigFieldsProviderWangsu,
|
||||
[ACCESS_PROVIDERS.WEBHOOK]: AccessConfigFieldsProviderWebhook,
|
||||
[ACCESS_PROVIDERS.WECOMBOT]: AccessConfigFieldsProviderWeComBot,
|
||||
[ACCESS_PROVIDERS.WESTCN]: AccessConfigFieldsProviderWestcn,
|
||||
[ACCESS_PROVIDERS.ZEROSSL]: AccessConfigFieldsProviderZeroSSL,
|
||||
};
|
||||
|
||||
const useComponent = (provider: string, { initProps, deps = [] }: { initProps?: (provider: string) => any; deps?: unknown[] }) => {
|
||||
const initComponent = () => {
|
||||
const Component = providerComponentMap[provider as AccessProviderType];
|
||||
if (!Component) return null;
|
||||
|
||||
const props = initProps?.(provider);
|
||||
if (props) {
|
||||
return <Component {...props} />;
|
||||
}
|
||||
|
||||
return <Component />;
|
||||
};
|
||||
|
||||
const [component, setComponent] = useState(() => initComponent());
|
||||
|
||||
useEffect(() => setComponent(initComponent()), [provider]);
|
||||
useEffect(() => setComponent(initComponent()), deps);
|
||||
|
||||
return component;
|
||||
};
|
||||
|
||||
const _default = {
|
||||
useComponent,
|
||||
};
|
||||
|
||||
export default _default;
|
||||
@@ -75,10 +75,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
return z.object({
|
||||
serverUrl: z.url(t("common.errmsg.url_invalid")),
|
||||
apiVersion: z.string().nonempty(t("access.form.1panel_api_version.placeholder")),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.1panel_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z.string().nonempty(t("access.form.1panel_api_key.placeholder")),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -53,19 +53,16 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
|
||||
return z.object({
|
||||
serverUrl: z.url(t("common.errmsg.url_invalid")),
|
||||
credentials: z
|
||||
.string()
|
||||
.max(20480, t("common.errmsg.string_max", { max: 20480 }))
|
||||
.refine((v) => {
|
||||
if (!v) return false;
|
||||
credentials: z.string().refine((v) => {
|
||||
if (!v) return false;
|
||||
|
||||
try {
|
||||
const obj = JSON.parse(v);
|
||||
return typeof obj === "object" && !Array.isArray(obj);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}, t("access.form.acmedns_credentials.errmsg.json_invalid")),
|
||||
try {
|
||||
const obj = JSON.parse(v);
|
||||
return typeof obj === "object" && !Array.isArray(obj);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}, t("access.form.acmedns_credentials.errmsg.json_invalid")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -79,14 +79,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
return z.object({
|
||||
endpoint: z.url(t("common.errmsg.url_invalid")),
|
||||
mode: z.string().nullish(),
|
||||
username: z
|
||||
.string()
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
password: z
|
||||
.string()
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
username: z.string().nullish(),
|
||||
password: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.aws_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretAccessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.aws_secret_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.aws_access_key_id.placeholder")),
|
||||
secretAccessKey: z.string().nonempty(t("access.form.aws_secret_access_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -50,14 +50,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
eabKid: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabHmacKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabKid: z.string().nonempty(t("access.form.shared_acme_eab_kid.placeholder")),
|
||||
eabHmacKey: z.string().nonempty(t("access.form.shared_acme_eab_hmac_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -61,14 +61,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.aliyun_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeySecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.aliyun_access_key_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.aliyun_access_key_id.placeholder")),
|
||||
accessKeySecret: z.string().nonempty(t("access.form.aliyun_access_key_secret.placeholder")),
|
||||
resourceGroupId: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -76,18 +76,9 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
tenantId: z
|
||||
.string()
|
||||
.min(1, t("access.form.azure_tenant_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
clientId: z
|
||||
.string()
|
||||
.min(1, t("access.form.azure_client_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
clientSecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.azure_client_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
tenantId: z.string().nonempty(t("access.form.azure_tenant_id.placeholder")),
|
||||
clientId: z.string().nonempty(t("access.form.azure_client_id.placeholder")),
|
||||
clientSecret: z.string().nonempty(t("access.form.azure_client_secret.placeholder")),
|
||||
cloudName: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.baiducloud_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretAccessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.baiducloud_secret_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.baiducloud_access_key_id.placeholder")),
|
||||
secretAccessKey: z.string().nonempty(t("access.form.baiducloud_secret_access_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -34,10 +34,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.baishan_api_token.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiToken: z.string().nonempty(t("access.form.baishan_api_token.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.byteplus_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.byteplus_secret_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKey: z.string().nonempty(t("access.form.byteplus_access_key.placeholder")),
|
||||
secretKey: z.string().nonempty(t("access.form.byteplus_secret_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.cmcccloud_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeySecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.cmcccloud_access_key_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.cmcccloud_access_key_id.placeholder")),
|
||||
accessKeySecret: z.string().nonempty(t("access.form.cmcccloud_access_key_secret.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.ctcccloud_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretAccessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.ctcccloud_secret_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.ctcccloud_access_key_id.placeholder")),
|
||||
secretAccessKey: z.string().nonempty(t("access.form.ctcccloud_secret_access_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -74,14 +74,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
|
||||
return z.object({
|
||||
serverUrl: z.url(t("common.errmsg.url_invalid")),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.cdnfly_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiSecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.cdnfly_api_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z.string().nonempty(t("access.form.cdnfly_api_key.placeholder")),
|
||||
apiSecret: z.string().nonempty(t("access.form.cdnfly_api_secret.placeholder")),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
authId: z
|
||||
.string()
|
||||
.min(1, t("access.form.cloudns_auth_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
authPassword: z
|
||||
.string()
|
||||
.min(1, t("access.form.cloudns_auth_password.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
authId: z.string().nonempty(t("access.form.cloudns_auth_id.placeholder")),
|
||||
authPassword: z.string().nonempty(t("access.form.cloudns_auth_password.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -50,14 +50,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
dnsApiToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.cloudflare_dns_api_token.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
zoneApiToken: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.nullish(),
|
||||
dnsApiToken: z.string().nonempty(t("access.form.cloudflare_dns_api_token.placeholder")),
|
||||
zoneApiToken: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiId: z
|
||||
.string()
|
||||
.min(1, t("access.form.dnsla_api_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiSecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.dnsla_api_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiId: z.string().nonempty(t("access.form.dnsla_api_id.placeholder")),
|
||||
apiSecret: z.string().nonempty(t("access.form.dnsla_api_secret.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -40,10 +40,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
token: z
|
||||
.string()
|
||||
.min(1, t("access.form.desec_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
token: z.string().nonempty(t("access.form.desec_token.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,10 +51,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
botToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.discordbot_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
botToken: z.string().nonempty(t("access.form.discordbot_token.placeholder")),
|
||||
channelId: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.dogecloud_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.dogecloud_secret_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKey: z.string().nonempty(t("access.form.dogecloud_access_key.placeholder")),
|
||||
secretKey: z.string().nonempty(t("access.form.dogecloud_secret_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -40,10 +40,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
httpToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.dynv6_http_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
httpToken: z.string().nonempty(t("access.form.dynv6_http_token.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -112,23 +112,11 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
smtpHost: z
|
||||
.string()
|
||||
.min(1, t("access.form.email_smtp_host.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
smtpPort: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z.number().refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
|
||||
),
|
||||
smtpHost: z.string().nonempty(t("access.form.email_smtp_host.placeholder")),
|
||||
smtpPort: z.coerce.number().refine((v) => validPortNumber(v), t("common.errmsg.port_invalid")),
|
||||
smtpTls: z.boolean().nullish(),
|
||||
username: z
|
||||
.string()
|
||||
.min(1, t("access.form.email_username.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
password: z
|
||||
.string()
|
||||
.min(1, t("access.form.email_password.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
username: z.string().nonempty(t("access.form.email_username.placeholder")),
|
||||
password: z.string().nonempty(t("access.form.email_password.placeholder")),
|
||||
senderAddress: z.email(t("common.errmsg.email_invalid")),
|
||||
senderName: z.string().nullish(),
|
||||
receiverAddress: z
|
||||
|
||||
@@ -50,14 +50,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
eabKid: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabHmacKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabKid: z.string().nonempty(t("access.form.shared_acme_eab_kid.placeholder")),
|
||||
eabHmacKey: z.string().nonempty(t("access.form.shared_acme_eab_hmac_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
appId: z
|
||||
.string()
|
||||
.min(1, t("access.form.gname_app_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
appKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.gname_app_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
appId: z.string().nonempty(t("access.form.gname_app_id.placeholder")),
|
||||
appKey: z.string().nonempty(t("access.form.gname_app_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.godaddy_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiSecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.godaddy_api_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z.string().nonempty(t("access.form.godaddy_api_key.placeholder")),
|
||||
apiSecret: z.string().nonempty(t("access.form.godaddy_api_secret.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -50,14 +50,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
eabKid: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabHmacKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabKid: z.string().nonempty(t("access.form.shared_acme_eab_kid.placeholder")),
|
||||
eabHmacKey: z.string().nonempty(t("access.form.shared_acme_eab_hmac_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { Form, Input } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
|
||||
import { useFormNestedFieldsContext } from "./_context";
|
||||
|
||||
const AccessConfigFormFieldsProviderHostingde = () => {
|
||||
const { i18n, t } = useTranslation();
|
||||
|
||||
const { parentNamePath } = useFormNestedFieldsContext();
|
||||
const formSchema = z.object({
|
||||
[parentNamePath]: getSchema({ i18n }),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
const initialValues = getInitialValues();
|
||||
|
||||
return (
|
||||
<>
|
||||
<Form.Item
|
||||
name={[parentNamePath, "apiKey"]}
|
||||
initialValue={initialValues.apiKey}
|
||||
label={t("access.form.hostingde_api_key.label")}
|
||||
rules={[formRule]}
|
||||
tooltip={<span dangerouslySetInnerHTML={{ __html: t("access.form.hostingde_api_key.tooltip") }}></span>}
|
||||
>
|
||||
<Input.Password autoComplete="new-password" placeholder={t("access.form.hostingde_api_key.placeholder")} />
|
||||
</Form.Item>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
const getInitialValues = (): Nullish<z.infer<ReturnType<typeof getSchema>>> => {
|
||||
return {
|
||||
apiKey: "",
|
||||
};
|
||||
};
|
||||
|
||||
const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) => {
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiKey: z.string().nonempty(t("access.form.hostingde_api_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
const _default = Object.assign(AccessConfigFormFieldsProviderHostingde, {
|
||||
getInitialValues,
|
||||
getSchema,
|
||||
});
|
||||
|
||||
export default _default;
|
||||
@@ -61,14 +61,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.huaweicloud_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretAccessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.huaweicloud_secret_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.huaweicloud_access_key_id.placeholder")),
|
||||
secretAccessKey: z.string().nonempty(t("access.form.huaweicloud_secret_access_key.placeholder")),
|
||||
enterpriseProjectId: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.jdcloud_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeySecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.jdcloud_access_key_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.jdcloud_access_key_id.placeholder")),
|
||||
accessKeySecret: z.string().nonempty(t("access.form.jdcloud_access_key_secret.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -40,10 +40,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.ns1_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z.string().nonempty(t("access.form.ns1_api_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
username: z
|
||||
.string()
|
||||
.min(1, t("access.form.namedotcom_username.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.namedotcom_api_token.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
username: z.string().nonempty(t("access.form.namedotcom_username.placeholder")),
|
||||
apiToken: z.string().nonempty(t("access.form.namedotcom_api_token.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -40,10 +40,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.namesilo_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z.string().nonempty(t("access.form.namesilo_api_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
username: z
|
||||
.string()
|
||||
.min(1, t("access.form.namecheap_username.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.namecheap_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
username: z.string().nonempty(t("access.form.namecheap_username.placeholder")),
|
||||
apiKey: z.string().nonempty(t("access.form.namecheap_api_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.porkbun_api_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
secretApiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.porkbun_secret_api_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
apiKey: z.string().nonempty(t("access.form.porkbun_api_key.placeholder")),
|
||||
secretApiKey: z.string().nonempty(t("access.form.porkbun_secret_api_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -63,10 +63,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
|
||||
return z.object({
|
||||
serverUrl: z.url(t("common.errmsg.url_invalid")),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.powerdns_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z.string().nonempty(t("access.form.powerdns_api_key.placeholder")),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.qiniu_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.qiniu_secret_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKey: z.string().nonempty(t("access.form.qiniu_access_key.placeholder")),
|
||||
secretKey: z.string().nonempty(t("access.form.qiniu_secret_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -82,13 +82,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
|
||||
return z.object({
|
||||
host: z.string().refine((v) => validDomainName(v) || validIPv4Address(v) || validIPv6Address(v), t("common.errmsg.host_invalid")),
|
||||
port: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z
|
||||
.number()
|
||||
.int(t("access.form.rfc2136_port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
|
||||
),
|
||||
port: z.coerce.number().refine((v) => validPortNumber(v), t("common.errmsg.port_invalid")),
|
||||
tsigAlgorithm: z.string().nonempty(t("access.form.rfc2136_tsig_algorithm.placeholder")),
|
||||
tsigKey: z.string().nullish(),
|
||||
tsigSecret: z.string().nullish(),
|
||||
|
||||
@@ -40,10 +40,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.rainyun_api_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z.string().nonempty(t("access.form.rainyun_api_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
|
||||
return z.object({
|
||||
serverUrl: z.url(t("common.errmsg.url_invalid")),
|
||||
accessTokenId: z.preprocess((v) => Number(v), z.number().positive(t("access.form.ratpanel_access_token_id.placeholder"))),
|
||||
accessTokenId: z.coerce.number().int(t("access.form.ratpanel_access_token_id.placeholder")).positive(t("access.form.ratpanel_access_token_id.placeholder")),
|
||||
accessToken: z.string().nonempty(t("access.form.ratpanel_access_token.placeholder")),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
|
||||
@@ -235,30 +235,18 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const baseSchema = z
|
||||
.object({
|
||||
host: z.string().refine((v) => validDomainName(v) || validIPv4Address(v) || validIPv6Address(v), t("common.errmsg.host_invalid")),
|
||||
port: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z
|
||||
.number()
|
||||
.int(t("access.form.ssh_port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
|
||||
),
|
||||
port: z.coerce
|
||||
.number()
|
||||
.int(t("access.form.ssh_port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid")),
|
||||
authMethod: z.literal([AUTH_METHOD_NONE, AUTH_METHOD_PASSWORD, AUTH_METHOD_KEY], t("access.form.ssh_auth_method.placeholder")),
|
||||
username: z
|
||||
.string()
|
||||
.min(1, t("access.form.ssh_username.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
password: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.nullish(),
|
||||
username: z.string().nonempty(t("access.form.ssh_username.placeholder")),
|
||||
password: z.string().nullish(),
|
||||
key: z
|
||||
.string()
|
||||
.max(20480, t("common.errmsg.string_max", { max: 20480 }))
|
||||
.nullish(),
|
||||
keyPassphrase: z
|
||||
.string()
|
||||
.max(20480, t("common.errmsg.string_max", { max: 20480 }))
|
||||
.nullish(),
|
||||
keyPassphrase: z.string().nullish(),
|
||||
})
|
||||
.superRefine((values, ctx) => {
|
||||
switch (values.authMethod) {
|
||||
|
||||
@@ -50,14 +50,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
eabKid: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabHmacKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabKid: z.string().nonempty(t("access.form.shared_acme_eab_kid.placeholder")),
|
||||
eabHmacKey: z.string().nonempty(t("access.form.shared_acme_eab_hmac_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -63,10 +63,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
|
||||
return z.object({
|
||||
serverUrl: z.url(t("common.errmsg.url_invalid")),
|
||||
apiToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.safeline_api_token.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiToken: z.string().nonempty(t("access.form.safeline_api_token.placeholder")),
|
||||
allowInsecureConnections: z.boolean().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -68,14 +68,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
|
||||
return z.object({
|
||||
validationType: z.string().nonempty(t("access.form.sectigo_validation_type.placeholder")),
|
||||
eabKid: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabHmacKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabKid: z.string().nonempty(t("access.form.shared_acme_eab_kid.placeholder")),
|
||||
eabHmacKey: z.string().nonempty(t("access.form.shared_acme_eab_hmac_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,10 +51,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
botToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.slackbot_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
botToken: z.string().nonempty(t("access.form.slackbot_token.placeholder")),
|
||||
channelId: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
@@ -51,10 +51,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
botToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.telegrambot_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
botToken: z.string().nonempty(t("access.form.telegrambot_token.placeholder")),
|
||||
chatId: z
|
||||
.preprocess(
|
||||
(v) => (v == null || v === "" ? void 0 : Number(v)),
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
secretId: z
|
||||
.string()
|
||||
.min(1, t("access.form.tencentcloud_secret_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.tencentcloud_secret_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretId: z.string().nonempty(t("access.form.tencentcloud_secret_id.placeholder")),
|
||||
secretKey: z.string().nonempty(t("access.form.tencentcloud_secret_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -61,18 +61,9 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
privateKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.ucloud_private_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
publicKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.ucloud_public_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
projectId: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 }))
|
||||
.nullish(),
|
||||
privateKey: z.string().nonempty(t("access.form.ucloud_private_key.placeholder")),
|
||||
publicKey: z.string().nonempty(t("access.form.ucloud_public_key.placeholder")),
|
||||
projectId: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
username: z
|
||||
.string()
|
||||
.min(1, t("access.form.upyun_username.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
password: z
|
||||
.string()
|
||||
.min(1, t("access.form.upyun_password.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
username: z.string().nonempty(t("access.form.upyun_username.placeholder")),
|
||||
password: z.string().nonempty(t("access.form.upyun_password.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -50,14 +50,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
apiAccessToken: z
|
||||
.string()
|
||||
.min(1, t("access.form.vercel_api_access_token.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
teamId: z
|
||||
.string()
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
apiAccessToken: z.string().nonempty(t("access.form.vercel_api_access_token.placeholder")),
|
||||
teamId: z.string().nullish(),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.volcengine_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
secretAccessKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.volcengine_secret_access_key.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.volcengine_access_key_id.placeholder")),
|
||||
secretAccessKey: z.string().nonempty(t("access.form.volcengine_secret_access_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -62,18 +62,9 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
accessKeyId: z
|
||||
.string()
|
||||
.min(1, t("access.form.wangsu_access_key_id.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
accessKeySecret: z
|
||||
.string()
|
||||
.min(1, t("access.form.wangsu_access_key_secret.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.wangsu_api_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
accessKeyId: z.string().nonempty(t("access.form.wangsu_access_key_id.placeholder")),
|
||||
accessKeySecret: z.string().nonempty(t("access.form.wangsu_access_key_secret.placeholder")),
|
||||
apiKey: z.string().nonempty(t("access.form.wangsu_api_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -51,14 +51,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
username: z
|
||||
.string()
|
||||
.min(1, t("access.form.westcn_username.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
apiPassword: z
|
||||
.string()
|
||||
.min(1, t("access.form.westcn_api_password.placeholder"))
|
||||
.max(64, t("common.errmsg.string_max", { max: 64 })),
|
||||
username: z.string().nonempty(t("access.form.westcn_username.placeholder")),
|
||||
apiPassword: z.string().nonempty(t("access.form.westcn_api_password.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -50,14 +50,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType<typeof getI18n> }) =
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
eabKid: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabHmacKey: z
|
||||
.string()
|
||||
.min(1, t("access.form.shared_acme_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabKid: z.string().nonempty(t("access.form.shared_acme_eab_kid.placeholder")),
|
||||
eabHmacKey: z.string().nonempty(t("access.form.shared_acme_eab_hmac_key.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import { type ACMEDns01ProviderType, type ACMEHttp01ProviderType, ACME_DNS01_PROVIDERS, ACME_HTTP01_PROVIDERS } from "@/domain/provider";
|
||||
|
||||
import BizApplyNodeConfigFieldsProviderAliyunESA from "./BizApplyNodeConfigFieldsProviderAliyunESA";
|
||||
import BizApplyNodeConfigFieldsProviderAWSRoute53 from "./BizApplyNodeConfigFieldsProviderAWSRoute53";
|
||||
import BizApplyNodeConfigFieldsProviderHuaweiCloudDNS from "./BizApplyNodeConfigFieldsProviderHuaweiCloudDNS";
|
||||
import BizApplyNodeConfigFieldsProviderJDCloudDNS from "./BizApplyNodeConfigFieldsProviderJDCloudDNS";
|
||||
import BizApplyNodeConfigFieldsProviderLocal from "./BizApplyNodeConfigFieldsProviderLocal";
|
||||
import BizApplyNodeConfigFieldsProviderSSH from "./BizApplyNodeConfigFieldsProviderSSH";
|
||||
import BizApplyNodeConfigFieldsProviderTencentCloudEO from "./BizApplyNodeConfigFieldsProviderTencentCloudEO";
|
||||
|
||||
const acmeDns01ProviderComponentMap: Partial<Record<ACMEDns01ProviderType, React.ComponentType<any>>> = {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
[ACME_DNS01_PROVIDERS.ALIYUN_ESA]: BizApplyNodeConfigFieldsProviderAliyunESA,
|
||||
[ACME_DNS01_PROVIDERS.AWS]: BizApplyNodeConfigFieldsProviderAWSRoute53,
|
||||
[ACME_DNS01_PROVIDERS.AWS_ROUTE53]: BizApplyNodeConfigFieldsProviderAWSRoute53,
|
||||
[ACME_DNS01_PROVIDERS.HUAWEICLOUD]: BizApplyNodeConfigFieldsProviderHuaweiCloudDNS,
|
||||
[ACME_DNS01_PROVIDERS.HUAWEICLOUD_DNS]: BizApplyNodeConfigFieldsProviderHuaweiCloudDNS,
|
||||
[ACME_DNS01_PROVIDERS.JDCLOUD]: BizApplyNodeConfigFieldsProviderJDCloudDNS,
|
||||
[ACME_DNS01_PROVIDERS.JDCLOUD_DNS]: BizApplyNodeConfigFieldsProviderJDCloudDNS,
|
||||
[ACME_DNS01_PROVIDERS.TENCENTCLOUD_EO]: BizApplyNodeConfigFieldsProviderTencentCloudEO,
|
||||
};
|
||||
|
||||
const acmeHttp01ProviderComponentMap: Partial<Record<ACMEHttp01ProviderType, React.ComponentType<any>>> = {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
[ACME_HTTP01_PROVIDERS.LOCAL]: BizApplyNodeConfigFieldsProviderLocal,
|
||||
[ACME_HTTP01_PROVIDERS.SSH]: BizApplyNodeConfigFieldsProviderSSH,
|
||||
};
|
||||
|
||||
const useComponent = (
|
||||
challenge: "dns-01" | "http-01",
|
||||
provider: string,
|
||||
{ initProps, deps = [] }: { initProps?: (provider: string) => any; deps?: unknown[] }
|
||||
) => {
|
||||
const initComponent = () => {
|
||||
const Component =
|
||||
challenge === "dns-01"
|
||||
? acmeDns01ProviderComponentMap[provider as ACMEDns01ProviderType]
|
||||
: challenge === "http-01"
|
||||
? acmeHttp01ProviderComponentMap[provider as ACMEHttp01ProviderType]
|
||||
: void 0;
|
||||
if (!Component) return null;
|
||||
|
||||
const props = initProps?.(provider);
|
||||
if (props) {
|
||||
return <Component {...props} />;
|
||||
}
|
||||
|
||||
return <Component />;
|
||||
};
|
||||
|
||||
const [component, setComponent] = useState(() => initComponent());
|
||||
|
||||
useEffect(() => setComponent(initComponent()), [challenge, provider]);
|
||||
useEffect(() => setComponent(initComponent()), deps);
|
||||
|
||||
return component;
|
||||
};
|
||||
|
||||
const _default = {
|
||||
useComponent,
|
||||
};
|
||||
|
||||
export default _default;
|
||||
@@ -1,7 +1,7 @@
|
||||
import { memo, useEffect, useMemo, useState } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { Link } from "react-router";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { IconChevronRight, IconCircleMinus, IconPlus } from "@tabler/icons-react";
|
||||
import { useControllableValue, useMount } from "ahooks";
|
||||
import {
|
||||
@@ -33,7 +33,7 @@ import CAProviderSelect from "@/components/provider/CAProviderSelect";
|
||||
import Show from "@/components/Show";
|
||||
import TextFileInput from "@/components/TextFileInput";
|
||||
import { type AccessModel } from "@/domain/access";
|
||||
import { ACME_DNS01_PROVIDERS, ACME_HTTP01_PROVIDERS, acmeDns01ProvidersMap, acmeHttp01ProvidersMap, caProvidersMap } from "@/domain/provider";
|
||||
import { acmeDns01ProvidersMap, acmeHttp01ProvidersMap, caProvidersMap } from "@/domain/provider";
|
||||
import { type WorkflowNodeConfigForBizApply, defaultNodeConfigForBizApply } from "@/domain/workflow";
|
||||
import { useAntdForm, useZustandShallowSelector } from "@/hooks";
|
||||
import { useAccessesStore } from "@/stores/access";
|
||||
@@ -42,13 +42,7 @@ import { getErrMsg } from "@/utils/error";
|
||||
import { validDomainName, validIPv4Address, validIPv6Address } from "@/utils/validators";
|
||||
|
||||
import { FormNestedFieldsContextProvider, NodeFormContextProvider } from "./_context";
|
||||
import BizApplyNodeConfigFieldsProviderAliyunESA from "./BizApplyNodeConfigFieldsProviderAliyunESA";
|
||||
import BizApplyNodeConfigFieldsProviderAWSRoute53 from "./BizApplyNodeConfigFieldsProviderAWSRoute53";
|
||||
import BizApplyNodeConfigFieldsProviderHuaweiCloudDNS from "./BizApplyNodeConfigFieldsProviderHuaweiCloudDNS";
|
||||
import BizApplyNodeConfigFieldsProviderJDCloudDNS from "./BizApplyNodeConfigFieldsProviderJDCloudDNS";
|
||||
import BizApplyNodeConfigFieldsProviderLocal from "./BizApplyNodeConfigFieldsProviderLocal";
|
||||
import BizApplyNodeConfigFieldsProviderSSH from "./BizApplyNodeConfigFieldsProviderSSH";
|
||||
import BizApplyNodeConfigFieldsProviderTencentCloudEO from "./BizApplyNodeConfigFieldsProviderTencentCloudEO";
|
||||
import BizApplyNodeConfigFieldsProvider from "./BizApplyNodeConfigFieldsProvider";
|
||||
import { NodeType } from "../nodes/typings";
|
||||
|
||||
const MULTIPLE_INPUT_SEPARATOR = ";";
|
||||
@@ -85,25 +79,28 @@ const BizApplyNodeConfigForm = ({ node, ...props }: BizApplyNodeConfigFormProps)
|
||||
};
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForBizApply | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForBizApply | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n });
|
||||
type FormSchema = z.infer<typeof formSchema>;
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
const { form: formInst, formProps } = useAntdForm<z.infer<typeof formSchema>>({
|
||||
const { form: formInst, formProps } = useAntdForm<FormSchema>({
|
||||
form: props.form,
|
||||
name: "workflowNodeBizApplyConfigForm",
|
||||
initialValues: initialValues ?? getInitialValues(),
|
||||
});
|
||||
|
||||
const fieldChallengeType = Form.useWatch<string>("challengeType", { form: formInst, preserve: true });
|
||||
const fieldChallengeType = Form.useWatch<FormSchema["challengeType"]>("challengeType", { form: formInst, preserve: true });
|
||||
const fieldProvider = Form.useWatch<string>("provider", { form: formInst, preserve: true });
|
||||
const fieldProviderAccessId = Form.useWatch<string>("providerAccessId", { form: formInst, preserve: true });
|
||||
const fieldKeySource = Form.useWatch<string>("keySource", { form: formInst, preserve: true });
|
||||
const fieldCAProvider = Form.useWatch<string>("caProvider", { form: formInst, preserve: true });
|
||||
const fieldCAProviderAccessId = Form.useWatch<string>("caProviderAccessId", { form: formInst, preserve: true });
|
||||
|
||||
const resetFieldIfInvalid = (field: keyof z.infer<typeof formSchema>) => {
|
||||
const renderNestedFieldProviderComponent = BizApplyNodeConfigFieldsProvider.useComponent(fieldChallengeType, fieldProvider, {});
|
||||
|
||||
const resetFieldIfInvalid = (field: keyof FormSchema) => {
|
||||
const fieldSchame = formSchema.pick({ [field]: true });
|
||||
const fieldValue = formInst.getFieldValue(field);
|
||||
if (!fieldSchame.safeParse({ [field]: fieldValue }).success) {
|
||||
@@ -111,61 +108,14 @@ const BizApplyNodeConfigForm = ({ node, ...props }: BizApplyNodeConfigFormProps)
|
||||
}
|
||||
};
|
||||
|
||||
const NestedProviderConfigFields = useMemo(() => {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
switch (fieldChallengeType) {
|
||||
case CHALLENGE_TYPE_DNS01:
|
||||
{
|
||||
switch (fieldProvider) {
|
||||
case ACME_DNS01_PROVIDERS.ALIYUN_ESA: {
|
||||
return BizApplyNodeConfigFieldsProviderAliyunESA;
|
||||
}
|
||||
case ACME_DNS01_PROVIDERS.AWS:
|
||||
case ACME_DNS01_PROVIDERS.AWS_ROUTE53: {
|
||||
return BizApplyNodeConfigFieldsProviderAWSRoute53;
|
||||
}
|
||||
case ACME_DNS01_PROVIDERS.HUAWEICLOUD:
|
||||
case ACME_DNS01_PROVIDERS.HUAWEICLOUD_DNS: {
|
||||
return BizApplyNodeConfigFieldsProviderHuaweiCloudDNS;
|
||||
}
|
||||
case ACME_DNS01_PROVIDERS.JDCLOUD:
|
||||
case ACME_DNS01_PROVIDERS.JDCLOUD_DNS: {
|
||||
return BizApplyNodeConfigFieldsProviderJDCloudDNS;
|
||||
}
|
||||
case ACME_DNS01_PROVIDERS.TENCENTCLOUD_EO: {
|
||||
return BizApplyNodeConfigFieldsProviderTencentCloudEO;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CHALLENGE_TYPE_HTTP01:
|
||||
switch (fieldProvider) {
|
||||
case ACME_HTTP01_PROVIDERS.LOCAL: {
|
||||
return BizApplyNodeConfigFieldsProviderLocal;
|
||||
}
|
||||
case ACME_HTTP01_PROVIDERS.SSH: {
|
||||
return BizApplyNodeConfigFieldsProviderSSH;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, [fieldChallengeType, fieldProvider]);
|
||||
|
||||
const [showProviderAccess, setShowProviderAccess] = useState(false);
|
||||
useEffect(() => {
|
||||
const showProviderAccess = useMemo(() => {
|
||||
// 内置的质询提供商(如本地主机)无需显示授权信息字段
|
||||
switch (fieldChallengeType) {
|
||||
case CHALLENGE_TYPE_DNS01:
|
||||
{
|
||||
if (fieldProvider) {
|
||||
const provider = acmeDns01ProvidersMap.get(fieldProvider);
|
||||
setShowProviderAccess(!provider?.builtin);
|
||||
} else {
|
||||
setShowProviderAccess(false);
|
||||
return !provider?.builtin;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -174,30 +124,23 @@ const BizApplyNodeConfigForm = ({ node, ...props }: BizApplyNodeConfigFormProps)
|
||||
{
|
||||
if (fieldProvider) {
|
||||
const provider = acmeHttp01ProvidersMap.get(fieldProvider);
|
||||
setShowProviderAccess(!provider?.builtin);
|
||||
} else {
|
||||
setShowProviderAccess(false);
|
||||
return !provider?.builtin;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
setShowProviderAccess(false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}, [fieldChallengeType, fieldProvider]);
|
||||
|
||||
const [showCAProviderAccess, setShowCAProviderAccess] = useState(false);
|
||||
useEffect(() => {
|
||||
const showCAProviderAccess = useMemo(() => {
|
||||
// 内置的 CA 提供商(如 Let's Encrypt)无需显示授权信息字段
|
||||
if (fieldCAProvider) {
|
||||
const provider = caProvidersMap.get(fieldCAProvider);
|
||||
setShowCAProviderAccess(!provider?.builtin);
|
||||
} else {
|
||||
setShowCAProviderAccess(false);
|
||||
return !provider?.builtin;
|
||||
}
|
||||
|
||||
return false;
|
||||
}, [fieldCAProvider]);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -460,7 +403,7 @@ const BizApplyNodeConfigForm = ({ node, ...props }: BizApplyNodeConfigFormProps)
|
||||
</Form.Item>
|
||||
|
||||
<FormNestedFieldsContextProvider value={{ parentNamePath: "providerConfig" }}>
|
||||
{NestedProviderConfigFields && <NestedProviderConfigFields />}
|
||||
{renderNestedFieldProviderComponent && <>{renderNestedFieldProviderComponent}</>}
|
||||
</FormNestedFieldsContextProvider>
|
||||
</div>
|
||||
|
||||
@@ -700,7 +643,7 @@ const BizApplyNodeConfigForm = ({ node, ...props }: BizApplyNodeConfigFormProps)
|
||||
<Form.Item name="skipBeforeExpiryDays" noStyle rules={[formRule]}>
|
||||
<InputNumber
|
||||
className="w-24"
|
||||
min={1}
|
||||
min={0}
|
||||
max={365}
|
||||
placeholder={t("workflow_node.apply.form.skip_before_expiry_days.placeholder")}
|
||||
addonAfter={t("workflow_node.apply.form.skip_before_expiry_days.unit")}
|
||||
@@ -894,7 +837,7 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
.every((e) => validDomainName(e, { allowWildcard: true }));
|
||||
}, t("common.errmsg.domain_invalid")),
|
||||
contactEmail: z.email(t("common.errmsg.email_invalid")),
|
||||
challengeType: z.string(t("workflow_node.apply.form.challenge_type.placeholder")).nonempty(t("workflow_node.apply.form.challenge_type.placeholder")),
|
||||
challengeType: z.enum([CHALLENGE_TYPE_DNS01, CHALLENGE_TYPE_HTTP01], t("workflow_node.apply.form.challenge_type.placeholder")),
|
||||
provider: z.string(t("workflow_node.apply.form.provider.placeholder")).nonempty(t("workflow_node.apply.form.provider.placeholder")),
|
||||
providerAccessId: z.string(t("workflow_node.apply.form.provider_access.placeholder")).nullish(),
|
||||
providerConfig: z.any().nullish(),
|
||||
@@ -944,13 +887,10 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
acmeProfile: z.string().nullish(),
|
||||
disableFollowCNAME: z.boolean().nullish(),
|
||||
disableARI: z.boolean().nullish(),
|
||||
skipBeforeExpiryDays: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z
|
||||
.number()
|
||||
.int(t("workflow_node.apply.form.skip_before_expiry_days.placeholder"))
|
||||
.gte(1, t("workflow_node.apply.form.skip_before_expiry_days.placeholder"))
|
||||
),
|
||||
skipBeforeExpiryDays: z.coerce
|
||||
.number()
|
||||
.int(t("workflow_node.apply.form.skip_before_expiry_days.placeholder"))
|
||||
.nonnegative(t("workflow_node.apply.form.skip_before_expiry_days.placeholder")),
|
||||
})
|
||||
.superRefine((values, ctx) => {
|
||||
if (values.domains) {
|
||||
|
||||
@@ -0,0 +1,228 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import { DEPLOYMENT_PROVIDERS, type DeploymentProviderType } from "@/domain/provider";
|
||||
|
||||
import BizDeployNodeConfigFieldsProvider1PanelConsole from "./BizDeployNodeConfigFieldsProvider1PanelConsole";
|
||||
import BizDeployNodeConfigFieldsProvider1PanelSite from "./BizDeployNodeConfigFieldsProvider1PanelSite";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunALB from "./BizDeployNodeConfigFieldsProviderAliyunALB";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunAPIGW from "./BizDeployNodeConfigFieldsProviderAliyunAPIGW";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCAS from "./BizDeployNodeConfigFieldsProviderAliyunCAS";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCASDeploy from "./BizDeployNodeConfigFieldsProviderAliyunCASDeploy";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCDN from "./BizDeployNodeConfigFieldsProviderAliyunCDN";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCLB from "./BizDeployNodeConfigFieldsProviderAliyunCLB";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunDCDN from "./BizDeployNodeConfigFieldsProviderAliyunDCDN";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunDDoS from "./BizDeployNodeConfigFieldsProviderAliyunDDoS";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunESA from "./BizDeployNodeConfigFieldsProviderAliyunESA";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunFC from "./BizDeployNodeConfigFieldsProviderAliyunFC";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunGA from "./BizDeployNodeConfigFieldsProviderAliyunGA";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunLive from "./BizDeployNodeConfigFieldsProviderAliyunLive";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunNLB from "./BizDeployNodeConfigFieldsProviderAliyunNLB";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunOSS from "./BizDeployNodeConfigFieldsProviderAliyunOSS";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunVOD from "./BizDeployNodeConfigFieldsProviderAliyunVOD";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunWAF from "./BizDeployNodeConfigFieldsProviderAliyunWAF";
|
||||
import BizDeployNodeConfigFieldsProviderAPISIX from "./BizDeployNodeConfigFieldsProviderAPISIX";
|
||||
import BizDeployNodeConfigFieldsProviderAWSACM from "./BizDeployNodeConfigFieldsProviderAWSACM";
|
||||
import BizDeployNodeConfigFieldsProviderAWSCloudFront from "./BizDeployNodeConfigFieldsProviderAWSCloudFront";
|
||||
import BizDeployNodeConfigFieldsProviderAWSIAM from "./BizDeployNodeConfigFieldsProviderAWSIAM";
|
||||
import BizDeployNodeConfigFieldsProviderAzureKeyVault from "./BizDeployNodeConfigFieldsProviderAzureKeyVault";
|
||||
import BizDeployNodeConfigFieldsProviderBaiduCloudAppBLB from "./BizDeployNodeConfigFieldsProviderBaiduCloudAppBLB";
|
||||
import BizDeployNodeConfigFieldsProviderBaiduCloudBLB from "./BizDeployNodeConfigFieldsProviderBaiduCloudBLB";
|
||||
import BizDeployNodeConfigFieldsProviderBaiduCloudCDN from "./BizDeployNodeConfigFieldsProviderBaiduCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderBaishanCDN from "./BizDeployNodeConfigFieldsProviderBaishanCDN";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelConsole from "./BizDeployNodeConfigFieldsProviderBaotaPanelConsole";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole from "./BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelGoSite from "./BizDeployNodeConfigFieldsProviderBaotaPanelGoSite";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelSite from "./BizDeployNodeConfigFieldsProviderBaotaPanelSite";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaWAFSite from "./BizDeployNodeConfigFieldsProviderBaotaWAFSite";
|
||||
import BizDeployNodeConfigFieldsProviderBunnyCDN from "./BizDeployNodeConfigFieldsProviderBunnyCDN";
|
||||
import BizDeployNodeConfigFieldsProviderBytePlusCDN from "./BizDeployNodeConfigFieldsProviderBytePlusCDN";
|
||||
import BizDeployNodeConfigFieldsProviderCdnfly from "./BizDeployNodeConfigFieldsProviderCdnfly";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudAO from "./BizDeployNodeConfigFieldsProviderCTCCCloudAO";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudCDN from "./BizDeployNodeConfigFieldsProviderCTCCCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudELB from "./BizDeployNodeConfigFieldsProviderCTCCCloudELB";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudICDN from "./BizDeployNodeConfigFieldsProviderCTCCCloudICDN";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudLVDN from "./BizDeployNodeConfigFieldsProviderCTCCCloudLVDN";
|
||||
import BizDeployNodeConfigFieldsProviderDogeCloudCDN from "./BizDeployNodeConfigFieldsProviderDogeCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderFlexCDN from "./BizDeployNodeConfigFieldsProviderFlexCDN";
|
||||
import BizDeployNodeConfigFieldsProviderGcoreCDN from "./BizDeployNodeConfigFieldsProviderGcoreCDN";
|
||||
import BizDeployNodeConfigFieldsProviderGoEdge from "./BizDeployNodeConfigFieldsProviderGoEdge";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudCDN from "./BizDeployNodeConfigFieldsProviderHuaweiCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudELB from "./BizDeployNodeConfigFieldsProviderHuaweiCloudELB";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudOBS from "./BizDeployNodeConfigFieldsProviderHuaweiCloudOBS";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudWAF from "./BizDeployNodeConfigFieldsProviderHuaweiCloudWAF";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudALB from "./BizDeployNodeConfigFieldsProviderJDCloudALB";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudCDN from "./BizDeployNodeConfigFieldsProviderJDCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudLive from "./BizDeployNodeConfigFieldsProviderJDCloudLive";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudVOD from "./BizDeployNodeConfigFieldsProviderJDCloudVOD";
|
||||
import BizDeployNodeConfigFieldsProviderKong from "./BizDeployNodeConfigFieldsProviderKong";
|
||||
import BizDeployNodeConfigFieldsProviderKubernetesSecret from "./BizDeployNodeConfigFieldsProviderKubernetesSecret";
|
||||
import BizDeployNodeConfigFieldsProviderLeCDN from "./BizDeployNodeConfigFieldsProviderLeCDN";
|
||||
import BizDeployNodeConfigFieldsProviderLocal from "./BizDeployNodeConfigFieldsProviderLocal";
|
||||
import BizDeployNodeConfigFieldsProviderNetlifySite from "./BizDeployNodeConfigFieldsProviderNetlifySite";
|
||||
import BizDeployNodeConfigFieldsProviderProxmoxVE from "./BizDeployNodeConfigFieldsProviderProxmoxVE";
|
||||
import BizDeployNodeConfigFieldsProviderQiniuCDN from "./BizDeployNodeConfigFieldsProviderQiniuCDN";
|
||||
import BizDeployNodeConfigFieldsProviderQiniuKodo from "./BizDeployNodeConfigFieldsProviderQiniuKodo";
|
||||
import BizDeployNodeConfigFieldsProviderQiniuPili from "./BizDeployNodeConfigFieldsProviderQiniuPili";
|
||||
import BizDeployNodeConfigFieldsProviderRainYunRCDN from "./BizDeployNodeConfigFieldsProviderRainYunRCDN";
|
||||
import BizDeployNodeConfigFieldsProviderRatPanelSite from "./BizDeployNodeConfigFieldsProviderRatPanelSite";
|
||||
import BizDeployNodeConfigFieldsProviderSafeLine from "./BizDeployNodeConfigFieldsProviderSafeLine";
|
||||
import BizDeployNodeConfigFieldsProviderSSH from "./BizDeployNodeConfigFieldsProviderSSH";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCDN from "./BizDeployNodeConfigFieldsProviderTencentCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCLB from "./BizDeployNodeConfigFieldsProviderTencentCloudCLB";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCOS from "./BizDeployNodeConfigFieldsProviderTencentCloudCOS";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCSS from "./BizDeployNodeConfigFieldsProviderTencentCloudCSS";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudECDN from "./BizDeployNodeConfigFieldsProviderTencentCloudECDN";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudEO from "./BizDeployNodeConfigFieldsProviderTencentCloudEO";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudGAAP from "./BizDeployNodeConfigFieldsProviderTencentCloudGAAP";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSCF from "./BizDeployNodeConfigFieldsProviderTencentCloudSCF";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSSL from "./BizDeployNodeConfigFieldsProviderTencentCloudSSL";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSSLDeploy from "./BizDeployNodeConfigFieldsProviderTencentCloudSSLDeploy";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSSLUpdate from "./BizDeployNodeConfigFieldsProviderTencentCloudSSLUpdate";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudVOD from "./BizDeployNodeConfigFieldsProviderTencentCloudVOD";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudWAF from "./BizDeployNodeConfigFieldsProviderTencentCloudWAF";
|
||||
import BizDeployNodeConfigFieldsProviderUCloudUCDN from "./BizDeployNodeConfigFieldsProviderUCloudUCDN";
|
||||
import BizDeployNodeConfigFieldsProviderUCloudUS3 from "./BizDeployNodeConfigFieldsProviderUCloudUS3";
|
||||
import BizDeployNodeConfigFieldsProviderUniCloudWebHost from "./BizDeployNodeConfigFieldsProviderUniCloudWebHost";
|
||||
import BizDeployNodeConfigFieldsProviderUpyunCDN from "./BizDeployNodeConfigFieldsProviderUpyunCDN";
|
||||
import BizDeployNodeConfigFieldsProviderUpyunFile from "./BizDeployNodeConfigFieldsProviderUpyunFile";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineALB from "./BizDeployNodeConfigFieldsProviderVolcEngineALB";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineCDN from "./BizDeployNodeConfigFieldsProviderVolcEngineCDN";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineCertCenter from "./BizDeployNodeConfigFieldsProviderVolcEngineCertCenter";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineCLB from "./BizDeployNodeConfigFieldsProviderVolcEngineCLB";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineDCDN from "./BizDeployNodeConfigFieldsProviderVolcEngineDCDN";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineImageX from "./BizDeployNodeConfigFieldsProviderVolcEngineImageX";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineLive from "./BizDeployNodeConfigFieldsProviderVolcEngineLive";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineTOS from "./BizDeployNodeConfigFieldsProviderVolcEngineTOS";
|
||||
import BizDeployNodeConfigFieldsProviderWangsuCDN from "./BizDeployNodeConfigFieldsProviderWangsuCDN";
|
||||
import BizDeployNodeConfigFieldsProviderWangsuCDNPro from "./BizDeployNodeConfigFieldsProviderWangsuCDNPro";
|
||||
import BizDeployNodeConfigFieldsProviderWangsuCertificate from "./BizDeployNodeConfigFieldsProviderWangsuCertificate";
|
||||
import BizDeployNodeConfigFieldsProviderWebhook from "./BizDeployNodeConfigFieldsProviderWebhook";
|
||||
|
||||
const providerComponentMap: Partial<Record<DeploymentProviderType, React.ComponentType<any>>> = {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
[DEPLOYMENT_PROVIDERS["1PANEL_CONSOLE"]]: BizDeployNodeConfigFieldsProvider1PanelConsole,
|
||||
[DEPLOYMENT_PROVIDERS["1PANEL_SITE"]]: BizDeployNodeConfigFieldsProvider1PanelSite,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_ALB]: BizDeployNodeConfigFieldsProviderAliyunALB,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_APIGW]: BizDeployNodeConfigFieldsProviderAliyunAPIGW,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CAS]: BizDeployNodeConfigFieldsProviderAliyunCAS,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CAS_DEPLOY]: BizDeployNodeConfigFieldsProviderAliyunCASDeploy,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CLB]: BizDeployNodeConfigFieldsProviderAliyunCLB,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_CDN]: BizDeployNodeConfigFieldsProviderAliyunCDN,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_DCDN]: BizDeployNodeConfigFieldsProviderAliyunDCDN,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_DDOS]: BizDeployNodeConfigFieldsProviderAliyunDDoS,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_ESA]: BizDeployNodeConfigFieldsProviderAliyunESA,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_FC]: BizDeployNodeConfigFieldsProviderAliyunFC,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_GA]: BizDeployNodeConfigFieldsProviderAliyunGA,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_LIVE]: BizDeployNodeConfigFieldsProviderAliyunLive,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_NLB]: BizDeployNodeConfigFieldsProviderAliyunNLB,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_OSS]: BizDeployNodeConfigFieldsProviderAliyunOSS,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_VOD]: BizDeployNodeConfigFieldsProviderAliyunVOD,
|
||||
[DEPLOYMENT_PROVIDERS.ALIYUN_WAF]: BizDeployNodeConfigFieldsProviderAliyunWAF,
|
||||
[DEPLOYMENT_PROVIDERS.APISIX]: BizDeployNodeConfigFieldsProviderAPISIX,
|
||||
[DEPLOYMENT_PROVIDERS.AWS_ACM]: BizDeployNodeConfigFieldsProviderAWSACM,
|
||||
[DEPLOYMENT_PROVIDERS.AWS_CLOUDFRONT]: BizDeployNodeConfigFieldsProviderAWSCloudFront,
|
||||
[DEPLOYMENT_PROVIDERS.AWS_IAM]: BizDeployNodeConfigFieldsProviderAWSIAM,
|
||||
[DEPLOYMENT_PROVIDERS.AZURE_KEYVAULT]: BizDeployNodeConfigFieldsProviderAzureKeyVault,
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_APPBLB]: BizDeployNodeConfigFieldsProviderBaiduCloudAppBLB,
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_BLB]: BizDeployNodeConfigFieldsProviderBaiduCloudBLB,
|
||||
[DEPLOYMENT_PROVIDERS.BAIDUCLOUD_CDN]: BizDeployNodeConfigFieldsProviderBaiduCloudCDN,
|
||||
[DEPLOYMENT_PROVIDERS.BAISHAN_CDN]: BizDeployNodeConfigFieldsProviderBaishanCDN,
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAPANEL_CONSOLE]: BizDeployNodeConfigFieldsProviderBaotaPanelConsole,
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAPANEL_SITE]: BizDeployNodeConfigFieldsProviderBaotaPanelSite,
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAPANELGO_CONSOLE]: BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole,
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAPANELGO_SITE]: BizDeployNodeConfigFieldsProviderBaotaPanelGoSite,
|
||||
[DEPLOYMENT_PROVIDERS.BAOTAWAF_SITE]: BizDeployNodeConfigFieldsProviderBaotaWAFSite,
|
||||
[DEPLOYMENT_PROVIDERS.BUNNY_CDN]: BizDeployNodeConfigFieldsProviderBunnyCDN,
|
||||
[DEPLOYMENT_PROVIDERS.BYTEPLUS_CDN]: BizDeployNodeConfigFieldsProviderBytePlusCDN,
|
||||
[DEPLOYMENT_PROVIDERS.CDNFLY]: BizDeployNodeConfigFieldsProviderCdnfly,
|
||||
[DEPLOYMENT_PROVIDERS.CTCCCLOUD_AO]: BizDeployNodeConfigFieldsProviderCTCCCloudAO,
|
||||
[DEPLOYMENT_PROVIDERS.CTCCCLOUD_CDN]: BizDeployNodeConfigFieldsProviderCTCCCloudCDN,
|
||||
[DEPLOYMENT_PROVIDERS.CTCCCLOUD_ELB]: BizDeployNodeConfigFieldsProviderCTCCCloudELB,
|
||||
[DEPLOYMENT_PROVIDERS.CTCCCLOUD_ICDN]: BizDeployNodeConfigFieldsProviderCTCCCloudICDN,
|
||||
[DEPLOYMENT_PROVIDERS.CTCCCLOUD_LVDN]: BizDeployNodeConfigFieldsProviderCTCCCloudLVDN,
|
||||
[DEPLOYMENT_PROVIDERS.DOGECLOUD_CDN]: BizDeployNodeConfigFieldsProviderDogeCloudCDN,
|
||||
[DEPLOYMENT_PROVIDERS.FLEXCDN]: BizDeployNodeConfigFieldsProviderFlexCDN,
|
||||
[DEPLOYMENT_PROVIDERS.GCORE_CDN]: BizDeployNodeConfigFieldsProviderGcoreCDN,
|
||||
[DEPLOYMENT_PROVIDERS.GOEDGE]: BizDeployNodeConfigFieldsProviderGoEdge,
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_CDN]: BizDeployNodeConfigFieldsProviderHuaweiCloudCDN,
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_ELB]: BizDeployNodeConfigFieldsProviderHuaweiCloudELB,
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_OBS]: BizDeployNodeConfigFieldsProviderHuaweiCloudOBS,
|
||||
[DEPLOYMENT_PROVIDERS.HUAWEICLOUD_WAF]: BizDeployNodeConfigFieldsProviderHuaweiCloudWAF,
|
||||
[DEPLOYMENT_PROVIDERS.JDCLOUD_ALB]: BizDeployNodeConfigFieldsProviderJDCloudALB,
|
||||
[DEPLOYMENT_PROVIDERS.JDCLOUD_CDN]: BizDeployNodeConfigFieldsProviderJDCloudCDN,
|
||||
[DEPLOYMENT_PROVIDERS.JDCLOUD_LIVE]: BizDeployNodeConfigFieldsProviderJDCloudLive,
|
||||
[DEPLOYMENT_PROVIDERS.JDCLOUD_VOD]: BizDeployNodeConfigFieldsProviderJDCloudVOD,
|
||||
[DEPLOYMENT_PROVIDERS.KONG]: BizDeployNodeConfigFieldsProviderKong,
|
||||
[DEPLOYMENT_PROVIDERS.KUBERNETES_SECRET]: BizDeployNodeConfigFieldsProviderKubernetesSecret,
|
||||
[DEPLOYMENT_PROVIDERS.LECDN]: BizDeployNodeConfigFieldsProviderLeCDN,
|
||||
[DEPLOYMENT_PROVIDERS.LOCAL]: BizDeployNodeConfigFieldsProviderLocal,
|
||||
[DEPLOYMENT_PROVIDERS.NETLIFY_SITE]: BizDeployNodeConfigFieldsProviderNetlifySite,
|
||||
[DEPLOYMENT_PROVIDERS.PROXMOXVE]: BizDeployNodeConfigFieldsProviderProxmoxVE,
|
||||
[DEPLOYMENT_PROVIDERS.QINIU_CDN]: BizDeployNodeConfigFieldsProviderQiniuCDN,
|
||||
[DEPLOYMENT_PROVIDERS.QINIU_KODO]: BizDeployNodeConfigFieldsProviderQiniuKodo,
|
||||
[DEPLOYMENT_PROVIDERS.QINIU_PILI]: BizDeployNodeConfigFieldsProviderQiniuPili,
|
||||
[DEPLOYMENT_PROVIDERS.RAINYUN_RCDN]: BizDeployNodeConfigFieldsProviderRainYunRCDN,
|
||||
[DEPLOYMENT_PROVIDERS.RATPANEL_SITE]: BizDeployNodeConfigFieldsProviderRatPanelSite,
|
||||
[DEPLOYMENT_PROVIDERS.SAFELINE]: BizDeployNodeConfigFieldsProviderSafeLine,
|
||||
[DEPLOYMENT_PROVIDERS.SSH]: BizDeployNodeConfigFieldsProviderSSH,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CDN]: BizDeployNodeConfigFieldsProviderTencentCloudCDN,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CLB]: BizDeployNodeConfigFieldsProviderTencentCloudCLB,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_COS]: BizDeployNodeConfigFieldsProviderTencentCloudCOS,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CSS]: BizDeployNodeConfigFieldsProviderTencentCloudCSS,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_ECDN]: BizDeployNodeConfigFieldsProviderTencentCloudECDN,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_EO]: BizDeployNodeConfigFieldsProviderTencentCloudEO,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_GAAP]: BizDeployNodeConfigFieldsProviderTencentCloudGAAP,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SCF]: BizDeployNodeConfigFieldsProviderTencentCloudSCF,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL]: BizDeployNodeConfigFieldsProviderTencentCloudSSL,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL_DEPLOY]: BizDeployNodeConfigFieldsProviderTencentCloudSSLDeploy,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL_UPDATE]: BizDeployNodeConfigFieldsProviderTencentCloudSSLUpdate,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_VOD]: BizDeployNodeConfigFieldsProviderTencentCloudVOD,
|
||||
[DEPLOYMENT_PROVIDERS.TENCENTCLOUD_WAF]: BizDeployNodeConfigFieldsProviderTencentCloudWAF,
|
||||
[DEPLOYMENT_PROVIDERS.UCLOUD_UCDN]: BizDeployNodeConfigFieldsProviderUCloudUCDN,
|
||||
[DEPLOYMENT_PROVIDERS.UCLOUD_US3]: BizDeployNodeConfigFieldsProviderUCloudUS3,
|
||||
[DEPLOYMENT_PROVIDERS.UNICLOUD_WEBHOST]: BizDeployNodeConfigFieldsProviderUniCloudWebHost,
|
||||
[DEPLOYMENT_PROVIDERS.UPYUN_CDN]: BizDeployNodeConfigFieldsProviderUpyunCDN,
|
||||
[DEPLOYMENT_PROVIDERS.UPYUN_FILE]: BizDeployNodeConfigFieldsProviderUpyunFile,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_ALB]: BizDeployNodeConfigFieldsProviderVolcEngineALB,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_CDN]: BizDeployNodeConfigFieldsProviderVolcEngineCDN,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_CERTCENTER]: BizDeployNodeConfigFieldsProviderVolcEngineCertCenter,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_CLB]: BizDeployNodeConfigFieldsProviderVolcEngineCLB,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_DCDN]: BizDeployNodeConfigFieldsProviderVolcEngineDCDN,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_IMAGEX]: BizDeployNodeConfigFieldsProviderVolcEngineImageX,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_LIVE]: BizDeployNodeConfigFieldsProviderVolcEngineLive,
|
||||
[DEPLOYMENT_PROVIDERS.VOLCENGINE_TOS]: BizDeployNodeConfigFieldsProviderVolcEngineTOS,
|
||||
[DEPLOYMENT_PROVIDERS.WANGSU_CDN]: BizDeployNodeConfigFieldsProviderWangsuCDN,
|
||||
[DEPLOYMENT_PROVIDERS.WANGSU_CDNPRO]: BizDeployNodeConfigFieldsProviderWangsuCDNPro,
|
||||
[DEPLOYMENT_PROVIDERS.WANGSU_CERTIFICATE]: BizDeployNodeConfigFieldsProviderWangsuCertificate,
|
||||
[DEPLOYMENT_PROVIDERS.WEBHOOK]: BizDeployNodeConfigFieldsProviderWebhook,
|
||||
};
|
||||
|
||||
const useComponent = (provider: string, { initProps, deps = [] }: { initProps?: (provider: string) => any; deps?: unknown[] }) => {
|
||||
const initComponent = () => {
|
||||
const Component = providerComponentMap[provider as DeploymentProviderType];
|
||||
if (!Component) return null;
|
||||
|
||||
const props = initProps?.(provider);
|
||||
if (props) {
|
||||
return <Component {...props} />;
|
||||
}
|
||||
|
||||
return <Component />;
|
||||
};
|
||||
|
||||
const [component, setComponent] = useState(() => initComponent());
|
||||
|
||||
useEffect(() => setComponent(initComponent()), [provider]);
|
||||
useEffect(() => setComponent(initComponent()), deps);
|
||||
|
||||
return component;
|
||||
};
|
||||
|
||||
const _default = {
|
||||
useComponent,
|
||||
};
|
||||
|
||||
export default _default;
|
||||
+4
-7
@@ -53,13 +53,10 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
|
||||
return z.object({
|
||||
siteName: z.string().nonempty(t("workflow_node.deploy.form.baotawaf_site_name.placeholder")),
|
||||
sitePort: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z
|
||||
.number()
|
||||
.int(t("workflow_node.deploy.form.baotawaf_site_port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
|
||||
),
|
||||
sitePort: z.coerce
|
||||
.number()
|
||||
.int(t("workflow_node.deploy.form.baotawaf_site_port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
+4
-16
@@ -429,22 +429,10 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
.string()
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
pfxPassword: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
jksAlias: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
jksKeypass: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
jksStorepass: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
pfxPassword: z.string().nullish(),
|
||||
jksAlias: z.string().nullish(),
|
||||
jksKeypass: z.string().nullish(),
|
||||
jksStorepass: z.string().nullish(),
|
||||
shellEnv: z.literal([SHELLENV_SH, SHELLENV_CMD, SHELLENV_POWERSHELL], t("workflow_node.deploy.form.local_shell_env.placeholder")),
|
||||
preCommand: z
|
||||
.string()
|
||||
|
||||
@@ -471,22 +471,10 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
.string()
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
pfxPassword: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
jksAlias: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
jksKeypass: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
jksStorepass: z
|
||||
.string()
|
||||
.max(64, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
pfxPassword: z.string().nullish(),
|
||||
jksAlias: z.string().nullish(),
|
||||
jksKeypass: z.string().nullish(),
|
||||
jksStorepass: z.string().nullish(),
|
||||
preCommand: z
|
||||
.string()
|
||||
.max(20480, t("common.errmsg.string_max", { max: 20480 }))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { useEffect, useMemo } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { IconPlus } from "@tabler/icons-react";
|
||||
import { type AnchorProps, Button, Divider, Flex, Form, type FormInstance, Select, Switch, Typography, theme } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
@@ -12,108 +12,14 @@ import DeploymentProviderPicker from "@/components/provider/DeploymentProviderPi
|
||||
import DeploymentProviderSelect from "@/components/provider/DeploymentProviderSelect";
|
||||
import Show from "@/components/Show";
|
||||
import { type AccessModel } from "@/domain/access";
|
||||
import { DEPLOYMENT_PROVIDERS, deploymentProvidersMap } from "@/domain/provider";
|
||||
import { deploymentProvidersMap } from "@/domain/provider";
|
||||
import { type WorkflowNodeConfigForBizDeploy, defaultNodeConfigForBizDeploy } from "@/domain/workflow";
|
||||
import { useAntdForm, useZustandShallowSelector } from "@/hooks";
|
||||
import { useAccessesStore } from "@/stores/access";
|
||||
|
||||
import { getAllPreviousNodes } from "../_util";
|
||||
import { FormNestedFieldsContextProvider, NodeFormContextProvider } from "./_context";
|
||||
import BizDeployNodeConfigFieldsProvider1PanelConsole from "./BizDeployNodeConfigFieldsProvider1PanelConsole";
|
||||
import BizDeployNodeConfigFieldsProvider1PanelSite from "./BizDeployNodeConfigFieldsProvider1PanelSite";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunALB from "./BizDeployNodeConfigFieldsProviderAliyunALB";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunAPIGW from "./BizDeployNodeConfigFieldsProviderAliyunAPIGW";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCAS from "./BizDeployNodeConfigFieldsProviderAliyunCAS";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCASDeploy from "./BizDeployNodeConfigFieldsProviderAliyunCASDeploy";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCDN from "./BizDeployNodeConfigFieldsProviderAliyunCDN";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunCLB from "./BizDeployNodeConfigFieldsProviderAliyunCLB";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunDCDN from "./BizDeployNodeConfigFieldsProviderAliyunDCDN";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunDDoS from "./BizDeployNodeConfigFieldsProviderAliyunDDoS";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunESA from "./BizDeployNodeConfigFieldsProviderAliyunESA";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunFC from "./BizDeployNodeConfigFieldsProviderAliyunFC";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunGA from "./BizDeployNodeConfigFieldsProviderAliyunGA";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunLive from "./BizDeployNodeConfigFieldsProviderAliyunLive";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunNLB from "./BizDeployNodeConfigFieldsProviderAliyunNLB";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunOSS from "./BizDeployNodeConfigFieldsProviderAliyunOSS";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunVOD from "./BizDeployNodeConfigFieldsProviderAliyunVOD";
|
||||
import BizDeployNodeConfigFieldsProviderAliyunWAF from "./BizDeployNodeConfigFieldsProviderAliyunWAF";
|
||||
import BizDeployNodeConfigFieldsProviderAPISIX from "./BizDeployNodeConfigFieldsProviderAPISIX";
|
||||
import BizDeployNodeConfigFieldsProviderAWSACM from "./BizDeployNodeConfigFieldsProviderAWSACM";
|
||||
import BizDeployNodeConfigFieldsProviderAWSCloudFront from "./BizDeployNodeConfigFieldsProviderAWSCloudFront";
|
||||
import BizDeployNodeConfigFieldsProviderAWSIAM from "./BizDeployNodeConfigFieldsProviderAWSIAM";
|
||||
import BizDeployNodeConfigFieldsProviderAzureKeyVault from "./BizDeployNodeConfigFieldsProviderAzureKeyVault";
|
||||
import BizDeployNodeConfigFieldsProviderBaiduCloudAppBLB from "./BizDeployNodeConfigFieldsProviderBaiduCloudAppBLB";
|
||||
import BizDeployNodeConfigFieldsProviderBaiduCloudBLB from "./BizDeployNodeConfigFieldsProviderBaiduCloudBLB";
|
||||
import BizDeployNodeConfigFieldsProviderBaiduCloudCDN from "./BizDeployNodeConfigFieldsProviderBaiduCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderBaishanCDN from "./BizDeployNodeConfigFieldsProviderBaishanCDN";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelConsole from "./BizDeployNodeConfigFieldsProviderBaotaPanelConsole";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole from "./BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelGoSite from "./BizDeployNodeConfigFieldsProviderBaotaPanelGoSite";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaPanelSite from "./BizDeployNodeConfigFieldsProviderBaotaPanelSite";
|
||||
import BizDeployNodeConfigFieldsProviderBaotaWAFSite from "./BizDeployNodeConfigFieldsProviderBaotaWAFSite";
|
||||
import BizDeployNodeConfigFieldsProviderBunnyCDN from "./BizDeployNodeConfigFieldsProviderBunnyCDN";
|
||||
import BizDeployNodeConfigFieldsProviderBytePlusCDN from "./BizDeployNodeConfigFieldsProviderBytePlusCDN";
|
||||
import BizDeployNodeConfigFieldsProviderCdnfly from "./BizDeployNodeConfigFieldsProviderCdnfly";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudAO from "./BizDeployNodeConfigFieldsProviderCTCCCloudAO";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudCDN from "./BizDeployNodeConfigFieldsProviderCTCCCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudELB from "./BizDeployNodeConfigFieldsProviderCTCCCloudELB";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudICDN from "./BizDeployNodeConfigFieldsProviderCTCCCloudICDN";
|
||||
import BizDeployNodeConfigFieldsProviderCTCCCloudLVDN from "./BizDeployNodeConfigFieldsProviderCTCCCloudLVDN";
|
||||
import BizDeployNodeConfigFieldsProviderDogeCloudCDN from "./BizDeployNodeConfigFieldsProviderDogeCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderFlexCDN from "./BizDeployNodeConfigFieldsProviderFlexCDN";
|
||||
import BizDeployNodeConfigFieldsProviderGcoreCDN from "./BizDeployNodeConfigFieldsProviderGcoreCDN";
|
||||
import BizDeployNodeConfigFieldsProviderGoEdge from "./BizDeployNodeConfigFieldsProviderGoEdge";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudCDN from "./BizDeployNodeConfigFieldsProviderHuaweiCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudELB from "./BizDeployNodeConfigFieldsProviderHuaweiCloudELB";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudOBS from "./BizDeployNodeConfigFieldsProviderHuaweiCloudOBS";
|
||||
import BizDeployNodeConfigFieldsProviderHuaweiCloudWAF from "./BizDeployNodeConfigFieldsProviderHuaweiCloudWAF";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudALB from "./BizDeployNodeConfigFieldsProviderJDCloudALB";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudCDN from "./BizDeployNodeConfigFieldsProviderJDCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudLive from "./BizDeployNodeConfigFieldsProviderJDCloudLive";
|
||||
import BizDeployNodeConfigFieldsProviderJDCloudVOD from "./BizDeployNodeConfigFieldsProviderJDCloudVOD";
|
||||
import BizDeployNodeConfigFieldsProviderKong from "./BizDeployNodeConfigFieldsProviderKong";
|
||||
import BizDeployNodeConfigFieldsProviderKubernetesSecret from "./BizDeployNodeConfigFieldsProviderKubernetesSecret";
|
||||
import BizDeployNodeConfigFieldsProviderLeCDN from "./BizDeployNodeConfigFieldsProviderLeCDN";
|
||||
import BizDeployNodeConfigFieldsProviderLocal from "./BizDeployNodeConfigFieldsProviderLocal";
|
||||
import BizDeployNodeConfigFieldsProviderNetlifySite from "./BizDeployNodeConfigFieldsProviderNetlifySite";
|
||||
import BizDeployNodeConfigFieldsProviderProxmoxVE from "./BizDeployNodeConfigFieldsProviderProxmoxVE";
|
||||
import BizDeployNodeConfigFieldsProviderQiniuCDN from "./BizDeployNodeConfigFieldsProviderQiniuCDN";
|
||||
import BizDeployNodeConfigFieldsProviderQiniuKodo from "./BizDeployNodeConfigFieldsProviderQiniuKodo";
|
||||
import BizDeployNodeConfigFieldsProviderQiniuPili from "./BizDeployNodeConfigFieldsProviderQiniuPili";
|
||||
import BizDeployNodeConfigFieldsProviderRainYunRCDN from "./BizDeployNodeConfigFieldsProviderRainYunRCDN";
|
||||
import BizDeployNodeConfigFieldsProviderRatPanelSite from "./BizDeployNodeConfigFieldsProviderRatPanelSite";
|
||||
import BizDeployNodeConfigFieldsProviderSafeLine from "./BizDeployNodeConfigFieldsProviderSafeLine";
|
||||
import BizDeployNodeConfigFieldsProviderSSH from "./BizDeployNodeConfigFieldsProviderSSH";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCDN from "./BizDeployNodeConfigFieldsProviderTencentCloudCDN";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCLB from "./BizDeployNodeConfigFieldsProviderTencentCloudCLB";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCOS from "./BizDeployNodeConfigFieldsProviderTencentCloudCOS";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudCSS from "./BizDeployNodeConfigFieldsProviderTencentCloudCSS";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudECDN from "./BizDeployNodeConfigFieldsProviderTencentCloudECDN";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudEO from "./BizDeployNodeConfigFieldsProviderTencentCloudEO";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudGAAP from "./BizDeployNodeConfigFieldsProviderTencentCloudGAAP";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSCF from "./BizDeployNodeConfigFieldsProviderTencentCloudSCF";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSSL from "./BizDeployNodeConfigFieldsProviderTencentCloudSSL";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSSLDeploy from "./BizDeployNodeConfigFieldsProviderTencentCloudSSLDeploy";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudSSLUpdate from "./BizDeployNodeConfigFieldsProviderTencentCloudSSLUpdate";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudVOD from "./BizDeployNodeConfigFieldsProviderTencentCloudVOD";
|
||||
import BizDeployNodeConfigFieldsProviderTencentCloudWAF from "./BizDeployNodeConfigFieldsProviderTencentCloudWAF";
|
||||
import BizDeployNodeConfigFieldsProviderUCloudUCDN from "./BizDeployNodeConfigFieldsProviderUCloudUCDN";
|
||||
import BizDeployNodeConfigFieldsProviderUCloudUS3 from "./BizDeployNodeConfigFieldsProviderUCloudUS3";
|
||||
import BizDeployNodeConfigFieldsProviderUniCloudWebHost from "./BizDeployNodeConfigFieldsProviderUniCloudWebHost";
|
||||
import BizDeployNodeConfigFieldsProviderUpyunCDN from "./BizDeployNodeConfigFieldsProviderUpyunCDN";
|
||||
import BizDeployNodeConfigFieldsProviderUpyunFile from "./BizDeployNodeConfigFieldsProviderUpyunFile";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineALB from "./BizDeployNodeConfigFieldsProviderVolcEngineALB";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineCDN from "./BizDeployNodeConfigFieldsProviderVolcEngineCDN";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineCertCenter from "./BizDeployNodeConfigFieldsProviderVolcEngineCertCenter";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineCLB from "./BizDeployNodeConfigFieldsProviderVolcEngineCLB";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineDCDN from "./BizDeployNodeConfigFieldsProviderVolcEngineDCDN";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineImageX from "./BizDeployNodeConfigFieldsProviderVolcEngineImageX";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineLive from "./BizDeployNodeConfigFieldsProviderVolcEngineLive";
|
||||
import BizDeployNodeConfigFieldsProviderVolcEngineTOS from "./BizDeployNodeConfigFieldsProviderVolcEngineTOS";
|
||||
import BizDeployNodeConfigFieldsProviderWangsuCDN from "./BizDeployNodeConfigFieldsProviderWangsuCDN";
|
||||
import BizDeployNodeConfigFieldsProviderWangsuCDNPro from "./BizDeployNodeConfigFieldsProviderWangsuCDNPro";
|
||||
import BizDeployNodeConfigFieldsProviderWangsuCertificate from "./BizDeployNodeConfigFieldsProviderWangsuCertificate";
|
||||
import BizDeployNodeConfigFieldsProviderWebhook from "./BizDeployNodeConfigFieldsProviderWebhook";
|
||||
import BizDeployNodeConfigFieldsProvider from "./BizDeployNodeConfigFieldsProvider";
|
||||
import { NodeType } from "../nodes/typings";
|
||||
|
||||
export interface BizDeployNodeConfigFormProps {
|
||||
@@ -137,7 +43,7 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp
|
||||
};
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForBizDeploy | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForBizDeploy | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n }).superRefine((values, ctx) => {
|
||||
@@ -166,315 +72,22 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp
|
||||
.filter((node) => node.flowNodeType === NodeType.BizApply || node.flowNodeType === NodeType.BizUpload)
|
||||
.map((node) => {
|
||||
return {
|
||||
label: getNodeForm(node)?.getValueIn("name"),
|
||||
label: node.form?.getValueIn("name"),
|
||||
value: node.id,
|
||||
};
|
||||
});
|
||||
}, [node]);
|
||||
|
||||
const [showProviderAccess, setShowProviderAccess] = useState(false);
|
||||
useEffect(() => {
|
||||
const renderNestedFieldProviderComponent = BizDeployNodeConfigFieldsProvider.useComponent(fieldProvider, {});
|
||||
|
||||
const showProviderAccess = useMemo(() => {
|
||||
// 内置的部署提供商(如本地部署)无需显示授权信息字段
|
||||
if (fieldProvider) {
|
||||
const provider = deploymentProvidersMap.get(fieldProvider);
|
||||
setShowProviderAccess(!provider?.builtin);
|
||||
} else {
|
||||
setShowProviderAccess(false);
|
||||
return !provider?.builtin;
|
||||
}
|
||||
}, [fieldProvider]);
|
||||
|
||||
const NestedProviderConfigFields = useMemo(() => {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
switch (fieldProvider) {
|
||||
case DEPLOYMENT_PROVIDERS["1PANEL_CONSOLE"]: {
|
||||
return BizDeployNodeConfigFieldsProvider1PanelConsole;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS["1PANEL_SITE"]: {
|
||||
return BizDeployNodeConfigFieldsProvider1PanelSite;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_ALB: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunALB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_APIGW: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunAPIGW;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_CAS: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunCAS;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_CAS_DEPLOY: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunCASDeploy;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_CLB: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunCLB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_DCDN: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunDCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_DDOS: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunDDoS;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_ESA: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunESA;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_FC: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunFC;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_GA: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunGA;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_LIVE: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunLive;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_NLB: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunNLB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_OSS: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunOSS;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_VOD: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunVOD;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.ALIYUN_WAF: {
|
||||
return BizDeployNodeConfigFieldsProviderAliyunWAF;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.APISIX: {
|
||||
return BizDeployNodeConfigFieldsProviderAPISIX;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.AWS_ACM: {
|
||||
return BizDeployNodeConfigFieldsProviderAWSACM;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.AWS_CLOUDFRONT: {
|
||||
return BizDeployNodeConfigFieldsProviderAWSCloudFront;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.AWS_IAM: {
|
||||
return BizDeployNodeConfigFieldsProviderAWSIAM;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.AZURE_KEYVAULT: {
|
||||
return BizDeployNodeConfigFieldsProviderAzureKeyVault;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAIDUCLOUD_APPBLB: {
|
||||
return BizDeployNodeConfigFieldsProviderBaiduCloudAppBLB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAIDUCLOUD_BLB: {
|
||||
return BizDeployNodeConfigFieldsProviderBaiduCloudBLB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAIDUCLOUD_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderBaiduCloudCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAISHAN_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderBaishanCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAOTAPANEL_CONSOLE: {
|
||||
return BizDeployNodeConfigFieldsProviderBaotaPanelConsole;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAOTAPANEL_SITE: {
|
||||
return BizDeployNodeConfigFieldsProviderBaotaPanelSite;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAOTAPANELGO_CONSOLE: {
|
||||
return BizDeployNodeConfigFieldsProviderBaotaPanelGoConsole;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAOTAPANELGO_SITE: {
|
||||
return BizDeployNodeConfigFieldsProviderBaotaPanelGoSite;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BAOTAWAF_SITE: {
|
||||
return BizDeployNodeConfigFieldsProviderBaotaWAFSite;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BUNNY_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderBunnyCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.BYTEPLUS_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderBytePlusCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.CDNFLY: {
|
||||
return BizDeployNodeConfigFieldsProviderCdnfly;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.CTCCCLOUD_AO: {
|
||||
return BizDeployNodeConfigFieldsProviderCTCCCloudAO;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.CTCCCLOUD_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderCTCCCloudCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.CTCCCLOUD_ELB: {
|
||||
return BizDeployNodeConfigFieldsProviderCTCCCloudELB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.CTCCCLOUD_ICDN: {
|
||||
return BizDeployNodeConfigFieldsProviderCTCCCloudICDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.CTCCCLOUD_LVDN: {
|
||||
return BizDeployNodeConfigFieldsProviderCTCCCloudLVDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.DOGECLOUD_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderDogeCloudCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.FLEXCDN: {
|
||||
return BizDeployNodeConfigFieldsProviderFlexCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.GCORE_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderGcoreCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.GOEDGE: {
|
||||
return BizDeployNodeConfigFieldsProviderGoEdge;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.HUAWEICLOUD_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderHuaweiCloudCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.HUAWEICLOUD_ELB: {
|
||||
return BizDeployNodeConfigFieldsProviderHuaweiCloudELB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.HUAWEICLOUD_OBS: {
|
||||
return BizDeployNodeConfigFieldsProviderHuaweiCloudOBS;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.HUAWEICLOUD_WAF: {
|
||||
return BizDeployNodeConfigFieldsProviderHuaweiCloudWAF;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.JDCLOUD_ALB: {
|
||||
return BizDeployNodeConfigFieldsProviderJDCloudALB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.JDCLOUD_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderJDCloudCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.JDCLOUD_LIVE: {
|
||||
return BizDeployNodeConfigFieldsProviderJDCloudLive;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.JDCLOUD_VOD: {
|
||||
return BizDeployNodeConfigFieldsProviderJDCloudVOD;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.KONG: {
|
||||
return BizDeployNodeConfigFieldsProviderKong;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.KUBERNETES_SECRET: {
|
||||
return BizDeployNodeConfigFieldsProviderKubernetesSecret;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.LECDN: {
|
||||
return BizDeployNodeConfigFieldsProviderLeCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.LOCAL: {
|
||||
return BizDeployNodeConfigFieldsProviderLocal;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.NETLIFY_SITE: {
|
||||
return BizDeployNodeConfigFieldsProviderNetlifySite;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.PROXMOXVE: {
|
||||
return BizDeployNodeConfigFieldsProviderProxmoxVE;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.QINIU_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderQiniuCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.QINIU_KODO: {
|
||||
return BizDeployNodeConfigFieldsProviderQiniuKodo;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.QINIU_PILI: {
|
||||
return BizDeployNodeConfigFieldsProviderQiniuPili;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.RAINYUN_RCDN: {
|
||||
return BizDeployNodeConfigFieldsProviderRainYunRCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.RATPANEL_SITE: {
|
||||
return BizDeployNodeConfigFieldsProviderRatPanelSite;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.SAFELINE: {
|
||||
return BizDeployNodeConfigFieldsProviderSafeLine;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.SSH: {
|
||||
return BizDeployNodeConfigFieldsProviderSSH;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CLB: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudCLB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_COS: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudCOS;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_CSS: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudCSS;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_ECDN: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudECDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_EO: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudEO;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_GAAP: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudGAAP;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SCF: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudSCF;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudSSL;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL_DEPLOY: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudSSLDeploy;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_SSL_UPDATE: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudSSLUpdate;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_VOD: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudVOD;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.TENCENTCLOUD_WAF: {
|
||||
return BizDeployNodeConfigFieldsProviderTencentCloudWAF;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.UCLOUD_UCDN: {
|
||||
return BizDeployNodeConfigFieldsProviderUCloudUCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.UCLOUD_US3: {
|
||||
return BizDeployNodeConfigFieldsProviderUCloudUS3;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.UNICLOUD_WEBHOST: {
|
||||
return BizDeployNodeConfigFieldsProviderUniCloudWebHost;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.UPYUN_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderUpyunCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.UPYUN_FILE: {
|
||||
return BizDeployNodeConfigFieldsProviderUpyunFile;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_ALB: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineALB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_CERTCENTER: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineCertCenter;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_CLB: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineCLB;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_DCDN: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineDCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_IMAGEX: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineImageX;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_LIVE: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineLive;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.VOLCENGINE_TOS: {
|
||||
return BizDeployNodeConfigFieldsProviderVolcEngineTOS;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.WANGSU_CDN: {
|
||||
return BizDeployNodeConfigFieldsProviderWangsuCDN;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.WANGSU_CDNPRO: {
|
||||
return BizDeployNodeConfigFieldsProviderWangsuCDNPro;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.WANGSU_CERTIFICATE: {
|
||||
return BizDeployNodeConfigFieldsProviderWangsuCertificate;
|
||||
}
|
||||
case DEPLOYMENT_PROVIDERS.WEBHOOK: {
|
||||
return BizDeployNodeConfigFieldsProviderWebhook;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}, [fieldProvider]);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -599,7 +212,7 @@ const BizDeployNodeConfigForm = ({ node, ...props }: BizDeployNodeConfigFormProp
|
||||
</Form.Item>
|
||||
|
||||
<FormNestedFieldsContextProvider value={{ parentNamePath: "providerConfig" }}>
|
||||
{NestedProviderConfigFields && <NestedProviderConfigFields />}
|
||||
{renderNestedFieldProviderComponent && <>{renderNestedFieldProviderComponent}</>}
|
||||
</FormNestedFieldsContextProvider>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useMemo } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type AnchorProps, Form, type FormInstance, Input, InputNumber } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
@@ -26,7 +26,7 @@ const BizMonitorNodeConfigForm = ({ node, ...props }: BizMonitorNodeConfigFormPr
|
||||
const { i18n, t } = useTranslation();
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForBizMonitor | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForBizMonitor | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n });
|
||||
@@ -93,13 +93,10 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
host: z.string(t("workflow_node.monitor.form.host.placeholder")).refine((v) => {
|
||||
return validDomainName(v) || validIPv4Address(v) || validIPv6Address(v);
|
||||
}, t("common.errmsg.host_invalid")),
|
||||
port: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z
|
||||
.number()
|
||||
.int(t("workflow_node.monitor.form.port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid"))
|
||||
),
|
||||
port: z.coerce
|
||||
.number()
|
||||
.int(t("workflow_node.monitor.form.port.placeholder"))
|
||||
.refine((v) => validPortNumber(v), t("common.errmsg.port_invalid")),
|
||||
domain: z
|
||||
.string()
|
||||
.nullish()
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import { NOTIFICATION_PROVIDERS, type NotificationProviderType } from "@/domain/provider";
|
||||
|
||||
import BizNotifyNodeConfigFieldsProviderDiscordBot from "./BizNotifyNodeConfigFieldsProviderDiscordBot";
|
||||
import BizNotifyNodeConfigFieldsProviderEmail from "./BizNotifyNodeConfigFieldsProviderEmail";
|
||||
import BizNotifyNodeConfigFieldsProviderMattermost from "./BizNotifyNodeConfigFieldsProviderMattermost";
|
||||
import BizNotifyNodeConfigFieldsProviderSlackBot from "./BizNotifyNodeConfigFieldsProviderSlackBot";
|
||||
import BizNotifyNodeConfigFieldsProviderTelegramBot from "./BizNotifyNodeConfigFieldsProviderTelegramBot";
|
||||
import BizNotifyNodeConfigFieldsProviderWebhook from "./BizNotifyNodeConfigFieldsProviderWebhook";
|
||||
|
||||
const providerComponentMap: Partial<Record<NotificationProviderType, React.ComponentType<any>>> = {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
[NOTIFICATION_PROVIDERS.DISCORDBOT]: BizNotifyNodeConfigFieldsProviderDiscordBot,
|
||||
[NOTIFICATION_PROVIDERS.EMAIL]: BizNotifyNodeConfigFieldsProviderEmail,
|
||||
[NOTIFICATION_PROVIDERS.MATTERMOST]: BizNotifyNodeConfigFieldsProviderMattermost,
|
||||
[NOTIFICATION_PROVIDERS.SLACKBOT]: BizNotifyNodeConfigFieldsProviderSlackBot,
|
||||
[NOTIFICATION_PROVIDERS.TELEGRAMBOT]: BizNotifyNodeConfigFieldsProviderTelegramBot,
|
||||
[NOTIFICATION_PROVIDERS.WEBHOOK]: BizNotifyNodeConfigFieldsProviderWebhook,
|
||||
};
|
||||
|
||||
const useComponent = (provider: string, { initProps, deps = [] }: { initProps?: (provider: string) => any; deps?: unknown[] }) => {
|
||||
const initComponent = () => {
|
||||
const Component = providerComponentMap[provider as NotificationProviderType];
|
||||
if (!Component) return null;
|
||||
|
||||
const props = initProps?.(provider);
|
||||
if (props) {
|
||||
return <Component {...props} />;
|
||||
}
|
||||
|
||||
return <Component />;
|
||||
};
|
||||
|
||||
const [component, setComponent] = useState(() => initComponent());
|
||||
|
||||
useEffect(() => setComponent(initComponent()), [provider]);
|
||||
useEffect(() => setComponent(initComponent()), deps);
|
||||
|
||||
return component;
|
||||
};
|
||||
|
||||
const _default = {
|
||||
useComponent,
|
||||
};
|
||||
|
||||
export default _default;
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useMemo } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { IconPlus } from "@tabler/icons-react";
|
||||
import { type AnchorProps, Button, Divider, Flex, Form, type FormInstance, Input, Switch, Typography } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
@@ -13,18 +13,13 @@ import NotificationProviderSelect from "@/components/provider/NotificationProvid
|
||||
import Show from "@/components/Show";
|
||||
import Tips from "@/components/Tips";
|
||||
import { type AccessModel } from "@/domain/access";
|
||||
import { NOTIFICATION_PROVIDERS, notificationProvidersMap } from "@/domain/provider";
|
||||
import { notificationProvidersMap } from "@/domain/provider";
|
||||
import { type WorkflowNodeConfigForBizNotify, defaultNodeConfigForBizNotify } from "@/domain/workflow";
|
||||
import { useAntdForm, useZustandShallowSelector } from "@/hooks";
|
||||
import { useAccessesStore } from "@/stores/access";
|
||||
|
||||
import { FormNestedFieldsContextProvider, NodeFormContextProvider } from "./_context";
|
||||
import BizNotifyNodeConfigFieldsProviderDiscordBot from "./BizNotifyNodeConfigFieldsProviderDiscordBot";
|
||||
import BizNotifyNodeConfigFieldsProviderEmail from "./BizNotifyNodeConfigFieldsProviderEmail";
|
||||
import BizNotifyNodeConfigFieldsProviderMattermost from "./BizNotifyNodeConfigFieldsProviderMattermost";
|
||||
import BizNotifyNodeConfigFieldsProviderSlackBot from "./BizNotifyNodeConfigFieldsProviderSlackBot";
|
||||
import BizNotifyNodeConfigFieldsProviderTelegramBot from "./BizNotifyNodeConfigFieldsProviderTelegramBot";
|
||||
import BizNotifyNodeConfigFieldsProviderWebhook from "./BizNotifyNodeConfigFieldsProviderWebhook";
|
||||
import BizNotifyNodeConfigFieldsProvider from "./BizNotifyNodeConfigFieldsProvider";
|
||||
import { NodeType } from "../nodes/typings";
|
||||
|
||||
export interface BizNotifyNodeConfigFormProps {
|
||||
@@ -46,7 +41,7 @@ const BizNotifyNodeConfigForm = ({ node, ...props }: BizNotifyNodeConfigFormProp
|
||||
};
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForBizNotify | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForBizNotify | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n });
|
||||
@@ -60,32 +55,7 @@ const BizNotifyNodeConfigForm = ({ node, ...props }: BizNotifyNodeConfigFormProp
|
||||
const fieldProvider = Form.useWatch<string>("provider", { form: formInst, preserve: true });
|
||||
const fieldProviderAccessId = Form.useWatch<string>("providerAccessId", { form: formInst, preserve: true });
|
||||
|
||||
const NestedProviderConfigFields = useMemo(() => {
|
||||
/*
|
||||
注意:如果追加新的子组件,请保持以 ASCII 排序。
|
||||
NOTICE: If you add new child component, please keep ASCII order.
|
||||
*/
|
||||
switch (fieldProvider) {
|
||||
case NOTIFICATION_PROVIDERS.DISCORDBOT: {
|
||||
return BizNotifyNodeConfigFieldsProviderDiscordBot;
|
||||
}
|
||||
case NOTIFICATION_PROVIDERS.EMAIL: {
|
||||
return BizNotifyNodeConfigFieldsProviderEmail;
|
||||
}
|
||||
case NOTIFICATION_PROVIDERS.MATTERMOST: {
|
||||
return BizNotifyNodeConfigFieldsProviderMattermost;
|
||||
}
|
||||
case NOTIFICATION_PROVIDERS.SLACKBOT: {
|
||||
return BizNotifyNodeConfigFieldsProviderSlackBot;
|
||||
}
|
||||
case NOTIFICATION_PROVIDERS.TELEGRAMBOT: {
|
||||
return BizNotifyNodeConfigFieldsProviderTelegramBot;
|
||||
}
|
||||
case NOTIFICATION_PROVIDERS.WEBHOOK: {
|
||||
return BizNotifyNodeConfigFieldsProviderWebhook;
|
||||
}
|
||||
}
|
||||
}, [fieldProvider]);
|
||||
const renderNestedFieldProviderComponent = BizNotifyNodeConfigFieldsProvider.useComponent(fieldProvider, {});
|
||||
|
||||
useEffect(() => {
|
||||
// 如果未选择通知渠道,则清空授权信息
|
||||
@@ -199,7 +169,7 @@ const BizNotifyNodeConfigForm = ({ node, ...props }: BizNotifyNodeConfigFormProp
|
||||
</Form.Item>
|
||||
|
||||
<FormNestedFieldsContextProvider value={{ parentNamePath: "providerConfig" }}>
|
||||
{NestedProviderConfigFields && <NestedProviderConfigFields />}
|
||||
{renderNestedFieldProviderComponent && <>{renderNestedFieldProviderComponent}</>}
|
||||
</FormNestedFieldsContextProvider>
|
||||
</div>
|
||||
|
||||
@@ -251,14 +221,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
subject: z
|
||||
.string()
|
||||
.min(1, t("workflow_node.notify.form.subject.placeholder"))
|
||||
.max(20480, t("common.errmsg.string_max", { max: 20480 })),
|
||||
message: z
|
||||
.string()
|
||||
.min(1, t("workflow_node.notify.form.message.placeholder"))
|
||||
.max(20480, t("common.errmsg.string_max", { max: 20480 })),
|
||||
subject: z.string().nonempty(t("workflow_node.notify.form.subject.placeholder")),
|
||||
message: z.string().nonempty(t("workflow_node.notify.form.message.placeholder")),
|
||||
provider: z.string(t("workflow_node.notify.form.provider.placeholder")).nonempty(t("workflow_node.notify.form.provider.placeholder")),
|
||||
providerAccessId: z.string(t("workflow_node.notify.form.provider_access.placeholder")).nonempty(t("workflow_node.notify.form.provider_access.placeholder")),
|
||||
providerConfig: z.any().nullish(),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useMemo } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type AnchorProps, Form, type FormInstance, Input, Radio } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
@@ -33,7 +33,7 @@ const BizUploadNodeConfigForm = ({ node, ...props }: BizUploadNodeConfigFormProp
|
||||
const { i18n, t } = useTranslation();
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForBizUpload | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForBizUpload | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n });
|
||||
@@ -197,8 +197,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
return z
|
||||
.object({
|
||||
source: z.enum([UPLOAD_SOURCE_FORM, UPLOAD_SOURCE_LOCAL, UPLOAD_SOURCE_URL], t("workflow_node.upload.form.source.placeholder")),
|
||||
certificate: z.string().max(20480, t("common.errmsg.string_max", { max: 20480 })),
|
||||
privateKey: z.string().max(20480, t("common.errmsg.string_max", { max: 20480 })),
|
||||
certificate: z.string().nonempty(),
|
||||
privateKey: z.string().nonempty(),
|
||||
domains: z.string().nullish(),
|
||||
})
|
||||
.superRefine((values, ctx) => {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { IconCircleMinus, IconCirclePlus } from "@tabler/icons-react";
|
||||
import { useControllableValue } from "ahooks";
|
||||
import { Button, Form, Input, Radio, Select, theme } from "antd";
|
||||
@@ -171,7 +170,7 @@ const BranchBlockNodeConfigExprInputBox = forwardRef<BranchBlockNodeConfigExprIn
|
||||
return getAllPreviousNodes(node)
|
||||
.filter((node) => node.flowNodeType === NodeType.BizApply || node.flowNodeType === NodeType.BizUpload || node.flowNodeType === NodeType.BizMonitor)
|
||||
.map((node) => {
|
||||
const form = getNodeForm(node);
|
||||
const form = node.form;
|
||||
const group = {
|
||||
data: {
|
||||
name: form?.getValueIn("name"),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useMemo, useRef } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type AnchorProps, Form, type FormInstance } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
@@ -35,7 +35,7 @@ const BranchBlockNodeConfigForm = ({ node, ...props }: BranchBlockNodeConfigForm
|
||||
const { i18n, t } = useTranslation();
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForBranchBlock | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForBranchBlock | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n }).superRefine(async (values, ctx) => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useMemo } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type AnchorProps, Form, type FormInstance, InputNumber } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
import { z } from "zod";
|
||||
@@ -24,7 +24,7 @@ const DelayNodeConfigForm = ({ node, ...props }: DelayNodeConfigFormProps) => {
|
||||
const { i18n, t } = useTranslation();
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForDelay | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForDelay | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n });
|
||||
@@ -74,13 +74,10 @@ const getSchema = ({ i18n = getI18n() }: { i18n?: ReturnType<typeof getI18n> })
|
||||
const { t } = i18n;
|
||||
|
||||
return z.object({
|
||||
wait: z.preprocess(
|
||||
(v) => Number(v),
|
||||
z
|
||||
.number(t("workflow_node.delay.form.wait.placeholder"))
|
||||
.int(t("workflow_node.delay.form.wait.placeholder"))
|
||||
.gte(1, t("workflow_node.delay.form.wait.placeholder"))
|
||||
),
|
||||
wait: z.coerce
|
||||
.number(t("workflow_node.delay.form.wait.placeholder"))
|
||||
.int(t("workflow_node.delay.form.wait.placeholder"))
|
||||
.positive(t("workflow_node.delay.form.wait.placeholder")),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { getI18n, useTranslation } from "react-i18next";
|
||||
import { type FlowNodeEntity, getNodeForm } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { type FlowNodeEntity } from "@flowgram.ai/fixed-layout-editor";
|
||||
import { IconDice6 } from "@tabler/icons-react";
|
||||
import { type AnchorProps, Button, Form, type FormInstance, Input, Radio, Space } from "antd";
|
||||
import { createSchemaFieldRule } from "antd-zod";
|
||||
@@ -29,7 +29,7 @@ const StartNodeConfigForm = ({ node, ...props }: StartNodeConfigFormProps) => {
|
||||
const { i18n, t } = useTranslation();
|
||||
|
||||
const initialValues = useMemo(() => {
|
||||
return getNodeForm(node)?.getValueIn("config") as WorkflowNodeConfigForStart | undefined;
|
||||
return node.form?.getValueIn("config") as WorkflowNodeConfigForStart | undefined;
|
||||
}, [node]);
|
||||
|
||||
const formSchema = getSchema({ i18n });
|
||||
|
||||
@@ -31,6 +31,7 @@ export const BizApplyNodeRegistry: NodeRegistry = {
|
||||
["config"]: ({ value }) => {
|
||||
const res = BizApplyNodeConfigForm.getSchema({}).safeParse(value);
|
||||
if (!res.success) {
|
||||
console.log(res);
|
||||
return {
|
||||
message: res.error.message,
|
||||
level: FeedbackLevel.Error,
|
||||
|
||||
@@ -57,6 +57,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
|
||||
GOEDGE: "goedge",
|
||||
GOOGLETRUSTSERVICES: "googletrustservices",
|
||||
HETZNER: "hetzner",
|
||||
HOSTINGDE: "hostingDE",
|
||||
HOSTINGER: "hostinger",
|
||||
HUAWEICLOUD: "huaweicloud",
|
||||
IONOS: "ionos",
|
||||
@@ -182,6 +183,7 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
|
||||
[ACCESS_PROVIDERS.GNAME, "provider.gname", "/imgs/providers/gname.png", [ACCESS_USAGES.DNS]],
|
||||
[ACCESS_PROVIDERS.GODADDY, "provider.godaddy", "/imgs/providers/godaddy.svg", [ACCESS_USAGES.DNS]],
|
||||
[ACCESS_PROVIDERS.HETZNER, "provider.hetzner", "/imgs/providers/hetzner.svg", [ACCESS_USAGES.DNS]],
|
||||
[ACCESS_PROVIDERS.HOSTINGDE, "provider.hostingde", "/imgs/providers/hostingde.svg", [ACCESS_USAGES.DNS]],
|
||||
[ACCESS_PROVIDERS.HOSTINGER, "provider.hostinger", "/imgs/providers/hostinger.svg", [ACCESS_USAGES.DNS]],
|
||||
[ACCESS_PROVIDERS.IONOS, "provider.ionos", "/imgs/providers/ionos.svg", [ACCESS_USAGES.DNS]],
|
||||
[ACCESS_PROVIDERS.LINODE, "provider.linode", "/imgs/providers/linode.svg", [ACCESS_USAGES.DNS]],
|
||||
@@ -321,6 +323,7 @@ export const ACME_DNS01_PROVIDERS = Object.freeze({
|
||||
GNAME: `${ACCESS_PROVIDERS.GNAME}`,
|
||||
GODADDY: `${ACCESS_PROVIDERS.GODADDY}`,
|
||||
HETZNER: `${ACCESS_PROVIDERS.HETZNER}`,
|
||||
HOSTINGDE: `${ACCESS_PROVIDERS.HOSTINGDE}`,
|
||||
HOSTINGER: `${ACCESS_PROVIDERS.HOSTINGER}`,
|
||||
HUAWEICLOUD: `${ACCESS_PROVIDERS.HUAWEICLOUD}`, // 兼容旧值,等同于 `HUAWEICLOUD_DNS`
|
||||
HUAWEICLOUD_DNS: `${ACCESS_PROVIDERS.HUAWEICLOUD}-dns`,
|
||||
@@ -387,6 +390,7 @@ export const acmeDns01ProvidersMap: Map<ACMEDns01Provider["type"] | string, ACME
|
||||
[ACME_DNS01_PROVIDERS.GNAME, "provider.gname"],
|
||||
[ACME_DNS01_PROVIDERS.GODADDY, "provider.godaddy"],
|
||||
[ACME_DNS01_PROVIDERS.HETZNER, "provider.hetzner"],
|
||||
[ACME_DNS01_PROVIDERS.HOSTINGDE, "provider.hostingde"],
|
||||
[ACME_DNS01_PROVIDERS.HOSTINGER, "provider.hostinger"],
|
||||
[ACME_DNS01_PROVIDERS.IONOS, "provider.ionos"],
|
||||
[ACME_DNS01_PROVIDERS.LINODE, "provider.linode"],
|
||||
|
||||
@@ -296,6 +296,9 @@
|
||||
"access.form.hetzner_api_token.label": "Hetzner API token",
|
||||
"access.form.hetzner_api_token.placeholder": "Please enter Hetzner API token",
|
||||
"access.form.hetzner_api_token.tooltip": "For more information, see <a href=\"https://docs.hetzner.com/cloud/api/getting-started/generating-api-token\" target=\"_blank\">https://docs.hetzner.com/cloud/api/getting-started/generating-api-token</a>",
|
||||
"access.form.hostingde_api_key.label": "hosting.de API key",
|
||||
"access.form.hostingde_api_key.placeholder": "Please enter hosting.de API key",
|
||||
"access.form.hostingde_api_key.tooltip": "For more information, see <a href=\"https://www.hosting.de/api/#requests-and-authentication\" target=\"_blank\">https://www.hosting.de/api/#requests-and-authentication</a>",
|
||||
"access.form.hostinger_api_token.label": "Hostinger API token",
|
||||
"access.form.hostinger_api_token.placeholder": "Please enter Hostinger API token",
|
||||
"access.form.hostinger_api_token.tooltip": "For more information, see <a href=\"https://developers.hostinger.com/#description/authentication\" target=\"_blank\">https://developers.hostinger.com/#description/authentication</a>",
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
"provider.goedge": "GoEdge",
|
||||
"provider.googletrustservices": "Google Trust Services",
|
||||
"provider.hetzner": "Hetzner",
|
||||
"provider.hostingde": "hosting.de",
|
||||
"provider.hostinger": "Hostinger",
|
||||
"provider.huaweicloud": "Huawei Cloud",
|
||||
"provider.huaweicloud.cdn": "Huawei Cloud - CDN (Content Delivery Network)",
|
||||
|
||||
@@ -295,6 +295,9 @@
|
||||
"access.form.hetzner_api_token.label": "Hetzner API Token",
|
||||
"access.form.hetzner_api_token.placeholder": "请输入 Hetzner API Token",
|
||||
"access.form.hetzner_api_token.tooltip": "这是什么?请参阅 <a href=\"https://docs.hetzner.com/cloud/api/getting-started/generating-api-token\" target=\"_blank\">https://docs.hetzner.com/cloud/api/getting-started/generating-api-token</a>",
|
||||
"access.form.hostingde_api_key.label": "hosting.de API Key",
|
||||
"access.form.hostingde_api_key.placeholder": "请输入 hosting.de API Key",
|
||||
"access.form.hostingde_api_key.tooltip": "这是什么?请参阅 <a href=\"https://www.hosting.de/api/#requests-and-authentication\" target=\"_blank\">https://www.hosting.de/api/#requests-and-authentication</a>",
|
||||
"access.form.hostinger_api_token.label": "Hostinger API Token",
|
||||
"access.form.hostinger_api_token.placeholder": "请输入 Hostinger API Token",
|
||||
"access.form.hostinger_api_token.tooltip": "这是什么?请参阅 <a href=\"https://developers.hostinger.com/#description/authentication\" target=\"_blank\">https://developers.hostinger.com/#description/authentication</a>",
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
"provider.goedge": "GoEdge",
|
||||
"provider.googletrustservices": "Google Trust Services",
|
||||
"provider.hetzner": "Hetzner",
|
||||
"provider.hostingde": "hosting.de",
|
||||
"provider.hostinger": "Hostinger",
|
||||
"provider.huaweicloud": "华为云",
|
||||
"provider.huaweicloud.cdn": "华为云 - 内容分发网络 CDN",
|
||||
|
||||
@@ -206,14 +206,8 @@ const InternalSharedFormEabFields = ({ i18nKey }: { i18nKey: string }) => {
|
||||
|
||||
const formSchema = z.object({
|
||||
endpoint: z.url(t("common.errmsg.url_invalid")),
|
||||
eabKid: z
|
||||
.string(t("access.form.shared_acme_eab_kid.label"))
|
||||
.min(1, t("access.form.shared_acme_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabHmacKey: z
|
||||
.string(t("access.form.shared_acme_eab_hmac_key.label"))
|
||||
.min(1, t("access.form.shared_acme_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 })),
|
||||
eabKid: z.string(t("access.form.shared_acme_eab_kid.label")).nonempty(t("access.form.shared_acme_eab_kid.placeholder")),
|
||||
eabHmacKey: z.string(t("access.form.shared_acme_eab_hmac_key.label")).nonempty(t("access.form.shared_acme_eab_hmac_key.placeholder")),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
@@ -321,14 +315,8 @@ const InternalSettingsFormProviderACMECA = () => {
|
||||
|
||||
const formSchema = z.object({
|
||||
endpoint: z.url(t("common.errmsg.url_invalid")),
|
||||
eabKid: z
|
||||
.string(t("access.form.acmeca_eab_kid.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
eabHmacKey: z
|
||||
.string(t("access.form.acmeca_eab_hmac_key.placeholder"))
|
||||
.max(256, t("common.errmsg.string_max", { max: 256 }))
|
||||
.nullish(),
|
||||
eabKid: z.string(t("access.form.acmeca_eab_kid.placeholder")).nullish(),
|
||||
eabHmacKey: z.string(t("access.form.acmeca_eab_hmac_key.placeholder")).nullish(),
|
||||
});
|
||||
const formRule = createSchemaFieldRule(formSchema);
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ export const list = async (request: ListRequest) => {
|
||||
"keyAlgorithm",
|
||||
"validityNotBefore",
|
||||
"validityNotAfter",
|
||||
"validityInterval",
|
||||
"isRenewed",
|
||||
"isRevoked",
|
||||
"workflowRef",
|
||||
@@ -61,6 +62,26 @@ export const listByWorkflowRunId = async (workflowRunId: string) => {
|
||||
|
||||
const list = await pb.collection(COLLECTION_NAME_CERTIFICATE).getFullList<CertificateModel>({
|
||||
batch: 65535,
|
||||
fields: [
|
||||
"id",
|
||||
"source",
|
||||
"subjectAltNames",
|
||||
"serialNumber",
|
||||
"issuerOrg",
|
||||
"keyAlgorithm",
|
||||
"validityNotBefore",
|
||||
"validityNotAfter",
|
||||
"validityInterval",
|
||||
"isRenewed",
|
||||
"isRevoked",
|
||||
"workflowRef",
|
||||
"created",
|
||||
"updated",
|
||||
"deleted",
|
||||
"expand.workflowRef.id",
|
||||
"expand.workflowRef.name",
|
||||
"expand.workflowRef.description",
|
||||
].join(","),
|
||||
filter: pb.filter("workflowRunRef={:workflowRunId}", { workflowRunId }),
|
||||
sort: "created",
|
||||
requestKey: null,
|
||||
|
||||
Reference in New Issue
Block a user