refactor: clean code

This commit is contained in:
Fu Diwei
2025-04-24 23:14:17 +08:00
parent 794695c313
commit a117fd7d93
19 changed files with 175 additions and 107 deletions

View File

@@ -26,6 +26,7 @@ export interface AccessModel extends BaseModel {
| AccessConfigForDogeCloud
| AccessConfigForDynv6
| AccessConfigForEdgio
| AccessConfigForEmail
| AccessConfigForGcore
| AccessConfigForGname
| AccessConfigForGoDaddy
@@ -33,6 +34,7 @@ export interface AccessModel extends BaseModel {
| AccessConfigForHuaweiCloud
| AccessConfigForJDCloud
| AccessConfigForKubernetes
| AccessConfigForMattermost
| AccessConfigForNamecheap
| AccessConfigForNameDotCom
| AccessConfigForNameSilo
@@ -43,6 +45,7 @@ export interface AccessModel extends BaseModel {
| AccessConfigForSafeLine
| AccessConfigForSSH
| AccessConfigForSSLCom
| AccessConfigForTelegram
| AccessConfigForTencentCloud
| AccessConfigForUCloud
| AccessConfigForUpyun
@@ -158,6 +161,16 @@ export type AccessConfigForEdgio = {
clientSecret: string;
};
export type AccessConfigForEmail = {
smtpHost: string;
smtpPort: number;
smtpTls: boolean;
username: string;
password: string;
defaultSenderAddress?: string;
defaultReceiverAddress?: string;
};
export type AccessConfigForGcore = {
apiToken: string;
};
@@ -191,6 +204,13 @@ export type AccessConfigForKubernetes = {
kubeConfig?: string;
};
export type AccessConfigForMattermost = {
serverUrl: string;
username: string;
password: string;
defaultChannelId?: string;
};
export type AccessConfigForNamecheap = {
username: string;
apiKey: string;
@@ -248,6 +268,11 @@ export type AccessConfigForSSLCom = {
eabHmacKey: string;
};
export type AccessConfigForTelegram = {
botToken: string;
defaultChatId?: number;
};
export type AccessConfigForTencentCloud = {
secretId: string;
secretKey: string;

View File

@@ -25,6 +25,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
DOGECLOUD: "dogecloud",
DYNV6: "dynv6",
EDGIO: "edgio",
EMAIL: "email",
GCORE: "gcore",
GNAME: "gname",
GODADDY: "godaddy",
@@ -35,6 +36,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
LETSENCRYPT: "letsencrypt",
LETSENCRYPTSTAGING: "letsencryptstaging",
LOCAL: "local",
MATTERMOST: "mattermost",
NAMECHEAP: "namecheap",
NAMEDOTCOM: "namedotcom",
NAMESILO: "namesilo",
@@ -46,6 +48,7 @@ export const ACCESS_PROVIDERS = Object.freeze({
SAFELINE: "safeline",
SSH: "ssh",
SSLCOM: "sslcom",
TELEGRAM: "telegram",
TENCENTCLOUD: "tencentcloud",
UCLOUD: "ucloud",
UPYUN: "upyun",
@@ -137,6 +140,10 @@ export const accessProvidersMap: Map<AccessProvider["type"] | string, AccessProv
[ACCESS_PROVIDERS.GOOGLETRUSTSERVICES, "provider.googletrustservices", "/imgs/providers/google.svg", [ACCESS_USAGES.CA]],
[ACCESS_PROVIDERS.SSLCOM, "provider.sslcom", "/imgs/providers/sslcom.svg", [ACCESS_USAGES.CA]],
[ACCESS_PROVIDERS.ZEROSSL, "provider.zerossl", "/imgs/providers/zerossl.svg", [ACCESS_USAGES.CA]],
[ACCESS_PROVIDERS.EMAIL, "provider.email", "/imgs/providers/email.svg", [ACCESS_USAGES.NOTIFICATION]],
[ACCESS_PROVIDERS.MATTERMOST, "provider.mattermost", "/imgs/providers/mattermost.svg", [ACCESS_USAGES.NOTIFICATION]],
[ACCESS_PROVIDERS.TELEGRAM, "provider.telegram", "/imgs/providers/telegram.svg", [ACCESS_USAGES.NOTIFICATION]],
].map((e) => [
e[0] as string,
{
@@ -244,16 +251,16 @@ export const ACME_DNS01_PROVIDERS = Object.freeze({
WESTCN: `${ACCESS_PROVIDERS.WESTCN}`,
} as const);
export type AcmeDns01ProviderType = (typeof ACME_DNS01_PROVIDERS)[keyof typeof ACME_DNS01_PROVIDERS];
export type ACMEDns01ProviderType = (typeof ACME_DNS01_PROVIDERS)[keyof typeof ACME_DNS01_PROVIDERS];
export type AcmeDns01Provider = {
type: AcmeDns01ProviderType;
export type ACMEDns01Provider = {
type: ACMEDns01ProviderType;
name: string;
icon: string;
provider: AccessProviderType;
};
export const acmeDns01ProvidersMap: Map<AcmeDns01Provider["type"] | string, AcmeDns01Provider> = new Map(
export const acmeDns01ProvidersMap: Map<ACMEDns01Provider["type"] | string, ACMEDns01Provider> = new Map(
/*
注意:此处的顺序决定显示在前端的顺序。
NOTICE: The following order determines the order displayed at the frontend.
@@ -291,7 +298,7 @@ export const acmeDns01ProvidersMap: Map<AcmeDns01Provider["type"] | string, Acme
].map(([type, name]) => [
type,
{
type: type as AcmeDns01ProviderType,
type: type as ACMEDns01ProviderType,
name: name,
icon: accessProvidersMap.get(type.split("-")[0])!.icon,
provider: type.split("-")[0] as AccessProviderType,
@@ -507,6 +514,9 @@ export const deploymentProvidersMap: Map<DeploymentProvider["type"] | string, De
NOTICE: If you add new constant, please keep ASCII order.
*/
export const NOTIFICATION_PROVIDERS = Object.freeze({
EMAIL: `${ACCESS_PROVIDERS.EMAIL}`,
MATTERMOST: `${ACCESS_PROVIDERS.MATTERMOST}`,
TELEGRAM: `${ACCESS_PROVIDERS.TELEGRAM}`,
WEBHOOK: `${ACCESS_PROVIDERS.WEBHOOK}`,
} as const);
@@ -524,7 +534,7 @@ export const notificationProvidersMap: Map<NotificationProvider["type"] | string
注意:此处的顺序决定显示在前端的顺序。
NOTICE: The following order determines the order displayed at the frontend.
*/
[[NOTIFICATION_PROVIDERS.WEBHOOK]].map(([type]) => [
[[NOTIFICATION_PROVIDERS.EMAIL], [NOTIFICATION_PROVIDERS.WEBHOOK], [NOTIFICATION_PROVIDERS.MATTERMOST], [NOTIFICATION_PROVIDERS.TELEGRAM]].map(([type]) => [
type,
{
type: type as CAProviderType,