mirror of
https://github.com/certd/certd.git
synced 2026-04-28 07:57:25 +08:00
Compare commits
4 Commits
v1.38.12
...
0c25d277ef
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c25d277ef | |||
| 27b0348e1d | |||
| ea5aa68769 | |||
| 99fefb168a |
@@ -3,6 +3,12 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [1.38.12](https://github.com/certd/certd/compare/v1.38.11...v1.38.12) (2026-02-18)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* 修复获取群辉deviceid报错的bug ([39d3bf9](https://github.com/certd/certd/commit/39d3bf97d1935918bac575da9d0726310c83c19d))
|
||||||
|
|
||||||
## [1.38.11](https://github.com/certd/certd/compare/v1.38.10...v1.38.11) (2026-02-16)
|
## [1.38.11](https://github.com/certd/certd/compare/v1.38.10...v1.38.11) (2026-02-16)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@@ -70,5 +70,5 @@
|
|||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/publishlab/node-acme-client/issues"
|
"url": "https://github.com/publishlab/node-acme-client/issues"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,5 +47,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,5 +45,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,5 +24,5 @@
|
|||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"tslib": "^2.8.1"
|
"tslib": "^2.8.1"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,5 +31,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,5 +56,5 @@
|
|||||||
"fetch"
|
"fetch"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,5 +32,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,5 +64,5 @@
|
|||||||
"typeorm": "^0.3.11",
|
"typeorm": "^0.3.11",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,5 +46,5 @@
|
|||||||
"typeorm": "^0.3.11",
|
"typeorm": "^0.3.11",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,5 +38,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,5 +57,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "1f002159e2a3c73fb5e00341a344effa07d6f653"
|
"gitHead": "49457505cdf8156fd9d936b8e9ace0b48e43a6b2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
//注意: @符号是保留字符,需要用{'@'}替换
|
||||||
export default {
|
export default {
|
||||||
app: {
|
app: {
|
||||||
crud: {
|
crud: {
|
||||||
@@ -266,77 +267,6 @@ export default {
|
|||||||
webhookEnabledHelper: "Support webhook trigger pipeline, please check webhook address in trigger source",
|
webhookEnabledHelper: "Support webhook trigger pipeline, please check webhook address in trigger source",
|
||||||
},
|
},
|
||||||
notificationDefault: "Use Default Notification",
|
notificationDefault: "Use Default Notification",
|
||||||
monitor: {
|
|
||||||
remark: "Remark",
|
|
||||||
title: "Site Certificate Monitoring",
|
|
||||||
description: "Check website certificates' expiration at 0:00 daily; reminders sent 10 days before expiration (using default notification channel);",
|
|
||||||
settingLink: "Site Monitoring Settings",
|
|
||||||
limitInfo: "Basic edition limited to 1, professional and above unlimited, current",
|
|
||||||
checkAll: "Check All",
|
|
||||||
confirmTitle: "Confirm",
|
|
||||||
confirmContent: "Confirm to trigger check for all site certificates?",
|
|
||||||
checkSubmitted: "Check task submitted",
|
|
||||||
pleaseRefresh: "Please refresh the page later to see the results",
|
|
||||||
siteName: "Site Name",
|
|
||||||
enterSiteName: "Please enter the site name",
|
|
||||||
domain: "Domain",
|
|
||||||
enterDomain: "Please enter the domain",
|
|
||||||
enterValidDomain: "Please enter a valid domain",
|
|
||||||
httpsPort: "HTTPS Port",
|
|
||||||
enterPort: "Please enter the port",
|
|
||||||
certInfo: "Certificate Info",
|
|
||||||
issuer: "Issuer",
|
|
||||||
certDomains: "Certificate Domains",
|
|
||||||
certProvider: "Issuer",
|
|
||||||
certStatus: "Certificate Status",
|
|
||||||
error: "Error",
|
|
||||||
status: {
|
|
||||||
ok: "Valid",
|
|
||||||
expired: "Expired",
|
|
||||||
},
|
|
||||||
certEffectiveTime: "Certificate Effective",
|
|
||||||
certExpiresTime: "Certificate Expiration",
|
|
||||||
remainingValidity: "Remaining Validity",
|
|
||||||
expired: "expired",
|
|
||||||
days: "days",
|
|
||||||
lastCheckTime: "Last Check Time",
|
|
||||||
disabled: "Enable/Disable",
|
|
||||||
ipCheck: "Enable IP Check",
|
|
||||||
ipCheckHelper: "Enable to check certificate expiration time on each IP (or source site domain) ",
|
|
||||||
ipSyncAuto: "Enable IP Sync Auto",
|
|
||||||
ipSyncMode: "IP Sync Mode",
|
|
||||||
ipIgnoreCoherence: "Ignore Certificate Coherence",
|
|
||||||
ipIgnoreCoherenceHelper: "Enable to ignore certificate coherence check, only check certificate expiration time",
|
|
||||||
selectRequired: "Please select",
|
|
||||||
ipCheckConfirm: "Are you sure to {status} IP check?",
|
|
||||||
ipCount: "IP Count",
|
|
||||||
checkStatus: "Check Status",
|
|
||||||
pipelineId: "Linked Pipeline ID",
|
|
||||||
certInfoId: "Certificate ID",
|
|
||||||
checkSubmittedRefresh: "Check task submitted. Please refresh later to view the result.",
|
|
||||||
ipManagement: "IP Management",
|
|
||||||
bulkImport: "Bulk Import",
|
|
||||||
basicLimitError: "Basic version allows only one monitoring site. Please upgrade to the Pro version.",
|
|
||||||
limitExceeded: "Sorry, you can only create up to {max} monitoring records. Please purchase or upgrade your plan.",
|
|
||||||
setting: {
|
|
||||||
siteMonitorSettings: "Site Monitor Settings",
|
|
||||||
notificationChannel: "Notification Channel",
|
|
||||||
setNotificationChannel: "Set the notification channel",
|
|
||||||
retryTimes: "Retry Times",
|
|
||||||
monitorRetryTimes: "Number of retry attempts for monitoring requests",
|
|
||||||
monitorCronSetting: "Monitoring Schedule",
|
|
||||||
cronTrigger: "Scheduled trigger for monitoring",
|
|
||||||
dnsServer: "DNS Server",
|
|
||||||
dnsServerHelper: "Use a custom domain name resolution server, such as: 1.1.1.1 , support multiple",
|
|
||||||
certValidDays: "Certificate Valid Days",
|
|
||||||
certValidDaysHelper: "Number of days before expiration to send a notification",
|
|
||||||
},
|
|
||||||
cert: {
|
|
||||||
expired: "Expired",
|
|
||||||
expiring: "Expiring",
|
|
||||||
noExpired: "Not Expired",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
checkStatus: {
|
checkStatus: {
|
||||||
success: "Success",
|
success: "Success",
|
||||||
checking: "Checking",
|
checking: "Checking",
|
||||||
@@ -690,7 +620,7 @@ export default {
|
|||||||
password: "Password",
|
password: "Password",
|
||||||
pleaseEnterPassword: "Please enter password",
|
pleaseEnterPassword: "Please enter password",
|
||||||
qqEmailAuthCodeHelper: "If using QQ email, get an authorization code in QQ email settings as the password",
|
qqEmailAuthCodeHelper: "If using QQ email, get an authorization code in QQ email settings as the password",
|
||||||
senderEmailHelper: "You can use the format: Name<Email> to set the sender name, e.g.: autossl<certd@example.com>",
|
senderEmailHelper: "You can use the format: Name<Email> to set the sender name, e.g.: autossl<certd{'@'}example.com>",
|
||||||
senderEmail: "Sender Email",
|
senderEmail: "Sender Email",
|
||||||
pleaseEnterSenderEmail: "Please enter sender email",
|
pleaseEnterSenderEmail: "Please enter sender email",
|
||||||
useSsl: "Use SSL",
|
useSsl: "Use SSL",
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ import preferences from "./preferences";
|
|||||||
import ui from "./ui";
|
import ui from "./ui";
|
||||||
import guide from "./guide";
|
import guide from "./guide";
|
||||||
import common from "./common";
|
import common from "./common";
|
||||||
|
import monitor from "./monitor";
|
||||||
|
//注意: @符号是保留字符,需要用{'@'}替换
|
||||||
export default {
|
export default {
|
||||||
certd,
|
certd,
|
||||||
authentication,
|
authentication,
|
||||||
@@ -16,4 +17,5 @@ export default {
|
|||||||
preferences,
|
preferences,
|
||||||
guide,
|
guide,
|
||||||
common,
|
common,
|
||||||
|
monitor,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
export default {
|
||||||
|
remark: "Remark",
|
||||||
|
title: "Site Certificate Monitoring",
|
||||||
|
description: "Check website certificates' expiration at 0:00 daily; reminders sent 10 days before expiration (using default notification channel);",
|
||||||
|
settingLink: "Site Monitoring Settings",
|
||||||
|
limitInfo: "Basic edition limited to 1, professional and above unlimited, current",
|
||||||
|
checkAll: "Check All",
|
||||||
|
confirmTitle: "Confirm",
|
||||||
|
confirmContent: "Confirm to trigger check for all site certificates?",
|
||||||
|
checkSubmitted: "Check task submitted",
|
||||||
|
pleaseRefresh: "Please refresh the page later to see the results",
|
||||||
|
siteName: "Site Name",
|
||||||
|
enterSiteName: "Please enter the site name",
|
||||||
|
domain: "Domain",
|
||||||
|
enterDomain: "Please enter the domain",
|
||||||
|
enterValidDomain: "Please enter a valid domain",
|
||||||
|
httpsPort: "HTTPS Port",
|
||||||
|
enterPort: "Please enter the port",
|
||||||
|
certInfo: "Certificate Info",
|
||||||
|
issuer: "Issuer",
|
||||||
|
certDomains: "Certificate Domains",
|
||||||
|
certProvider: "Issuer",
|
||||||
|
certStatus: "Certificate Status",
|
||||||
|
error: "Error",
|
||||||
|
status: {
|
||||||
|
ok: "Valid",
|
||||||
|
expired: "Expired",
|
||||||
|
},
|
||||||
|
certEffectiveTime: "Certificate Effective",
|
||||||
|
certExpiresTime: "Certificate Expiration",
|
||||||
|
remainingValidity: "Remaining Validity",
|
||||||
|
expired: "expired",
|
||||||
|
days: "days",
|
||||||
|
lastCheckTime: "Last Check Time",
|
||||||
|
disabled: "Enable/Disable",
|
||||||
|
ipCheck: "Enable IP Check",
|
||||||
|
ipCheckHelper: "Enable to check certificate expiration time on each IP (or source site domain) ",
|
||||||
|
ipSyncAuto: "Enable IP Sync Auto",
|
||||||
|
ipSyncMode: "IP Sync Mode",
|
||||||
|
ipIgnoreCoherence: "Ignore Certificate Coherence",
|
||||||
|
ipIgnoreCoherenceHelper: "Enable to ignore certificate coherence check, only check certificate expiration time",
|
||||||
|
selectRequired: "Please select",
|
||||||
|
ipCheckConfirm: "Are you sure to {status} IP check?",
|
||||||
|
ipCount: "IP Count",
|
||||||
|
checkStatus: "Check Status",
|
||||||
|
pipelineId: "Linked Pipeline ID",
|
||||||
|
certInfoId: "Certificate ID",
|
||||||
|
checkSubmittedRefresh: "Check task submitted. Please refresh later to view the result.",
|
||||||
|
ipManagement: "IP Management",
|
||||||
|
bulkImport: "Bulk Import",
|
||||||
|
basicLimitError: "Basic version allows only one monitoring site. Please upgrade to the Pro version.",
|
||||||
|
limitExceeded: "Sorry, you can only create up to {max} monitoring records. Please purchase or upgrade your plan.",
|
||||||
|
setting: {
|
||||||
|
siteMonitorSettings: "Site Monitor Settings",
|
||||||
|
notificationChannel: "Notification Channel",
|
||||||
|
setNotificationChannel: "Set the notification channel",
|
||||||
|
retryTimes: "Retry Times",
|
||||||
|
monitorRetryTimes: "Number of retry attempts for monitoring requests",
|
||||||
|
monitorCronSetting: "Monitoring Schedule",
|
||||||
|
cronTrigger: "Scheduled trigger for monitoring",
|
||||||
|
dnsServer: "DNS Server",
|
||||||
|
dnsServerHelper: "Use a custom domain name resolution server, such as: 1.1.1.1 , support multiple",
|
||||||
|
certValidDays: "Certificate Valid Days",
|
||||||
|
certValidDaysHelper: "Number of days before expiration to send a notification",
|
||||||
|
},
|
||||||
|
cert: {
|
||||||
|
expired: "Expired",
|
||||||
|
expiring: "Expiring",
|
||||||
|
noExpired: "Not Expired",
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
//注意: @符号是保留字符,需要用{'@'}替换
|
||||||
export default {
|
export default {
|
||||||
app: {
|
app: {
|
||||||
crud: {
|
crud: {
|
||||||
@@ -269,82 +270,6 @@ export default {
|
|||||||
webhookEnabledHelper: "支持webhook触发流水线,请在触发源中查看webhook地址",
|
webhookEnabledHelper: "支持webhook触发流水线,请在触发源中查看webhook地址",
|
||||||
},
|
},
|
||||||
notificationDefault: "使用默认通知",
|
notificationDefault: "使用默认通知",
|
||||||
monitor: {
|
|
||||||
remark: "备注",
|
|
||||||
title: "站点证书监控",
|
|
||||||
description: "每天0点,检查网站证书的过期时间,到期前10天时将发出提醒(使用默认通知渠道);",
|
|
||||||
settingLink: "站点监控设置",
|
|
||||||
limitInfo: "基础版限制1条,专业版以上无限制,当前",
|
|
||||||
checkAll: "检查全部",
|
|
||||||
confirmTitle: "确认",
|
|
||||||
confirmContent: "确认触发检查全部站点证书吗?",
|
|
||||||
checkSubmitted: "检查任务已提交",
|
|
||||||
pleaseRefresh: "请稍后刷新页面查看结果",
|
|
||||||
siteName: "站点名称",
|
|
||||||
enterSiteName: "请输入站点名称",
|
|
||||||
domain: "网站域名",
|
|
||||||
enterDomain: "请输入域名",
|
|
||||||
enterValidDomain: "请输入正确的域名",
|
|
||||||
httpsPort: "HTTPS端口",
|
|
||||||
enterPort: "请输入端口",
|
|
||||||
certInfo: "证书信息",
|
|
||||||
issuer: "证书颁发机构",
|
|
||||||
certDomains: "证书域名",
|
|
||||||
certProvider: "颁发机构",
|
|
||||||
certStatus: "证书状态",
|
|
||||||
error: "错误信息",
|
|
||||||
status: {
|
|
||||||
ok: "正常",
|
|
||||||
expired: "过期",
|
|
||||||
},
|
|
||||||
certEffectiveTime: "证书生效时间",
|
|
||||||
certExpiresTime: "证书到期时间",
|
|
||||||
remainingValidity: "到期剩余",
|
|
||||||
expired: "过期",
|
|
||||||
days: "天",
|
|
||||||
lastCheckTime: "上次检查时间",
|
|
||||||
disabled: "禁用启用",
|
|
||||||
ipCheck: "开启IP检查",
|
|
||||||
ipCheckHelper: "开启后,会检查IP(或源站)上的证书有效期",
|
|
||||||
ipSyncAuto: "自动同步IP",
|
|
||||||
ipSyncMode: "IP同步模式",
|
|
||||||
ipSyncModeHelper: "选择仅检查IPv4或IPv6,或检查所有IP",
|
|
||||||
ipSyncModeAll: "检查所有IP",
|
|
||||||
ipSyncModeIPV4Only: "仅检查IPv4",
|
|
||||||
ipSyncModeIPV6Only: "仅检查IPv6",
|
|
||||||
selectRequired: "请选择",
|
|
||||||
ipCheckConfirm: "确定{status}IP检查?",
|
|
||||||
ipCount: "IP数量",
|
|
||||||
ipIgnoreCoherence: "忽略证书一致性",
|
|
||||||
ipIgnoreCoherenceHelper: "开启后,即使IP上的证书与站点证书不一致,也会被认为是正常,仅校验证书过期时间",
|
|
||||||
checkStatus: "检查状态",
|
|
||||||
pipelineId: "关联流水线ID",
|
|
||||||
certInfoId: "证书ID",
|
|
||||||
checkSubmittedRefresh: "检查任务已提交,请稍后刷新查看结果",
|
|
||||||
ipManagement: "IP管理",
|
|
||||||
bulkImport: "批量导入",
|
|
||||||
basicLimitError: "基础版只能添加一个监控站点,请赞助升级专业版",
|
|
||||||
limitExceeded: "对不起,您最多只能创建条{max}监控记录,请购买或升级套餐",
|
|
||||||
setting: {
|
|
||||||
siteMonitorSettings: "站点监控设置",
|
|
||||||
notificationChannel: "通知渠道",
|
|
||||||
setNotificationChannel: "设置通知渠道",
|
|
||||||
retryTimes: "重试次数",
|
|
||||||
monitorRetryTimes: "监控请求重试次数",
|
|
||||||
monitorCronSetting: "监控定时设置",
|
|
||||||
cronTrigger: "定时触发监控",
|
|
||||||
dnsServer: "DNS服务器",
|
|
||||||
dnsServerHelper: "使用自定义的域名解析服务器,如:1.1.1.1 , 支持多个",
|
|
||||||
certValidDays: "证书到期前天数",
|
|
||||||
certValidDaysHelper: "证书到期前多少天发送通知",
|
|
||||||
},
|
|
||||||
|
|
||||||
cert: {
|
|
||||||
expired: "已过期",
|
|
||||||
expiring: "即将过期",
|
|
||||||
noExpired: "未过期",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
checkStatus: {
|
checkStatus: {
|
||||||
success: "成功",
|
success: "成功",
|
||||||
checking: "检查中",
|
checking: "检查中",
|
||||||
@@ -701,7 +626,7 @@ export default {
|
|||||||
password: "密码",
|
password: "密码",
|
||||||
pleaseEnterPassword: "请输入密码",
|
pleaseEnterPassword: "请输入密码",
|
||||||
qqEmailAuthCodeHelper: "如果是qq邮箱,需要到qq邮箱的设置里面申请授权码作为密码",
|
qqEmailAuthCodeHelper: "如果是qq邮箱,需要到qq邮箱的设置里面申请授权码作为密码",
|
||||||
senderEmailHelper: "您可以使用 名称<邮箱> 的格式,来修改发件人名称,例如: autossl<certd@example.com>",
|
senderEmailHelper: "您可以使用 名称<邮箱> 的格式,来修改发件人名称,例如: autossl<certd{'@'}example.com>",
|
||||||
senderEmail: "发件邮箱",
|
senderEmail: "发件邮箱",
|
||||||
pleaseEnterSenderEmail: "请输入发件邮箱",
|
pleaseEnterSenderEmail: "请输入发件邮箱",
|
||||||
useSsl: "是否ssl",
|
useSsl: "是否ssl",
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ import preferences from "./preferences";
|
|||||||
import ui from "./ui";
|
import ui from "./ui";
|
||||||
import guide from "./guide";
|
import guide from "./guide";
|
||||||
import common from "./common";
|
import common from "./common";
|
||||||
|
import monitor from "./monitor";
|
||||||
|
//注意: @符号是保留字符,需要用{'@'}替换
|
||||||
export default {
|
export default {
|
||||||
certd,
|
certd,
|
||||||
authentication,
|
authentication,
|
||||||
@@ -16,4 +17,5 @@ export default {
|
|||||||
preferences,
|
preferences,
|
||||||
guide,
|
guide,
|
||||||
common,
|
common,
|
||||||
|
monitor,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
export default {
|
||||||
|
remark: "备注",
|
||||||
|
title: "站点证书监控",
|
||||||
|
description: "每天0点,检查网站证书的过期时间,到期前10天时将发出提醒(使用默认通知渠道);",
|
||||||
|
settingLink: "站点监控设置",
|
||||||
|
limitInfo: "基础版限制1条,专业版以上无限制,当前",
|
||||||
|
checkAll: "检查全部",
|
||||||
|
confirmTitle: "确认",
|
||||||
|
confirmContent: "确认触发检查全部站点证书吗?",
|
||||||
|
checkSubmitted: "检查任务已提交",
|
||||||
|
pleaseRefresh: "请稍后刷新页面查看结果",
|
||||||
|
siteName: "站点名称",
|
||||||
|
enterSiteName: "请输入站点名称",
|
||||||
|
domain: "网站域名",
|
||||||
|
enterDomain: "请输入域名",
|
||||||
|
enterValidDomain: "请输入正确的域名",
|
||||||
|
httpsPort: "HTTPS端口",
|
||||||
|
enterPort: "请输入端口",
|
||||||
|
certInfo: "证书信息",
|
||||||
|
issuer: "证书颁发机构",
|
||||||
|
certDomains: "证书域名",
|
||||||
|
certProvider: "颁发机构",
|
||||||
|
certStatus: "证书状态",
|
||||||
|
error: "错误信息",
|
||||||
|
status: {
|
||||||
|
ok: "正常",
|
||||||
|
expired: "过期",
|
||||||
|
},
|
||||||
|
certEffectiveTime: "证书生效时间",
|
||||||
|
certExpiresTime: "证书到期时间",
|
||||||
|
remainingValidity: "到期剩余",
|
||||||
|
expired: "过期",
|
||||||
|
days: "天",
|
||||||
|
lastCheckTime: "上次检查时间",
|
||||||
|
disabled: "禁用启用",
|
||||||
|
ipCheck: "开启IP检查",
|
||||||
|
ipCheckHelper: "开启后,会检查IP(或源站)上的证书有效期",
|
||||||
|
ipSyncAuto: "自动同步IP",
|
||||||
|
ipSyncMode: "IP同步模式",
|
||||||
|
ipSyncModeHelper: "选择仅检查IPv4或IPv6,或检查所有IP",
|
||||||
|
ipSyncModeAll: "检查所有IP",
|
||||||
|
ipSyncModeIPV4Only: "仅检查IPv4",
|
||||||
|
ipSyncModeIPV6Only: "仅检查IPv6",
|
||||||
|
selectRequired: "请选择",
|
||||||
|
ipCheckConfirm: "确定{status}IP检查?",
|
||||||
|
ipCount: "IP数量",
|
||||||
|
ipIgnoreCoherence: "忽略证书一致性",
|
||||||
|
ipIgnoreCoherenceHelper: "开启后,即使IP上的证书与站点证书不一致,也会被认为是正常,仅校验证书过期时间",
|
||||||
|
checkStatus: "检查状态",
|
||||||
|
pipelineId: "关联流水线ID",
|
||||||
|
certInfoId: "证书ID",
|
||||||
|
checkSubmittedRefresh: "检查任务已提交,请稍后刷新查看结果",
|
||||||
|
ipManagement: "IP管理",
|
||||||
|
bulkImport: "批量导入",
|
||||||
|
basicLimitError: "基础版只能添加一个监控站点,请赞助升级专业版",
|
||||||
|
limitExceeded: "对不起,您最多只能创建条{max}监控记录,请购买或升级套餐",
|
||||||
|
setting: {
|
||||||
|
siteMonitorSettings: "站点监控设置",
|
||||||
|
notificationChannel: "通知渠道",
|
||||||
|
setNotificationChannel: "设置通知渠道",
|
||||||
|
retryTimes: "重试次数",
|
||||||
|
monitorRetryTimes: "监控请求重试次数",
|
||||||
|
monitorCronSetting: "监控定时设置",
|
||||||
|
cronTrigger: "定时触发监控",
|
||||||
|
dnsServer: "DNS服务器",
|
||||||
|
dnsServerHelper: "使用自定义的域名解析服务器,如:1.1.1.1 , 支持多个",
|
||||||
|
certValidDays: "证书到期前天数",
|
||||||
|
certValidDaysHelper: "证书到期前多少天发送通知",
|
||||||
|
},
|
||||||
|
cert: {
|
||||||
|
expired: "已过期",
|
||||||
|
expiring: "即将过期",
|
||||||
|
noExpired: "未过期",
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -227,9 +227,9 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
name: "fs-dict-select",
|
name: "fs-dict-select",
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: [
|
data: [
|
||||||
{ label: t("certd.monitor.cert.expired"), value: "expired" },
|
{ label: t("monitor.cert.expired"), value: "expired" },
|
||||||
{ label: t("certd.monitor.cert.expiring"), value: "expiring" },
|
{ label: t("monitor.cert.expiring"), value: "expiring" },
|
||||||
{ label: t("certd.monitor.cert.noExpired"), value: "noExpired" },
|
{ label: t("monitor.cert.noExpired"), value: "noExpired" },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -84,13 +84,13 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
|
|
||||||
function checkAll() {
|
function checkAll() {
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title: t("certd.monitor.confirmTitle"), // "确认"
|
title: t("monitor.confirmTitle"), // "确认"
|
||||||
content: t("certd.monitor.confirmContent"), // "确认触发检查全部站点证书吗?"
|
content: t("monitor.confirmContent"), // "确认触发检查全部站点证书吗?"
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
await siteInfoApi.CheckAll();
|
await siteInfoApi.CheckAll();
|
||||||
notification.success({
|
notification.success({
|
||||||
message: t("certd.monitor.checkSubmitted"), // "检查任务已提交"
|
message: t("monitor.checkSubmitted"), // "检查任务已提交"
|
||||||
description: t("certd.monitor.pleaseRefresh"), // "请稍后刷新页面查看结果"
|
description: t("monitor.pleaseRefresh"), // "请稍后刷新页面查看结果"
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -199,7 +199,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
// 非plus
|
// 非plus
|
||||||
if (crudBinding.value.data.length >= 1) {
|
if (crudBinding.value.data.length >= 1) {
|
||||||
notification.error({
|
notification.error({
|
||||||
message: t("certd.monitor.basicLimitError"),
|
message: t("monitor.basicLimitError"),
|
||||||
});
|
});
|
||||||
mitter.emit("openVipModal");
|
mitter.emit("openVipModal");
|
||||||
return;
|
return;
|
||||||
@@ -213,7 +213,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
const max = suiteDetail.monitorCount.max;
|
const max = suiteDetail.monitorCount.max;
|
||||||
if (max != -1 && max <= suiteDetail.monitorCount.used) {
|
if (max != -1 && max <= suiteDetail.monitorCount.used) {
|
||||||
notification.error({
|
notification.error({
|
||||||
message: t("certd.monitor.limitExceeded", { max }),
|
message: t("monitor.limitExceeded", { max }),
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -228,7 +228,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
//导入按钮
|
//导入按钮
|
||||||
import: {
|
import: {
|
||||||
show: true,
|
show: true,
|
||||||
text: t("certd.monitor.bulkImport"),
|
text: t("monitor.bulkImport"),
|
||||||
type: "primary",
|
type: "primary",
|
||||||
async click() {
|
async click() {
|
||||||
const defaultGroupId = getDefaultGroupId();
|
const defaultGroupId = getDefaultGroupId();
|
||||||
@@ -242,7 +242,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
checkAll: {
|
checkAll: {
|
||||||
show: true,
|
show: true,
|
||||||
text: t("certd.monitor.checkAll"),
|
text: t("monitor.checkAll"),
|
||||||
type: "primary",
|
type: "primary",
|
||||||
click() {
|
click() {
|
||||||
checkAll();
|
checkAll();
|
||||||
@@ -266,7 +266,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
await api.DoCheck(row.id);
|
await api.DoCheck(row.id);
|
||||||
await crudExpose.doRefresh();
|
await crudExpose.doRefresh();
|
||||||
notification.success({
|
notification.success({
|
||||||
message: t("certd.monitor.checkSubmittedRefresh"),
|
message: t("monitor.checkSubmittedRefresh"),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -276,7 +276,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
text: null,
|
text: null,
|
||||||
show: compute(({ row }) => row.ipCheck === true),
|
show: compute(({ row }) => row.ipCheck === true),
|
||||||
tooltip: {
|
tooltip: {
|
||||||
title: t("certd.monitor.ipManagement"),
|
title: t("monitor.ipManagement"),
|
||||||
},
|
},
|
||||||
icon: "entypo:address",
|
icon: "entypo:address",
|
||||||
click: async ({ row }) => {
|
click: async ({ row }) => {
|
||||||
@@ -306,29 +306,29 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
title: t("certd.monitor.siteName"),
|
title: t("monitor.siteName"),
|
||||||
search: {
|
search: {
|
||||||
show: true,
|
show: true,
|
||||||
},
|
},
|
||||||
type: "text",
|
type: "text",
|
||||||
form: {
|
form: {
|
||||||
rules: [{ required: true, message: t("certd.monitor.enterSiteName") }],
|
rules: [{ required: true, message: t("monitor.enterSiteName") }],
|
||||||
},
|
},
|
||||||
column: {
|
column: {
|
||||||
width: 160,
|
width: 160,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
domain: {
|
domain: {
|
||||||
title: t("certd.monitor.domain"),
|
title: t("monitor.domain"),
|
||||||
search: {
|
search: {
|
||||||
show: true,
|
show: true,
|
||||||
},
|
},
|
||||||
type: "text",
|
type: "text",
|
||||||
form: {
|
form: {
|
||||||
rules: [
|
rules: [
|
||||||
{ required: true, message: t("certd.monitor.enterDomain") },
|
{ required: true, message: t("monitor.enterDomain") },
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
{ type: "domains", message: t("certd.monitor.enterValidDomain") },
|
{ type: "domains", message: t("monitor.enterValidDomain") },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
column: {
|
column: {
|
||||||
@@ -349,14 +349,14 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
httpsPort: {
|
httpsPort: {
|
||||||
title: t("certd.monitor.httpsPort"),
|
title: t("monitor.httpsPort"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
type: "number",
|
type: "number",
|
||||||
form: {
|
form: {
|
||||||
value: 443,
|
value: 443,
|
||||||
rules: [{ required: true, message: t("certd.monitor.enterPort") }],
|
rules: [{ required: true, message: t("monitor.enterPort") }],
|
||||||
},
|
},
|
||||||
column: {
|
column: {
|
||||||
width: 100,
|
width: 100,
|
||||||
@@ -364,7 +364,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
certInfo: {
|
certInfo: {
|
||||||
title: t("certd.monitor.certInfo"),
|
title: t("monitor.certInfo"),
|
||||||
type: "text",
|
type: "text",
|
||||||
form: { show: false },
|
form: { show: false },
|
||||||
column: {
|
column: {
|
||||||
@@ -378,10 +378,10 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
{t("certd.monitor.issuer")}: {row.certProvider}
|
{t("monitor.issuer")}: {row.certProvider}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{t("certd.monitor.certDomains")}: {row.certDomains}
|
{t("monitor.certDomains")}: {row.certDomains}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -396,7 +396,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
certDomains: {
|
certDomains: {
|
||||||
title: t("certd.monitor.certDomains"),
|
title: t("monitor.certDomains"),
|
||||||
search: {
|
search: {
|
||||||
show: true,
|
show: true,
|
||||||
},
|
},
|
||||||
@@ -418,7 +418,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
certProvider: {
|
certProvider: {
|
||||||
title: t("certd.monitor.certProvider"),
|
title: t("monitor.certProvider"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -436,15 +436,15 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
certStatus: {
|
certStatus: {
|
||||||
title: t("certd.monitor.certStatus"),
|
title: t("monitor.certStatus"),
|
||||||
search: {
|
search: {
|
||||||
show: true,
|
show: true,
|
||||||
},
|
},
|
||||||
type: "dict-select",
|
type: "dict-select",
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: [
|
data: [
|
||||||
{ label: t("certd.monitor.status.ok"), value: "ok", color: "green" },
|
{ label: t("monitor.status.ok"), value: "ok", color: "green" },
|
||||||
{ label: t("certd.monitor.status.expired"), value: "expired", color: "red" },
|
{ label: t("monitor.status.expired"), value: "expired", color: "red" },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
form: {
|
form: {
|
||||||
@@ -458,7 +458,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
checkStatus: {
|
checkStatus: {
|
||||||
title: t("certd.monitor.checkStatus"),
|
title: t("monitor.checkStatus"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -481,7 +481,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
certEffectiveTime: {
|
certEffectiveTime: {
|
||||||
title: t("certd.monitor.certEffectiveTime"),
|
title: t("monitor.certEffectiveTime"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -496,7 +496,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
certExpiresTime: {
|
certExpiresTime: {
|
||||||
title: t("certd.monitor.certExpiresTime"),
|
title: t("monitor.certExpiresTime"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -510,7 +510,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
remainingValidity: {
|
remainingValidity: {
|
||||||
title: t("certd.monitor.remainingValidity"),
|
title: t("monitor.remainingValidity"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -543,7 +543,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
const color = leftDays < certValidDays ? "red" : "#389e0d";
|
const color = leftDays < certValidDays ? "red" : "#389e0d";
|
||||||
const percent = (leftDays / effectiveDays) * 100;
|
const percent = (leftDays / effectiveDays) * 100;
|
||||||
// console.log('cellRender', 'effectiveDays', effectiveDays, 'expiresTime', expiresTime, 'applyTime', applyTime, 'percent', percent, row)
|
// console.log('cellRender', 'effectiveDays', effectiveDays, 'expiresTime', expiresTime, 'applyTime', applyTime, 'percent', percent, row)
|
||||||
return <a-progress title={expireDate + t("certd.monitor.expired")} percent={percent} strokeColor={color} format={(percent: number) => `${leftDays}${t("certd.monitor.days")}`} />;
|
return <a-progress title={expireDate + t("monitor.expired")} percent={percent} strokeColor={color} format={(percent: number) => `${leftDays}${t("monitor.days")}`} />;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -574,7 +574,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
remark: {
|
remark: {
|
||||||
title: t("certd.monitor.remark"),
|
title: t("monitor.remark"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -589,7 +589,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
lastCheckTime: {
|
lastCheckTime: {
|
||||||
title: t("certd.monitor.lastCheckTime"),
|
title: t("monitor.lastCheckTime"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -603,7 +603,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
disabled: {
|
disabled: {
|
||||||
title: t("certd.monitor.disabled"),
|
title: t("monitor.disabled"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -652,7 +652,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
ipCheck: {
|
ipCheck: {
|
||||||
title: t("certd.monitor.ipCheck"),
|
title: t("monitor.ipCheck"),
|
||||||
type: "dict-switch",
|
type: "dict-switch",
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: [
|
data: [
|
||||||
@@ -661,9 +661,9 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
form: {
|
form: {
|
||||||
helper: t("certd.monitor.ipCheckHelper"),
|
helper: t("monitor.ipCheckHelper"),
|
||||||
value: false,
|
value: false,
|
||||||
rules: [{ required: true, message: t("certd.monitor.selectRequired") }],
|
rules: [{ required: true, message: t("monitor.selectRequired") }],
|
||||||
},
|
},
|
||||||
column: {
|
column: {
|
||||||
align: "center",
|
align: "center",
|
||||||
@@ -676,7 +676,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
change({ row, $event }) {
|
change({ row, $event }) {
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title: t("common.confirm"),
|
title: t("common.confirm"),
|
||||||
content: t("certd.monitor.ipCheckConfirm", { status: $event ? t("common.enabled") : t("common.disabled") }),
|
content: t("monitor.ipCheckConfirm", { status: $event ? t("common.enabled") : t("common.disabled") }),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
await api.IpCheckChange(row.id, $event);
|
await api.IpCheckChange(row.id, $event);
|
||||||
await crudExpose.doRefresh();
|
await crudExpose.doRefresh();
|
||||||
@@ -694,7 +694,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
} as ColumnCompositionProps,
|
} as ColumnCompositionProps,
|
||||||
ipSyncAuto: {
|
ipSyncAuto: {
|
||||||
title: t("certd.monitor.ipSyncAuto"),
|
title: t("monitor.ipSyncAuto"),
|
||||||
type: "dict-switch",
|
type: "dict-switch",
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: [
|
data: [
|
||||||
@@ -715,13 +715,13 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
ipSyncMode: {
|
ipSyncMode: {
|
||||||
title: t("certd.monitor.ipSyncMode"),
|
title: t("monitor.ipSyncMode"),
|
||||||
type: "dict-select",
|
type: "dict-select",
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: [
|
data: [
|
||||||
{ label: t("certd.monitor.ipSyncModeAll"), value: "all" },
|
{ label: t("monitor.ipSyncModeAll"), value: "all" },
|
||||||
{ label: t("certd.monitor.ipSyncModeIPV4Only"), value: "ipv4" },
|
{ label: t("monitor.ipSyncModeIPV4Only"), value: "ipv4" },
|
||||||
{ label: t("certd.monitor.ipSyncModeIPV6Only"), value: "ipv6" },
|
{ label: t("monitor.ipSyncModeIPV6Only"), value: "ipv6" },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
form: {
|
form: {
|
||||||
@@ -729,7 +729,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
show: compute(({ form }) => {
|
show: compute(({ form }) => {
|
||||||
return form.ipSyncAuto;
|
return form.ipSyncAuto;
|
||||||
}),
|
}),
|
||||||
helper: t("certd.monitor.ipSyncModeHelper"),
|
helper: t("monitor.ipSyncModeHelper"),
|
||||||
},
|
},
|
||||||
column: {
|
column: {
|
||||||
width: 100,
|
width: 100,
|
||||||
@@ -738,7 +738,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
ipIgnoreCoherence: {
|
ipIgnoreCoherence: {
|
||||||
title: t("certd.monitor.ipIgnoreCoherence"),
|
title: t("monitor.ipIgnoreCoherence"),
|
||||||
type: "dict-switch",
|
type: "dict-switch",
|
||||||
dict: dict({
|
dict: dict({
|
||||||
data: [
|
data: [
|
||||||
@@ -751,7 +751,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
show: compute(({ form }) => {
|
show: compute(({ form }) => {
|
||||||
return form.ipCheck;
|
return form.ipCheck;
|
||||||
}),
|
}),
|
||||||
helper: t("certd.monitor.ipIgnoreCoherenceHelper"),
|
helper: t("monitor.ipIgnoreCoherenceHelper"),
|
||||||
},
|
},
|
||||||
column: {
|
column: {
|
||||||
width: 100,
|
width: 100,
|
||||||
@@ -760,7 +760,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
pipelineId: {
|
pipelineId: {
|
||||||
title: t("certd.monitor.pipelineId"),
|
title: t("monitor.pipelineId"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -773,7 +773,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
certInfoId: {
|
certInfoId: {
|
||||||
title: t("certd.monitor.certInfoId"),
|
title: t("monitor.certInfoId"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
@@ -786,7 +786,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
error: {
|
error: {
|
||||||
title: t("certd.monitor.error"),
|
title: t("monitor.error"),
|
||||||
search: {
|
search: {
|
||||||
show: false,
|
show: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
<fs-page>
|
<fs-page>
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="title flex items-center">
|
<div class="title flex items-center">
|
||||||
{{ t("certd.monitor.title") }}
|
{{ t("monitor.title") }}
|
||||||
<div class="sub flex-1">
|
<div class="sub flex-1">
|
||||||
<div>
|
<div>
|
||||||
{{ t("certd.monitor.description") }}
|
{{ t("monitor.description") }}
|
||||||
<router-link to="/certd/monitor/setting">{{ t("certd.monitor.settingLink") }}</router-link>
|
<router-link to="/certd/monitor/setting">{{ t("monitor.settingLink") }}</router-link>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
{{ t("certd.monitor.limitInfo") }}
|
{{ t("monitor.limitInfo") }}
|
||||||
<vip-button class="ml-5" mode="nav"></vip-button>
|
<vip-button class="ml-5" mode="nav"></vip-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,40 +1,40 @@
|
|||||||
<template>
|
<template>
|
||||||
<fs-page class="page-user-settings page-site-monitor-setting">
|
<fs-page class="page-user-settings page-site-monitor-setting">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="title">{{ t("certd.monitor.setting.siteMonitorSettings") }}</div>
|
<div class="title">{{ t("monitor.setting.siteMonitorSettings") }}</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="user-settings-form settings-form">
|
<div class="user-settings-form settings-form">
|
||||||
<a-form :model="formState" name="basic" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }" autocomplete="off">
|
<a-form :model="formState" name="basic" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }" autocomplete="off">
|
||||||
<a-form-item :label="t('certd.monitor.setting.notificationChannel')" :name="['notificationId']">
|
<a-form-item :label="t('monitor.setting.notificationChannel')" :name="['notificationId']">
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<NotificationSelector v-model="formState.notificationId" />
|
<NotificationSelector v-model="formState.notificationId" />
|
||||||
</div>
|
</div>
|
||||||
<div class="helper">{{ t("certd.monitor.setting.setNotificationChannel") }}</div>
|
<div class="helper">{{ t("monitor.setting.setNotificationChannel") }}</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item :label="t('certd.monitor.setting.retryTimes')" :name="['retryTimes']">
|
<a-form-item :label="t('monitor.setting.retryTimes')" :name="['retryTimes']">
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<a-input-number v-model:value="formState.retryTimes" />
|
<a-input-number v-model:value="formState.retryTimes" />
|
||||||
</div>
|
</div>
|
||||||
<div class="helper">{{ t("certd.monitor.setting.monitorRetryTimes") }}</div>
|
<div class="helper">{{ t("monitor.setting.monitorRetryTimes") }}</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item :label="t('certd.monitor.setting.certValidDays')" :name="['certValidDays']">
|
<a-form-item :label="t('monitor.setting.certValidDays')" :name="['certValidDays']">
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<a-input-number v-model:value="formState.certValidDays" />
|
<a-input-number v-model:value="formState.certValidDays" />
|
||||||
</div>
|
</div>
|
||||||
<div class="helper">{{ t("certd.monitor.setting.certValidDaysHelper") }}</div>
|
<div class="helper">{{ t("monitor.setting.certValidDaysHelper") }}</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item :label="t('certd.monitor.setting.dnsServer')" :name="['dnsServer']">
|
<a-form-item :label="t('monitor.setting.dnsServer')" :name="['dnsServer']">
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<a-select v-model:value="formState.dnsServer" :token-separators="[' ', ',', ',', '、', '|']" mode="tags" :open="false" />
|
<a-select v-model:value="formState.dnsServer" :token-separators="[' ', ',', ',', '、', '|']" mode="tags" :open="false" />
|
||||||
</div>
|
</div>
|
||||||
<div class="helper">{{ t("certd.monitor.setting.dnsServerHelper") }}</div>
|
<div class="helper">{{ t("monitor.setting.dnsServerHelper") }}</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item :label="t('certd.monitor.setting.monitorCronSetting')" :name="['cron']">
|
<a-form-item :label="t('monitor.setting.monitorCronSetting')" :name="['cron']">
|
||||||
<div class="flex flex-baseline">
|
<div class="flex flex-baseline">
|
||||||
<cron-editor v-model="formState.cron" :disabled="!settingsStore.isPlus" :allow-every-min="userStore.isAdmin" />
|
<cron-editor v-model="formState.cron" :disabled="!settingsStore.isPlus" :allow-every-min="userStore.isAdmin" />
|
||||||
<vip-button class="ml-5" mode="button"></vip-button>
|
<vip-button class="ml-5" mode="button"></vip-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="helper">{{ t("certd.monitor.setting.cronTrigger") }}</div>
|
<div class="helper">{{ t("monitor.setting.cronTrigger") }}</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label=" " :colon="false" :wrapper-col="{ span: 16 }">
|
<a-form-item label=" " :colon="false" :wrapper-col="{ span: 16 }">
|
||||||
<loading-button type="primary" html-type="button" :click="doSave">{{ t("certd.save") }}</loading-button>
|
<loading-button type="primary" html-type="button" :click="doSave">{{ t("certd.save") }}</loading-button>
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
<a-form-item :label="t('certd.smtpPort')" name="port" :rules="[{ required: true, message: t('certd.pleaseEnterSmtpPort') }]">
|
<a-form-item :label="t('certd.smtpPort')" name="port" :rules="[{ required: true, message: t('certd.pleaseEnterSmtpPort') }]">
|
||||||
<a-input v-model:value="formState.port" />
|
<a-input v-model:value="formState.port" />
|
||||||
|
<div class="helper">{{ t("certd.pleaseEnterSmtpPort") }}</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<a-form-item :label="t('certd.username')" :name="['auth', 'user']" :rules="[{ required: true, message: t('certd.pleaseEnterUsername') }]">
|
<a-form-item :label="t('certd.username')" :name="['auth', 'user']" :rules="[{ required: true, message: t('certd.pleaseEnterUsername') }]">
|
||||||
@@ -128,9 +129,9 @@ import * as api from "../api";
|
|||||||
import * as emailApi from "./api.email";
|
import * as emailApi from "./api.email";
|
||||||
import { notification } from "ant-design-vue";
|
import { notification } from "ant-design-vue";
|
||||||
import { useSettingStore } from "/src/store/settings";
|
import { useSettingStore } from "/src/store/settings";
|
||||||
import * as _ from "lodash-es";
|
|
||||||
import { useI18n } from "/src/locales";
|
import { useI18n } from "/src/locales";
|
||||||
import AddonSelector from "../../../certd/addon/addon-selector/index.vue";
|
import AddonSelector from "../../../certd/addon/addon-selector/index.vue";
|
||||||
|
import { merge } from "lodash-es";
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: "EmailSetting",
|
name: "EmailSetting",
|
||||||
@@ -189,7 +190,7 @@ function fillEmailTemplates(form: any) {
|
|||||||
|
|
||||||
async function load() {
|
async function load() {
|
||||||
const data: any = await api.EmailSettingsGet();
|
const data: any = await api.EmailSettingsGet();
|
||||||
_.merge(formState, data);
|
merge(formState, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
23:52
|
23:21
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
00:09
|
00:12
|
||||||
|
|||||||
Reference in New Issue
Block a user