feat: reserved providers

This commit is contained in:
Fu Diwei 2025-02-13 21:48:55 +08:00
parent 0b7b544d4e
commit d588e14a58
8 changed files with 205 additions and 7 deletions

View File

@ -9,19 +9,30 @@ type AccessProviderType string
NOTICE: If you add new constant, please keep ASCII order.
*/
const (
AccessProviderType1Panel = AccessProviderType("1panel") // 1Panel预留
AccessProviderTypeACMEHttpReq = AccessProviderType("acmehttpreq")
AccessProviderTypeAkamai = AccessProviderType("akamai") // Akamai预留
AccessProviderTypeAliyun = AccessProviderType("aliyun")
AccessProviderTypeAWS = AccessProviderType("aws")
AccessProviderTypeAzure = AccessProviderType("azure")
AccessProviderTypeBaiduCloud = AccessProviderType("baiducloud")
AccessProviderTypeBaishan = AccessProviderType("baishan") // 白山云(预留)
AccessProviderTypeBaotaPanel = AccessProviderType("baotapanel")
AccessProviderTypeBytePlus = AccessProviderType("byteplus")
AccessProviderTypeCacheFly = AccessProviderType("cachefly") // CacheFly预留
AccessProviderTypeCdnfly = AccessProviderType("cdnfly") // Cdnly预留
AccessProviderTypeCloudflare = AccessProviderType("cloudflare")
AccessProviderTypeClouDNS = AccessProviderType("cloudns")
AccessProviderTypeCMCCCloud = AccessProviderType("cmcccloud") // 移动云(预留)
AccessProviderTypeCTCCCloud = AccessProviderType("ctcccloud") // 联通云(预留)
AccessProviderTypeCUCCCloud = AccessProviderType("cucccloud") // 天翼云(预留)
AccessProviderTypeDogeCloud = AccessProviderType("dogecloud")
AccessProviderTypeEdgio = AccessProviderType("edgio")
AccessProviderTypeFastly = AccessProviderType("fastly") // Fastly预留
AccessProviderTypeGname = AccessProviderType("gname")
AccessProviderTypeGcore = AccessProviderType("gcore") // Gcore预留
AccessProviderTypeGoDaddy = AccessProviderType("godaddy")
AccessProviderTypeGoEdge = AccessProviderType("goedge") // GoEdge预留
AccessProviderTypeHuaweiCloud = AccessProviderType("huaweicloud")
AccessProviderTypeKubernetes = AccessProviderType("k8s")
AccessProviderTypeLocal = AccessProviderType("local")
@ -31,6 +42,7 @@ const (
AccessProviderTypePowerDNS = AccessProviderType("powerdns")
AccessProviderTypeQiniu = AccessProviderType("qiniu")
AccessProviderTypeRainYun = AccessProviderType("rainyun")
AccessProviderTypeSafeLine = AccessProviderType("safeline") // 雷池(预留)
AccessProviderTypeSSH = AccessProviderType("ssh")
AccessProviderTypeTencentCloud = AccessProviderType("tencentcloud")
AccessProviderTypeUCloud = AccessProviderType("ucloud")

View File

@ -0,0 +1,161 @@
package migrations
import (
"encoding/json"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
func init() {
m.Register(func(app core.App) error {
collection, err := app.FindCollectionByNameOrId("4yzbv8urny5ja1e")
if err != nil {
return err
}
// update collection data
if err := json.Unmarshal([]byte(`{
"indexes": [
"CREATE INDEX `+"`"+`idx_wkoST0j`+"`"+` ON `+"`"+`access`+"`"+` (`+"`"+`name`+"`"+`)",
"CREATE INDEX `+"`"+`idx_frh0JT1Aqx`+"`"+` ON `+"`"+`access`+"`"+` (`+"`"+`provider`+"`"+`)"
]
}`), &collection); err != nil {
return err
}
// update field
if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{
"hidden": false,
"id": "hwy7m03o",
"maxSelect": 1,
"name": "provider",
"presentable": false,
"required": false,
"system": false,
"type": "select",
"values": [
"1panel",
"acmehttpreq",
"akamai",
"aliyun",
"aws",
"azure",
"baiducloud",
"baishan",
"baotapanel",
"byteplus",
"cachefly",
"cdnfly",
"cloudflare",
"cloudns",
"cmcccloud",
"ctcccloud",
"cucccloud",
"dogecloud",
"edgio",
"fastly",
"gname",
"gcore",
"godaddy",
"goedge",
"huaweicloud",
"k8s",
"local",
"namedotcom",
"namesilo",
"ns1",
"powerdns",
"qiniu",
"rainyun",
"safeline",
"ssh",
"tencentcloud",
"ucloud",
"volcengine",
"webhook",
"westcn"
]
}`)); err != nil {
return err
}
// remove field
collection.Fields.RemoveById("hsxcnlvd")
return app.Save(collection)
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId("4yzbv8urny5ja1e")
if err != nil {
return err
}
// update collection data
if err := json.Unmarshal([]byte(`{
"indexes": [
"CREATE INDEX `+"`"+`idx_wkoST0j`+"`"+` ON `+"`"+`access`+"`"+` (`+"`"+`name`+"`"+`)"
]
}`), &collection); err != nil {
return err
}
// update field
if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{
"hidden": false,
"id": "hwy7m03o",
"maxSelect": 1,
"name": "provider",
"presentable": false,
"required": false,
"system": false,
"type": "select",
"values": [
"acmehttpreq",
"aliyun",
"aws",
"azure",
"baiducloud",
"baotapanel",
"byteplus",
"cloudflare",
"dogecloud",
"godaddy",
"huaweicloud",
"k8s",
"local",
"namedotcom",
"namesilo",
"powerdns",
"qiniu",
"ssh",
"tencentcloud",
"ucloud",
"volcengine",
"webhook"
]
}`)); err != nil {
return err
}
// add field
if err := collection.Fields.AddMarshaledJSONAt(4, []byte(`{
"hidden": false,
"id": "hsxcnlvd",
"maxSelect": 1,
"name": "usage",
"presentable": false,
"required": false,
"system": false,
"type": "select",
"values": [
"apply",
"deploy",
"all"
]
}`)); err != nil {
return err
}
return app.Save(collection)
})
}

View File

@ -4,7 +4,6 @@ import { useControllableValue } from "ahooks";
import { Modal, notification } from "antd";
import { type AccessModel } from "@/domain/access";
import { accessProvidersMap } from "@/domain/provider";
import { useTriggerElement, useZustandShallowSelector } from "@/hooks";
import { useAccessesStore } from "@/stores/access";
import { getErrMsg } from "@/utils/error";
@ -50,7 +49,6 @@ const AccessEditModal = ({ data, loading, trigger, preset, afterSubmit, ...props
try {
let values: AccessModel = formRef.current!.getFieldsValue();
values.usage = accessProvidersMap.get(values.provider)!.usage;
if (preset === "add") {
if (data?.id) {

View File

@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next";
import { Avatar, Card, Col, Empty, Flex, Input, type InputRef, Row, Tabs, Tooltip, Typography } from "antd";
import Show from "@/components/Show";
import { DEPLOY_CATEGORIES, type DeployProvider, deployProvidersMap } from "@/domain/provider";
import { DEPLOY_CATEGORIES, deployProvidersMap } from "@/domain/provider";
export type DeployProviderPickerProps = {
className?: string;

View File

@ -1,5 +1,3 @@
import { type AccessUsageType } from "./provider";
export interface AccessModel extends BaseModel {
name: string;
provider: string;
@ -36,7 +34,6 @@ export interface AccessModel extends BaseModel {
| AccessConfigForWebhook
| AccessConfigForWestcn
);
usage: AccessUsageType;
}
// #region AccessConfig

View File

@ -1,4 +1,5 @@
{
"provider.1panel": "1Panel",
"provider.acmehttpreq": "Http Request (ACME Proxy)",
"provider.aliyun": "Alibaba Cloud",
"provider.aliyun.alb": "Alibaba Cloud - ALB (Application Load Balancer)",
@ -12,6 +13,8 @@
"provider.aliyun.nlb": "Alibaba Cloud - NLB (Network Load Balancer)",
"provider.aliyun.oss": "Alibaba Cloud - OSS (Object Storage Service)",
"provider.aliyun.waf": "Alibaba Cloud - WAF (Web Application Firewall)",
"provider.akamai": "Akamai",
"provider.akamai.cdn": "Akamai - CDN (Content Delivery Network)",
"provider.aws": "AWS",
"provider.aws.cloudfront": "AWS - CloudFront",
"provider.aws.route53": "AWS - Route53",
@ -19,18 +22,29 @@
"provider.azure.dns": "Azure - DNS",
"provider.baiducloud": "Baidu Cloud",
"provider.baiducloud.cdn": "Baidu Cloud - CDN (Content Delivery Network)",
"provider.baishan": "Baishan",
"provider.baishan.cdn": "Baishan - CDN (Content Delivery Network)",
"provider.baotapanel": "BaoTa Panel",
"provider.baotapanel.site": "BaoTa Panel - Site",
"provider.byteplus": "BytePlus",
"provider.byteplus.cdn": "BytePlus - CDN (Content Delivery Network)",
"provider.cachefly": "Cachefly",
"provider.cdnfly": "Cdnfly",
"provider.cloudflare": "Cloudflare",
"provider.cloudns": "ClouDNS",
"provider.cmcccloud": "China Mobile Cloud (ECloud)",
"provider.ctcccloud": "China Telecom Cloud (State Cloud)",
"provider.cucccloud": "China Unicom Cloud",
"provider.dogecloud": "Doge Cloud",
"provider.dogecloud.cdn": "Doge Cloud - CDN (Content Delivery Network)",
"provider.edgio": "Edgio",
"provider.edgio.applications": "Edgio - Applications",
"provider.fastly": "Fastly",
"provider.gcore": "Gcore",
"provider.gname": "GNAME",
"provider.godaddy": "GoDaddy",
"provider.goedge": "GoEdge",
"provider.goedge.cdn": "GoEdge - CDN (Content Delivery Network)",
"provider.huaweicloud": "Huawei Cloud",
"provider.huaweicloud.cdn": "Huawei Cloud - CDN (Content Delivery Network)",
"provider.huaweicloud.dns": "Huawei Cloud - DNS (Domain Name Service)",
@ -46,6 +60,7 @@
"provider.qiniu.cdn": "Qiniu - CDN (Content Delivery Network)",
"provider.qiniu.pili": "Qiniu - Pili",
"provider.rainyun": "Rain Yun",
"provider.safeline": "SafeLine",
"provider.ssh": "SSH deployment",
"provider.tencentcloud": "Tencent Cloud",
"provider.tencentcloud.cdn": "Tencent Cloud - CDN (Content Delivery Network)",

View File

@ -1,4 +1,5 @@
{
"provider.1panel": "1Panel",
"provider.acmehttpreq": "Http Request (ACME Proxy)",
"provider.aliyun": "阿里云",
"provider.aliyun.alb": "阿里云 - 应用型负载均衡 ALB",
@ -12,6 +13,8 @@
"provider.aliyun.nlb": "阿里云 - 网络型负载均衡 NLB",
"provider.aliyun.oss": "阿里云 - 对象存储 OSS",
"provider.aliyun.waf": "阿里云 - Web 应用防火墙 WAF",
"provider.akamai": "Akamai",
"provider.akamai.cdn": "Akamai - 内容分发网络 CDN",
"provider.aws": "AWS",
"provider.aws.cloudfront": "AWS - CloudFront",
"provider.aws.route53": "AWS - Route53",
@ -19,18 +22,29 @@
"provider.azure.dns": "Azure - DNS",
"provider.baiducloud": "百度智能云",
"provider.baiducloud.cdn": "百度智能云 - 内容分发网络 CDN",
"provider.baishan": "白山云",
"provider.baishan.cdn": "白山云 - 内容分发网络 CDN",
"provider.baotapanel": "宝塔面板",
"provider.baotapanel.site": "宝塔面板 - 网站",
"provider.byteplus": "BytePlus",
"provider.byteplus.cdn": "BytePlus - 内容分发网络 CDN",
"provider.cachefly": "Cachefly",
"provider.cdnfly": "Cdnfly",
"provider.cloudflare": "Cloudflare",
"provider.cloudns": "ClouDNS",
"provider.cmcccloud": "移动云",
"provider.ctcccloud": "联通云",
"provider.cucccloud": "天翼云",
"provider.dogecloud": "多吉云",
"provider.dogecloud.cdn": "多吉云 - 内容分发网络 CDN",
"provider.edgio": "Edgio",
"provider.edgio.applications": "Edgio - Applications",
"provider.fastly": "Fastly",
"provider.gcore": "Gcore",
"provider.gname": "GNAME",
"provider.godaddy": "GoDaddy",
"provider.goedge": "GoEdge",
"provider.goedge.cdn": "GoEdge - 内容分发网络 CDN",
"provider.huaweicloud": "华为云",
"provider.huaweicloud.cdn": "华为云 - 内容分发网络 CDN",
"provider.huaweicloud.dns": "华为云 - 云解析 DNS",
@ -46,6 +60,7 @@
"provider.qiniu.cdn": "七牛云 - 内容分发网络 CDN",
"provider.qiniu.pili": "七牛云 - 视频直播 Pili",
"provider.rainyun": "雨云",
"provider.safeline": "雷池",
"provider.ssh": "SSH 部署",
"provider.tencentcloud": "腾讯云",
"provider.tencentcloud.cdn": "腾讯云 - 内容分发网络 CDN",

View File

@ -3,7 +3,7 @@
"workflow_run.action.cancel": "取消执行",
"workflow_run.action.cancel.confirm": "确定要取消此执行吗?请注意此操作仅中止流程,但不会回滚已执行的节点。",
"workflow_run.action.delete": "删除执行",
"workflow_run.action.delete.confirm": "确定要删除此执行吗?请注意此操作仅清除日志历史,但不会影响各节点的执行结果和签发的证书。",
"workflow_run.action.delete.confirm": "确定要删除此执行吗?请注意此操作仅清除日志历史,但不会影响签发的证书。",
"workflow_run.props.id": "ID",
"workflow_run.props.status": "状态",