Compare commits

...

1396 Commits

Author SHA1 Message Date
xiaojunnuo 2ca20be197 perf: 支持部署到阿里云云原生API网关、AI网关 2025-08-28 00:36:28 +08:00
xiaojunnuo 17f23f3751 perf: 商业版支持自定义插件的参数配置 2025-08-27 18:23:24 +08:00
xiaojunnuo 8e3d699856 chore: 2025-08-27 09:56:36 +08:00
xiaojunnuo f1a168fa53 chore: plugin config 2025-08-26 18:42:54 +08:00
xiaojunnuo 3575113655 perf: 支持删除宝塔证书夹中的过期证书 2025-08-25 23:58:03 +08:00
xiaojunnuo 9feb9d04b3 perf: 支持部署到华为云obs 2025-08-25 23:22:17 +08:00
xiaojunnuo 5419b1439a Merge branch 'v2' into v2-dev 2025-08-25 21:52:50 +08:00
xiaojunnuo e4489343fe perf: lecdnv2支持api token 2025-08-25 18:38:35 +08:00
xiaojunnuo d9f4a5793d perf: 支持p7b证书格式 2025-08-25 18:21:38 +08:00
xiaojunnuo 70fcdc9ebb perf: 腾讯云EO插件支持自动获取zoneid和域名列表 2025-08-25 17:22:55 +08:00
SHAREWEBS 78e7a81638 fix: 更新我爱云CDN域名地址,和部分目录结构 @tyjsjxh (#514)
更新我爱云CDN域名地址,和部分目录结构
2025-08-25 16:30:23 +08:00
xiaojunnuo 58e82d5dbd perf: 腾讯云插件支持国际版 2025-08-25 16:19:37 +08:00
xiaojunnuo 06d15be43a chore: 2025-08-21 15:57:39 +08:00
xiaojunnuo e1e7011853 perf: ssh 配置sudo免密提示 2025-08-19 17:06:14 +08:00
xiaojunnuo eff7645035 chore: 移除ksyun-sdk-node包 2025-08-19 11:01:01 +08:00
xiaojunnuo eb75e52278 fix: 修复cron选择组件星期显示错误的bug 2025-08-18 18:48:42 +08:00
xiaojunnuo 15e6148272 chore: 2025-08-18 00:28:55 +08:00
xiaojunnuo ccd448a675 chore: 2025-08-18 00:27:31 +08:00
xiaojunnuo db54c019ad chore: 2025-08-18 00:16:28 +08:00
xiaojunnuo b762b4d72c build: publish 2025-08-17 23:58:37 +08:00
xiaojunnuo 2f8faa839d build: trigger build image 2025-08-17 23:58:22 +08:00
xiaojunnuo 831c325c63 v1.36.17 2025-08-17 23:56:48 +08:00
xiaojunnuo f4f73078c5 build: prepare to build 2025-08-17 23:53:21 +08:00
xiaojunnuo f7d43ad5af perf: 部署到腾讯云cdn,每个域名增加3每秒延迟 2025-08-17 23:43:39 +08:00
xiaojunnuo a77c777980 perf: 腾讯云关闭证书通知增加开关选项,在腾讯云授权里面 2025-08-17 23:32:29 +08:00
xiaojunnuo a34db7449e perf: 阿里云 FC3.0 不在要求证书加密方式为旧版, 修复支持的协议类型可以正常选择 2025-08-17 23:27:50 +08:00
xiaojunnuo 0283bd2f97 perf: 证书申请任务默认不发送申请成功通知 2025-08-17 23:08:50 +08:00
xiaojunnuo a8de2f8ae7 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-08-17 20:13:42 +08:00
xiaojunnuo d5dee75df3 fix: 修复新部署的无法保存公共eab配置的bug 2025-08-17 19:08:08 +08:00
xiaojunnuo 79cb5c0631 build: publish 2025-08-16 12:51:23 +08:00
xiaojunnuo 7d9901540f build: trigger build image 2025-08-16 12:51:04 +08:00
xiaojunnuo e979e9c9fb v1.36.16 2025-08-16 12:49:25 +08:00
xiaojunnuo de719df6fe build: prepare to build 2025-08-16 12:46:55 +08:00
xiaojunnuo 38d7f91ea0 build: prepare to build 2025-08-16 12:44:29 +08:00
xiaojunnuo a20a429e8c chore: 2025-08-16 12:23:03 +08:00
xiaojunnuo 9b63fb4ee2 perf: 支持apisix证书部署 2025-08-16 01:33:51 +08:00
xiaojunnuo 099efdbc1d chore: 2025-08-15 19:11:03 +08:00
xiaojunnuo af9120fc7a chore: 2025-08-15 19:02:59 +08:00
xiaojunnuo 798a48aa96 perf: 百度云支持上传到证书托管,支持部署到负载均衡 2025-08-15 18:19:36 +08:00
xiaojunnuo 462e22a3b0 perf: 支持更新金山云cdn证书 2025-08-15 10:27:06 +08:00
xiaojunnuo 4e432ed03f perf: 部署到百度cdn支持自动获取域名列表选择 2025-08-15 10:26:52 +08:00
xiaojunnuo dfa74a69f7 perf: 支持部署到金山云CDN 2025-08-14 18:48:04 +08:00
xiaojunnuo 9e1e4eeec2 perf: 支持阿里云API网关 2025-08-14 11:00:10 +08:00
xiaojunnuo 221e068bac fix: 修复授权配置复制功能,无法复制已加密字段的问题 2025-08-09 18:11:20 +08:00
xiaojunnuo 1bdceeecf4 perf: 验证码可重试次数设置为3次 2025-08-09 16:59:48 +08:00
xiaojunnuo a6824d9cd0 Merge branch 'v2' into v2-dev 2025-08-09 16:47:12 +08:00
ahe fe03f9942b perf: 增加找回密码的验证码可重试次数 @nicheng-he (#496)
2.找回密码邮件方式增加长度到6位
3.开启自主找回密码放置更合适的位置
2025-08-09 16:41:57 +08:00
xiaojunnuo 4c196922fb chore: 使用TZ 2025-08-08 08:56:19 +08:00
xiaojunnuo 2a9a513d85 build: publish 2025-08-07 23:23:23 +08:00
xiaojunnuo 2bcea27ecd build: trigger build image 2025-08-07 23:23:07 +08:00
xiaojunnuo fb7341f1f7 v1.36.15 2025-08-07 23:21:18 +08:00
xiaojunnuo f327daa12d build: prepare to build 2025-08-07 23:18:12 +08:00
xiaojunnuo 2872b9fbf9 chore: 2025-08-07 22:40:17 +08:00
xiaojunnuo cedd5c9c96 chore: 2025-08-07 22:37:21 +08:00
xiaojunnuo 60e6aa9b54 fix: 修复 https://cas.undefined.aliyuncs.com 的bug 2025-08-07 22:31:25 +08:00
xiaojunnuo 541f482518 chore: 2025-08-07 21:56:02 +08:00
xiaojunnuo 4019b7939a chore: 2025-08-07 18:52:20 +08:00
xiaojunnuo 013b9c4c7c perf: 部署到阿里云支持选择bucket和域名 2025-08-07 18:30:47 +08:00
xiaojunnuo 79addfda42 chore: issue template 2025-08-07 14:35:21 +08:00
xiaojunnuo 8546bda471 chore: 2025-08-07 11:48:26 +08:00
xiaojunnuo 0770f174a1 fix: 修复阿里云clb api接口没有使用region的问题 2025-08-07 11:40:13 +08:00
xiaojunnuo 5f4a89cecc chore: 2025-08-07 11:26:14 +08:00
xiaojunnuo cbe0b1c5a6 perf: 支持webhook部署证书 2025-08-07 11:04:25 +08:00
xiaojunnuo 0af193c505 chore: cron * 开头的 换成 0 2025-08-07 10:39:48 +08:00
xiaojunnuo fdcfcc77a0 perf: 注册时支持填写用户名 2025-08-07 10:36:34 +08:00
xiaojunnuo 06d166d0d7 chore: 用户名注册不能为保留字 2025-08-07 10:28:21 +08:00
xiaojunnuo b1b3e39fcd Merge branch 'v2' into v2-dev 2025-08-07 10:23:44 +08:00
greper 5ec025a3b9 Potential fix for code scanning alert no. 31: Incomplete string escaping or encoding (#479)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-08-07 09:57:17 +08:00
greper 58b7fbcf75 Potential fix for code scanning alert no. 26: Clear-text logging of sensitive information (#480)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-08-07 08:59:47 +08:00
ayakasuki be053d47e4 perf: 添加免费通知,OneBot V11协议通知支持 (#491) @ayakasuki 2025-08-07 08:59:01 +08:00
只捱宅 fae1981161 perf: add start:server npm script for quick server launch from root directory (#484) @orzyyyy 2025-08-07 08:57:13 +08:00
xiaojunnuo fd95549de9 perf: 清理数据库备份的临时目录 2025-08-04 18:31:06 +08:00
xiaojunnuo ff10bc05ec chore: 2025-07-31 11:05:22 +08:00
xiaojunnuo eb8cd53de2 fix: 修复站点监控使用自定义dns解析域名报错的bug 2025-07-31 10:44:50 +08:00
xiaojunnuo 3fc863561a build: publish 2025-07-28 23:44:43 +08:00
xiaojunnuo 131cd94495 build: trigger build image 2025-07-28 23:44:27 +08:00
xiaojunnuo f3a90a63b6 v1.36.14 2025-07-28 23:42:30 +08:00
xiaojunnuo 2494173aec build: prepare to build 2025-07-28 23:38:49 +08:00
xiaojunnuo 866eb6241b perf: 授权管理支持模糊查询 2025-07-28 23:36:10 +08:00
xiaojunnuo 86b3df1941 perf: 运行主机脚本插件支持选择运行策略 2025-07-28 23:22:38 +08:00
xiaojunnuo e87f6d56f5 perf: cdnfly 支持 账号密码登陆授权 2025-07-28 23:20:44 +08:00
xiaojunnuo acc890730f perf: 1panel支持 currenNode 2025-07-28 22:41:45 +08:00
xiaojunnuo b0707739fd fix: 修复复制流水线为空的bug 2025-07-28 18:29:28 +08:00
xiaojunnuo 251dd1fe45 fix: 修复商用证书上传第二次运行无法使用pfx格式证书的bug 2025-07-28 16:18:49 +08:00
xiaojunnuo b9f3dc65e0 chore: 雨云ref 2025-07-25 17:29:37 +08:00
xiaojunnuo 238ad7ce51 perf: 优化start脚本 2025-07-25 16:57:21 +08:00
xiaojunnuo 99fd5fca4d chore: 2025-07-25 12:05:42 +08:00
xiaojunnuo 8eda77b76d Merge branch 'v2' into v2-dev 2025-07-25 10:18:35 +08:00
ahe 81ac240ac8 perf: 新增找回密码功能 @nicheng-he
* feat 找回密码

* 1.发送邮件时修改模版
2.重置成功时清除登陆错误次数

* 增加自助找回密码控制

* 补充接口自助找回判断
2025-07-24 16:56:22 +08:00
xiaojunnuo 6109798fab chore: 2025-07-24 16:23:13 +08:00
xiaojunnuo 95715a007d perf: k8s ack、tke 支持重启ingress 2025-07-24 16:22:07 +08:00
xiaojunnuo b33ec201ac build: publish 2025-07-23 23:41:46 +08:00
xiaojunnuo b53fbaf5b3 build: trigger build image 2025-07-23 23:41:31 +08:00
xiaojunnuo 1e03a2e553 v1.36.13 2025-07-23 23:40:09 +08:00
xiaojunnuo fda7c6f67a build: prepare to build 2025-07-23 23:37:57 +08:00
xiaojunnuo fabb7982ff chore: 2025-07-23 17:55:08 +08:00
xiaojunnuo cbf206be60 chore: 2025-07-23 17:41:16 +08:00
xiaojunnuo aa0c282205 Merge branch 'v2' into v2-dev 2025-07-23 15:59:14 +08:00
xiaojunnuo 9759365329 Merge remote-tracking branch 'origin/v2' into v2 2025-07-23 15:56:09 +08:00
ahe e3738f6422 perf: 阿里云部分插件优化 @nicheng-he
1.新增RemoteAutoComplete插件
2.阿里云OSS部署插件支持自动获取BucketList
3.阿里云ESA支持选择上传到阿里云CAS产物
4.解决阿里云OSS默认接入点配置错误问题
2025-07-23 15:55:52 +08:00
ahe 9746d169f9 阿里云部分插件优化 @nicheng-he
1.新增RemoteAutoComplete插件
2.阿里云OSS部署插件支持自动获取BucketList
3.阿里云ESA支持选择上传到阿里云CAS产物
4.解决阿里云OSS默认接入点配置错误问题
2025-07-23 15:45:40 +08:00
xiaojunnuo 2e6d03ff00 fix: 修复阿里云发送短信验证码失败的bug 2025-07-23 11:33:02 +08:00
xiaojunnuo f7b7d3d65e build: publish 2025-07-23 00:18:48 +08:00
xiaojunnuo 4037cf11aa build: trigger build image 2025-07-23 00:18:32 +08:00
xiaojunnuo 02aeb321ce v1.36.12 2025-07-23 00:17:02 +08:00
xiaojunnuo 0012619257 build: prepare to build 2025-07-23 00:14:43 +08:00
xiaojunnuo 6f3ade0d94 Merge branch 'v2' into v2-dev 2025-07-23 00:13:58 +08:00
xiaojunnuo cf572f328a Merge branch 'v2' into v2-dev 2025-07-23 00:13:29 +08:00
xiaojunnuo d1ce36038c perf: 增加版本过低提示 2025-07-23 00:10:15 +08:00
xiaojunnuo b382351c7b fix: 上传到阿里云cas,证书前缀无效的bug 2025-07-22 23:53:33 +08:00
xiaojunnuo 4e5e862f58 fix: 修复自定义插件onlyAdmin报错的bug 2025-07-22 23:31:42 +08:00
xiaojunnuo ab84835362 perf: 部署到k8s,tke,ack忽悠证书校验 2025-07-22 17:03:52 +08:00
xiaojunnuo 41ce8489dc perf: 首页增加更新日志按钮 2025-07-22 16:42:17 +08:00
xiaojunnuo ef3faf5832 Merge branch 'v2-dev' into v2 2025-07-22 12:27:51 +08:00
xiaojunnuo edf089ec9e build: publish 2025-07-22 12:27:21 +08:00
xiaojunnuo 0ae9a3605c build: trigger build image 2025-07-22 12:27:10 +08:00
xiaojunnuo 7f9c4e52ac v1.36.11 2025-07-22 12:25:40 +08:00
xiaojunnuo 35947f96a8 build: prepare to build 2025-07-22 12:23:42 +08:00
xiaojunnuo b0f91f1eea chore: 2025-07-22 12:22:54 +08:00
xiaojunnuo 13dfca1749 fix: 安全更新,备份数据库插件仅限管理员运行 2025-07-22 11:51:27 +08:00
xiaojunnuo 9d9cd8a362 build: 2025-07-19 12:02:08 +08:00
xiaojunnuo 5e5c41fda5 build: 2025-07-19 12:01:47 +08:00
xiaojunnuo 3ebdc52b3e build: 2025-07-19 08:58:02 +08:00
xiaojunnuo af54f48cec Merge branch 'v2-dev' into v2 2025-07-18 23:14:52 +08:00
xiaojunnuo 8656059151 build: publish 2025-07-18 23:09:44 +08:00
xiaojunnuo a6d38f2458 build: trigger build image 2025-07-18 23:09:27 +08:00
xiaojunnuo 085bdf5cfa v1.36.10 2025-07-18 23:08:03 +08:00
xiaojunnuo 6883bcacee build: prepare to build 2025-07-18 23:02:57 +08:00
xiaojunnuo 2ecc6e0368 build: prepare to build 2025-07-18 23:00:39 +08:00
xiaojunnuo 8fb5ca2fe1 chore: ip检查新旧ip变化对比逻辑修复 2025-07-18 18:24:01 +08:00
xiaojunnuo e40345095f perf: 账号即将过期通知 2025-07-18 18:18:01 +08:00
xiaojunnuo ffc0c7bb7b perf: 子域名托管重复域名不允许添加 2025-07-18 16:36:56 +08:00
xiaojunnuo 58fadc8928 chore: 2025-07-18 16:32:19 +08:00
xiaojunnuo d96a607c04 chore: 2025-07-18 16:00:34 +08:00
xiaojunnuo 2ea2c8c05f perf: 部署到阿里云oss插件支持选择上传到阿里云cas中的证书 2025-07-18 15:35:35 +08:00
xiaojunnuo b15f514018 perf: 优化子域名托管的说明 2025-07-18 14:47:15 +08:00
xiaojunnuo 05a33a0ec9 fix: api接口获取不到证书的bug 2025-07-18 14:46:58 +08:00
xiaojunnuo 747d266742 fix: 企业微信通知改成text类型,因为markdown类型不支持@用户 2025-07-15 17:15:43 +08:00
xiaojunnuo 522d30545b Merge branch 'v2-dev' into v2 2025-07-15 16:56:31 +08:00
xiaojunnuo 6135a44a8d build: publish 2025-07-15 16:54:52 +08:00
xiaojunnuo 7c7d646792 build: trigger build image 2025-07-15 16:54:35 +08:00
xiaojunnuo 4a36fd2ec3 v1.36.9 2025-07-15 16:53:06 +08:00
xiaojunnuo b1bcc287cb build: prepare to build 2025-07-15 16:46:42 +08:00
xiaojunnuo 6f5868a9d7 build: prepare to build 2025-07-15 16:43:58 +08:00
xiaojunnuo 75863441f4 build: prepare to build 2025-07-15 16:41:37 +08:00
xiaojunnuo 9763cb00e5 fix: 修复ssh无法执行命令的bug 2025-07-15 16:41:15 +08:00
xiaojunnuo 521599ef39 Merge branch 'v2-dev' into v2 2025-07-15 15:47:46 +08:00
xiaojunnuo 1921a64f4b build: publish 2025-07-15 15:36:31 +08:00
xiaojunnuo 6b73f5d555 build: trigger build image 2025-07-15 15:36:14 +08:00
xiaojunnuo e0408f30ba v1.36.7 2025-07-15 15:33:36 +08:00
xiaojunnuo dca44fa093 build: prepare to build 2025-07-15 15:21:52 +08:00
xiaojunnuo bbacb76581 build: prepare to build 2025-07-15 15:19:18 +08:00
xiaojunnuo 1da8617a53 perf: 支持上传证书到各种对象存储,oss、cos、七牛、s3、minio等 2025-07-15 15:18:35 +08:00
xiaojunnuo e5967f7e9d chore: 2025-07-15 15:17:11 +08:00
xiaojunnuo 65d84f9e9d chore: 2025-07-15 15:06:59 +08:00
xiaojunnuo 93e9498b41 fix: 修复流水线页面状态没有刷新的bug 2025-07-15 15:05:09 +08:00
xiaojunnuo 95332d5db9 perf: 支持邮箱发送证书 2025-07-15 13:58:01 +08:00
xiaojunnuo 9864792bbf fix: 修复流水线列表页报length错误的bug 2025-07-15 10:53:11 +08:00
xiaojunnuo ca9d1eed7a Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-07-15 10:45:34 +08:00
xiaojunnuo 38e867c917 fix: 修复自定义证书检查时间重启之后不生效的bug 2025-07-15 10:42:56 +08:00
xiaojunnuo 1ff6daaa27 Merge branch 'v2-dev' into v2 2025-07-14 23:55:04 +08:00
xiaojunnuo 3ee1dbb8a5 build: publish 2025-07-14 23:54:12 +08:00
xiaojunnuo b4571d5c98 build: trigger build image 2025-07-14 23:53:51 +08:00
xiaojunnuo 29d49d72f9 v1.36.6 2025-07-14 23:52:25 +08:00
xiaojunnuo 81de0fc7e4 build: prepare to build 2025-07-14 23:48:40 +08:00
xiaojunnuo 9d5d266d2a build: prepare to build 2025-07-14 23:46:40 +08:00
xiaojunnuo b97935299f chore: auto功能 数据库升级脚本 2025-07-14 23:46:24 +08:00
xiaojunnuo 32a7ea1c16 chore: 2025-07-14 23:29:35 +08:00
xiaojunnuo 9fd95e6a1e chore: 2025-07-14 23:26:54 +08:00
xiaojunnuo 61ba83c775 perf: 通知和定时器的删除按钮显示为红色更显眼 2025-07-14 23:25:56 +08:00
xiaojunnuo 6369fed5fc chore: 2025-07-14 23:15:22 +08:00
xiaojunnuo 42f4d1477d perf: OpenAPI支持autoApply参数 2025-07-14 23:02:47 +08:00
xiaojunnuo 609ac9c9a2 perf: 优化流水线列表页面、详情页面性能,精简返回数据 2025-07-14 01:36:40 +08:00
xiaojunnuo 79f2367472 chore: 2025-07-14 00:34:47 +08:00
xiaojunnuo dfc9362084 fix: 修复运行流水线后会闪烁一下的bug 2025-07-14 00:33:42 +08:00
xiaojunnuo 487b469603 chore: 增强cname安全性 2025-07-14 00:15:46 +08:00
xiaojunnuo 19e1df1e5d chore: 2025-07-13 23:58:07 +08:00
xiaojunnuo fc55010888 Merge branch 'v2-dev-auto' into v2-dev 2025-07-13 23:23:47 +08:00
xiaojunnuo 56a36aa595 chore: 修复商业版翻译导致报错的bug 2025-07-13 23:20:04 +08:00
xiaojunnuo 0b3158fdd5 fix: 修复某些页面翻译不全显示错误的bug 2025-07-13 23:14:28 +08:00
xiaojunnuo 896cd950e9 chore: auto 2025-07-13 23:08:00 +08:00
xiaojunnuo af5e1b805f chore: 2025-07-13 18:30:04 +08:00
xiaojunnuo 3f9943270c perf: 支持自动选择校验方式申请证书 2025-07-13 18:25:09 +08:00
xiaojunnuo 902d246d1a perf: 部署plesk证书,支持删除未使用的证书 2025-07-13 17:10:15 +08:00
xiaojunnuo 785bee2b39 chore: auto 2025-07-12 23:00:04 +08:00
xiaojunnuo 4b335db31c chore: 2025-07-11 18:17:11 +08:00
xiaojunnuo 4bef527ebb Merge branch 'v2-dev' into v2-dev-auto
# Conflicts:
#	packages/ui/certd-client/src/locales/langs/en-US/certd.ts
#	packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts
2025-07-11 17:44:04 +08:00
xiaojunnuo 8273031d7e docs: 自动升级帮助文档 2025-07-11 17:37:33 +08:00
xiaojunnuo dbf69bcd98 chore: 2025-07-11 11:11:22 +08:00
xiaojunnuo 24d3096752 build: publish 2025-07-11 10:51:21 +08:00
xiaojunnuo 9a3754fbf8 build: trigger build image 2025-07-11 10:51:05 +08:00
xiaojunnuo c2a95a13fe v1.36.5 2025-07-11 10:49:26 +08:00
xiaojunnuo b46466ac96 build: prepare to build 2025-07-11 10:46:08 +08:00
xiaojunnuo 06991ddb17 chore: 2025-07-11 10:44:49 +08:00
xiaojunnuo 4b3f4a868a fix: 某些插件找不到的bug 2025-07-11 09:45:33 +08:00
xiaojunnuo 014eff3534 build: publish 2025-07-10 23:42:44 +08:00
xiaojunnuo c01b7ddb59 build: trigger build image 2025-07-10 23:42:27 +08:00
xiaojunnuo 0ff700849f v1.36.4 2025-07-10 23:41:05 +08:00
xiaojunnuo 5c695dea20 build: prepare to build 2025-07-10 23:36:24 +08:00
xiaojunnuo c7ee4ca4db build: prepare to build 2025-07-10 23:32:50 +08:00
xiaojunnuo c3da026b33 perf: 支持部署证书到网宿CDN 2025-07-10 23:30:33 +08:00
xiaojunnuo 98da4e1791 perf: 支持部署到阿里云vod 2025-07-10 21:40:35 +08:00
xiaojunnuo 8626b6d9f2 fix: 修复查看证书对话框翻译错误的bug 2025-07-10 18:27:56 +08:00
xiaojunnuo 80c5331a5d perf: 站点证书即将过期通知标题颜色优化为红色 2025-07-10 17:02:48 +08:00
xiaojunnuo 39dc5c8160 chore: domain manager 2025-07-10 17:00:47 +08:00
xiaojunnuo f3002e4fb6 chore: domain manager 2025-07-10 16:32:12 +08:00
xiaojunnuo c451823c2b chore: chore: auto domain entity 2025-07-09 16:00:55 +08:00
xiaojunnuo b37cffd704 fix: 执行windows nginx命令时,改为return code判断是否执行成功 2025-07-09 15:43:25 +08:00
xiaojunnuo 2af91dbf2a perf: 优化证书进度条颜色 2025-07-09 15:24:23 +08:00
xiaojunnuo f2551318fc chore: 增加多dns提供商选项支持 2025-07-09 15:10:21 +08:00
xiaojunnuo 22eb84f944 chore: 2025-07-09 15:03:04 +08:00
xiaojunnuo 1ece0915f1 perf: 重置管理员密码同时可以清除管理员的2FA设置 2025-07-09 14:49:11 +08:00
xiaojunnuo 87853a2015 perf: output-selector from参数支持更丰富的过滤规则
规则:  pluginName:valueType:keyName
2025-07-09 14:34:24 +08:00
xiaojunnuo 46a1b74799 fix: 修复translation后分组编辑打不开的bug 2025-07-09 11:14:09 +08:00
xiaojunnuo 0f6e7e5eab build: publish 2025-07-07 22:22:09 +08:00
xiaojunnuo 5dfa9615d2 build: trigger build image 2025-07-07 22:21:52 +08:00
xiaojunnuo 1bde777bee v1.36.3 2025-07-07 22:20:26 +08:00
xiaojunnuo fa4f5df3e7 build: prepare to build 2025-07-07 22:18:24 +08:00
xiaojunnuo 8a3c3810e0 build: prepare to build 2025-07-07 22:14:35 +08:00
xiaojunnuo 144532530a perf: 优化部署到腾讯TKE插件,支持Opaque类型选择,优化填写说明 2025-07-07 21:30:45 +08:00
xiaojunnuo 0f1129e19b chore: 2025-07-07 18:20:25 +08:00
xiaojunnuo 1f74580f15 chore: cname的key转为小写 2025-07-07 16:27:25 +08:00
xiaojunnuo f93ba9970c fix: 修复开放接口添加按钮文本显示问题 2025-07-07 14:21:00 +08:00
xiaojunnuo f87a3d0892 build: publish 2025-07-07 00:47:44 +08:00
xiaojunnuo c661ad67d0 build: trigger build image 2025-07-07 00:47:26 +08:00
xiaojunnuo ce4dc9e3fa v1.36.2 2025-07-07 00:45:59 +08:00
xiaojunnuo 3d2c6e6032 build: prepare to build 2025-07-07 00:43:45 +08:00
xiaojunnuo 6000a0cfe3 chore: 2025-07-07 00:41:17 +08:00
xiaojunnuo b80c60997a build: prepare to build 2025-07-07 00:41:03 +08:00
xiaojunnuo 35e45f0df1 build: prepare to build 2025-07-07 00:37:55 +08:00
xiaojunnuo e65f5b9f78 chore: 优化 notification check plus 2025-07-07 00:37:44 +08:00
xiaojunnuo 5969f71e67 build: prepare to build 2025-07-07 00:22:54 +08:00
xiaojunnuo b1307863eb build: prepare to build 2025-07-07 00:21:47 +08:00
xiaojunnuo 9d0abe993b chore: 2025-07-07 00:21:23 +08:00
xiaojunnuo c53bb7cf67 perf: 证书检查支持自定义dns服务器 2025-07-07 00:10:51 +08:00
xiaojunnuo 0cea26c628 fix: 修复notification编辑按钮无法打开对话框的bug 2025-07-06 17:54:00 +08:00
xiaojunnuo 610c919c72 fix: 优化更新飞牛os证书有效期,修复某些情况下部署证书后飞牛无法访问https的bug 2025-07-04 23:05:04 +08:00
xiaojunnuo 2c35f94f7c docs: english readme 2025-07-03 15:54:24 +08:00
xiaojunnuo cd9a3870b3 build: trigger build image 2025-07-02 23:01:08 +08:00
xiaojunnuo e11373f23a 1 2025-07-02 23:00:47 +08:00
xiaojunnuo f591635fc1 build: trigger build image 2025-07-02 23:00:24 +08:00
xiaojunnuo 474b57ca61 build: trigger build image 2025-07-02 22:57:56 +08:00
xiaojunnuo 8671887abc v1.36.1 2025-07-02 22:56:15 +08:00
xiaojunnuo 8274d1baa5 build: prepare to build 2025-07-02 22:53:59 +08:00
xiaojunnuo bde601bfff perf: 支持部署到七牛云DCDN 2025-07-02 22:51:22 +08:00
xiaojunnuo a2e0951042 fix: 修复通知和触发器无法编辑的bug 2025-07-02 16:47:50 +08:00
xiaojunnuo 3c9a8a38dd build: publish 2025-07-01 23:26:41 +08:00
xiaojunnuo 4c067fd39f build: trigger build image 2025-07-01 23:26:24 +08:00
xiaojunnuo 5c251ee774 v1.36.0 2025-07-01 23:24:39 +08:00
xiaojunnuo ddda691552 build: prepare to build 2025-07-01 23:22:04 +08:00
xiaojunnuo ba73090d53 Merge branch 'v2' into v2-dev
# Conflicts:
#	README.md
2025-07-01 23:00:15 +08:00
xiaojunnuo a080b606ab perf: 站点IP监控前先同步一下IP 2025-07-01 22:33:27 +08:00
xiaojunnuo 7c0f43c8a3 perf: 添加用户资料编辑功能
- 新增用户资料编辑对话框组件
- 添加后端更新用户资料接口
- 在用户信息页面添加编辑按钮
- 新增中英文翻译字段
- 实现头像上传和昵称修改功能
2025-07-01 16:30:07 +08:00
greper 4fad1aee6b Update README.md 2025-07-01 15:59:38 +08:00
greper 19aec5bc8d Update README.md 2025-07-01 15:58:34 +08:00
greper 33ee60736c Update README.md 2025-07-01 15:55:26 +08:00
xiaojunnuo c1bccb970f chore: doc 2025-07-01 15:54:26 +08:00
xiaojunnuo 481cc029fa fix: 支持自定义证书生成插件 2025-07-01 15:18:55 +08:00
xiaojunnuo bdaf58a3c4 chore: 2025-07-01 09:30:54 +08:00
xiaojunnuo 0f64671dc0 chore: 2025-06-30 23:48:19 +08:00
xiaojunnuo 60f055f293 perf: 支持选择运行策略设置 2025-06-30 23:48:00 +08:00
xiaojunnuo c67a9215e3 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-06-30 22:57:21 +08:00
xiaojunnuo a0e9df6d6d chore: 2025-06-30 21:57:17 +08:00
xiaojunnuo 8341749c04 chore: 更多翻译 2025-06-30 16:34:09 +08:00
xiaojunnuo 66d1886663 chore: 优化插件的翻页查询 2025-06-29 19:59:13 +08:00
xiaojunnuo 710e1fc278 chore: 2025-06-29 19:38:44 +08:00
xiaojunnuo 4cf98584da perf: 阿里云waf cname站点选择支持翻页及域名查询 2025-06-29 19:36:46 +08:00
xiaojunnuo 3fb3cee423 chore: vip label translate 2025-06-29 17:41:54 +08:00
xiaojunnuo 2d1504a057 chore: 2025-06-29 16:57:28 +08:00
xiaojunnuo 4fcfd089d8 chore: code format 2025-06-29 14:09:09 +08:00
xiaojunnuo 04422a4637 chore: 模版导入式创建流水线 2025-06-29 01:33:43 +08:00
xiaojunnuo 37e6548246 Merge branch 'v2-translation' into v2-dev
# Conflicts:
#	packages/ui/certd-client/src/components/plugins/common/remote-select.vue
#	packages/ui/certd-client/src/router/source/modules/certd.ts
#	packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx
#	packages/ui/certd-client/src/views/certd/pipeline/crud.tsx
2025-06-29 00:26:34 +08:00
xiaojunnuo a761989f3e chore: 小修改 2025-06-29 00:25:08 +08:00
xiaojunnuo acaa8b1731 perf: 优化中英文翻译与切换 2025-06-28 23:57:01 +08:00
greper 082f47663d perf: 英文翻译 by @lorenzo93
Translation  @lorenzo93
2025-06-28 21:45:48 +08:00
xiaojunnuo 92f42154d5 chore: 2025-06-28 21:08:26 +08:00
Lorenzo fc1084ce33 More translation 2025-06-27 01:31:31 +02:00
Lorenzo adc3ab7e0a Add other translations 2025-06-27 00:39:00 +02:00
xiaojunnuo dcc8c56969 perf: 模版导入流水线 2025-06-26 18:43:16 +08:00
Lorenzo 0b3472d227 Partially translate user settings 2025-06-26 00:56:43 +02:00
Lorenzo b50121ad0b Translate user account info page 2025-06-26 00:36:22 +02:00
Lorenzo dfddfc3e06 Translate user security page 2025-06-26 00:16:30 +02:00
Lorenzo 34ec6210c6 Translate VIP popup 2025-06-26 00:08:13 +02:00
Lorenzo daaef316e9 Other translations 2025-06-25 23:52:44 +02:00
Lorenzo cdac12bb2f Translate other parts 2025-06-25 21:01:34 +02:00
Lorenzo 3ab99647aa First translation step 2025-06-25 20:09:29 +02:00
xiaojunnuo 529482a83e chore: 模版创建流水线 2025-06-25 18:40:20 +08:00
xiaojunnuo 29906ec057 chore: 模版创建流水线 2025-06-25 18:18:57 +08:00
xiaojunnuo 9296ba7492 chore: 模版创建流水线 2025-06-25 14:41:27 +08:00
xiaojunnuo 821c6d807d perf: 优化阿里云waf的日志信息 2025-06-24 11:26:38 +08:00
xiaojunnuo 991b741cbe perf: 部署到ssh主机命令支持前置命令 2025-06-24 11:08:26 +08:00
xiaojunnuo 2559f0e822 feat: 支持模版创建流水线 2025-06-23 18:20:49 +08:00
xiaojunnuo 8bb1ed3e95 docs: 生态章节文档 2025-06-23 16:04:50 +08:00
xiaojunnuo 56ba3fcb92 Merge branch 'v2-dev' into v2-dev-template 2025-06-21 17:11:15 +08:00
xiaojunnuo e99a20a120 chore: 腾讯云国际站类型无需加密 2025-06-20 23:18:59 +08:00
xiaojunnuo f1a25b21a6 build: publish 2025-06-20 17:16:53 +08:00
xiaojunnuo cf9595ce58 build: trigger build image 2025-06-20 17:16:36 +08:00
xiaojunnuo 7feece597a v1.35.5 2025-06-20 17:14:13 +08:00
xiaojunnuo fa16c782ca build: prepare to build 2025-06-20 17:10:08 +08:00
xiaojunnuo a03d0b6a4a chore: 2025-06-20 17:09:59 +08:00
xiaojunnuo dff76b8912 build: prepare to build 2025-06-20 17:07:59 +08:00
xiaojunnuo cffea9a9bc chore: 2025-06-20 17:07:26 +08:00
xiaojunnuo 43fee42198 perf: 首次打开任务日志查看页面,自动滚动到底部 2025-06-20 17:06:34 +08:00
xiaojunnuo 5cd3968929 fix: 腾讯云授权支持设置是否国际站,部署到EO插件支持国际站 2025-06-20 16:58:20 +08:00
xiaojunnuo 65dcae79f8 fix: 修复邮箱包含.号校验失败的bug 2025-06-20 16:45:29 +08:00
xiaojunnuo 2b3b75a4a5 chore: 2025-06-20 16:25:29 +08:00
xiaojunnuo 26b395110c chore: 流水线模版初步 2025-06-19 18:17:35 +08:00
xiaojunnuo e11b3becfd perf: 支持批量修改通知和定时 2025-06-18 12:29:43 +08:00
xiaojunnuo 73fa937f5c chore: 2025-06-17 13:39:40 +08:00
xiaojunnuo 6ebe2e54ac chore: 2025-06-16 23:57:11 +08:00
xiaojunnuo fb29a11cc9 build: publish 2025-06-13 12:24:08 +08:00
xiaojunnuo a9e06cbf92 build: trigger build image 2025-06-13 12:23:51 +08:00
xiaojunnuo 93017c044d v1.35.4 2025-06-13 12:22:12 +08:00
xiaojunnuo c223ddbb9a build: prepare to build 2025-06-13 12:19:21 +08:00
xiaojunnuo f00aeacb8b perf: 支持s3 access做测试 2025-06-13 12:18:26 +08:00
xiaojunnuo 5b49071d6b Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-06-13 09:53:30 +08:00
xiaojunnuo 17053a882b chore: 2025-06-13 09:53:07 +08:00
xiaojunnuo 5e723d31a4 chore: 2025-06-13 00:40:54 +08:00
xiaojunnuo 3283bd8b75 build: publish 2025-06-13 00:40:05 +08:00
xiaojunnuo 770d3c0015 build: trigger build image 2025-06-13 00:39:33 +08:00
xiaojunnuo d15dfafd5d v1.35.3 2025-06-13 00:29:59 +08:00
xiaojunnuo 545c13d55c build: prepare to build 2025-06-13 00:27:18 +08:00
xiaojunnuo e2099ac9ca fix: 修复重试次数设置无效的bug 2025-06-13 00:25:08 +08:00
xiaojunnuo c937583a50 fix: 修复消息内容存在()<>等括号情况下无法发送tg通知的bug 2025-06-13 00:24:55 +08:00
xiaojunnuo 43c7a19849 perf: 支持雨云dns解析以及雨云证书更新 2025-06-12 23:51:21 +08:00
xiaojunnuo 83543487e7 perf: 支持雨云dns解析 2025-06-12 22:41:08 +08:00
xiaojunnuo 434b259525 chore: 2025-06-11 22:40:21 +08:00
xiaojunnuo add8efaba8 chore: 2025-06-10 18:44:32 +08:00
xiaojunnuo 12ed79ca60 chore: 雨云支持 2025-06-10 18:41:25 +08:00
xiaojunnuo 1e863382d3 perf: 授权列表类型颜色优化 2025-06-10 18:40:23 +08:00
xiaojunnuo bad3504d4a perf: github 版本检查支持执行脚本 2025-06-10 12:13:04 +08:00
xiaojunnuo d94f207162 chore: 首创流水线模式自动申请和部署证书,已被多个项目“借鉴”,被抄也是一种成功。 2025-06-10 10:59:40 +08:00
xiaojunnuo 2c4b7781a4 chore: 2025-06-10 10:52:58 +08:00
xiaojunnuo 4574c6ff07 chore: 2025-06-10 10:52:30 +08:00
xiaojunnuo 7b5043e87b chore: 增加专业版过期通知 2025-06-10 10:21:09 +08:00
xiaojunnuo a06f3ac5da build: publish 2025-06-09 23:58:39 +08:00
xiaojunnuo 721346a40a build: trigger build image 2025-06-09 23:58:23 +08:00
xiaojunnuo f252871fb8 v1.35.2 2025-06-09 23:57:04 +08:00
xiaojunnuo 107196122c build: prepare to build 2025-06-09 23:54:50 +08:00
xiaojunnuo 563c02d8da build: prepare to build 2025-06-09 23:50:44 +08:00
xiaojunnuo 765934970a chore: 数据库 2025-06-09 23:50:19 +08:00
xiaojunnuo 9cbdfda829 perf: 优化阿里云nlb支持部署扩展证书 2025-06-09 23:41:44 +08:00
xiaojunnuo c1fbc8cd68 fix: 修复阿里云新加坡clb无法部署证书的bug 2025-06-09 23:41:21 +08:00
xiaojunnuo a92107cc47 fix: 修复检查github release 插件无法保存最后版本的bug 2025-06-09 23:35:17 +08:00
xiaojunnuo 3e84e116e8 fix: 修复阿里云新加坡clb无法部署证书的bug 2025-06-09 22:46:59 +08:00
xiaojunnuo 7c0cdd169e perf: 子域名托管帮助链接优化为打开新窗口
Closes https://github.com/certd/certd/issues/419
2025-06-09 22:28:56 +08:00
xiaojunnuo 424fd96615 perf: 阿里云dns操作增加重试机制 2025-06-09 11:42:25 +08:00
xiaojunnuo ebfcea88da chore: 2025-06-09 11:38:07 +08:00
xiaojunnuo 3c7eb2f5e2 chore: 小优化 2025-06-09 11:32:06 +08:00
xiaojunnuo 936167972f fix: 修复站点监控定时器多次添加的bug 2025-06-09 11:14:45 +08:00
xiaojunnuo 7f6070c960 perf: history增加触发类型显示 2025-06-09 11:13:51 +08:00
xiaojunnuo 0aea9c129c build: publish 2025-06-07 09:12:22 +08:00
xiaojunnuo d20fb7daa8 build: trigger build image 2025-06-07 09:12:06 +08:00
xiaojunnuo a619f8a2fe v1.35.1 2025-06-07 09:10:46 +08:00
xiaojunnuo 0acb858d7b build: prepare to build 2025-06-07 09:08:51 +08:00
xiaojunnuo e459be76fe build: prepare to build 2025-06-07 09:05:35 +08:00
xiaojunnuo c4c59ccc75 revert: 2025-06-07 01:19:47 +08:00
xiaojunnuo c820315409 perf: 优化流水线页面,增加下次执行时间、查看证书显示 2025-06-07 01:19:37 +08:00
xiaojunnuo 2a19b61b7a perf: aliyun alb支持部署扩展证书 2025-06-07 00:15:16 +08:00
xiaojunnuo e1cf64ae16 perf: 修改 HTTPS 服务器监听地址
- 将 HTTPS服务器的监听地址从 '0.0.0.0' 修改为 '::',以支持 IPv6

https://github.com/certd/certd/issues/416
2025-06-06 22:27:41 +08:00
xiaojunnuo d3c2f8eb43 perf: 站点证书监控支持定时设置,重试次数设置 2025-06-06 18:20:30 +08:00
xiaojunnuo a00453c83a fix: 修复站点监控通知渠道设置无效的bug 2025-06-06 16:12:30 +08:00
xiaojunnuo 2eb0e54909 perf: 证书申请支持letencrypt profile选项 2025-06-06 15:12:24 +08:00
xiaojunnuo ac87bc57e9 fix: 某些证书提供商的证书确实commonName导致无法转换证书的问题 2025-06-06 13:53:05 +08:00
xiaojunnuo 2b8ea857f0 build: publish 2025-06-06 00:12:42 +08:00
xiaojunnuo 11c52114b2 build: trigger build image 2025-06-06 00:12:26 +08:00
xiaojunnuo f55f9b4dd3 v1.35.0 2025-06-06 00:11:09 +08:00
xiaojunnuo cdd369ea98 build: prepare to build 2025-06-06 00:09:15 +08:00
xiaojunnuo f2aab9f476 build: prepare to build 2025-06-06 00:02:00 +08:00
xiaojunnuo 2619dc3556 chore: 2025-06-06 00:01:39 +08:00
xiaojunnuo 1bbed351ba Merge branch 'v2-dev' into v2 2025-06-05 23:56:47 +08:00
xiaojunnuo 4cfb2644c6 build: publish 2025-06-05 23:52:05 +08:00
xiaojunnuo 5b85c7ad39 build: trigger build image 2025-06-05 23:51:48 +08:00
xiaojunnuo ab3a3156f2 v1.34.11 2025-06-05 23:50:29 +08:00
xiaojunnuo 28a582025e build: prepare to build 2025-06-05 23:48:30 +08:00
xiaojunnuo 8451a83a3a chore: 2025-06-05 23:48:14 +08:00
xiaojunnuo 92c8dcc666 build: prepare to build 2025-06-05 23:43:24 +08:00
xiaojunnuo da68b02e1e chore: 2025-06-05 23:43:14 +08:00
xiaojunnuo 2d7729dbe9 perf: 站点监控支持批量导入域名和ip 2025-06-05 23:31:36 +08:00
xiaojunnuo 6467edb843 fix: 修复flexcdn部署证书的顶级CA名称显示 2025-06-05 20:31:18 +08:00
xiaojunnuo 1f01b3a9ff chore: 2025-06-05 16:57:49 +08:00
xiaojunnuo 8aa1f8926d chore: 2025-06-05 16:54:35 +08:00
xiaojunnuo ace363fa35 fix: 修复flexcdn证书commonNames错误的问题 2025-06-05 16:53:39 +08:00
xiaojunnuo 919f70a5fd fix: 修复用户最大流水线数量校验的问题 2025-06-05 16:29:13 +08:00
greper 9d6ad771a3 perf: AWS 中国区 CloudFront 证书部署(IAM 证书)@wifi9984
feat: AWS 中国区 CloudFront 证书部署(IAM 证书) @wifi9984
2025-06-05 15:50:31 +08:00
greper bafccb20c6 perf: 为proxmox登录添加领域字段(@yajiedesign)
为proxmox登录添加领域字段
2025-06-05 15:48:32 +08:00
xiaojunnuo cef30c2af0 chore: 2025-06-05 14:59:29 +08:00
yajiedesign ca58056a75 根据要求修改 2025-06-05 14:25:36 +08:00
xiaojunnuo 03e2e99498 perf: 分组选择支持清空选项 2025-06-05 13:49:27 +08:00
yajiedesign fba7afc4e9 为proxmox登录添加领域字段 2025-06-05 13:39:10 +08:00
xiaojunnuo d7dda336ec chore: 2025-06-05 13:25:17 +08:00
xiaojunnuo 55d4395160 chore: 2025-06-05 11:26:27 +08:00
xiaojunnuo f7d5baa6d0 fix: 修复中文域名使用cname方式校验无法通过的问题 2025-06-05 11:25:16 +08:00
xiaojunnuo 6ff509d263 perf: 增加下载日志按钮 2025-06-04 23:18:40 +08:00
xiaojunnuo 57778981a7 chore: 2025-06-04 23:06:07 +08:00
xiaojunnuo 6ac3bc564f perf: 支持设置用户有效期 2025-06-04 23:00:37 +08:00
xiaojunnuo 82d08e2153 chore: 2025-06-04 18:43:35 +08:00
xiaojunnuo 6212cd77e8 chore: 2025-06-04 17:31:40 +08:00
xiaojunnuo 170034f943 chore: 2025-06-04 17:28:56 +08:00
xiaojunnuo e639a8f9f1 perf: 优化cname检查,当有冲突的cname记录时,给出提示 2025-06-04 17:26:56 +08:00
greper 9d10c45dac Merge pull request #411 from 5aaee9/v2
支持为 Lego 添加额外的命令参数
2025-06-04 16:41:17 +08:00
Indexyz b84159f2f1 feat(lego): support for command options 2025-06-04 16:31:25 +08:00
xiaojunnuo 49f26b4049 fix: 修复cv4pve sdk (proxmox插件连接失败时无法正常结束任务的bug) 2025-06-04 13:36:31 +08:00
xiaojunnuo 0e7e44cee2 build: publish 2025-06-03 23:57:43 +08:00
xiaojunnuo 36e769502c build: trigger build image 2025-06-03 23:57:27 +08:00
xiaojunnuo a4b6580247 v1.34.10 2025-06-03 23:56:13 +08:00
xiaojunnuo 84fb1c5127 build: prepare to build 2025-06-03 23:54:07 +08:00
xiaojunnuo ddfd0fb81d perf: 支持部署到飞牛OS 2025-06-03 23:52:43 +08:00
xiaojunnuo 37edbf5824 perf: 支持日志写入文件 2025-06-03 18:16:35 +08:00
xiaojunnuo e15212bf49 Merge branch 'v2' into v2-dev 2025-06-03 17:45:50 +08:00
xiaojunnuo 6a0cc1b1f3 perf: 优化流水线名称过长时的显示 2025-06-03 17:40:26 +08:00
xiaojunnuo 0e8339c701 perf: 阿里云CLB支持部署到扩展域名 2025-06-03 17:39:52 +08:00
greper 5d71a4dbde Merge pull request #409 from 5aaee9/v2
修复 FlexCDN 的问题
2025-06-03 11:09:24 +08:00
xiaojunnuo 0b78030c59 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-06-03 10:24:21 +08:00
xiaojunnuo 24237c16bf chore: 隐藏导出按钮 2025-06-03 10:23:28 +08:00
5aaee9 c48da5dea7 fix(flexcdn): fix cert upload and skipSslVerify required 2025-06-01 01:23:44 +08:00
wifi9984 6702ca10a1 feat: 完善注释 2025-05-31 22:19:34 +08:00
wifi9984 4b44bd5e61 reset pnpm-lock 2025-05-31 22:00:32 +08:00
wifi9984 8a55beda92 feat: AWS 中国区 CloudFront 证书部署(IAM 证书) 2025-05-31 21:46:21 +08:00
xiaojunnuo a12b824339 build: publish 2025-05-31 00:57:52 +08:00
xiaojunnuo c4a743189e build: trigger build image 2025-05-31 00:57:34 +08:00
xiaojunnuo 85f9ef35f6 v1.34.9 2025-05-31 00:56:14 +08:00
xiaojunnuo 6de220e38a build: prepare to build 2025-05-31 00:54:04 +08:00
xiaojunnuo 0d455d8c2f chore: email-selector 优化 2025-05-31 00:53:05 +08:00
xiaojunnuo f7b0b44ef6 perf: 邮箱支持保存和选择 2025-05-31 00:45:54 +08:00
xiaojunnuo 81282a9c88 chore: 通知优化 2025-05-29 23:31:39 +08:00
xiaojunnuo a9b302e38d perf: 不止证书自动化,插件解锁无限可能 2025-05-29 20:41:55 +08:00
xiaojunnuo 1fe4c367f7 fix: 修复Farcdn证书有效期错误的问题 2025-05-29 20:37:17 +08:00
xiaojunnuo 2de7583900 chore: 2025-05-29 09:41:21 +08:00
xiaojunnuo 356703c83e perf: 支持github 新版本检查并发布通知 2025-05-29 00:08:10 +08:00
xiaojunnuo 1cae709b2b build: publish 2025-05-28 23:14:49 +08:00
xiaojunnuo 46a492248f build: trigger build image 2025-05-28 23:14:34 +08:00
xiaojunnuo d876ea6711 v1.34.8 2025-05-28 23:13:12 +08:00
xiaojunnuo b40b4c3cfd build: prepare to build 2025-05-28 23:11:23 +08:00
xiaojunnuo 44980d6c46 build: prepare to build 2025-05-28 23:02:13 +08:00
xiaojunnuo 442f9647a2 chore: 2025-05-28 23:01:55 +08:00
xiaojunnuo a06ef07178 perf: farcdn优化 2025-05-28 16:11:18 +08:00
xiaojunnuo 0c2ea5da4c fix: 修复阿里云 esa 证书获取站点列表错误的问题 2025-05-28 16:06:38 +08:00
xiaojunnuo 45814ceb49 chore: 优化站点ip检查 2025-05-28 15:49:48 +08:00
xiaojunnuo 41f4617e66 chore: 优化站点ip检查 2025-05-28 15:12:54 +08:00
xiaojunnuo a463711b03 perf: 优化站点ip检查 2025-05-28 13:57:31 +08:00
xiaojunnuo 3a147141b1 perf: 优化站点选择组件,切换选择时不刷新列表 2025-05-28 11:22:39 +08:00
xiaojunnuo aea1c13bd3 chore: 2025-05-28 01:22:23 +08:00
xiaojunnuo 9cc4c017ae perf: 站点监控支持监控IP 2025-05-28 00:57:52 +08:00
xiaojunnuo 88022747be fix: 修复证书申请任务无法修改dns提供商类型的bug 2025-05-27 15:32:31 +08:00
xiaojunnuo ebb292a2f7 fix: 修复部署到华为cdn,子账号ak查询不到域名的bug 2025-05-27 12:02:54 +08:00
xiaojunnuo 818998259d perf: 支持批量重新运行 2025-05-27 11:08:08 +08:00
xiaojunnuo 36b02c2cec fix: 同步更新namesilo接口,修复无法创建和删除dns记录的问题 2025-05-27 10:31:48 +08:00
xiaojunnuo e6195ade3e fix: 更新 1panel API 版本支持v1/v2设置 2025-05-27 00:22:39 +08:00
xiaojunnuo 231a875bb4 perf: 关闭腾讯云证书通知提醒 2025-05-27 00:10:50 +08:00
xiaojunnuo 378c777a38 chore: 2025-05-27 00:03:15 +08:00
xiaojunnuo 8ef63916ef chore: 2025-05-26 23:36:19 +08:00
xiaojunnuo f32ecdf5f1 build: trigger build image 2025-05-26 23:34:59 +08:00
xiaojunnuo 94739b9b8e chore: 2025-05-26 23:25:43 +08:00
xiaojunnuo 023db4e04e v1.34.7 2025-05-26 23:24:35 +08:00
xiaojunnuo 5a4b95f5fe build: prepare to build 2025-05-26 23:20:59 +08:00
xiaojunnuo b091657b5c perf: 优化阿里云DCDN插件,支持多选 2025-05-26 23:10:31 +08:00
xiaojunnuo f7bf5c9328 chore: 2025-05-26 22:50:58 +08:00
xiaojunnuo 86e521b9aa chore: 2025-05-26 22:44:56 +08:00
xiaojunnuo e08cf57b72 perf: 支持部署到farcdn 2025-05-26 22:22:39 +08:00
xiaojunnuo 9e06cb9a83 docs: 2025-05-26 00:03:22 +08:00
xiaojunnuo c65e8622b8 Merge branch 'v2-dev' into v2 2025-05-26 00:00:32 +08:00
xiaojunnuo 7795efeb7a build: publish 2025-05-25 23:46:02 +08:00
xiaojunnuo e725e0020e build: trigger build image 2025-05-25 23:45:46 +08:00
xiaojunnuo 8478ce25f1 v1.34.6 2025-05-25 23:44:23 +08:00
xiaojunnuo 22cdac6210 build: prepare to build 2025-05-25 23:42:01 +08:00
xiaojunnuo 3422a1a59f perf: 站点证书监控增加通知设置 2025-05-25 23:38:25 +08:00
xiaojunnuo f807b8cb46 fix: 修复lego模式下每次都重新申请证书的bug 2025-05-25 22:58:30 +08:00
xiaojunnuo e1e510ce1e fix: 修复公共插件配置修改不生效的bug,优化系统设置参数注入时机
- 将系统设置参数注入移至 outputContext读取输入参数之后
-修复了某些情况下系统设置参数可能被覆盖的问题
- 优化了代码结构,提高了可读性和维护性
2025-05-25 21:08:23 +08:00
xiaojunnuo 36bc3ff22d fix: 优化 RunnableError错误信息展示
- 确保在不同错误场景下都能正确显示错误详情
2025-05-25 20:50:15 +08:00
xiaojunnuo 1db1ffde99 perf: 添加阿里云 ESA证书部署插件
- 新增 AliyunDeployCertToESA 插件类,实现证书上传和部署到阿里云 ESA 功能
- 优化证书名称生成逻辑,支持通配符域名
- 重构部分代码,提高可复用性和可维护性
- 更新相关依赖版本,确保兼容性
2025-05-22 23:21:50 +08:00
xiaojunnuo 7984b625ba fix: 修复又拍云 CDN 设置证书参数和强制 HTTPS 配置报错的bug 2025-05-20 23:37:24 +08:00
xiaojunnuo bb22f062ed perf: 二次认证页面中,添加动态验证码输入框的焦点控制,提升用户体验 2025-05-20 23:28:09 +08:00
xiaojunnuo a3086e6a5b fix(cert): 修正证书过期时间计算逻辑 2025-05-20 23:19:50 +08:00
xiaojunnuo 1eb9bd34fd docs: 2025-05-20 09:36:13 +08:00
xiaojunnuo cff7baaaad Merge branch 'v2-dev' into v2 2025-05-20 01:42:12 +08:00
xiaojunnuo 47af700375 build: publish 2025-05-20 01:40:26 +08:00
xiaojunnuo eb7f53a1e3 build: trigger build image 2025-05-20 01:40:08 +08:00
xiaojunnuo d23792fda2 v1.34.5 2025-05-20 01:38:18 +08:00
xiaojunnuo b5cbb8e450 build: prepare to build 2025-05-20 01:35:39 +08:00
xiaojunnuo fc037b4518 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-05-20 01:13:50 +08:00
xiaojunnuo c04921f42b docs: 2025-05-20 01:13:01 +08:00
xiaojunnuo 8af3463668 perf: aaWaf、cdnfly站点选择支持查询 2025-05-20 01:11:26 +08:00
xiaojunnuo 094565ccd6 perf: 支持部署到宝塔aaWAF 2025-05-20 00:27:18 +08:00
xiaojunnuo 07b9769504 docs: 2025-05-19 11:34:59 +08:00
xiaojunnuo 566b12f5d1 perf: 1panel增加授权测试按钮 2025-05-19 10:58:28 +08:00
xiaojunnuo a560999d13 perf: 优化钉钉通知标题颜色 2025-05-17 01:13:36 +08:00
xiaojunnuo a818a3d293 perf: 优化飞书通知为卡片模式 2025-05-17 00:47:28 +08:00
xiaojunnuo 4d68a174cb Merge branch 'v2-dev' into v2 2025-05-17 00:14:16 +08:00
xiaojunnuo 905219e523 build: publish 2025-05-17 00:05:31 +08:00
xiaojunnuo c675b87040 build: trigger build image 2025-05-17 00:05:13 +08:00
xiaojunnuo e2dadfdc40 v1.34.4 2025-05-17 00:03:13 +08:00
xiaojunnuo a66f9aa04d build: prepare to build 2025-05-16 23:58:51 +08:00
xiaojunnuo 863e74dd2e fix: 修复自建插件保存丢失部署策略的bug 2025-05-16 23:50:18 +08:00
xiaojunnuo aebb07c5cc perf: 调整小助手,仅在登录之后显示 2025-05-16 23:14:43 +08:00
xiaojunnuo 677fec0a0b fix: 修复插件导入的bug 2025-05-16 08:55:54 +08:00
xiaojunnuo 61f06faaf5 chore: 2025-05-16 08:42:31 +08:00
xiaojunnuo fcf8309c23 fix: 修复导入在线插件不生效的bug 2025-05-16 08:38:38 +08:00
xiaojunnuo 76b19a4980 fix: 修复部署flexcdn问题 2025-05-16 08:38:16 +08:00
xiaojunnuo ed1a9fc7aa Merge branch 'v2-dev' into v2 2025-05-16 00:21:55 +08:00
xiaojunnuo b71e30755d build: publish 2025-05-16 00:14:32 +08:00
xiaojunnuo fe196d1b20 build: trigger build image 2025-05-16 00:14:14 +08:00
xiaojunnuo 0b152a3cb8 v1.34.3 2025-05-16 00:12:33 +08:00
xiaojunnuo 1a0e096ddb build: prepare to build 2025-05-16 00:08:05 +08:00
xiaojunnuo bf040d4c42 perf: 添加 FlexCDN 更新证书插件
- 新增 FlexCDNRefreshCert 插件类,实现更新证书功能
- 添加 FlexCDNAccess 授权类和 FlexCDNClient 客户端类
- 实现获取证书列表和更新证书的 API 调用
- 提供插件配置界面和执行逻辑
2025-05-16 00:04:52 +08:00
xiaojunnuo 3e2101aa5b perf: 小助手可以关闭 2025-05-15 23:06:22 +08:00
xiaojunnuo 44f11b38e7 docs: 2025-05-15 22:54:13 +08:00
xiaojunnuo 06f8514bc1 docs(guide): 更新常见问题解答
- 新增 ping 域名的故障排查步骤
- 添加查看容器日志的方法
- 补充 IPv6网络配置的说明
2025-05-15 21:54:20 +08:00
xiaojunnuo d9a9f1c25c docs: 2025-05-15 21:10:23 +08:00
xiaojunnuo e77f7244ba chore: 2025-05-15 18:08:50 +08:00
xiaojunnuo 09779cd1e1 chore: 2025-05-15 14:35:45 +08:00
xiaojunnuo 11024168db chore: 2025-05-15 14:08:30 +08:00
xiaojunnuo 304914513e chore: 2025-05-15 14:08:14 +08:00
xiaojunnuo 03d0efcfc6 chore: 2025-05-15 13:16:29 +08:00
xiaojunnuo 0c2bdc9146 chore: 2025-05-15 13:05:07 +08:00
xiaojunnuo 188450b0c0 chore: 2025-05-15 13:03:37 +08:00
xiaojunnuo ddf6bbfa46 docs: 2025-05-15 12:24:14 +08:00
xiaojunnuo 2c7c98a152 docs: 2025-05-15 12:20:20 +08:00
xiaojunnuo d31ac75718 docs: 2025-05-15 11:18:31 +08:00
xiaojunnuo 4b28c659de docs: 2025-05-15 09:38:35 +08:00
xiaojunnuo 00b937e52a Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-05-15 09:22:00 +08:00
xiaojunnuo 68f333fb87 perf: 支持部署到maoyun cdn 2025-05-15 01:03:21 +08:00
xiaojunnuo 085b4d9319 docs: 2025-05-14 16:02:49 +08:00
xiaojunnuo b8edd14f39 refactor(ui): 优化 AI聊天功能
- 在打开聊天时增加对空消息的检查,避免发送无效请求
- 在发送消息时添加来源标识,以便服务端区分消息来源
- 在任务视图中增加对空日志的检查,避免触发空指针异常
2025-05-14 15:46:41 +08:00
xiaojunnuo 61a19d694b docs: ip证书说明 2025-05-14 15:06:58 +08:00
xiaojunnuo aa96859798 perf: 支持AI分析报错 2025-05-14 15:03:47 +08:00
xiaojunnuo abf015f485 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-05-14 08:57:15 +08:00
xiaojunnuo 0b9a02afde docs: docs 2025-05-14 08:56:48 +08:00
xiaojunnuo e332ce28f8 chore: baotawaf access 2025-05-14 01:06:30 +08:00
xiaojunnuo 08e779f9f1 docs: ipv6 2025-05-13 23:06:54 +08:00
xiaojunnuo a53b6cd28f perf: 宝塔插件、1panel 改成完全免费版 2025-05-13 21:15:59 +08:00
xiaojunnuo 47ebab237b Merge branch 'v2-dev' into v2 2025-05-11 20:29:59 +08:00
xiaojunnuo 5a5af60f97 build: publish 2025-05-11 20:29:09 +08:00
xiaojunnuo 50cc17c7cb build: trigger build image 2025-05-11 20:28:45 +08:00
xiaojunnuo a1e504c138 v1.34.2 2025-05-11 20:27:04 +08:00
xiaojunnuo 4cc413047c build: prepare to build 2025-05-11 20:23:52 +08:00
xiaojunnuo 2397097e4d fix: 修复部署到又拍云强制https无效的bug 2025-05-11 12:29:04 +08:00
xiaojunnuo c88f959ec9 chore: 2025-05-11 10:55:45 +08:00
xiaojunnuo 0b2e28b62d fix: 修复刷新流水线页面后,日志不自动更新的bug 2025-05-11 10:55:01 +08:00
xiaojunnuo c7f2ead696 chore: doc 2025-05-11 10:22:10 +08:00
xiaojunnuo b454e02d01 chore: doc 2025-05-11 10:04:54 +08:00
xiaojunnuo 47df2ffc3e chore: doc 2025-05-10 22:05:21 +08:00
xiaojunnuo d18e431e2f perf: 支持设置网安备案号 2025-05-10 21:31:32 +08:00
xiaojunnuo 0a147d2db7 chore: 2025-05-10 20:52:23 +08:00
xiaojunnuo ccdc933064 chore: 2025-05-10 17:29:10 +08:00
xiaojunnuo 023f2d4569 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-05-10 15:05:28 +08:00
xiaojunnuo 06a7371d2b chore: 2025-05-10 15:04:57 +08:00
xiaojunnuo 626f5d3487 chore: 2025-05-10 13:58:08 +08:00
xiaojunnuo 8cd3b9fe2e Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-05-09 18:51:39 +08:00
xiaojunnuo 716c35d52a chore: doc 2025-05-09 18:51:08 +08:00
xiaojunnuo 8cc0f3918b chore: 文档增加插件列表 2025-05-08 23:47:50 +08:00
xiaojunnuo 98b51f0799 chore: 文档增加插件列表 2025-05-08 23:27:46 +08:00
xiaojunnuo 81d6dad548 chore: 2025-05-08 10:29:42 +08:00
xiaojunnuo 41bc11cf96 chore: 2025-05-08 10:29:25 +08:00
xiaojunnuo 721dbe415a chore: 2025-05-08 10:28:44 +08:00
xiaojunnuo f5c0b51428 chore: 2025-05-08 10:27:49 +08:00
xiaojunnuo 892c6ad80c chore: 2025-05-08 10:23:47 +08:00
xiaojunnuo a47805e494 chore: 2025-05-08 10:22:31 +08:00
xiaojunnuo 9dd49054d1 perf: 集成智能问答机器人 2025-05-07 14:15:32 +08:00
xiaojunnuo f5d1d1a0b7 chore: 1 2025-05-06 17:52:39 +08:00
xiaojunnuo d75fcb7fec perf: http方式支持校验443端口 2025-05-06 17:01:20 +08:00
xiaojunnuo 826be45b6a chore: 等待解析生效时长可自定义 2025-05-06 11:04:02 +08:00
xiaojunnuo d35d9c17c5 chore: doc 2025-05-06 10:57:07 +08:00
xiaojunnuo f9553e7d44 Merge branch 'v2-dev' into v2 2025-05-06 00:33:19 +08:00
xiaojunnuo 638c9720cf chore: 1.34.1 2025-05-06 00:32:38 +08:00
xiaojunnuo 08a190882f build: trigger build image 2025-05-06 00:32:25 +08:00
xiaojunnuo bfa7530a39 chore: 1.34.1 2025-05-06 00:32:11 +08:00
xiaojunnuo 6c74148c27 v1.34.1 2025-05-06 00:21:50 +08:00
xiaojunnuo 480cad0fed build: prepare to build 2025-05-06 00:16:10 +08:00
xiaojunnuo 32be489136 chore: parseDomain优化 2025-05-06 00:14:17 +08:00
xiaojunnuo 11801d8e2e chore: 2025-05-05 22:20:42 +08:00
xiaojunnuo 1b280a2940 fix: 根据SOA记录判断子域名托管有缺陷,改回手动配置子域名托管记录的方式 2025-05-05 21:43:39 +08:00
xiaojunnuo 424890a1e1 chore: safePromise 优化 2025-04-30 09:38:44 +08:00
xiaojunnuo 5f85219495 perf: 支持部署证书到火山dcdn 2025-04-29 18:40:13 +08:00
xiaojunnuo a63d687f1c perf: 支持部署证书到unicloud 2025-04-29 13:36:24 +08:00
xiaojunnuo f2d6c3ad83 chore: 移除 autowire 2025-04-28 23:34:08 +08:00
xiaojunnuo 0b6941d5ce chore: 移除autowire特性 2025-04-28 21:55:23 +08:00
xiaojunnuo 048696ee93 fix: 修复宝塔授权测试按钮显示错误的bug 2025-04-28 21:33:07 +08:00
xiaojunnuo ae51676471 Merge branch 'v2-dev' into v2 2025-04-28 17:31:04 +08:00
xiaojunnuo 27a405fb1d build: publish 2025-04-28 17:29:04 +08:00
xiaojunnuo e2cf65b591 build: trigger build image 2025-04-28 17:28:45 +08:00
xiaojunnuo 9749fc817d v1.34.0 2025-04-28 17:27:05 +08:00
xiaojunnuo e6600f2c43 build: prepare to build 2025-04-28 17:24:37 +08:00
xiaojunnuo a664931e7a build: prepare to build 2025-04-28 17:14:39 +08:00
xiaojunnuo a2ba965600 chore: 2025-04-28 17:12:25 +08:00
xiaojunnuo 65255dbb50 chore: 恢复加载插件方式为注解方式 2025-04-28 17:05:14 +08:00
xiaojunnuo a5cb8761a5 build: prepare to build 2025-04-28 16:58:59 +08:00
xiaojunnuo e3930e0717 fix: 修复二次认证登录进入错误账号的bug 2025-04-28 16:57:30 +08:00
xiaojunnuo afd59e9933 perf: 优化cdnfly插件,支持自动匹配域名部署 2025-04-28 00:55:39 +08:00
xiaojunnuo 8087524bef chore: product info 2025-04-27 22:51:47 +08:00
xiaojunnuo 605440812f Merge remote-tracking branch 'refs/remotes/origin/v2-dev-plugin-yaml' into v2-dev
# Conflicts:
#	packages/ui/certd-server/export-plugin-yaml.js
2025-04-27 22:50:19 +08:00
xiaojunnuo b10c6eb615 Merge branch 'v2-dev-yaml' into v2-dev 2025-04-27 21:35:36 +08:00
xiaojunnuo a96264ff6a chore: 2025-04-27 15:50:38 +08:00
xiaojunnuo deb3893820 feat: 从yaml文件注册插件 2025-04-27 15:11:50 +08:00
xiaojunnuo 9b1d822b5b chore: 2025-04-27 11:05:01 +08:00
xiaojunnuo f933fb705c Merge branch 'v2-dev' into v2 2025-04-27 02:01:28 +08:00
xiaojunnuo 5cd61c4c02 build: publish 2025-04-27 01:58:54 +08:00
xiaojunnuo 586fa70eac build: trigger build image 2025-04-27 01:58:37 +08:00
xiaojunnuo 9b420ad33f v1.33.8 2025-04-27 01:56:54 +08:00
xiaojunnuo 5891290672 build: prepare to build 2025-04-27 01:54:19 +08:00
xiaojunnuo 72a7b51d47 fix: 修复http上传方式无法清除记录文件的bug 2025-04-27 01:52:42 +08:00
xiaojunnuo 2943e0e58d chore: oss 库 完善 2025-04-27 01:31:46 +08:00
xiaojunnuo 5abce916a8 chore: 2025-04-25 18:45:42 +08:00
xiaojunnuo 89d4be8a0a chore: 2025-04-25 18:37:29 +08:00
xiaojunnuo b7113bda23 perf: 七牛oss支持删除过期备份 2025-04-25 18:36:49 +08:00
xiaojunnuo 0088929622 perf: 支持反向代理增加contextPath路径 2025-04-25 18:04:59 +08:00
xiaojunnuo b3468cf7f2 perf: 支持阿里云中文域名申请 2025-04-25 18:04:24 +08:00
xiaojunnuo f88c5c8528 chore: 2025-04-25 02:11:23 +08:00
xiaojunnuo 687fdda7f7 chore: 2025-04-25 02:11:08 +08:00
xiaojunnuo aec51e514c chore: 2025-04-25 01:44:15 +08:00
xiaojunnuo 308d4600ef perf: 数据库备份支持oss 2025-04-25 01:26:04 +08:00
xiaojunnuo 50a5fa15bb fix: 修复token过期后,疯狂打印token过期信息的bug 2025-04-24 23:54:09 +08:00
xiaojunnuo 7d96a57d73 chore: 2025-04-24 17:27:13 +08:00
xiaojunnuo 162ebfd4e0 perf: 支持中文域名 2025-04-24 11:55:14 +08:00
xiaojunnuo a586a92d5e perf: 从域名的soa获取主域名,子域名托管无需额外配置 2025-04-24 11:54:54 +08:00
xiaojunnuo 3df20a924f fix: 修复复制流水线无效的bug 2025-04-24 09:09:38 +08:00
xiaojunnuo ddcf466e4e docs: 升级前切记备份数据 2025-04-23 17:59:48 +08:00
xiaojunnuo 5d10cbf18d fix: 服务器时间获取不准确的bug 2025-04-23 14:55:51 +08:00
xiaojunnuo 918ea59b9a Merge branch 'v2-dev' into v2 2025-04-22 22:49:53 +08:00
xiaojunnuo 8d9afa7592 build: publish 2025-04-22 22:32:56 +08:00
xiaojunnuo 95e05336c2 build: trigger build image 2025-04-22 22:32:18 +08:00
xiaojunnuo a188385817 v1.33.7 2025-04-22 22:27:50 +08:00
xiaojunnuo 0a6baf331b build: prepare to build 2025-04-22 22:12:51 +08:00
xiaojunnuo 0e29e052d5 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-04-22 22:11:32 +08:00
xiaojunnuo d8d255980e chore: 2025-04-22 15:53:19 +08:00
xiaojunnuo dc5a5fa543 chore: 2025-04-22 11:41:45 +08:00
xiaojunnuo 8638fc91ff perf: 证书申请支持51dns 2025-04-22 11:39:09 +08:00
xiaojunnuo 96a0900edc perf: 支持51dns 2025-04-22 11:39:07 +08:00
xiaojunnuo abea80e3ab perf: 添加部署证书至火山 Live
- 新增 VolcengineDeployToLive 插件,用于将证书部署到火山引擎视频直播
- 新增 VolcengineDeployToVOD 插件,用于将证书部署到火山引擎视频点播
- 更新 ve-client.ts,增加对 Live 和 VOD 服务的支持
2025-04-21 23:39:33 +08:00
xiaojunnuo 42dfe936b7 perf: ssh伪终端模式优化,windows下不开启 2025-04-21 17:34:26 +08:00
xiaojunnuo 8385bcc2d7 perf: ssh PTY模式登录设置 2025-04-21 17:26:42 +08:00
xiaojunnuo 9b8f60b64b perf: 优化首页插件列表展示 2025-04-21 12:13:01 +08:00
xiaojunnuo b9dab77c8b Merge branch 'v2-dev' into v2 2025-04-21 00:18:53 +08:00
xiaojunnuo 474114236e build: publish 2025-04-21 00:08:56 +08:00
xiaojunnuo 238b0b421a build: trigger build image 2025-04-21 00:08:38 +08:00
xiaojunnuo 8abe62886a v1.33.6 2025-04-21 00:06:48 +08:00
xiaojunnuo 78cc9cffe4 build: prepare to build 2025-04-21 00:04:13 +08:00
xiaojunnuo 59a5dd713f chore: 2025-04-20 23:58:02 +08:00
xiaojunnuo a39024ff03 build: prepare to build 2025-04-20 23:55:30 +08:00
xiaojunnuo 72bfbd93a8 chore: 2025-04-20 23:55:05 +08:00
xiaojunnuo c9a3e3d9d2 perf: 新增部署到火山引擎ALB/CLB、上传到证书中心 2025-04-20 23:53:27 +08:00
xiaojunnuo 8387708901 docs: 2025-04-20 21:23:59 +08:00
xiaojunnuo b565b4b3b9 perf: 优化华为cdn插件引用ccm证书 2025-04-20 20:16:36 +08:00
xiaojunnuo 893dcd4f24 perf: 切换到不同的分组后再打开创建对话框,会自动选择分组 2025-04-19 17:08:44 +08:00
xiaojunnuo d613aa8f3e perf: 优化证书流水线创建,支持选择分组 2025-04-19 16:05:24 +08:00
xiaojunnuo 5750bb7067 fix: 上传商用证书,直接粘贴文本报错的问题;修复无法上传ec加密证书的bug 2025-04-19 15:00:34 +08:00
xiaojunnuo 0e07ae6ce8 fix: 修复下载证书时提示token已过期的问题 2025-04-19 14:25:56 +08:00
xiaojunnuo 02b6351e13 docs: 宝塔network 2025-04-19 12:14:19 +08:00
xiaojunnuo 78367af830 perf: 更新license时同时绑定url 2025-04-19 11:48:40 +08:00
xiaojunnuo dc05cd481f perf: 优化/api缓存为0 2025-04-18 15:23:51 +08:00
xiaojunnuo 7daad5477a Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-04-18 10:17:48 +08:00
xiaojunnuo 45cdfbfae8 chore: 2025-04-18 10:17:24 +08:00
xiaojunnuo 4159534a64 Merge branch 'v2-dev' into v2 2025-04-17 23:38:29 +08:00
xiaojunnuo 3fb5c38571 build: publish 2025-04-17 23:37:26 +08:00
xiaojunnuo 59f80ebc47 build: trigger build image 2025-04-17 23:37:09 +08:00
xiaojunnuo 198a97b00c v1.33.5 2025-04-17 23:35:14 +08:00
xiaojunnuo 3ea4e917e8 build: prepare to build 2025-04-17 23:32:08 +08:00
xiaojunnuo 60ad077172 pref: 任务日志查看页面,增加强制重新运行按钮 2025-04-17 23:31:43 +08:00
xiaojunnuo 356ad28e41 chore: 2025-04-17 23:11:04 +08:00
xiaojunnuo e241141220 build: prepare to build 2025-04-17 23:07:14 +08:00
xiaojunnuo 14bb1b467a chore: 2025-04-17 23:06:17 +08:00
xiaojunnuo 2bbea6fd3f chore: 2025-04-17 23:05:52 +08:00
xiaojunnuo 48aef25b3f perf: 登录支持双重认证 2025-04-17 22:34:21 +08:00
xiaojunnuo 8e50e5dee3 chore: plus 2025-04-17 13:41:08 +08:00
xiaojunnuo d5d54d4d3b chore: 2FA 2025-04-17 01:15:55 +08:00
xiaojunnuo 412e8a32dd Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-04-17 00:06:58 +08:00
xiaojunnuo 0f82cf409b perf: 多重认证登录 2025-04-17 00:06:49 +08:00
xiaojunnuo 79df39acab perf: 优化部署到华为云CDN,支持先上传到ccm,再使用证书id部署,修复offline状态下导致部署报错的bug 2025-04-16 09:34:04 +08:00
xiaojunnuo d00177a9b6 chore: 2025-04-16 00:04:40 +08:00
xiaojunnuo 8786bae7dc chore: 2025-04-16 00:03:13 +08:00
xiaojunnuo 4b3f8ca361 chore: 2025-04-16 00:02:58 +08:00
xiaojunnuo 03183218f7 chore: 2025-04-16 00:01:52 +08:00
xiaojunnuo 95b6db57e1 chore: 2025-04-15 23:57:50 +08:00
xiaojunnuo bbe0c2457b build: publish 2025-04-15 23:50:06 +08:00
xiaojunnuo c894c53e69 build: trigger build image 2025-04-15 23:49:48 +08:00
xiaojunnuo 5b3fb7387d v1.33.4 2025-04-15 23:48:00 +08:00
xiaojunnuo feac310caf build: prepare to build 2025-04-15 23:45:18 +08:00
xiaojunnuo d67ec3feb3 chore: 2025-04-15 23:45:11 +08:00
xiaojunnuo cf8abb4528 perf: 插件支持导入导出 2025-04-15 23:43:01 +08:00
xiaojunnuo d66de26de4 Merge branch 'v2' into v2-dev 2025-04-15 21:34:13 +08:00
xiaojunnuo e5a7ada3cf Merge branch 'v2' into v2-dev-yaml 2025-04-15 21:19:39 +08:00
xiaojunnuo b76fdd7fe4 Merge branch 'v2-dev' into v2-dev-yaml 2025-04-15 21:19:36 +08:00
greper 7edf3f6147 fix: 修复腾讯云部署到任意资源插件,无法使用之前已上传的腾讯云证书问题 from xinghejd/dev @xinghejd
fix: 修复腾讯云部署到任意资源插件,无法使用之前已上传的腾讯云证书问题
2025-04-15 21:16:49 +08:00
xinghejd 2143dff2ae fix: 补充类型断言 2025-04-15 08:54:28 +00:00
xinghejd 32c714d1b6 fix: 修复腾讯云部署到任意资源插件,无法使用之前已上传的腾讯云证书问题 2025-04-15 08:47:57 +00:00
xiaojunnuo 84e699ee24 chore: 思维导图 2025-04-15 11:22:42 +08:00
xiaojunnuo 7fdb572b8b chore: 思维导图 2025-04-15 11:07:27 +08:00
xiaojunnuo 91ffb0820a chore: plugin元数据换成yaml格式 2025-04-15 00:16:57 +08:00
xiaojunnuo cfd3b66be9 perf: 支持上传证书到华为云CCM 2025-04-14 23:31:59 +08:00
xiaojunnuo 75c4f9dea8 build: publish 2025-04-14 22:27:24 +08:00
xiaojunnuo a76a32230d build: trigger build image 2025-04-14 22:26:59 +08:00
xiaojunnuo 0730f5ff4f v1.33.3 2025-04-14 22:25:16 +08:00
xiaojunnuo c43d0a684c build: prepare to build 2025-04-14 22:22:17 +08:00
xiaojunnuo 66f1eda6cf chore: 2025-04-14 22:22:01 +08:00
xiaojunnuo bf4d191c8b fix: 修复登录错误次数过多阻止再次登录逻辑 2025-04-14 18:09:54 +08:00
xiaojunnuo d76d56fcce pref: 安全特性支持,站点隐藏功能 2025-04-14 17:40:23 +08:00
xiaojunnuo 251b0c58de chore: 2025-04-14 10:06:58 +08:00
xiaojunnuo 073cca4e8e chore: 2025-04-14 09:54:24 +08:00
xiaojunnuo a4ad99f189 build: publish 2025-04-13 01:33:57 +08:00
xiaojunnuo d37b910889 build: trigger build image 2025-04-13 01:33:28 +08:00
xiaojunnuo be69244e8d v1.33.2 2025-04-13 01:31:52 +08:00
xiaojunnuo 617f74a225 build: prepare to build 2025-04-13 01:29:05 +08:00
xiaojunnuo a2710ddc25 perf: 修复内置插件分页查询逻辑
- 在前端添加 lastType 变量,用于判断类型变化并重置分页偏移量
- 在后端修改内置插件查询逻辑,支持分页请求
- 优化后端返回数据结构,使其与前端请求一致
2025-04-13 01:28:10 +08:00
xiaojunnuo 70101bfa7a fix: 修复某些情况下无法输出日志的bug 2025-04-13 01:17:52 +08:00
xiaojunnuo 203f2984d7 chore: 1.33.1 2025-04-13 01:05:51 +08:00
xiaojunnuo 1d510e76b8 build: trigger build image 2025-04-13 01:02:07 +08:00
xiaojunnuo 64244af2cc v1.33.1 2025-04-13 00:49:14 +08:00
xiaojunnuo 35e109882e build: prepare to build 2025-04-13 00:45:32 +08:00
xiaojunnuo 18a32ffb0b chore: 修复一些小问题 2025-04-13 00:45:01 +08:00
xiaojunnuo a5af3ba0cb build: prepare to build 2025-04-13 00:19:38 +08:00
xiaojunnuo 83bd39a9a8 chore: 1 2025-04-13 00:10:23 +08:00
xiaojunnuo cc0657aaa8 pref: 优化插件store 2025-04-12 23:59:03 +08:00
xiaojunnuo 965dc2cb47 fix: 修复阿里云cdn证书部署失败问题,增加certname参数传入
- 添加证书所在地域选择功能,默认为 cn-hangzhou(杭州)
- 国际站用户可选择 ap-southeast-1(新加坡)地域
- 优化证书上传和设置流程,增加证书名称和地域参数
2025-04-12 23:58:38 +08:00
xiaojunnuo 9c4cbe17a2 fix: 修复ssh插件报length空指针的bug
- 在数据加密判断中增加非空检查,避免对未定义或空值进行加密判断- 提高了代码的健壮性和安全性
2025-04-12 22:04:14 +08:00
xiaojunnuo 835fcfa4ea pref: 优化mysql版的插件脚本字段为longtext 2025-04-12 22:02:54 +08:00
xiaojunnuo 932780c578 pref: 优化部署到腾讯云任意资源插件,支持region,和资源类型选择
- 添加资源类型选择输入,支持多种腾讯云产品
-增加证书上传功能,支持直接上传证书到腾讯云
- 优化证书 ID 输入,支持选择上传任务或申请任务的输出- 添加 Region 输入,用于指定云资源所在地域
- 更新文档链接,提供更详细的参考信息
2025-04-12 22:02:16 +08:00
xiaojunnuo 37f160a452 pref: 增加又拍云 CDN 部署时的 HTTPS 配置选项
- 在插件中添加了两个新的配置项:强制 HTTPS 和开启 HTTPS- 用户可以在部署证书时选择是否强制 HTTPS 或开启 HTTPS
-根据用户选择,插件会相应地设置 CDN 域名的 HTTPS 配置
2025-04-12 22:01:29 +08:00
xiaojunnuo f80b706fc3 chore: 2025-04-12 03:29:02 +08:00
xiaojunnuo f78cbed4d8 perf: 镜像支持armv7 2025-04-12 03:25:43 +08:00
xiaojunnuo e0b12c78ff chore: build 1.33.0 2025-04-12 03:13:31 +08:00
xiaojunnuo e7cf814a59 build: prepare to build 2025-04-12 03:13:06 +08:00
xiaojunnuo 865c45593b chore: build 1.33.0 2025-04-12 03:12:53 +08:00
xiaojunnuo 62e6f109c7 chore: build 1.33.0 2025-04-12 03:03:26 +08:00
xiaojunnuo 60be8ed022 chore: build 1.33.0 2025-04-12 02:58:19 +08:00
xiaojunnuo c157882900 chore: build 1.33.0 2025-04-12 02:55:28 +08:00
xiaojunnuo a23c211a65 build: publish 2025-04-12 02:40:33 +08:00
xiaojunnuo 293ed6bd7e build: trigger build image 2025-04-12 02:40:15 +08:00
xiaojunnuo 13ddd7c5f9 v1.33.0 2025-04-12 02:38:31 +08:00
xiaojunnuo 0de015fc8b build: prepare to build 2025-04-12 02:35:34 +08:00
xiaojunnuo d34fedae01 build: prepare to build 2025-04-12 02:34:03 +08:00
xiaojunnuo 7c623fc467 chore: 新增插件编辑页面跳转
- 在插件创建成功后跳转到编辑页面
- 优化了插件管理功能,提高了用户操作的便捷性
2025-04-12 02:33:44 +08:00
xiaojunnuo 359079c3e6 chore: v21适配多数据库 2025-04-12 02:24:38 +08:00
xiaojunnuo ba72fa3f05 chore: 2025-04-12 02:10:17 +08:00
xiaojunnuo 23caab5b06 chore: 添加子域名托管解析设置并更新相关提示
- 在证书申请页面添加子域名托管解析设置入口
- 更新域名输入提示,增加子域名托管解析相关说明
- 更改子域名托管解析页面图标
2025-04-12 02:00:40 +08:00
xiaojunnuo b506bd15a5 chore: 2025-04-12 01:48:08 +08:00
xiaojunnuo d0d9d68fe6 feat: 支持在线自定义插件,无需源码开发 2025-04-12 01:38:48 +08:00
xiaojunnuo 88134ac130 refactor(plugin): 优化插件配置界面和功能
-调整插件配置界面布局和样式
- 增加插件类型和图标字段
- 修改字段显示逻辑,根据不同插件类型显示相应字段
- 优化插件服务端处理逻辑,支持不同类型的插件配置
2025-04-12 01:34:48 +08:00
xiaojunnuo 3d8a5196a0 refactor(core): 重构访问控制和插件实例化逻辑
- 修改访问控制和插件注册方式,使用异步函数统一实例化逻辑
- 更新相关组件和控制器以适应新的异步实例化方式
- 优化 DNS 提供商选择器,增加访问类型支持
2025-04-12 01:21:50 +08:00
xiaojunnuo c4fb138ae8 chore: 2025-04-12 00:21:19 +08:00
xiaojunnuo 759cfdaabd pref: 日志中加密授权信息输出替换成星号 2025-04-12 00:14:55 +08:00
xiaojunnuo 3d9620abb0 refactor(plugin): 重构插件定义和安装流程
- 更新插件配置格式,增加依赖库和插件类型字段
- 修改插件安装流程,支持安装依赖插件和第三方库
- 优化插件列表过滤逻辑,按类型筛选插件
- 调整 Dockerfile,使用 Node.js22 镜像并更新 pnpm 安装方式
2025-04-11 23:39:40 +08:00
xiaojunnuo 420b0394a7 Merge remote-tracking branch 'origin/v2-plugin' into v2-plugin 2025-04-11 22:38:16 +08:00
xiaojunnuo 84bb4c8b07 Merge branch 'v2-dev' into v2-plugin 2025-04-11 22:35:35 +08:00
greper 310dbb61ee 发布镜像到 GitHub Packages @5aaee9
发布镜像到 GitHub Packages
2025-04-11 16:53:00 +08:00
Indexyz 9b536af9e6 feat: release image to ghcr 2025-04-11 16:37:31 +08:00
xiaojunnuo c2ca1ea1e5 chore: 新增插件额外配置功能
- 在插件管理中添加 extra 字段,用于存储额外配置信息
- 实现插件编辑页面的额外配置编辑功能
- 更新数据库结构,增加 extra 列
- 优化代码编辑器的导入方式
- 更新 fast-crud 相关包版本
2025-04-11 14:00:28 +08:00
greper ada4b226de Lego 支持设定加密算法 @5aaee9
Lego 支持设定加密算法
2025-04-11 12:17:37 +08:00
xiaojunnuo 67f956d4a0 pref: 支持子域名托管的域名证书申请 2025-04-11 12:14:09 +08:00
xiaojunnuo f68af7dcf2 chore: 2025-04-10 23:44:11 +08:00
xiaojunnuo be1b6f8edc chore: 2025-04-10 13:30:56 +08:00
xiaojunnuo 1150f62927 Merge branch 'v2-dev' into v2-plugin 2025-04-10 11:48:45 +08:00
xiaojunnuo b4c7a521b4 chore: 2025-04-10 11:38:51 +08:00
xiaojunnuo 5d083a1536 perf: 增加手动上传证书功能说明 2025-04-10 10:34:10 +08:00
xiaojunnuo 2f5ed3aead fix: 升级mysql驱动,支持mysql8最新版本的认证 2025-04-10 10:24:34 +08:00
xiaojunnuo 2951df0cd9 perf: 隐藏运行策略选项 2025-04-10 09:35:50 +08:00
xiaojunnuo ec22070957 Merge branch 'v2-dev' into v2-plugin 2025-04-10 00:22:51 +08:00
xiaojunnuo 0e36f03954 chore: plugin default 2025-04-10 00:22:05 +08:00
xiaojunnuo 57309ae3d5 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-04-09 10:07:14 +08:00
xiaojunnuo 7545194f97 chore: 2025-04-09 00:00:53 +08:00
xiaojunnuo 4bb0918e27 chore: 2025-04-08 23:36:50 +08:00
xiaojunnuo 64e5449ab3 perf: 修复tab页缓存问题 2025-04-08 23:31:25 +08:00
xiaojunnuo a0eeb17d73 chore: 插件编辑与运行测试beta 2025-04-08 22:56:38 +08:00
xiaojunnuo c021dd03d3 Merge branch 'v2-dev' into v2-plugin 2025-04-08 21:14:54 +08:00
xiaojunnuo 2f1683b26a fix: 修复eab授权,没有email绑定的bug 2025-04-08 19:54:25 +08:00
xiaojunnuo c99939f435 chore: 2025-04-08 18:06:12 +08:00
xiaojunnuo efad8bac3c chore: 2025-04-08 13:53:54 +08:00
xiaojunnuo eaf68fa463 chore: 2025-04-08 13:40:58 +08:00
xiaojunnuo 9475f2e56c chore: code-editor 2025-04-07 23:52:21 +08:00
xiaojunnuo 2e0c067cd2 chore: 2025-04-07 18:22:39 +08:00
xiaojunnuo 59a6043549 chore: 2025-04-06 23:16:54 +08:00
xiaojunnuo 840a7b7c73 chore: 插件编辑器 2025-04-06 18:06:21 +08:00
xiaojunnuo 61e322678b chore: 2025-04-06 00:20:05 +08:00
xiaojunnuo 04acd08ad2 Merge branch 'v2-dev' into v2-plugin 2025-04-05 19:01:23 +08:00
5aaee9 f3bf4faee0 feat(lego): support set key type 2025-04-05 17:01:41 +08:00
xiaojunnuo c3603ba220 build: publish 2025-04-05 01:37:41 +08:00
xiaojunnuo a3a52fd12c build: trigger build image 2025-04-05 01:37:22 +08:00
xiaojunnuo 7c4756da81 v1.32.0 2025-04-05 01:35:54 +08:00
xiaojunnuo f4fe03c790 build: prepare to build 2025-04-05 01:33:15 +08:00
xiaojunnuo a748bb9352 build: prepare to build 2025-04-05 01:14:24 +08:00
xiaojunnuo d24fb6ed48 chore: 2025-04-05 01:13:46 +08:00
xiaojunnuo 021dc5b82c Merge branch 'v2-dev' into v2-plugin 2025-04-05 00:48:23 +08:00
xiaojunnuo 9339b78f80 perf: 又拍云支持云存储 2025-04-05 00:47:34 +08:00
xiaojunnuo 8449f8580d perf: 又拍云支持云存储 2025-04-05 00:46:56 +08:00
xiaojunnuo 0948c5bc69 perf: 优化华为dns解析记录创建和删除问题 2025-04-05 00:24:57 +08:00
xiaojunnuo 857589b365 feat: 优化证书申请速度,修复某些情况下letsencrypt 校验失败的问题 2025-04-04 23:17:05 +08:00
xiaojunnuo c39b1bf823 fix: 修复从本地dns获取记录报错的bug 2025-04-04 20:46:48 +08:00
xiaojunnuo 545aa50898 Merge branch 'v2-dev' into v2-plugin 2025-04-04 20:14:24 +08:00
xiaojunnuo 298006a4b9 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-04-03 11:40:56 +08:00
xiaojunnuo 903a4131ab fix: 创建cname记录移除域名两端的空格 2025-04-03 11:39:36 +08:00
xiaojunnuo a0ec0ddb14 build: publish 2025-04-03 00:33:32 +08:00
xiaojunnuo 46eb876f9b build: trigger build image 2025-04-03 00:33:07 +08:00
xiaojunnuo 8374c3941a v1.31.11 2025-04-03 00:31:04 +08:00
xiaojunnuo 8cec14c2ff build: prepare to build 2025-04-03 00:28:39 +08:00
xiaojunnuo c716f105bd build: prepare to build 2025-04-03 00:26:38 +08:00
xiaojunnuo 737be1f571 chore: 2025-04-03 00:25:17 +08:00
xiaojunnuo 6f17c700b8 perf: 支持部署到京东云cdn 2025-04-03 00:19:54 +08:00
xiaojunnuo 04d79f9117 perf: 支持京东云dns申请证书 2025-04-02 23:13:55 +08:00
xiaojunnuo 8145808c43 fix: 修复ssh支持键盘事件登录 2025-04-02 00:20:09 +08:00
xiaojunnuo 86d5626d92 chore: 2025-04-01 23:03:44 +08:00
xiaojunnuo 071ef281c1 chore: 2025-04-01 22:34:15 +08:00
xiaojunnuo 70760e4ede build: publish 2025-03-30 01:50:01 +08:00
xiaojunnuo 8a32fd36ad build: trigger build image 2025-03-30 01:49:43 +08:00
xiaojunnuo 2e30fff221 v1.31.10 2025-03-30 01:47:57 +08:00
xiaojunnuo 667ffa5dff build: prepare to build 2025-03-30 01:43:56 +08:00
xiaojunnuo d271120c24 chore: 2025-03-30 01:43:03 +08:00
xiaojunnuo a03ae5a216 perf: tab增加图标显示 2025-03-30 01:41:27 +08:00
xiaojunnuo 0e73fa40bc chore: 2025-03-30 00:44:01 +08:00
xiaojunnuo 5d6f0d8546 pref(plugin-volcengine): 新增火山引擎 CDN部署功能 2025-03-30 00:30:42 +08:00
xiaojunnuo 41e23fb6a8 pref: 优化查找TXT记录逻辑,提升CNAME解析效率 2025-03-29 23:10:59 +08:00
xiaojunnuo 4e15556e5e perf: 升级lego版本到4.22.2 2025-03-29 10:47:12 +08:00
xiaojunnuo bf30b7afae perf: 优化华为dns接口报错信息输出 2025-03-29 09:01:33 +08:00
xiaojunnuo 8801afa586 chore: 2025-03-28 23:51:32 +08:00
xiaojunnuo 47804353f9 build: trigger build image 2025-03-28 23:51:12 +08:00
xiaojunnuo be58e3084b v1.31.9 2025-03-28 23:49:37 +08:00
xiaojunnuo 71d5ab21ed build: prepare to build 2025-03-28 23:47:13 +08:00
xiaojunnuo 993bc7432f perf: 站点监控保存时异步检查 2025-03-28 23:46:44 +08:00
xiaojunnuo 99ff879d93 perf: dns支持火山引擎 2025-03-28 23:27:24 +08:00
xiaojunnuo caa15b4735 fix: 修复华为云dns接口请求出错的bug 2025-03-28 21:23:29 +08:00
xiaojunnuo cc8da0cf13 fix: 修复网站证书监控https port设置无效的bug 2025-03-28 09:10:49 +08:00
xiaojunnuo 0b6618ff70 fix: 修复某些情况下站点证书监控报undefined.includes的错误 2025-03-27 17:10:46 +08:00
xiaojunnuo 6f180f534c build: publish 2025-03-26 22:03:01 +08:00
xiaojunnuo 4220ef2a5b build: trigger build image 2025-03-26 22:02:41 +08:00
xiaojunnuo 2acaa66635 v1.31.8 2025-03-26 22:01:03 +08:00
xiaojunnuo ee5eecbec1 build: prepare to build 2025-03-26 21:57:43 +08:00
xiaojunnuo 687bb8a237 fix: 修复lego模式无法创建流水线的bug 2025-03-26 21:54:34 +08:00
xiaojunnuo e51123a951 perf: 优化scp上传 2025-03-26 21:48:51 +08:00
xiaojunnuo 92bb12e2e3 chore: 2025-03-26 20:54:33 +08:00
xiaojunnuo fd0536bd4b perf: 支持又拍云cdn 2025-03-26 20:48:26 +08:00
xiaojunnuo 57389a79a1 perf: 支持又拍云cdn 2025-03-26 20:47:50 +08:00
xiaojunnuo 6cd7bddc37 fix: 修复编辑通知勾选默认,导致出现多个默认通知的bug 2025-03-26 12:06:20 +08:00
xiaojunnuo c3c5006daa perf: 优化通知格式 2025-03-26 12:05:28 +08:00
xiaojunnuo 27a8a57cf5 fix: 修复网站监控无法设置端口的bug 2025-03-26 09:21:13 +08:00
xiaojunnuo 3bded6fdcc chore: 2025-03-25 11:14:28 +08:00
xiaojunnuo c7f31337ce chore: 2025-03-25 11:12:24 +08:00
xiaojunnuo fd507f2692 perf: 优化txt本地校验效率 2025-03-25 11:08:25 +08:00
xiaojunnuo 96a39ef9c3 chore: 2025-03-25 09:19:32 +08:00
xiaojunnuo 81a8d6c3bf chore: 2025-03-25 00:18:52 +08:00
xiaojunnuo d4719208f0 chore: 2025-03-25 00:18:36 +08:00
xiaojunnuo c36dce6464 chore: 2025-03-25 00:17:38 +08:00
xiaojunnuo 2da4474bb1 chore: 2025-03-25 00:17:08 +08:00
xiaojunnuo cab11202c7 build: publish 2025-03-25 00:05:26 +08:00
xiaojunnuo 21d7d35bb1 build: trigger build image 2025-03-25 00:05:04 +08:00
xiaojunnuo 0725c663c4 v1.31.7 2025-03-25 00:03:50 +08:00
xiaojunnuo ce82239c8b build: prepare to build 2025-03-25 00:01:49 +08:00
xiaojunnuo 2523008cb6 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-03-24 23:59:24 +08:00
xiaojunnuo 69212b9ad1 build: publish 2025-03-24 23:52:43 +08:00
xiaojunnuo 636cb3399b build: trigger build image 2025-03-24 23:52:22 +08:00
xiaojunnuo 86ca35ce33 v1.31.6 2025-03-24 23:51:00 +08:00
xiaojunnuo 675ab31305 build: prepare to build 2025-03-24 23:48:42 +08:00
xiaojunnuo 83c2d743bc chore: 2025-03-24 23:48:34 +08:00
xiaojunnuo 2c87b3d906 build: prepare to build 2025-03-24 23:47:10 +08:00
xiaojunnuo 05b6159802 perf: 上传到主机支持scp方式 2025-03-24 23:45:45 +08:00
xiaojunnuo c56f48c1e3 perf: 优化图标 2025-03-24 21:27:31 +08:00
xiaojunnuo e18e399ce6 perf: 支持部署到lucky 2025-03-24 18:39:22 +08:00
xiaojunnuo d66ade4e47 perf: 增加服务器时间警告 2025-03-24 18:39:08 +08:00
xiaojunnuo 90b045af6d fix: 修复dns.la无法申请证书的bug 2025-03-24 09:38:18 +08:00
xiaojunnuo 5cccb21175 chore: 2025-03-24 00:10:01 +08:00
xiaojunnuo 1a71969403 chore: 2025-03-24 00:05:19 +08:00
xiaojunnuo 389a1fbd04 build: publish 2025-03-22 15:05:31 +08:00
xiaojunnuo ca02ae6183 build: trigger build image 2025-03-22 15:05:11 +08:00
xiaojunnuo 92446cb048 v1.31.5 2025-03-22 15:03:34 +08:00
xiaojunnuo 954ce4533f build: prepare to build 2025-03-22 15:01:00 +08:00
xiaojunnuo f7b88f9e3b fix: 修复通知选择器无法选择的bug
https://github.com/certd/certd/issues/351
2025-03-22 15:00:17 +08:00
xiaojunnuo 736fe038eb fix: 修复证书流水线创建失败的bug 2025-03-22 14:59:54 +08:00
xiaojunnuo abcd257db0 build: publish 2025-03-22 02:10:40 +08:00
xiaojunnuo c38b5f3cdc build: trigger build image 2025-03-22 02:10:22 +08:00
xiaojunnuo b649617e04 v1.31.4 2025-03-22 02:09:07 +08:00
xiaojunnuo a4e2287101 build: prepare to build 2025-03-22 02:06:56 +08:00
xiaojunnuo fbb66f3c43 perf: 手动上传证书部署流水线 2025-03-22 02:06:02 +08:00
xiaojunnuo fedf90ea78 chore: 2025-03-21 23:40:31 +08:00
xiaojunnuo d558d50102 chore: 2025-03-21 23:11:58 +08:00
xiaojunnuo 656cb89fe8 chore: 2025-03-21 12:23:59 +08:00
xiaojunnuo 1e6ddd250e chore: 2025-03-21 11:08:58 +08:00
xiaojunnuo 1de8eee6ea fix: 修复dns.la域名申请失败的bug 2025-03-21 11:07:15 +08:00
xiaojunnuo 425bba67c5 perf: 流水线增加上传证书快捷方式 2025-03-21 01:02:57 +08:00
xiaojunnuo 8b0daf7200 chore: 2025-03-20 23:19:14 +08:00
xiaojunnuo 589a373142 perf: 宝塔支持doker站点证书部署 2025-03-20 23:09:36 +08:00
xiaojunnuo 0cfc71e4bf Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-03-19 15:01:55 +08:00
xiaojunnuo 92dabe6276 docs: docs sitemap 2025-03-19 15:01:14 +08:00
xiaojunnuo d1b61b6bf9 chore: 支持手动上传证书并部署 2025-03-19 00:28:50 +08:00
xiaojunnuo 873f2b618b perf: 保存调整后的列宽 2025-03-18 10:00:16 +08:00
xiaojunnuo 4453070060 chore: 支持手动上传证书并部署 2025-03-18 01:02:20 +08:00
xiaojunnuo de40be430b chore: 支持手动上传证书并部署 2025-03-18 00:52:50 +08:00
xiaojunnuo 29a6a992f0 chore: 2025-03-17 18:28:33 +08:00
xiaojunnuo 0a7d2d6264 chore: 2025-03-17 18:27:52 +08:00
xiaojunnuo e09f92f9ee chore: 2025-03-17 18:24:55 +08:00
xiaojunnuo 9be1ecc8aa fix: 修复站点监控通知通过webhook发送失败的bug 2025-03-17 18:20:15 +08:00
xiaojunnuo 729b19c8da perf: 站点监控,手动测试也发通知 2025-03-17 16:55:23 +08:00
xiaojunnuo a9fffa5180 perf: 支持手动上传证书并部署 2025-03-17 00:19:01 +08:00
xiaojunnuo 0069c0e399 perf: 站点证书监控支持模糊查询 2025-03-17 00:16:56 +08:00
xiaojunnuo b6fd38e293 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-03-17 00:06:31 +08:00
xiaojunnuo 36aa7f82b0 perf: 创建证书流水线时,支持更多参数展开 2025-03-17 00:06:03 +08:00
xiaojunnuo d01004d530 perf: 优化选择任务时手机版展示效果 2025-03-16 21:37:57 +08:00
xiaojunnuo d85a02feeb perf: 流水线页面可以鼠标按住左右拖动 2025-03-16 21:16:14 +08:00
xiaojunnuo b82e1dcd62 perf: 支持飞书通知 2025-03-14 13:16:48 +08:00
xiaojunnuo 74c6a2266f build: publish 2025-03-14 01:19:31 +08:00
xiaojunnuo 9754223f31 build: trigger build image 2025-03-14 01:19:12 +08:00
xiaojunnuo cfbbac9796 v1.31.3 2025-03-14 01:17:37 +08:00
xiaojunnuo fece8955cf build: prepare to build 2025-03-14 01:15:22 +08:00
xiaojunnuo 170b2afb0e perf: 1panel支持 apikey方式授权 2025-03-14 01:14:04 +08:00
xiaojunnuo ee8af18d0a perf: 支持dns.la 2025-03-14 00:53:31 +08:00
xiaojunnuo 27386ea04d perf: cf授权支持配置http代理 2025-03-14 00:34:31 +08:00
xiaojunnuo 0d71a8ee50 perf: 套餐支持3天7天等选项 2025-03-14 00:28:20 +08:00
xiaojunnuo 82a72e0b49 perf: 支持部署到天翼云CDN 2025-03-14 00:16:34 +08:00
xiaojunnuo 5035c123f0 chore: 2025-03-13 23:05:36 +08:00
xiaojunnuo 474b3372d8 fix: 修复阿里云fc获取不到列表的bug 2025-03-12 14:29:41 +08:00
xiaojunnuo be87124ada perf: 证书仓库增加有效期显示 2025-03-12 11:15:46 +08:00
xiaojunnuo aa3032db35 build: publish 2025-03-12 10:27:06 +08:00
xiaojunnuo a4ead79888 build: trigger build image 2025-03-12 10:26:50 +08:00
xiaojunnuo 98445afd3e v1.31.2 2025-03-12 10:25:30 +08:00
xiaojunnuo 3eb9671640 build: prepare to build 2025-03-12 10:23:41 +08:00
xiaojunnuo 95fb4e3e8b fix: 修复cname记录查找bug 2025-03-12 10:17:12 +08:00
xiaojunnuo 818015d24a build: publish 2025-03-11 23:34:04 +08:00
xiaojunnuo e11bd3e813 build: trigger build image 2025-03-11 23:33:45 +08:00
xiaojunnuo 2a4d64af95 v1.31.1 2025-03-11 23:32:00 +08:00
xiaojunnuo d73cb4be2b build: prepare to build 2025-03-11 23:29:21 +08:00
xiaojunnuo 82752040f8 build: trigger build image 2025-03-11 23:27:04 +08:00
xiaojunnuo 1bde6d8b9c build: prepare to build 2025-03-11 23:23:44 +08:00
xiaojunnuo be55d36f67 chore: 2025-03-11 23:22:44 +08:00
xiaojunnuo f07724372d chore: 2025-03-11 23:11:24 +08:00
xiaojunnuo 5b8d5dd975 perf: 一些手机端适配优化 2025-03-11 22:25:14 +08:00
xiaojunnuo e36aa065e9 chore: 2025-03-11 18:05:36 +08:00
xiaojunnuo 45486ef399 chore: 2025-03-11 11:16:02 +08:00
xiaojunnuo 4fedf6f452 chore: 2025-03-11 11:14:02 +08:00
xiaojunnuo 702b80ef75 build: publish 2025-03-11 01:34:44 +08:00
xiaojunnuo a5c7789dbc build: trigger build image 2025-03-11 01:34:24 +08:00
xiaojunnuo bddef199ff v1.31.0 2025-03-11 01:32:37 +08:00
xiaojunnuo fa6fc07009 build: prepare to build 2025-03-11 01:30:42 +08:00
xiaojunnuo 8d9b44528b chore: 2025-03-11 01:30:36 +08:00
xiaojunnuo 1d108d775c build: prepare to build 2025-03-11 01:27:06 +08:00
xiaojunnuo 7af111ac57 chore: 2025-03-11 01:25:35 +08:00
xiaojunnuo 6451f00639 Merge branch 'v2' into v2-dev 2025-03-11 01:16:42 +08:00
xiaojunnuo 31718d1a4a chore: 2025-03-11 01:14:14 +08:00
xiaojunnuo 832b74b66b chore: 2025-03-11 01:07:44 +08:00
xiaojunnuo 082802e119 perf: 历史记录查看详情,可以切换到对应的历史记录日志上去 2025-03-11 00:46:51 +08:00
xiaojunnuo efa9c748c5 perf: 流水线同一个阶段任务优化为并行执行 2025-03-11 00:46:03 +08:00
xiaojunnuo fc8bef5aae perf: 通知支持钉钉群聊机器人 2025-03-11 00:29:18 +08:00
xiaojunnuo 441b15ed2f fix: ProxmoxUploadCert 增加强制部署证书
https://github.com/certd/certd/issues/337
2025-03-10 22:48:49 +08:00
xiaojunnuo 11d1f6e141 chore: 优化 2025-03-10 16:51:59 +08:00
xiaojunnuo 0f5b9564c6 chore: 优化 2025-03-10 16:06:40 +08:00
xiaojunnuo 0c8a84656a chore: 优化 2025-03-10 15:45:24 +08:00
xiaojunnuo 330f91e15b chore: 2025-03-10 00:06:49 +08:00
xiaojunnuo 490141a920 chore: 2025-03-09 23:51:53 +08:00
xiaojunnuo 1e288b14d0 chore: vip modal 2025-03-09 23:42:00 +08:00
xiaojunnuo 81df96bf45 perf: 易支付支持固定支付方式,适合没有收银台版本使用 2025-03-09 23:26:53 +08:00
xiaojunnuo d1ab5f74a6 chore: headerMenu 优化 2025-03-09 16:22:22 +08:00
xiaojunnuo e43dd03132 chore: 购买免费套餐时,先弹出确认对话框 2025-03-09 15:53:58 +08:00
xiaojunnuo 2c6d64976f chore: useTitle 2025-03-09 01:14:44 +08:00
xiaojunnuo 065713cdb6 perf: 支持易盾RCDN部署 2025-03-09 01:08:57 +08:00
xiaojunnuo 746d3c97c3 chore: 集成vben 2025-03-07 18:05:31 +08:00
xiaojunnuo 9557fc799e chore: 集成vben 2025-03-07 18:01:51 +08:00
xiaojunnuo 8fcabc5e9f feat: 升级前端框架,适配手机端 2025-03-06 23:40:58 +08:00
GitHub Actions Bot 2b4b15f558 🔱: [client] sync upgrade with 6 commits [trident-sync]
chore:
chore: help menu
chore: help menu
fix: 修复 antdv 弹出菜单边框过大的问题
fix: 修复 antdv懒加载后dropdown按钮无法点击的bug
2025-03-05 19:24:47 +00:00
xiaojunnuo 057b0b4565 perf: 升级midwayjs版本 2025-03-06 00:35:48 +08:00
greper 70a2402521 fix: 修复CDN插件我爱云因更换接口导致部署失败的问题 from LjyLab/v2
fix: 修复CDN插件我爱云因更换接口导致部署失败的问题
2025-03-05 23:52:44 +08:00
xiaojunnuo de34db3394 chore: 2025-03-05 23:51:23 +08:00
xiaojunnuo 0c2ae792ec chore: 2025-03-05 23:21:09 +08:00
xiaojunnuo a4c0b92777 chore: 2025-03-05 22:38:36 +08:00
XiaoJun b9d78135e0 Merge remote-tracking branch 'origin/v2' into v2
# Conflicts:
#	packages/ui/certd-server/src/plugins/plugin-woai/plugins/plugin-deploy-to-cdn.ts
2025-03-05 21:23:41 +08:00
XiaoJun 5641c19502 fix: 修复CDN插件我爱云因更换接口导致部署失败的问题 2025-03-05 21:20:39 +08:00
XiaoJun 0110dfdb70 fix: 修复CDN插件我爱云因更换接口导致部署失败的问题 2025-03-05 21:02:14 +08:00
GitHub Actions Bot 140606744b 🔱: [client] sync upgrade with 5 commits [trident-sync]
build: publish success
perf: antdv 异步加载,加快首页打开速度
perf: 精简lodash
chore: 兼容手机版
2025-03-04 19:24:24 +00:00
GitHub Actions Bot 335d175d57 🔱: [client] sync upgrade with 7 commits [trident-sync]
chore:
Merge branch 'vben'

# Conflicts:
#	package.json
perf: antdv示例改成使用vben框架
chore: vben
chore: vben
chore: vben
2025-03-03 19:24:51 +00:00
xiaojunnuo 779db9da70 perf: 是否允许爬虫爬取增加ui设置选项 2025-02-27 00:10:07 +08:00
xiaojunnuo 5d29a08ab7 chore: robots.txt 2025-02-26 23:57:52 +08:00
xiaojunnuo 1fe3365e10 fix: 修复webhook headers value中带等号是解析错误的bug
https://github.com/certd/certd/issues/316
2025-02-26 21:19:58 +08:00
xiaojunnuo f0584c88e8 build: publish 2025-02-25 01:08:54 +08:00
xiaojunnuo c7620dfc48 build: trigger build image 2025-02-25 01:08:36 +08:00
xiaojunnuo 5d6a945763 v1.30.6 2025-02-25 01:05:51 +08:00
xiaojunnuo 4fe5939d0b build: prepare to build 2025-02-25 01:03:46 +08:00
xiaojunnuo bcaf54d4cb perf: 支持部署到阿里云FC3.0 2025-02-25 01:02:29 +08:00
xiaojunnuo 44d43f45cb perf: 支持新版本LeCDN 2025-02-24 18:07:08 +08:00
GitHub Actions Bot de26ee9383 🔱: [client] sync upgrade with 2 commits [trident-sync]
build: publish success
2025-02-23 19:23:42 +00:00
GitHub Actions Bot d442462952 🔱: [client] sync upgrade with 2 commits [trident-sync]
build: publish success
2025-02-22 19:23:46 +00:00
GitHub Actions Bot 558fc9f306 🔱: [client] sync upgrade with 2 commits [trident-sync]
fix: 修复4.2.x版本antdv导致modal全屏无效的bug
2025-02-20 19:24:20 +00:00
xiaojunnuo 9f0ee219d0 perf: 上传到阿里云证书名称后缀增加毫秒时间戳 2025-02-20 11:13:46 +08:00
xiaojunnuo 5164116bde perf: 禁止爬虫爬取本网站 2025-02-18 15:23:56 +08:00
xiaojunnuo 02404bc97e docs: deploy 2025-02-17 17:38:22 +08:00
xiaojunnuo 0ebdb037b5 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-02-17 17:37:57 +08:00
xiaojunnuo a8b60c32b3 docs: deploy 2025-02-17 17:27:07 +08:00
xiaojunnuo 416621d503 docs: deploy 2025-02-17 17:18:41 +08:00
xiaojunnuo b917eb447c chore: 2025-02-14 15:36:02 +08:00
xiaojunnuo 2ce3c71b88 chore: 2025-02-14 15:26:34 +08:00
xiaojunnuo ca13bfa5f8 build: publish 2025-02-14 15:10:22 +08:00
xiaojunnuo d8812196f3 build: trigger build image 2025-02-14 15:10:01 +08:00
xiaojunnuo 4e750bdbe1 v1.30.5 2025-02-14 15:07:36 +08:00
xiaojunnuo f59a37b77c build: prepare to build 2025-02-14 15:05:55 +08:00
xiaojunnuo ea3db93db9 chore: 2025-02-14 15:05:13 +08:00
xiaojunnuo 26f2c9fea2 v1.30.4 2025-02-14 14:58:54 +08:00
xiaojunnuo 290cc0d1bb build: prepare to build 2025-02-14 14:56:19 +08:00
xiaojunnuo 78044c062e fix: 适配最新版1panel密码编码方式 2025-02-14 14:55:15 +08:00
xiaojunnuo 3a2f653229 build: publish 2025-02-14 01:49:16 +08:00
xiaojunnuo bbe22e6f36 build: trigger build image 2025-02-14 01:48:53 +08:00
xiaojunnuo d4474ff0fb v1.30.3 2025-02-14 01:46:30 +08:00
xiaojunnuo c7979f1be5 build: prepare to build 2025-02-14 01:44:45 +08:00
xiaojunnuo ada0b7106e fix: 修复新版本1panel密码需要加密,无法登录的问题 2025-02-14 01:43:52 +08:00
xiaojunnuo c3a5542935 fix: 修复腾讯云CLB多域名同证书部署报错的bug
https://github.com/certd/certd/issues/314
2025-02-14 00:42:25 +08:00
GitHub Actions Bot 2eebb3388a 🔱: [client] sync upgrade with 2 commits [trident-sync]
chore:
2025-02-12 19:24:12 +00:00
xiaojunnuo 287c3688fd build: publish 2025-02-09 16:12:21 +08:00
xiaojunnuo 3948b3993f build: trigger build image 2025-02-09 16:12:04 +08:00
xiaojunnuo bcacafeb84 v1.30.2 2025-02-09 16:09:40 +08:00
xiaojunnuo 2193ddfabe build: prepare to build 2025-02-09 16:07:13 +08:00
xiaojunnuo 29ae0b7dca build: prepare to build 2025-02-09 16:06:03 +08:00
xiaojunnuo 904837df12 chore: 2025-02-09 16:05:36 +08:00
xiaojunnuo 00c2da444f fix: 修复cloudflare删除解析记录报错的bug 2025-02-09 15:50:08 +08:00
xiaojunnuo 13d0dde9f4 chore: 2025-02-08 22:21:45 +08:00
xiaojunnuo 548f2a960c chore: 增加切换数据库文档 2025-02-08 22:16:27 +08:00
GitHub Actions Bot fe4367c580 🔱: [client] sync upgrade with 2 commits [trident-sync]
chore:
2025-01-24 19:24:01 +00:00
xiaojunnuo 71803f891d chore: 2025-01-24 20:02:11 +08:00
xiaojunnuo 75a38d95f3 perf: 上传自定义证书 2025-01-24 18:04:17 +08:00
xiaojunnuo c89686a2fd fix: 当前置任务被删除时进行校验 2025-01-24 16:35:40 +08:00
xiaojunnuo 398323533a chore: 2025-01-22 15:43:37 +08:00
xiaojunnuo a773872cf3 chore: 2025-01-22 15:35:46 +08:00
xiaojunnuo 2eb0d55f92 build: publish 2025-01-20 23:40:07 +08:00
xiaojunnuo 54bd1ad0fa build: trigger build image 2025-01-20 23:39:49 +08:00
xiaojunnuo 089825d360 v1.30.1 2025-01-20 23:37:28 +08:00
xiaojunnuo 333629caff build: prepare to build 2025-01-20 23:35:50 +08:00
xiaojunnuo d715cd1129 chore: 2025-01-20 23:30:54 +08:00
xiaojunnuo 15d6eaf553 perf: http方式校验,选择sftp时,支持修改文件访问权限比如777 2025-01-20 23:29:03 +08:00
xiaojunnuo ae5dfc3bee fix: 修复tg消息内容中存在.和*就会发送失败的bug 2025-01-20 18:45:07 +08:00
xiaojunnuo 6ab83b662a fix: 修复部署到阿里云ALB、NLB插件加载混乱的bug 2025-01-20 18:18:16 +08:00
xiaojunnuo 52ae6902d2 perf: 创建流水线时,默认成功时也发送通知 2025-01-20 16:20:14 +08:00
xiaojunnuo c30adb2671 chore: 2025-01-20 11:55:13 +08:00
xiaojunnuo e95d29f446 fix: 修复腾讯clb重复执行会报错的bug 2025-01-20 11:53:52 +08:00
xiaojunnuo c20bb38b06 build: publish 2025-01-20 00:39:15 +08:00
xiaojunnuo d0213d275d build: trigger build image 2025-01-20 00:38:54 +08:00
xiaojunnuo 9a78dad576 v1.30.0 2025-01-20 00:36:25 +08:00
xiaojunnuo 880f1aeb66 build: prepare to build 2025-01-20 00:34:48 +08:00
xiaojunnuo e764eabd97 chore: 2025-01-20 00:34:33 +08:00
xiaojunnuo 235f9cf854 build: prepare to build 2025-01-20 00:30:50 +08:00
xiaojunnuo d10795ecd9 perf: 支持部署证书到proxmox 2025-01-20 00:29:59 +08:00
xiaojunnuo a7e45dace0 chore: 2025-01-19 23:27:39 +08:00
xiaojunnuo 7e482f798c fix: 修复查看任务日志偶发性无法自动滚动底部的bug 2025-01-19 23:13:30 +08:00
xiaojunnuo c085bac5d8 perf: 支持部署到阿里云NLB、SLB 2025-01-19 22:55:46 +08:00
xiaojunnuo 653940a0ca perf: 支持部署到阿里云ALB 2025-01-19 15:31:37 +08:00
xiaojunnuo 417d37b199 perf: 支持部署到腾讯云直播 2025-01-19 14:12:16 +08:00
xiaojunnuo 3b2107a4f1 chore: 2025-01-19 01:21:58 +08:00
xiaojunnuo 7f6d03c02a chore: 2025-01-19 01:07:20 +08:00
xiaojunnuo 5fc07d4dd4 chore: 2025-01-19 00:40:43 +08:00
xiaojunnuo 3fb9524cbd Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-01-19 00:37:26 +08:00
xiaojunnuo e79703e49b chore: 2025-01-19 00:33:34 +08:00
xiaojunnuo b829bd1341 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-01-16 11:49:38 +08:00
xiaojunnuo 8cbab7525a pref: 优化重置管理员密码后打印出用户名,避免忘记用户名的情况 2025-01-16 11:49:09 +08:00
xiaojunnuo 93b37a89c9 chore: 2025-01-15 23:13:17 +08:00
xiaojunnuo 87620b9072 chore: 2025-01-15 22:58:11 +08:00
xiaojunnuo 6877b865a7 chore: 2025-01-15 01:26:39 +08:00
xiaojunnuo d6b3142a02 chore: 2025-01-15 01:26:23 +08:00
xiaojunnuo 14cdb54212 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-01-15 01:06:16 +08:00
xiaojunnuo 91e7f45a1c perf: 证书仓库 2025-01-15 01:05:34 +08:00
xiaojunnuo 709105120c Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-01-14 15:09:16 +08:00
xiaojunnuo 865f26d75c fix: 修复namesilo ttl太短的问题 2025-01-14 14:47:03 +08:00
xiaojunnuo 52a4fd3318 feat: 支持open api接口,根据域名获取证书 2025-01-14 00:54:30 +08:00
GitHub Actions Bot e70732c9ac 🔱: [client] sync upgrade with 2 commits [trident-sync]
build: publish success
2025-01-12 19:23:54 +00:00
xiaojunnuo c6c269f9e4 chore: 2025-01-12 21:49:17 +08:00
GitHub Actions Bot 42ad04cabd 🔱: [client] sync upgrade with 2 commits [trident-sync]
perf: 支持图标选择器
2025-01-09 19:24:07 +00:00
xiaojunnuo 2a8eeaf240 build: publish 2025-01-07 23:19:36 +08:00
xiaojunnuo f7dcff5113 build: trigger build image 2025-01-07 23:19:12 +08:00
xiaojunnuo 98a81385a6 v1.29.5 2025-01-07 23:16:46 +08:00
xiaojunnuo 7bdc277b58 build: prepare to build 2025-01-07 23:14:55 +08:00
xiaojunnuo f57116d2be fix: 修复复制到本机插件,pfx格式复制时报错的bug 2025-01-07 23:13:44 +08:00
xiaojunnuo 85c99f7f80 fix: 修复授权管理,点击了查看原文按钮后,无法修改值的bug 2025-01-07 11:00:04 +08:00
xiaojunnuo 75081ceac3 build: publish 2025-01-07 00:02:42 +08:00
xiaojunnuo 65da3ca298 build: trigger build image 2025-01-07 00:02:21 +08:00
xiaojunnuo 94509c64b9 v1.29.4 2025-01-06 23:59:56 +08:00
xiaojunnuo 4f36d94726 build: prepare to build 2025-01-06 23:56:50 +08:00
xiaojunnuo 05c284b999 docs: 文档 2025-01-06 23:55:41 +08:00
xiaojunnuo 635b042690 perf: 优化腾讯云CLB插件,支持非sni情况,sni情况支持填写多个域名 2025-01-06 23:47:08 +08:00
xiaojunnuo 1cb4a539cc fix: 修复站点监控域名校验无法通过的bug 2025-01-06 23:08:16 +08:00
xiaojunnuo 46b87250b2 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2025-01-06 22:12:42 +08:00
xiaojunnuo 1a05355e54 docs: payments文档 2025-01-06 22:11:07 +08:00
xiaojunnuo c81c17d17b chore: 2025-01-06 15:32:14 +08:00
xiaojunnuo 7b4f8d31e8 chore: db transform text改成longtext 2025-01-06 09:39:44 +08:00
xiaojunnuo 5cef28c5bd build: publish 2025-01-05 01:14:01 +08:00
xiaojunnuo 6e68da7936 build: trigger build image 2025-01-05 01:13:39 +08:00
xiaojunnuo 0c130f9596 v1.29.3 2025-01-05 01:11:06 +08:00
xiaojunnuo f156f4cb4e build: prepare to build 2025-01-05 01:09:09 +08:00
xiaojunnuo fa3bfa2ea8 chore: 2025-01-05 01:07:04 +08:00
xiaojunnuo ab5c7bb75a chore: 2025-01-05 01:02:41 +08:00
xiaojunnuo 81b322cd60 chore: 2025-01-04 20:17:08 +08:00
xiaojunnuo e6dd7cd54a perf: 优化站点证书检查页面,检查增加3次重试 2025-01-04 20:10:00 +08:00
xiaojunnuo aa1da7c11a chore: 2025-01-04 01:46:49 +08:00
xiaojunnuo 3f74d4d9e5 perf: http校验方式,支持七牛云oss、阿里云oss、腾讯云cos 2025-01-04 01:45:24 +08:00
xiaojunnuo 297d09c5ad docs: 增加支付配置说明 2025-01-03 16:50:16 +08:00
xiaojunnuo 07e1dbb4cc chore: 2025-01-03 16:12:37 +08:00
xiaojunnuo 3c6618b4fc chore: 2025-01-03 09:27:51 +08:00
xiaojunnuo 54db744282 perf: 优化acme sdk 2025-01-03 01:17:20 +08:00
xiaojunnuo 03b751fa13 chore: 2025-01-03 00:12:15 +08:00
xiaojunnuo ec342708b2 chore: 2025-01-02 17:48:54 +08:00
xiaojunnuo 405591c5d0 perf: 支持http校验方式申请证书 2025-01-02 00:28:13 +08:00
GitHub Actions Bot 7f5e89d489 🔱: [client] sync upgrade with 3 commits [trident-sync]
build: publish success
chore:
2024-12-31 19:23:58 +00:00
GitHub Actions Bot c504f33b1f 🔱: [client] sync upgrade with 3 commits [trident-sync]
build: publish success
chore:
2024-12-28 19:23:55 +00:00
xiaojunnuo 67af67b92d chore: 2024-12-27 22:40:07 +08:00
xiaojunnuo 8644348fc4 fix: 修复系统级授权无法查看密钥的bug 2024-12-26 23:15:35 +08:00
xiaojunnuo 00dc226bd2 chore: auto-upgrade 2024-12-26 16:14:08 +08:00
xiaojunnuo b6b7c3e2e0 chore: storage存储的数据量优化,去掉logs信息 2024-12-26 13:48:55 +08:00
xiaojunnuo 246ef348d3 chore: mysql text 改成longtext 2024-12-26 13:26:10 +08:00
xiaojunnuo 3e9ba1a30a docs: 2024-12-26 09:02:04 +08:00
xiaojunnuo 598cde4865 build: publish 2024-12-26 01:56:08 +08:00
xiaojunnuo fc4a716b4e build: trigger build image 2024-12-26 01:55:50 +08:00
xiaojunnuo ed5634ff83 v1.29.2 2024-12-26 01:53:32 +08:00
xiaojunnuo 884af1ea62 build: prepare to build 2024-12-26 01:51:48 +08:00
xiaojunnuo 01ad62df16 build: prepare to build 2024-12-26 01:49:48 +08:00
xiaojunnuo 512a667e44 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-12-26 01:47:50 +08:00
xiaojunnuo d0e841f7de build: publish 2024-12-26 01:43:52 +08:00
xiaojunnuo c04641d835 build: trigger build image 2024-12-26 01:43:35 +08:00
xiaojunnuo f9128d4d45 v1.29.1 2024-12-26 01:41:20 +08:00
xiaojunnuo 2026211622 build: prepare to build 2024-12-26 01:39:23 +08:00
xiaojunnuo 9d0f21a9e5 chore: 2024-12-26 01:36:01 +08:00
xiaojunnuo 26adf7d437 perf: 优化插件名称显示 2024-12-26 01:32:52 +08:00
xiaojunnuo d2d6f12218 fix: 修复某处金额转换丢失精度的bug 2024-12-26 01:01:28 +08:00
xiaojunnuo b31c0b6a8d chore: 2024-12-25 23:24:42 +08:00
xiaojunnuo 472f06c2d1 perf: 用户创建证书流水线没有购买套餐或者超限时提前报错 2024-12-25 23:20:07 +08:00
xiaojunnuo f5ec9870fd fix: 免费套餐支持购买 2024-12-25 17:05:24 +08:00
xiaojunnuo 66fb9e5f49 fix: 修复套餐关闭状态下,仍然限制用户流水线数量的bug 2024-12-25 11:42:42 +08:00
xiaojunnuo a323f3aa2c chore: 2024-12-25 10:38:48 +08:00
xiaojunnuo fe4786e168 fix: 修复新版本小红点显示错误问题 2024-12-25 09:25:27 +08:00
GitHub Actions Bot ed6a18dae7 🔱: [client] sync upgrade with 2 commits [trident-sync]
chore: 提示优化
2024-12-24 19:23:49 +00:00
xiaojunnuo 83185c8c50 chore: 2024-12-25 01:16:32 +08:00
xiaojunnuo 83ae9db02d build: publish 2024-12-25 01:07:17 +08:00
xiaojunnuo 8bf328ca94 build: trigger build image 2024-12-25 01:06:48 +08:00
xiaojunnuo 36993cb6f8 v1.29.0 2024-12-25 01:04:12 +08:00
xiaojunnuo c854415319 build: prepare to build 2024-12-25 01:02:01 +08:00
xiaojunnuo aecc1cd979 build: prepare to build 2024-12-25 00:59:27 +08:00
xiaojunnuo b2f3b0b584 build: prepare to build 2024-12-25 00:53:02 +08:00
xiaojunnuo c937f5afc7 chore: 兼容数据库 2024-12-25 00:52:39 +08:00
xiaojunnuo 2d580a26af chore:menu.meta.show参数支持 2024-12-24 23:55:50 +08:00
xiaojunnuo 4a00a3cc1b chore: 2024-12-24 23:23:02 +08:00
xiaojunnuo d3935219f2 perf: 调整创建证书表单字段的顺序 2024-12-24 23:14:12 +08:00
xiaojunnuo 040788c793 fix: 修复手机模式下,查询框被文字遮盖的bug 2024-12-24 17:52:03 +08:00
xiaojunnuo 005622307e fix: 修复左侧菜单收起时无法展开子菜单的bug 2024-12-24 17:09:06 +08:00
xiaojunnuo 8ebf95a222 perf: 同一时间只允许一个套餐生效 2024-12-24 10:39:54 +08:00
xiaojunnuo 7f596ed315 chore: 2024-12-24 01:16:27 +08:00
xiaojunnuo ffa4de6911 chore: 2024-12-24 01:12:12 +08:00
xiaojunnuo cb27d4b490 feat: 基础版不再限制流水线数量 2024-12-23 23:33:13 +08:00
xiaojunnuo bb4910f4e5 perf: 站点证书监控通知发送,每天定时检查 2024-12-23 18:11:06 +08:00
xiaojunnuo 89c7f07034 perf: 用户名支持修改 2024-12-23 14:47:27 +08:00
xiaojunnuo b150b2f034 chore: 2024-12-23 13:28:25 +08:00
xiaojunnuo 45d6347f5b feat: 支持微信支付 2024-12-23 13:27:04 +08:00
xiaojunnuo 67d762b6a5 perf: 优化证书申请跳过的状态显示,成功通知现在在跳过时不会发送 2024-12-23 00:49:56 +08:00
xiaojunnuo faa28f88f9 feat: 套餐购买支持易支付、支付宝支付 2024-12-23 00:24:31 +08:00
xiaojunnuo 9c8c7a7812 feat: 站点证书监控 2024-12-22 14:01:10 +08:00
xiaojunnuo a019956698 feat: 用户套餐,用户支付功能 2024-12-22 14:00:46 +08:00
xiaojunnuo d70e2b66a3 chore: 2024-12-20 18:04:32 +08:00
xiaojunnuo 5d568efac3 chore: suite 2024-12-20 01:00:13 +08:00
xiaojunnuo 08111f1418 chore: 2024-12-19 22:37:27 +08:00
xiaojunnuo 45839f227a chore: suite 2024-12-19 01:21:55 +08:00
xiaojunnuo 8814ffeda6 Merge branch 'v2-dev' into v2-dev-suite 2024-12-18 21:28:38 +08:00
xiaojunnuo d224c4c124 chore: 2024-12-18 21:25:39 +08:00
xiaojunnuo 549525fb37 chore: plesk ok 2024-12-18 10:22:22 +08:00
xiaojunnuo 1c8e25beb3 chore: suite 2024-12-18 09:07:52 +08:00
xiaojunnuo eda45c1528 perf: 支持plesk网站证书部署 2024-12-18 00:38:27 +08:00
xiaojunnuo 53c38cf714 perf: 支持一体证书 2024-12-17 22:50:18 +08:00
xiaojunnuo 0e7578043e chore: 2024-12-17 22:45:14 +08:00
xiaojunnuo 21f50e0b38 Merge branch 'v2' into v2-dev 2024-12-17 22:22:19 +08:00
greper 515f00c7cd docs: 自动更新方法(@coolxitech)
Update README.md
2024-12-17 10:52:30 +08:00
xiaojunnuo 8057586dc1 chore: suite first 2024-12-17 10:27:35 +08:00
酷曦科技 b101ac7c7f Update README.md
Include the Docker compose configuration file content for automatic version updates.
2024-12-17 00:06:21 +08:00
xiaojunnuo 64319937a1 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-12-13 09:51:13 +08:00
xiaojunnuo 1c0cfd6769 build: publish 2024-12-13 00:19:43 +08:00
xiaojunnuo f8e17d5285 build: trigger build image 2024-12-13 00:19:23 +08:00
xiaojunnuo d4385ad8a5 v1.28.4 2024-12-13 00:17:10 +08:00
xiaojunnuo da07ce419f build: prepare to build 2024-12-13 00:08:18 +08:00
xiaojunnuo 714e0206c4 build: prepare to build 2024-12-13 00:07:32 +08:00
xiaojunnuo 40da82666a chore: 2024-12-12 18:06:07 +08:00
xiaojunnuo 79f7ec4672 perf: 群晖支持6.x 2024-12-12 17:55:54 +08:00
xiaojunnuo 0f5c69040b fix: 修复证书成功通知发送失败的bug 2024-12-12 17:28:33 +08:00
xiaojunnuo c9d1c45d97 docs: 证书成功同志 2024-12-12 16:49:40 +08:00
xiaojunnuo ea8fdb120c docs: 证书说明 2024-12-12 16:45:40 +08:00
xiaojunnuo f6fa830ffe docs: 2024-12-12 12:37:38 +08:00
xiaojunnuo 992e50c014 docs: 2024-12-12 12:30:26 +08:00
xiaojunnuo bd705d91ba build: publish 2024-12-12 12:08:12 +08:00
xiaojunnuo 2656394195 build: trigger build image 2024-12-12 12:07:54 +08:00
xiaojunnuo c8df9e698c v1.28.3 2024-12-12 12:06:46 +08:00
xiaojunnuo 19b78a1d2f build: prepare to build 2024-12-12 12:05:16 +08:00
xiaojunnuo 8039e8baf8 perf: 支持腾讯虚拟机开关机(@wujingke) 2024-12-12 11:50:01 +08:00
xiaojunnuo 9c5142c73c chore: 2024-12-12 11:42:46 +08:00
xiaojunnuo 8e3dcdde17 chore: tke挪出来 2024-12-11 22:17:11 +08:00
xiaojunnuo 34023adafb chore: 2024-12-11 17:40:34 +08:00
xiaojunnuo 79914e8d08 chore: 2024-12-11 15:06:02 +08:00
xiaojunnuo 454fbda581 perf: 点击版本红点按钮,跳转到升级帮助页面 2024-12-11 13:59:00 +08:00
xiaojunnuo 2c32703e6b chore: 2024-12-11 12:01:06 +08:00
xiaojunnuo b561535626 Merge branch 'v2' into v2-dev 2024-12-11 11:48:34 +08:00
xiaojunnuo 1fc684d995 chore: 2024-12-11 11:48:05 +08:00
greper 7595d9fdfd pref: 腾讯云实例开机插件( @wujingke )
pr:  #265
2024-12-11 11:44:53 +08:00
w 3bf7732a21 腾讯云实例开机插件 2024-12-11 11:40:11 +08:00
xiaojunnuo 71b5aaf8ab chore: 2024-12-11 11:38:28 +08:00
xiaojunnuo e1e5347476 chore: 2024-12-11 11:37:52 +08:00
xiaojunnuo cdcdb6a2d9 chore: 2024-12-11 11:36:00 +08:00
xiaojunnuo ec79104ad2 chore: 2024-12-11 11:33:33 +08:00
xiaojunnuo ff083ce684 perf: 通知标题优化 2024-12-11 11:30:32 +08:00
xiaojunnuo 0f051e322e docs: upgrade 2024-12-11 10:25:16 +08:00
xiaojunnuo 657a2ae032 fix: 修复没有配置eab时,报order无法读取的问题 2024-12-11 09:30:21 +08:00
xiaojunnuo 0db3570026 chore: 2024-12-10 18:30:32 +08:00
xiaojunnuo 0ae39f160a perf: 支持aws cloudfront 2024-12-10 18:28:48 +08:00
xiaojunnuo b45977c29a fix: 修复授权被删除后,无法清空的bug 2024-12-10 17:22:43 +08:00
xiaojunnuo b7f5740c57 fix: mysql下access.setting字段改成text 2024-12-10 00:19:35 +08:00
xiaojunnuo 21e23369d3 chore: 2024-12-09 23:08:40 +08:00
xiaojunnuo fca598991a chore: 2024-12-09 22:56:18 +08:00
xiaojunnuo aa5b909486 build: publish 2024-12-09 22:53:08 +08:00
xiaojunnuo 0a888cf51a build: trigger build image 2024-12-09 22:52:44 +08:00
xiaojunnuo e5c164065c v1.28.2 2024-12-09 22:45:02 +08:00
xiaojunnuo 8bc241ca14 build: prepare to build 2024-12-09 22:42:55 +08:00
xiaojunnuo 15beb79631 chore: 2024-12-09 22:40:17 +08:00
xiaojunnuo fef1305e41 chore: 2024-12-09 21:44:37 +08:00
xiaojunnuo 498cf34999 fix: 修复创建流水线通知设置无效的bug 2024-12-09 18:04:45 +08:00
xiaojunnuo 7cde1fdc4a perf: 支持mysql 2024-12-09 17:47:01 +08:00
xiaojunnuo 228fdf0a0d perf: 优化数据表索引 2024-12-09 15:59:14 +08:00
xiaojunnuo fdb5ea0ff4 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-12-09 09:34:12 +08:00
xiaojunnuo a0e838d1ee fix: 修复流水线分组可以被所有人看见的bug 2024-12-09 02:24:30 +08:00
xiaojunnuo 30ddf5ec41 build: publish 2024-12-09 01:56:13 +08:00
xiaojunnuo cfd3b7b3ae build: trigger build image 2024-12-09 01:55:54 +08:00
xiaojunnuo a6cd532035 v1.28.1 2024-12-09 01:53:42 +08:00
xiaojunnuo b1db952fcb build: prepare to build 2024-12-09 01:50:40 +08:00
xiaojunnuo 51e8bab352 build: prepare to build 2024-12-09 01:49:03 +08:00
xiaojunnuo 618ec93786 perf: 支持邀请奖励 2024-12-09 01:40:55 +08:00
xiaojunnuo a673f9c8ca chore: 2024-12-09 01:39:11 +08:00
xiaojunnuo e8c9c2a47d perf: cname value优化 2024-12-09 01:31:16 +08:00
xiaojunnuo aafa5d5f90 chore: 1 2024-12-09 01:25:23 +08:00
xiaojunnuo 8b9c47daf1 perf: favicon支持自定义 2024-12-09 00:12:15 +08:00
xiaojunnuo 4042577c0b chore: 2024-12-08 02:30:25 +08:00
xiaojunnuo 6c9f9940e3 chore: 2024-12-07 16:16:50 +08:00
xiaojunnuo 8f7b3f29ce chore: 2024-12-07 16:13:00 +08:00
xiaojunnuo 6bca7333c9 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-12-07 15:20:08 +08:00
xiaojunnuo 3dfeeec899 fix: 修复cname排查方法 nslookup命令显示黑色的问题 2024-12-07 15:19:28 +08:00
xiaojunnuo 138dc286f6 chore: 删除cloudflare cdn插件 2024-12-05 13:34:21 +08:00
xiaojunnuo 07cee2aadf chore: 2024-12-05 12:10:31 +08:00
xiaojunnuo 1b267813c9 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-12-05 11:10:39 +08:00
xiaojunnuo 96b5981f8c chore: 2024-12-05 11:09:14 +08:00
xiaojunnuo a2fd9559c5 chore: 2024-12-04 23:05:12 +08:00
xiaojunnuo 3f06419d47 chore: 2024-12-04 22:27:48 +08:00
xiaojunnuo 2aefca3813 chore: 2024-12-04 12:36:17 +08:00
GitHub Actions Bot 844c4bf983 🔱: [client] sync upgrade with 3 commits [trident-sync]
build: publish success
fix: 修复表单全屏的bug
2024-12-03 19:26:18 +00:00
xiaojunnuo 6aa487269c perf: 新增server酱3通知 2024-12-03 10:32:47 +08:00
GitHub Actions Bot 43961c1c18 🔱: [client] sync upgrade with 3 commits [trident-sync]
perf: rowHandle按钮支持render,删除按钮提供popcomfirm风格示例
perf: table-select open支持context参数
2024-12-02 19:26:32 +00:00
xiaojunnuo 393ea27fa4 chore: 2024-12-03 00:55:37 +08:00
xiaojunnuo febe87508c chore: 2024-12-03 00:43:43 +08:00
xiaojunnuo 30db27980c Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-12-03 00:35:51 +08:00
xiaojunnuo 4e768ec50f chore: 2024-12-03 00:35:34 +08:00
xiaojunnuo 4467e09426 chore: 2024-12-03 00:07:30 +08:00
xiaojunnuo 66b95d52fd Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-12-02 23:21:43 +08:00
xiaojunnuo 1398417829 chore: 2024-12-02 23:17:40 +08:00
xiaojunnuo 58dd5e2750 chore: 2024-12-02 18:15:27 +08:00
xiaojunnuo 70210f567a chore: 2024-12-02 16:43:09 +08:00
xiaojunnuo 49e7dc56e1 perf: 新增七牛云插件分组 2024-12-02 16:35:31 +08:00
xiaojunnuo 72cc586f88 chore: 2024-12-02 15:19:13 +08:00
xiaojunnuo 94fa77fcd2 perf: 支持易发云短信 2024-12-02 15:11:29 +08:00
xiaojunnuo 2c0cbdd29e perf: 通知选择器优化 2024-12-02 14:06:55 +08:00
xiaojunnuo 68a503796c build: publish 2024-12-01 03:25:17 +08:00
xiaojunnuo 48cf28dd7f build: trigger build image 2024-12-01 03:24:59 +08:00
xiaojunnuo 7e103b7744 v1.28.0 2024-12-01 03:23:00 +08:00
xiaojunnuo 79d637c9bf build: prepare to build 2024-12-01 03:20:57 +08:00
xiaojunnuo 7c8d551fe1 build: prepare to build 2024-12-01 03:18:50 +08:00
xiaojunnuo 72862c8be8 chore: 2024-12-01 03:18:36 +08:00
xiaojunnuo 4f1bb48bf7 build: prepare to build 2024-12-01 03:12:08 +08:00
xiaojunnuo 15740a6d8a chore: 2024-12-01 03:09:29 +08:00
xiaojunnuo 2bc3456400 chore: 2024-12-01 03:02:59 +08:00
xiaojunnuo 5a607efa9f chore: 2024-12-01 02:17:29 +08:00
xiaojunnuo 1c8163dd82 chore: 2024-12-01 02:14:49 +08:00
xiaojunnuo 327a919958 chore: 2024-12-01 02:10:57 +08:00
xiaojunnuo a847e66c4f perf: 流水线支持批量修改分组,批量删除 2024-12-01 02:10:40 +08:00
xiaojunnuo 0772d3b3fd perf: 首页新增修改密码提示 2024-11-30 22:35:26 +08:00
xiaojunnuo 61d6b06c56 chore: 2024-11-30 17:38:41 +08:00
xiaojunnuo 1534f45236 perf: 部署到IIS插件 2024-11-30 17:36:47 +08:00
xiaojunnuo aedc462135 perf: 选项显示图标 2024-11-30 01:57:09 +08:00
xiaojunnuo 7b55337c5e feat: 手机号登录、邮箱验证码注册 2024-11-29 19:00:05 +08:00
xiaojunnuo 87bbf6f140 perf: 取消docker-compose的dns配置 2024-11-29 13:41:02 +08:00
xiaojunnuo 0d8913ea2f perf: 支持威联通证书部署 2024-11-29 11:57:41 +08:00
xiaojunnuo 387bcc5fa4 perf: 支持短信验证码登录 2024-11-28 17:36:45 +08:00
xiaojunnuo 5a20242111 perf: 优化七牛云cdn,获取域名列表可以选择 2024-11-28 16:14:52 +08:00
xiaojunnuo 196f7d9dc2 perf: 优化七牛云cdn部署,保持http2和forceHttp设置,当未开启https时,主动开启https 2024-11-28 16:05:52 +08:00
xiaojunnuo 954b6df360 perf: 登录失败增加重试次数限制及冷却时间 2024-11-28 11:10:57 +08:00
xiaojunnuo 8002a56efc perf: 优化证书申请成功通知发送方式 2024-11-27 12:36:28 +08:00
xiaojunnuo 7e5ea0cee0 fix: 修复自定义webhook contextType的bug 2024-11-27 09:50:01 +08:00
GitHub Actions Bot 7b42d7252e 🔱: [client] sync upgrade with 5 commits [trident-sync]
build: publish success
perf: 增加card列表示例
fix: 修复antdv4新页面打开示例不显示表单的bug
chore:
2024-11-26 19:26:27 +00:00
xiaojunnuo 3254afc756 perf: 自定义webhook显示详细的错误信息 2024-11-26 23:11:20 +08:00
xiaojunnuo e3553d4c8c chore: 2024-11-26 18:36:28 +08:00
xiaojunnuo 7be14ee905 build: publish 2024-11-26 15:29:27 +08:00
xiaojunnuo fc234314b7 build: trigger build image 2024-11-26 15:28:58 +08:00
xiaojunnuo cf19363092 v1.27.9 2024-11-26 15:27:40 +08:00
xiaojunnuo 589b38c75d build: prepare to build 2024-11-26 15:25:43 +08:00
xiaojunnuo 90a8f818bf chore: 2024-11-26 15:21:22 +08:00
xiaojunnuo 642f57ff6d perf: 通知支持vocechat、bark、telegram、discord、slack 2024-11-26 15:13:57 +08:00
xiaojunnuo cbccd9e3d0 perf: 通知支持自定义webhook、anpush、iyuu、server酱 2024-11-26 11:12:22 +08:00
xiaojunnuo cf7a3e6f70 build: publish 2024-11-26 02:09:36 +08:00
xiaojunnuo 8993687c37 build: trigger build image 2024-11-26 02:09:11 +08:00
xiaojunnuo ff1d7b115a v1.27.8 2024-11-26 02:07:06 +08:00
xiaojunnuo 98bd5149e9 build: prepare to build 2024-11-26 02:04:39 +08:00
xiaojunnuo 4efa2e0c6a build: prepare to build 2024-11-26 02:03:00 +08:00
xiaojunnuo f805036054 build: prepare to build 2024-11-26 02:02:34 +08:00
xiaojunnuo 3c723c4325 chore: 2024-11-26 02:02:18 +08:00
xiaojunnuo 14a83f6b52 build: publish 2024-11-26 01:43:35 +08:00
xiaojunnuo ff0686670c build: trigger build image 2024-11-26 01:43:14 +08:00
xiaojunnuo 3198d07553 v1.27.7 2024-11-26 01:41:21 +08:00
xiaojunnuo c7e2896326 build: prepare to build 2024-11-26 01:39:40 +08:00
xiaojunnuo 0db5381a8b chore: 2024-11-26 01:39:19 +08:00
xiaojunnuo cb86151deb chore: 2024-11-26 01:21:49 +08:00
xiaojunnuo d6c7326467 chore: 2024-11-26 01:14:16 +08:00
xiaojunnuo 92c6c45e77 chore: 2024-11-25 23:48:04 +08:00
xiaojunnuo c6fff4950d chore: 2024-11-25 23:24:12 +08:00
xiaojunnuo 81a8123725 perf: 谷歌EAB绑定邮箱改成必填 2024-11-25 18:26:23 +08:00
xiaojunnuo d0d3e74d55 chore: 2024-11-25 11:38:49 +08:00
xiaojunnuo b54ae272eb perf: 通知渠道支持测试按钮 2024-11-25 11:35:16 +08:00
xiaojunnuo 3af6d96e6e fix: 修复CNAME时子域名级数超出限制的问题 2024-11-25 10:57:27 +08:00
xiaojunnuo f38b33ea39 chore: 2024-11-25 09:51:45 +08:00
xiaojunnuo dd2b0a1595 chore: 2024-11-25 00:53:36 +08:00
xiaojunnuo c96fcb7afc perf: 支持部署到阿里云WAF 2024-11-24 01:40:42 +08:00
xiaojunnuo b805a29259 perf: 支持企业微信群聊机器人通知 2024-11-23 23:58:31 +08:00
xiaojunnuo 5450246f06 chore: 2024-11-23 00:25:30 +08:00
xiaojunnuo d9a00eeaf7 perf: 通知管理 2024-11-22 17:12:39 +08:00
xiaojunnuo 131ed13df1 docs: 2024-11-22 10:05:21 +08:00
xiaojunnuo 5f8d70028a chore: 2024-11-20 18:36:38 +08:00
xiaojunnuo c222b702c3 chore: 2024-11-20 18:12:10 +08:00
xiaojunnuo de43391e4c perf: 华为云密钥获取提示及访问链接 2024-11-20 13:58:41 +08:00
xiaojunnuo 547c0b8399 docs: 2024-11-20 11:41:03 +08:00
xiaojunnuo fcbb5e46a1 perf: 优化插件开发,dnsProvider无需写http logger 变量 2024-11-20 11:36:39 +08:00
xiaojunnuo 7c5166c8bb Merge branch 'v2' into v2-dev 2024-11-20 11:18:35 +08:00
xiaojunnuo fab66606b3 fix: 修复关键字查询bug 2024-11-20 10:46:05 +08:00
Greper 1d143f7103 pref: deployment to cachefly and gcore plugin
Merge pull request #244 from origami-owo/v2
2024-11-19 18:26:39 +08:00
xiaojunnuo 4955fcd12a build: publish 2024-11-19 18:15:21 +08:00
xiaojunnuo 817e9663fa build: trigger build image 2024-11-19 18:15:02 +08:00
xiaojunnuo 85ca850453 v1.27.6 2024-11-19 18:12:55 +08:00
xiaojunnuo 3baefb2b60 build: prepare to build 2024-11-19 18:10:17 +08:00
xiaojunnuo ffea5a0e02 build: prepare to build 2024-11-19 18:08:27 +08:00
xiaojunnuo be55695691 chore: 2024-11-19 18:07:34 +08:00
xiaojunnuo ea27c96362 Merge remote-tracking branch 'origin/v2-dev' into v2-dev 2024-11-19 17:51:34 +08:00
xiaojunnuo 7a73a01999 chore: 2024-11-19 17:49:59 +08:00
xiaojunnuo 018dee6c38 fix: 修复vip试用secret报错的bug 2024-11-19 17:43:06 +08:00
xiaojunnuo c7cf2e6f16 Merge branch 'v2-dev' into v2 2024-11-19 11:20:49 +08:00
xiaojunnuo 9ab9a6e8b0 perf: 当步骤全部都禁用时,任务本身显示删除线 2024-11-19 11:19:40 +08:00
GitHub Actions Bot 4aa136189a 🔱: [client] sync upgrade with 2 commits [trident-sync]
build: publish success
2024-11-18 19:25:37 +00:00
xiaojunnuo 67ccff3e86 build: publish 2024-11-18 22:03:19 +08:00
xiaojunnuo 40c09ce26a build: trigger build image 2024-11-18 22:02:58 +08:00
xiaojunnuo 3e0d4a0bed v1.27.5 2024-11-18 22:00:23 +08:00
xiaojunnuo e8a6d38ac6 build: prepare to build 2024-11-18 21:57:47 +08:00
xiaojunnuo 80159ecca8 perf: 支持namesilo
需要志愿者提供apikey和domain来做测试
2024-11-18 18:23:11 +08:00
xiaojunnuo c82bb730b2 chore: 2024-11-18 13:43:33 +08:00
xiaojunnuo 26dad399d5 fix: 修复Cname情况下,无法使用DNS类型的bug 2024-11-18 13:33:48 +08:00
xiaojunnuo 2689e6d6c0 fix: 修复1Panel面板本身证书更新导致判定执行失败的问题 2024-11-18 13:32:03 +08:00
xiaojunnuo 90d1b68bd6 perf: 优化腾讯云 cloudflare 重复解析记录时的返回值 2024-11-17 02:01:44 +08:00
xiaojunnuo c7c4318c11 perf: 专业版试用,无需绑定账号 2024-11-17 01:06:27 +08:00
origami d6a2e4aee9 Merge branch 'certd:v2' into v2 2024-11-16 23:32:28 +08:00
xiaojunnuo c6488b58f5 chore: registry注册到全局里面 2024-11-16 11:01:14 +08:00
GitHub Actions Bot c66802af2d 🔱: [client] sync upgrade with 2 commits [trident-sync]
fix: 修复dict-select多选情况下selected-change返回为空的bug
2024-11-15 19:25:37 +00:00
xiaojunnuo 18bfcc24ad perf: 新手导航在非编辑模式下不显示 2024-11-16 01:14:41 +08:00
xiaojunnuo d8a134fe7e Merge branch 'v2-dev' into v2 2024-11-16 00:50:30 +08:00
xiaojunnuo 989f48c47a chore: 2024-11-16 00:41:09 +08:00
xiaojunnuo 111a32b5e8 chore: 2024-11-16 00:03:18 +08:00
xiaojunnuo 993ca754b5 chore: 2024-11-16 00:00:26 +08:00
xiaojunnuo 381a37fbaa perf: 系统设置中的代理设置优化为可全局生效,环境变量中的https_proxy设置将无效 2024-11-15 23:52:18 +08:00
xiaojunnuo 0ca61b4d99 chore: 2024-11-15 23:29:04 +08:00
Greper 16748a75d5 fix: .env 读取 \r 问题
fix: .env 读取 \r 问题

Merge pull request #243 from ltxhhz/v2
2024-11-15 23:11:45 +08:00
ltxhhz 0e33dfa019 fix: .env 读取 \r 问题 2024-11-15 20:34:38 +08:00
xiaojunnuo 4a2f7ebf87 perf: 日志查看自动滚动到底部 2024-11-15 14:32:22 +08:00
xiaojunnuo e9f18b79ea docs: 2024-11-15 13:59:26 +08:00
xiaojunnuo 66629a591a fix: 修复角色无法删除的bug 2024-11-15 10:29:02 +08:00
xiaojunnuo 8f22a358cf build: publish 2024-11-14 21:55:46 +08:00
xiaojunnuo 1f5f1596e5 build: trigger build image 2024-11-14 21:55:27 +08:00
xiaojunnuo 339554bdbf v1.27.4 2024-11-14 21:53:00 +08:00
xiaojunnuo 9b6b614857 build: prepare to build 2024-11-14 21:51:23 +08:00
xiaojunnuo e6e99d4239 chore: 2024-11-14 21:50:45 +08:00
xiaojunnuo f4ae5125dc perf: 公共cname服务支持关闭 2024-11-14 18:31:17 +08:00
xiaojunnuo c3cfbd8474 fix: 修复未设置pfx密码,导致jks转换报错的bug 2024-11-14 18:06:50 +08:00
xiaojunnuo 86dd03c917 chore: 2024-11-14 18:04:59 +08:00
GitHub Actions Bot 49e65c611f 🔱: [client] sync upgrade with 3 commits [trident-sync]
build: publish success
fix: 修复1.23.0 antdv下不显示pagination的bug
2024-11-13 19:24:23 +00:00
xiaojunnuo 6410e34bf3 chore: 2024-11-14 00:48:48 +08:00
xiaojunnuo 2db7fee745 chore: 2024-11-14 00:48:20 +08:00
xiaojunnuo 4e8908e715 chore: 2024-11-14 00:42:40 +08:00
xiaojunnuo 67d8020147 chore: 2024-11-14 00:41:33 +08:00
xiaojunnuo b4b9f33b2c chore: 2024-11-14 00:25:47 +08:00
xiaojunnuo d091703dc0 chore: 降级为node20 2024-11-14 00:24:54 +08:00
xiaojunnuo 509b5291c3 chore: 2024-11-14 00:22:56 +08:00
xiaojunnuo 111a0823e9 build: publish 2024-11-14 00:20:17 +08:00
xiaojunnuo 48bc7a45a9 build: trigger build image 2024-11-14 00:19:58 +08:00
GitHub Actions Bot abf29bc164 🔱: [client] sync upgrade with 3 commits [trident-sync]
build: publish success
chore:
2024-11-11 19:23:56 +00:00
GitHub Actions Bot 08854e0ab9 🔱: [client] sync upgrade with 2 commits [trident-sync]
chore:
2024-11-07 19:24:59 +00:00
GitHub Actions Bot 575416a16d 🔱: [client] sync upgrade with 4 commits [trident-sync]
feat: 示例全面改成useFsAsync
chore:
perf: 示例改成useFsAsync
2024-11-06 19:26:07 +00:00
GitHub Actions Bot 3dd0783510 🔱: [client] sync upgrade with 5 commits [trident-sync]
build: publish success
chore:
fix: 修复tab change后清空查询表单的bug
build: publish success
2024-11-04 19:26:56 +00:00
origami fc9ac23725 Merge branch 'certd:v2' into v2 2024-11-02 01:53:20 +08:00
origami-owo 0f426b9c19 fix 2024-11-02 01:38:50 +08:00
origami-owo a7d4710702 add gcore 2024-11-02 01:33:51 +08:00
origami-owo 6946279f03 add deploy plugin cachefly 2024-10-31 13:36:49 +08:00
GitHub Actions Bot fadb1d35b3 🔱: [client] sync upgrade with 3 commits [trident-sync]
Merge remote-tracking branch 'origin/main'
fix: 修复search.formItem配置无效的bug
2024-10-30 19:26:28 +00:00
GitHub Actions Bot 27a9fc32a6 🔱: [client] sync upgrade with 2 commits [trident-sync]
perf: editable row 优化添加
2024-10-26 19:23:53 +00:00
GitHub Actions Bot 7008a408ca 🔱: [client] sync upgrade with 2 commits [trident-sync]
build: publish success
2024-10-24 19:26:31 +00:00
GitHub Actions Bot b928bb46c7 🔱: [client] sync upgrade with 7 commits [trident-sync]
build: publish success
chore:
perf: editable支持单元格插槽

https://github.com/fast-crud/fast-crud/issues/431
perf: 独立使用表单支持插槽

https://github.com/fast-crud/fast-crud/issues/435
perf: 表单支持左右插槽
chore:
2024-10-23 19:24:45 +00:00
GitHub Actions Bot 18c9c4a166 🔱: [client] sync upgrade with 3 commits [trident-sync]
build: publish success
build: publish success
2024-10-21 19:25:06 +00:00
GitHub Actions Bot 49fa01f209 🔱: [client] sync upgrade with 4 commits [trident-sync]
build: publish success
perf: 优化列设置多级表头支持级联勾选
perf: table-select支持destroyOnClose参数,以修复点击取消后,扔保留上一次选中值的bug
2024-10-13 19:27:22 +00:00
GitHub Actions Bot fe9d443100 🔱: [client] sync upgrade with 2 commits [trident-sync]
perf: 优化示例的自动调整列宽
2024-09-25 19:23:59 +00:00
GitHub Actions Bot 3dec43d8d4 🔱: [client] sync upgrade with 2 commits [trident-sync]
build: publish success
2024-09-20 19:24:53 +00:00
GitHub Actions Bot 5ab2943c3a 🔱: [client] sync upgrade with 2 commits [trident-sync]
fix: 修复search-slot错位的问题
2024-09-11 19:24:00 +00:00
GitHub Actions Bot 6e8b0eeca9 🔱: [client] sync upgrade with 2 commits [trident-sync]
fix: 修复antdv 文件上传 success事件无效的bug
2024-09-10 19:24:33 +00:00
GitHub Actions Bot d0c4dfca97 🔱: [client] sync upgrade with 2 commits [trident-sync]
perf: 全部支持拖动调整列宽
2024-08-04 19:24:18 +00:00
GitHub Actions Bot f4a11ed328 🔱: [client] sync upgrade with 2 commits [trident-sync]
chore:
2024-07-29 19:24:00 +00:00
GitHub Actions Bot b2971cf5fb 🔱: [client] sync upgrade with 2 commits [trident-sync]
chore:
2024-07-28 19:23:50 +00:00
GitHub Actions Bot f97827ec76 🔱: [client] sync upgrade with 3 commits [trident-sync]
build: publish success
Merge remote-tracking branch 'origin/main'
2024-07-15 19:23:57 +00:00
GitHub Actions Bot f230a2a94d 🔱: [client] sync upgrade with 2 commits [trident-sync]
chore: 1
2024-07-14 19:24:39 +00:00
2034 changed files with 552200 additions and 9604 deletions
+11
View File
@@ -0,0 +1,11 @@
#
# http://editorconfig.org
#
root = true
[*]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
+36
View File
@@ -0,0 +1,36 @@
---
name: Plugin Apply
about: 部署插件申请支持
title: "[Plugin] "
labels: feature
---
> > 感谢您支持certd,请按如下规范提交issue
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
# 新部署插件申请支持
## 1. 需求描述
`请在此处简要描述你的需求`
## 2. 要部署证书应用的信息
1. 应用名称:
2. 应用网址/项目地址/官方网站:
3. 管理证书界面截图(或者手动部署证书方式介绍及截图):
4. 是否有API接口,接口地址:
5. 如果没有API接口,网页登录是否需要验证码:
6. 是否可以提供测试账号?(如果可以请留下联系方式或者加作者好友)
+36
View File
@@ -0,0 +1,36 @@
---
name: DNS Provider Apply
about: 域名提供商申请支持
title: "[DNS] "
labels: feature
---
> 感谢您支持certd,请按如下规范提交issue
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
# 新域名提供商支持申请
## 1. 基本信息
请填写如下内容:
1. 域名提供商名称:
2. 管理页面地址:
3. 是否有API接口,接口地址:
4. 如果没有API接口,网页登录是否有验证码:
5. 是否可以提供测试账号?(如果可以请留下联系方式或者加作者好友)
## 2. 截图
`域名管理页面截图`
@@ -1,21 +1,28 @@
---
name: Bug Report
about: 错误或问题报告
title: "[BUG] "
labels: bug
---
> 感谢您支持certd,请按如下规范提交issue > 感谢您支持certd,请按如下规范提交issue
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues) > 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
# bug提交
## 、问题描述 ## 1、问题描述
`请在此处简要描述你所遇到的问题,必要时请贴出相关截图辅助理解和定位` `请在此处简要描述你所遇到的问题,必要时请贴出相关截图辅助理解和定位`
### 复现步骤 ### 2、复现步骤
`请描述复现问题的详细步骤` `请描述复现问题的详细步骤`
`如果非示例页面的问题,最好能提供最小复现示例的代码、或者仓库链接` `如果非示例页面的问题,最好能提供最小复现示例的代码、或者仓库链接`
### 报错截图 ### 3.报错截图
`请贴出报错日志截图` `请贴出报错日志截图`
### 效果截图 ### 4、效果截图
`请贴出效果截图` `请贴出效果截图`
#### 1. 期望效果 #### 4.1. 期望效果
#### 2. 实际效果
#### 4.2. 实际效果
+24
View File
@@ -0,0 +1,24 @@
---
name: Feature Request
about: 新需求、新特性申请支持
title: "[Feature] "
labels: feature
---
> > 感谢您支持certd,请按如下规范提交issue
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
# 新特性申请
>注意:这里仅供如果是要申请新的部署插件,请提交插件申请
## 1. 需求描述,需求背景
`请在此处简要描述你所遇到的问题,必要时请贴出相关截图辅助理解`
## 2. 期望效果
`必要时可以截图描述你的期望效果`
## 3. 你的解决方案
`如果你有解决方案,请描述你的方案`
+26 -6
View File
@@ -10,6 +10,7 @@ on:
# - cron: '17 19 * * *' # - cron: '17 19 * * *'
permissions: permissions:
contents: read contents: read
packages: write
jobs: jobs:
build-certd-image: build-certd-image:
@@ -43,7 +44,7 @@ jobs:
# cache: 'npm' # cache: 'npm'
# working-directory: ./packages/ui/certd-client # working-directory: ./packages/ui/certd-client
- run: | - run: |
npm install -g pnpm@8.15.7 npm install -g pnpm
pnpm install pnpm install
npm run build npm run build
working-directory: ./packages/ui/certd-client working-directory: ./packages/ui/certd-client
@@ -61,19 +62,38 @@ jobs:
username: ${{ secrets.aliyun_cs_username }} username: ${{ secrets.aliyun_cs_username }}
password: ${{ secrets.aliyun_cs_password }} password: ${{ secrets.aliyun_cs_password }}
- name: Login to GitHub Packages
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub - name: Login to Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
username: ${{ secrets.dockerhub_username }} username: ${{ secrets.dockerhub_username }}
password: ${{ secrets.dockerhub_password }} password: ${{ secrets.dockerhub_password }}
- name: Build default platforms # - name: Build default platforms
# uses: docker/build-push-action@v6
# with:
# platforms: linux/amd64,linux/arm64
# push: true
# context: ./packages/ui/
# tags: |
# registry.cn-shenzhen.aliyuncs.com/handsfree/certd-dev:latest
# greper/certd-dev:latest
# ghcr.io/${{ github.repository }}:dev-latest
- name: Build armv7
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
platforms: linux/amd64,linux/arm64 platforms: linux/arm/v7
push: true push: true
context: ./packages/ui/ context: ./packages/ui/
tags: | tags: |
registry.cn-shenzhen.aliyuncs.com/handsfree/certd-dev:latest registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7
greper/certd-dev:latest registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}-armv7
greper/certd:armv7
greper/certd:${{steps.get_certd_version.outputs.result}}-armv7
+32 -21
View File
@@ -10,6 +10,7 @@ on:
# - cron: '17 19 * * *' # - cron: '17 19 * * *'
permissions: permissions:
contents: read contents: read
packages: write
jobs: jobs:
build-certd-image: build-certd-image:
@@ -43,7 +44,7 @@ jobs:
# cache: 'npm' # cache: 'npm'
# working-directory: ./packages/ui/certd-client # working-directory: ./packages/ui/certd-client
- run: | - run: |
npm install -g pnpm@8.15.7 npm install -g pnpm
pnpm install pnpm install
npm run build npm run build
working-directory: ./packages/ui/certd-client working-directory: ./packages/ui/certd-client
@@ -61,6 +62,13 @@ jobs:
username: ${{ secrets.aliyun_cs_username }} username: ${{ secrets.aliyun_cs_username }}
password: ${{ secrets.aliyun_cs_password }} password: ${{ secrets.aliyun_cs_password }}
- name: Login to GitHub Packages
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub - name: Login to Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
@@ -78,27 +86,30 @@ jobs:
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}} registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}
greper/certd:latest greper/certd:latest
greper/certd:${{steps.get_certd_version.outputs.result}} greper/certd:${{steps.get_certd_version.outputs.result}}
ghcr.io/${{ github.repository }}:latest
# - name: Build armv7 ghcr.io/${{ github.repository }}:${{steps.get_certd_version.outputs.result}}
# uses: docker/build-push-action@v6 - name: Build armv7
# with:
# platforms: linux/arm/v7
# push: true
# context: ./packages/ui/
# tags: |
# registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7
# registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}-armv7
# greper/certd:armv7
# greper/certd:${{steps.get_certd_version.outputs.result}}-armv7
- name: Build agent
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
platforms: linux/amd64,linux/arm64 platforms: linux/arm/v7
push: true push: true
context: ./packages/ui/agent/ context: ./packages/ui/
tags: | tags: |
registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:latest registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7
registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:${{steps.get_certd_version.outputs.result}} registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}-armv7
greper/certd-agent:latest greper/certd:armv7
greper/certd-agent:${{steps.get_certd_version.outputs.result}} greper/certd:${{steps.get_certd_version.outputs.result}}-armv7
ghcr.io/${{ github.repository }}:armv7
ghcr.io/${{ github.repository }}:${{steps.get_certd_version.outputs.result}}-armv7
# - name: Build agent
# uses: docker/build-push-action@v6
# with:
# platforms: linux/amd64,linux/arm64
# push: true
# context: ./packages/ui/agent/
# tags: |
# registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:latest
# registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:${{steps.get_certd_version.outputs.result}}
# greper/certd-agent:latest
# greper/certd-agent:${{steps.get_certd_version.outputs.result}}
+2 -1
View File
@@ -17,11 +17,12 @@ gen
/test/*.private.* /test/*.private.*
/*.log /*.log
nohup.out
/packages/ui/*/.idea /packages/ui/*/.idea
/packages/ui/*/node_modules /packages/ui/*/node_modules
/packages/*/node_modules /packages/*/node_modules
/pnpm-lock.yaml #/pnpm-lock.yaml
tsconfig.tsbuildinfo tsconfig.tsbuildinfo
+1 -1
View File
@@ -1,2 +1,2 @@
link-workspace-packages=true link-workspace-packages=deep
prefer-workspace-packages=true prefer-workspace-packages=true
+999
View File
File diff suppressed because it is too large Load Diff
+82 -76
View File
@@ -1,21 +1,39 @@
# Certd # Certd
Certd 是一个免费全自动申请和自动部署更新SSL证书的管理系统。 [English](./README_en.md) | [中文](./README.md)
后缀d取自linux守护进程的命名风格,意为证书守护进程。
关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具 Certd® 是一个免费的全自动证书管理系统,让你的网站证书永不过期。
后缀d取自linux守护进程的命名风格,意为证书守护进程
>首创流水线申请部署证书模式,已被多个项目“借鉴”,被抄也是一种成功。
> 关于证书续期:
>* 实际上没有办法不改变证书文件本身情况下直接续期或者续签。
>* 我们所说的续期,其实就是按照全套流程重新申请一份新证书,然后重新部署上去。
>* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
> 流水线数量现已调整为无限制,欢迎大家使用
## 一、特性 ## 一、特性
本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。 本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。
* 全自动申请证书(支持所有注册商注册的域名) * 全自动申请证书(支持所有注册商注册的域名,支持DNS-01、HTTP-01、CNAME代理等多种域名验证方式
* 全自动部署更新证书(目前支持部署到主机、部署到阿里云、腾讯云等,目前已支持30+部署插件) * 全自动部署更新证书(目前支持部署到主机、阿里云、腾讯云等70+部署插件)
* 支持通配符域名/泛域名,支持多个域名打到一个证书上 * 支持通配符域名/泛域名,支持多个域名打到一个证书上,支持pem、pfx、der、jks等多种证书格式
* 邮件通知 * 邮件通知、webhook通知、企微、钉钉、飞书、anpush等多种通知方式
* 私有化部署,数据保存本地,镜像由Github Actions构建,过程公开透明 * 私有化部署,数据保存本地,安装简单快捷,镜像由Github Actions构建,过程公开透明
* 支持sqlitepostgresql数据库 * 授权加密,站点隐藏,2FA,密码防爆破等多重安全保障
* 支持SQLitePostgreSQL、MySQL多种数据库
* 开放接口支持
* 站点证书监控
* 多用户管理
* 多语言支持(中英双语切换)
* 各版本向下兼容,一键无忧升级
![](./docs/images/intro/intro.svg)
## 二、在线体验 ## 二、在线体验
@@ -55,7 +73,7 @@ https://certd.handfree.work/
-------> [点我查看详细使用步骤演示](./step.md) <-------- -------> [点我查看详细使用步骤演示](./step.md) <--------
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
更多教程请访问文档网站 [certd.docmirror.cn](https://certd.docmirror.cn/) 更多教程请访问官方文档 [certd.docmirror.cn](https://certd.docmirror.cn/guide/)
@@ -65,10 +83,12 @@ https://certd.handfree.work/
您可以根据实际情况从如下方式中选择一种方式进行私有化部署: 您可以根据实际情况从如下方式中选择一种方式进行私有化部署:
1. [宝塔面板方式部署](https://certd.docmirror.cn/guide/install/docker/) 1. 【推荐】[Docker方式部署 ](https://certd.docmirror.cn/guide/install/docker/)
2. [1Panel面板方式部署](https://certd.docmirror.cn/guide/install/1panel/) 2. 【推荐】[宝塔面板方式部署 ](https://certd.docmirror.cn/guide/install/docker/)
3. [Docker方式部署](https://certd.docmirror.cn/guide/install/docker/) 3. 【推荐】[1Panel面板方式部署](https://certd.docmirror.cn/guide/install/1panel/)
4. [源码方式部署](https://certd.docmirror.cn/guide/install/source/) 4. 【推荐】[雨云一键部署](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2) : 首充翻倍,每月仅需2.2元
[<img src="https://rainyun-apps.cn-nb1.rains3.com/materials/deploy-on-rainyun-cn.svg">](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2)
5. 【不推荐】[源码方式部署 ](https://certd.docmirror.cn/guide/install/source/)
#### Docker镜像说明: #### Docker镜像说明:
* 国内镜像地址: * 国内镜像地址:
@@ -78,56 +98,45 @@ https://certd.handfree.work/
* `https://hub.docker.com/r/greper/certd` * `https://hub.docker.com/r/greper/certd`
* `greper/certd:latest` * `greper/certd:latest`
* `greper/certd:armv7``greper/certd:[version]-armv7` * `greper/certd:armv7``greper/certd:[version]-armv7`
* GitHub Packages地址:
* `ghcr.io/certd/certd:latest`
* `ghcr.io/certd/certd:armv7``ghcr.io/certd/certd:[version]-armv7`
* 镜像构建通过`Actions`自动执行,过程公开透明,请放心使用 * 镜像构建通过`Actions`自动执行,过程公开透明,请放心使用
* [点我查看镜像构建日志](https://github.com/certd/certd/actions/workflows/build-image.yml) * [点我查看镜像构建日志](https://github.com/certd/certd/actions/workflows/build-image.yml)
![](./docs/images/action/action-build.jpg) ![](./docs/images/action/action-build.jpg)
> 注意:
## 五、 升级 > * 本应用存储的证书、授权信息等属于高度敏感数据,请做好安全防护
如果使用固定版本号 > * 请务必使用HTTPS协议访问本应用,避免被中间人攻击
1. 修改`docker-compose.yaml`中的镜像版本号 > * 请务必使用web应用防火墙防护本应用,防止XSS、SQL注入等攻击
2. 运行`docker compose up -d` 即可 > * 请务必做好服务器本身的安全防护,防止数据库泄露
> * 请务必做好数据备份,避免数据丢失
如果使用`latest`版本 > * [更多安全生产建议点我](https://certd.docmirror.cn/guide/feature/safe/)
```shell
#重新拉取镜像
docker pull registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
# 重新启动容器
docker compose down
docker compose up -d
```
> 数据默认存在`/data/certd`目录下,不用担心数据丢失
更新日志: [CHANGELOG](./CHANGELOG.md) ## 五、生态
### 1. 客户端工具 SSL-Assistant
`SSL Assistant` 是一个运行于主机上的证书部署管理助手客户端。
支持自动扫描主机`Nginx`配置,然后从`Certd`拉取证书并部署。
在不想暴露ssh主机密码情况下,该工具非常好用。
开源地址: https://github.com/Youngxj/SSL-Assistant
## 六、一些说明 ## 六、更多帮助
* 本项目ssl证书提供商为letencrypt/Google/ZeroSSL 请访问官方文档:[https://certd.docmirror.cn/](https://certd.docmirror.cn/guide/)
* 申请过程遵循acme协议
* 需要验证域名所有权,一般有两种方式(目前本项目仅支持dns-01) * 升级方法:[升级方法](https://certd.docmirror.cn/guide/install/upgrade/)
* http-01: 在网站根目录下放置一份txt文件 * 常见问题:[忘记密码](https://certd.docmirror.cn/guide/use/forgotpasswd/)
* dns-01: 需要给域名添加txt解析记录,通配符域名只能用这种方式 * 多数据库:[多数据库配置](https://certd.docmirror.cn/guide/install/database/)
* 证书续期: * 站点安全:[站点安全特性](https://certd.docmirror.cn/guide/feature/safe/)
* 实际上没有办法不改变证书文件本身情况下直接续期或者续签。 * 更新日志:[CHANGELOG](./CHANGELOG.md)
* 我们所说的续期,其实就是按照全套流程重新申请一份新证书,然后重新部署上去。
* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
* 设置每天自动运行,当证书过期前20天,会自动重新申请证书并部署
## 七、不同平台的设置说明 ## 七、联系作者
* 已迁移到新的文档网站,请到常见问题章节查看
* [最新文档站链接 https://certd.docmirror.cn](https://certd.docmirror.cn/)
## 八、问题处理
### 7.1 忘记管理员密码
[重置管理员密码方法](https://certd.docmirror.cn/guide/use/forgotpasswd/)
## 九、联系作者
如有疑问,欢迎加入群聊(请备注certd) 如有疑问,欢迎加入群聊(请备注certd)
| 加群 | 微信群 | QQ群 | | 加群 | 微信群 | QQ群 |
@@ -141,7 +150,7 @@ docker compose up -d
| 二维码 | <img height="230" src="./docs/guide/contact/images/me.png"> | | 二维码 | <img height="230" src="./docs/guide/contact/images/me.png"> |
## 、捐赠 ## 、捐赠
************************ ************************
支持开源,为爱发电,我已入驻爱发电 支持开源,为爱发电,我已入驻爱发电
https://afdian.com/a/greper https://afdian.com/a/greper
@@ -150,47 +159,44 @@ https://afdian.com/a/greper
1. 可加入发电专属群,可以获得作者一对一技术支持 1. 可加入发电专属群,可以获得作者一对一技术支持
2. 您的需求我们将优先实现,并且将作为专业版功能提供 2. 您的需求我们将优先实现,并且将作为专业版功能提供
3. 一年期专业版激活码 3. 一年期专业版激活码
4. 赠送国外免费服务器部署方案(0成本使用Certd,可能需要翻墙,不过现在性能越来越差了)
专业版特权对比 专业版特权对比
| 功能 | 免费版 | 专业版 | | 功能 | 免费版 | 专业版 |
|---------|-------------------|-----------------------| |---------|---------------------------------------|--------------------------------|
| 免费证书申请 | 免费无限制 | 免费无限制 | | 免费证书申请 | 免费无限制 | 免费无限制 |
| 自动部署插件 | 阿里云、腾讯云、七牛云、主机部署等 | 支持群晖、宝塔、1Panel等,持续开发中 | | 域名数量 | 无限制 | 无限制 |
| 发邮件功能 | 需要配置 | 免配置 | | 证书流水线条数 | 无限制 | 无限制 |
| 证书流水线条数 | 10条 | 无限制 | | 站点证书监控 | 限制1条 | 无限制 |
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署、宝塔、1Panel等大部分插件 | 群晖 |
| 通知 | 邮件通知、自定义webhook | 邮件免配置、企微、钉钉、飞书、anpush、server酱等 |
************************ ************************
## 十一、贡献代码 ## 、贡献代码
1. 本地开发 [贡献插件](https://certd.docmirror.cn/guide/development/) 1. 本地开发请参考 [贡献插件向导](https://certd.docmirror.cn/guide/development/)
2. 作为贡献者,代表您同意您贡献的代码如下许可: 2. 作为贡献者,代表您同意您贡献的代码如下许可:
1. 可以调整开源协议以使其更严格或更宽松。 1. 可以调整开源协议以使其更严格或更宽松。
2. 可以用于商业用途。 2. 可以用于商业用途。
感谢以下贡献者做出的贡献。
<a href="https://github.com/certd/certd/graphs/contributors">
<img src="https://contrib.rocks/image?repo=certd/certd" />
</a>
## 十、 开源许可 ## 十、 开源许可
* 本项目遵循 GNU Affero General Public LicenseAGPL)开源协议。 * 本项目遵循 GNU Affero General Public LicenseAGPL)开源协议。
* 允许个人和公司内部自由使用、复制、修改和分发本项目,未获得商业授权情况下禁止任何形式的商业用途 * 允许个人和公司内部自由使用、复制、修改和分发本项目,未获得商业授权情况下禁止任何形式的商业用途
* 未获得商业授权情况下,禁止任何对logo、版权信息及授权许可相关代码的修改。 * 未获得商业授权情况下,禁止任何对logo、版权信息及授权许可相关代码的修改。
* 如需商业授权,请联系作者。 * 如需商业授权,请联系作者。
## 十三、我的其他项目(求Star)
| 项目名称 | stars | 项目描述 | ## 十一、我的其他项目(求Star)
|---------------------------------------------------------|-------------------------------------------------------------------------------------------------------|-----------------------------------|
| [袖手AI](https://ai.handsfree.work/) | | 袖手GPT,国内可用,无需FQ,每日免费额度 | | 项目名称 | stars | 项目描述 |
| --------- |--------- |----------- |
| [fast-crud](https://gitee.com/fast-crud/fast-crud/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/fast-crud/fast-crud?logo=github"/> | 基于vue3的crud快速开发框架 | | [fast-crud](https://gitee.com/fast-crud/fast-crud/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/fast-crud/fast-crud?logo=github"/> | 基于vue3的crud快速开发框架 |
| [dev-sidecar](https://github.com/docmirror/dev-sidecar/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/docmirror/dev-sidecar?logo=github"/> | 直连访问github工具,无需FQ,解决github无法访问的问题 | | [dev-sidecar](https://github.com/docmirror/dev-sidecar/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/docmirror/dev-sidecar?logo=github"/> | 直连访问github工具,无需FQ,解决github无法访问的问题 |
## 十四、更新日志
更新日志:[CHANGELOG](./CHANGELOG.md)
+183
View File
@@ -0,0 +1,183 @@
# Certd
[English](./README_en.md) | [中文](./README.md)
Certd® is a free, fully automated certificate management system that ensures your website certificates never expire. The suffix 'd' is inspired by the naming convention of Linux daemons, representing a certificate daemon.
> We pioneered the pipeline-based certificate application and deployment model, which has been "referenced" by multiple projects. Being copied is also a form of success.
> Regarding certificate renewal:
>* In fact, it's impossible to renew or reissue a certificate without modifying the certificate file itself.
>* What we refer to as renewal is essentially applying for a new certificate following the full process and redeploying it.
>* Free certificates expire in 90 days, which may be shortened in the future. Therefore, automated deployment is essential.
> The number of pipelines is now unlimited. Welcome to use it.
## 1. Features
This project not only supports automated certificate application but also automated certificate deployment and updates, ensuring your certificates never expire.
* Fully automated certificate application (supports domains registered with all registrars and multiple domain verification methods such as DNS-01, HTTP-01, and CNAME proxy).
* Fully automated certificate deployment and updates (currently supports deployment to over 70 plugins, including hosts, Alibaba Cloud, Tencent Cloud, etc.).
* Supports wildcard domains/pan-domains, allows multiple domains in a single certificate, and supports various certificate formats such as pem, pfx, der, and jks.
* Multiple notification methods, including email, webhook, WeChat Work, DingTalk, Lark, and anpush.
* On-premises deployment, local data storage, simple and quick installation. Images are built by Github Actions, with a transparent process.
* Multiple security measures, including authorization encryption, site hiding, 2FA, and password brute-force protection.
* Supports multiple databases such as SQLite, PostgreSQL, and MySQL.
* Open API support.
* Site certificate monitoring.
* Multi-user management.
* Multi-language support (Chinese and English switching).
* Downward compatibility across all versions, with one-click worry-free upgrades.
![](./docs/images/intro/intro.svg)
## 2. Online Experience
Visit the official demo site and register to experience it.
https://certd.handfree.work/
> Note: Data will be cleaned up irregularly, and scheduled tasks may be stopped. For production use, please deploy it yourself.
> The content contains sensitive information. Make sure to deploy it locally for production use.
![Home Page](./docs/images/start/home.png)
## 3. Usage Tutorial
Just 3 steps to ensure your certificates never expire.
### 1. Create a Certificate Pipeline
![Demonstration](packages/ui/certd-client/public/static/doc/images/1-add.png)
> After successful addition, you can directly run the pipeline to apply for a certificate.
### 2. Add a Deployment Task
Normally, we need to deploy certificates to applications. Certd supports a wide range of deployment plugins. You can choose based on your needs, such as deploying to Nginx, Alibaba Cloud, Tencent Cloud, K8S, CDN, Baota, 1Panel, etc.
Here's a demonstration of deploying certificates to a host's Nginx:
![Demonstration](packages/ui/certd-client/public/static/doc/images/5-1-add-host.png)
If the current deployment plugins don't meet your needs, you can also download them manually and deploy them yourself.
![Demonstration](packages/ui/certd-client/public/static/doc/images/13-3-download.png)
### 3. Run Scheduled Tasks
![Demonstration](packages/ui/certd-client/public/static/doc/images/12-1-log-success.png)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
-------> [Click here to view detailed usage steps](./step.md) <--------
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
For more tutorials, please visit the official documentation [certd.docmirror.cn](https://certd.docmirror.cn/guide/).
## 4. On-Premises Deployment
Since certificates, authorization information, and other data are highly sensitive, please make sure to deploy them on-premises to ensure data security.
You can choose one of the following deployment methods based on your needs:
1. 【Recommended】[Docker Deployment](https://certd.docmirror.cn/guide/install/docker/)
2. 【Recommended】[BT Panel Deployment](https://certd.docmirror.cn/guide/install/docker/)
3. 【Recommended】[1Panel Deployment](https://certd.docmirror.cn/guide/install/1panel/)
4. 【Recommended】[Rainyun One-Click Deployment](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2_): Double your first recharge, only $2.2 per month.
[<img src="https://rainyun-apps.cn-nb1.rains3.com/materials/deploy-on-rainyun-cn.svg">](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2_)
5. 【Not Recommended】[Source Code Deployment](https://certd.docmirror.cn/guide/install/source/)
#### Docker Image Information:
* Domestic Image Addresses:
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest`
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7`, `[version]-armv7`
* DockerHub Addresses:
* `https://hub.docker.com/r/greper/certd`
* `greper/certd:latest`
* `greper/certd:armv7`, `greper/certd:[version]-armv7`
* GitHub Packages Addresses:
* `ghcr.io/certd/certd:latest`
* `ghcr.io/certd/certd:armv7`, `ghcr.io/certd/certd:[version]-armv7`
* Images are built automatically by `Actions`, with a transparent process. Please use them with confidence.
* [Click here to view image build logs](https://github.com/certd/certd/actions/workflows/build-image.yml)
![](./docs/images/action/action-build.jpg)
> Note:
> * The certificates, authorization information, and other data stored in this application are highly sensitive. Please take appropriate security measures.
> * Make sure to use the HTTPS protocol to access this application to avoid man-in-the-middle attacks.
> * Make sure to use a web application firewall to protect this application from attacks such as XSS and SQL injection.
> * Make sure to secure the server itself to prevent database leakage.
> * Make sure to back up your data to avoid data loss.
> * [Click here for more production safety suggestions](https://certd.docmirror.cn/guide/feature/safe/)
## 5. Ecosystem
### 1. Client Tool: SSL-Assistant
`SSL Assistant` is a certificate deployment and management assistant client that runs on hosts. It supports automatic scanning of the host's `Nginx` configuration and pulling certificates from `Certd` for deployment. This tool is very useful when you don't want to expose your SSH host password.
Open-source Address: https://github.com/Youngxj/SSL-Assistant
## 6. More Help
Please visit the official documentation: [https://certd.docmirror.cn/](https://certd.docmirror.cn/guide/).
* Upgrade Method: [Upgrade Guide](https://certd.docmirror.cn/guide/install/upgrade/)
* Common Issues: [Forgot Password](https://certd.docmirror.cn/guide/use/forgotpasswd/)
* Multi-Database: [Multi-Database Configuration](https://certd.docmirror.cn/guide/install/database/)
* Site Security: [Site Security Features](https://certd.docmirror.cn/guide/feature/safe/)
* Changelog: [CHANGELOG](./CHANGELOG.md)
## 7. Contact the Author
If you have any questions, feel free to join the group chat (please mention 'certd' in your message).
| Join Group | WeChat Group | QQ Group |
|---------|-------|-------|
| QR Code | <img height="230" src="./docs/guide/contact/images/wx.png"> | <img height="230" src="./docs/guide/contact/images/qq.png"> |
You can also add the author as a friend.
| Add Author as Friend | WeChat QQ |
|---------|-------|-------|
| QR Code | <img height="230" src="./docs/guide/contact/images/me.png"> |
## 8. Donation
************************
Support open-source projects and contribute with love. I've joined Afdian.
https://afdian.com/a/greper
Benefits of Contribution:
1. Join the exclusive contributor group and get one-on-one technical support from the author.
2. Your requests will be prioritized and implemented as professional edition features.
3. Receive a one-year professional edition activation code.
Comparison of Professional Edition Privileges:
| Feature | Free Edition | Professional Edition |
|---------|---------------------------------------|--------------------------------|
| Free Certificate Application | Unlimited for free | Unlimited for free |
| Number of Domains | Unlimited | Unlimited |
| Number of Certificate Pipelines | Unlimited | Unlimited |
| Site Certificate Monitoring | Limited to 1 | Unlimited |
| Automatic Deployment Plugins | Most plugins such as Alibaba Cloud CDN, Tencent Cloud, QiNiu CDN, Host Deployment, Baota, 1Panel | Synology |
| Notifications | Email, Custom Webhook | Email without configuration, WeChat Work, DingTalk, Lark, anpush, ServerChan, etc. |
************************
## 9. Contribute Code
1. For local development, please refer to the [Plugin Contribution Guide](https://certd.docmirror.cn/guide/development/).
2. As a contributor, you agree that your contributed code is subject to the following license:
1. The open-source license can be adjusted to be more or less restrictive.
2. It can be used for commercial purposes.
Thank you to the following contributors.
<a href="https://github.com/certd/certd/graphs/contributors">
<img src="https://contrib.rocks/image?repo=certd/certd" />
</a>
## 10. Open-Source License
* This project follows the GNU Affero General Public License (AGPL).
* Individuals and companies are allowed to use, copy, modify, and distribute this project freely for internal use. Any form of commercial use is prohibited without obtaining commercial authorization.
* Without commercial authorization, any modification of the logo, copyright information, and license-related code is prohibited.
* For commercial authorization, please contact the author.
## 11. My Other Projects (Please Star)
| Project Name | Stars | Project Description |
|----------------|---------------|--------------|
| [fast-crud](https://gitee.com/fast-crud/fast-crud/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/fast-crud/fast-crud?logo=github"/> | A fast CRUD development framework based on Vue3. |
| [dev-sidecar](https://github.com/docmirror/dev-sidecar/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/docmirror/dev-sidecar?logo=github"/> | A tool to access GitHub directly without a VPN, solving the problem of inaccessible GitHub. |
+1 -1
View File
@@ -1 +1 @@
1 2
+1 -1
View File
@@ -1 +1 @@
1 23:58
+53 -14
View File
@@ -1,40 +1,57 @@
version: '3.3' # 兼容旧版docker-compose version: '3.3' # 兼容旧版docker-compose
services: services:
certd: certd:
# 镜像 # ↓↓↓↓↓ ---- 镜像版本号,建议改成固定版本号 # 镜像 # ↓↓↓↓↓ ---- 镜像版本号,建议改成固定版本号,例如:certd:1.29.0
image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
# image: ghcr.io/certd/certd:latest # --------- 如果 报镜像not found,可以尝试其他镜像源
# image: greper/certd:latest
container_name: certd # 容器名 container_name: certd # 容器名
restart: unless-stopped # 自动重启 restart: unless-stopped # 自动重启
volumes: volumes:
# ↓↓↓↓↓ -------------------------------------------------------- 数据库以及证书存储路径,默认存在宿主机的/data/certd/目录下,【您需要定时备份此目录,以保障数据容灾】 # ↓↓↓↓↓ -------------------------------------------------------- 数据库以及证书存储路径,默认存在宿主机的/data/certd/目录下,【您需要定时备份此目录,以保障数据容灾】
# 只要修改冒号前面的,冒号后面的/app/data不要动
- /data/certd:/app/data - /data/certd:/app/data
# ↓↓↓↓↓ -------------------------------------------------------- 如果走时不准,考虑挂载localtime文件
#- /etc/localtime:/etc/localtime
#- /etc/timezone:/etc/timezone
ports: # 端口映射 ports: # 端口映射
# ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号 # ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号,第二个7001不要动
- "7001:7001" - "7001:7001"
# ↓↓↓↓ ---------------------------------------------------------- https端口,可以根据实际情况,是否暴露该端口 # ↓↓↓↓ ---------------------------------------------------------- https端口,可以根据实际情况,是否暴露该端口
- "7002:7002" - "7002:7002"
#↓↓↓↓ -------------------------------------------------------------- 如果出现getaddrinfo ENOTFOUND错误,可以尝试设置dns #↓↓↓↓ -------------------------------------------------------------- 如果出现getaddrinfo EAI_AGAIN 或 getaddrinfo ENOTFOUND 错误,可以尝试设置dns
dns: # dns:
- 223.5.5.5 # 阿里云公共dns # - 223.5.5.5 # 阿里云公共dns
- 223.6.6.6 # - 223.6.6.6
# # ↓↓↓↓ --------------------------------------------------------- 如果你服务器在腾讯云,可以用这个替换上面阿里云的公共dns # # ↓↓↓↓ --------------------------------------------------------- 如果你服务器在腾讯云,可以用这个替换上面阿里云的公共dns
# - 119.29.29.29 # 腾讯云公共dns # - 119.29.29.29 # 腾讯云公共dns
# - 182.254.116.116 # - 182.254.116.116
# # ↓↓↓↓ --------------------------------------------------------- 如果你服务器部署在国外,可以用这个替换上面阿里云的公共dns # # ↓↓↓↓ --------------------------------------------------------- 如果你服务器部署在国外,可以用这个替换上面阿里云的公共dns
# - 8.8.8.8 # 谷歌公共dns # - 8.8.8.8 # 谷歌公共dns
# - 8.8.4.4 # - 8.8.4.4
# extra_hosts: # extra_hosts:
# # ↓↓↓↓ -------------------------------------------------------- 这里可以配置自定义hosts,外网域名可以指向本地局域网ip地址 # # ↓↓↓↓ -------------------------------------------------------- 这里可以配置自定义hosts,外网域名可以指向本地局域网ip地址
# - "localdomain.comm:192.168.1.3" # - "localdomain.com:192.168.1.3"
# # ↓↓↓↓ ------------------------------------------------ 直接使用主机的网络,如果网络问题实在找不到原因,可以尝试打开此参数
# network_mode: host
labels:
com.centurylinklabs.watchtower.enable: "true"
# ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把下面networks的注释放开
# networks:
# - ip6net
environment: environment:
# ↓↓↓↓ ----------------------------------------------------- 使用上海东八时区
- TZ=Asia/Shanghai
# 设置环境变量即可自定义certd配置 # 设置环境变量即可自定义certd配置
# 配置项见: packages/ui/certd-server/src/config/config.default.ts # 配置项见: packages/ui/certd-server/src/config/config.default.ts
# 配置规则: certd_ + 配置项, 点号用_代替 # 配置规则: certd_ + 配置项, 点号用_代替
# #↓↓↓↓ ----------------------------- 如果忘记管理员密码,可以设置为true,重启之后,管理员密码将改成123456,然后请及时修改回false # #↓↓↓↓ ----------------------------- 如果忘记管理员密码,可以设置为true,docker compose up -d 重建容器之后,管理员密码将改成123456,然后请及时修改回false
- certd_system_resetAdminPasswd=false - certd_system_resetAdminPasswd=false
# #↓↓↓↓ ----------------------------- 使用postgresql数据库
# 默认使用sqlite文件数据库,如果需要使用其他数据库,请设置以下环境变量
# 注意: 选定使用一种数据库之后,不支持更换数据库。
# 数据库迁移方法:1、使用新数据库重新部署一套,然后将旧数据同步过去,注意flyway_history表的数据不要同步
# #↓↓↓↓ ----------------------------- 使用postgresql数据库,需要提前创建数据库
# - certd_flyway_scriptDir=./db/migration-pg # 升级脚本目录 # - certd_flyway_scriptDir=./db/migration-pg # 升级脚本目录
# - certd_typeorm_dataSource_default_type=postgres # 数据库类型 # - certd_typeorm_dataSource_default_type=postgres # 数据库类型
# - certd_typeorm_dataSource_default_host=localhost # 数据库地址 # - certd_typeorm_dataSource_default_host=localhost # 数据库地址
@@ -43,9 +60,31 @@ services:
# - certd_typeorm_dataSource_default_password=yourpasswd # 密码 # - certd_typeorm_dataSource_default_password=yourpasswd # 密码
# - certd_typeorm_dataSource_default_database=certd # 数据库名 # - certd_typeorm_dataSource_default_database=certd # 数据库名
# #↓↓↓↓ ------------------------------------------------------------- 启用ipv6网络 # #↓↓↓↓ ----------------------------- 使用mysql数据库,需要提前创建数据库 charset=utf8mb4, collation=utf8mb4_bin
# networks: # - certd_flyway_scriptDir=./db/migration-mysql # 升级脚本目录
# - ip6net # - certd_typeorm_dataSource_default_type=mysql # 数据库类型, 或者 mariadb
# - certd_typeorm_dataSource_default_host=localhost # 数据库地址
# - certd_typeorm_dataSource_default_port=3306 # 数据库端口
# - certd_typeorm_dataSource_default_username=root # 用户名
# - certd_typeorm_dataSource_default_password=yourpasswd # 密码
# - certd_typeorm_dataSource_default_database=certd # 数据库名
# ↓↓↓↓ --------------------------------------------------------- 自动升级,上面certd的版本号要保持为latest
# certd-updater: # 添加 Watchtower 服务
# image: containrrr/watchtower:latest
# container_name: certd-updater
# restart: unless-stopped
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
# # 配置 自动更新
# environment:
# - WATCHTOWER_CLEANUP=true # 自动清理旧版本容器
# - WATCHTOWER_INCLUDE_STOPPED=false # 不更新已停止的容器
# - WATCHTOWER_LABEL_ENABLE=true # 根据容器标签进行更新
# - WATCHTOWER_POLL_INTERVAL=600 # 每 10 分钟检查一次更新
# ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把上面networks的注释放开
#networks: #networks:
# ip6net: # ip6net:
# enable_ipv6: true # enable_ipv6: true
+145 -118
View File
@@ -1,128 +1,155 @@
import { defineConfig } from "vitepress"; import {defineConfig} from "vitepress";
// Import lightbox plugin // Import lightbox plugin
import lightbox from "vitepress-plugin-lightbox"; import lightbox from "vitepress-plugin-lightbox";
// https://vitepress.dev/reference/site-config // https://vitepress.dev/reference/site-config
export default defineConfig({ export default defineConfig({
title: "Certd", title: "Certd",
description: "Certd帮助文档,Certd是一款开源免费的全自动SSL证书管理工具证书自动化申请部署流水线;自动证书申请、更新、续期;通配符证书,泛域名证书申请;证书自动化部署到阿里云、腾讯云、主机、群晖、宝塔。", titleTemplate: "开源SSL证书管理工具证书自动化申请部署,让你的网站证书永不过期",
markdown: { description: "Certd帮助文档,Certd是一款开源免费的全自动SSL证书管理工具;证书自动化申请部署流水线;自动证书申请、更新、续期;通配符证书,泛域名证书申请;证书自动化部署到阿里云、腾讯云、主机、群晖、宝塔。",
config: (md) => { markdown: {
// Use lightbox plugin config: (md) => {
md.use(lightbox, {}); // Use lightbox plugin
} md.use(lightbox, {});
}, }
head: [ },
// [ sitemap: {
// 'meta', hostname: 'https://certd.docmirror.cn'
// { },
// name: 'viewport', head: [
// content: // [
// 'width=device-width,initial-scale=1,minimfast-cum-scale=1.0,maximum-scale=1.0,user-scalable=no', // 'meta',
// }, // {
// ], // name: 'viewport',
["meta", { // content:
name: "keywords", // 'width=device-width,initial-scale=1,minimfast-cum-scale=1.0,maximum-scale=1.0,user-scalable=no',
content: "证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具、Certd、SSL证书自动部署、证书自动化,https证书,pfx证书,der证书,TLS证书,nginx证书自动续签自动部署,SSL平台,证书管理平台,证书流水线" // },
}], // ],
["meta", { name: "google-site-verification",content: "V5XLTSnXoT15uQotwpxJoQolUo2d5UbSL-TacsyOsC0"}], ["meta", {
//<meta name="baidu-site-verification" content="codeva-MiWN8Y07Ua" /> name: "keywords",
["meta", {name: "baidu-site-verification",content: "codeva-MiWN8Y07Ua"}], content: "证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具、Certd、SSL证书自动部署、证书自动化,https证书,pfx证书,der证书,TLS证书,nginx证书自动续签自动部署,SSL平台,证书管理平台,证书流水线"
["link", { rel: "icon", href: "/static/logo/logo.svg" }] }],
], // ["meta", { name: "google-site-verification",content: "V5XLTSnXoT15uQotwpxJoQolUo2d5UbSL-TacsyOsC0"}],
themeConfig: { //<meta name="baidu-site-verification" content="codeva-MiWN8Y07Ua" />
logo: "/static/logo/logo.svg", // ["meta", {name: "baidu-site-verification",content: "codeva-MiWN8Y07Ua"}],
search: { ["link", {rel: "icon", href: "/static/logo/logo.svg"}]
provider: "local", ],
options: { themeConfig: {
detailedView: true, logo: "/static/logo/logo.svg",
translations: { search: {
button: { provider: "local",
buttonText: "搜索文档", options: {
buttonAriaLabel: "搜索文档" detailedView: true,
}, translations: {
modal: { button: {
noResultsText: "无法找到相关结果", buttonText: "搜索文档",
resetButtonTitle: "清除查询条件", buttonAriaLabel: "搜索文档"
footer: { },
selectText: "选择", modal: {
closeText: "关闭", noResultsText: "无法找到相关结果",
navigateText: "切换" resetButtonTitle: "清除查询条件",
footer: {
selectText: "选择",
closeText: "关闭",
navigateText: "切换"
}
}
}
} }
} },
} // https://vitepress.dev/reference/default-theme-config
} nav: [
}, {text: "首页", link: "/"},
// https://vitepress.dev/reference/default-theme-config {text: "指南", link: "/guide/"},
nav: [ {text: "Demo体验", link: "https://certd.handfree.work"}
{ text: "首页", link: "/" }, ],
{ text: "指南", link: "/guide/" }, sidebar: {
{ text: "Demo体验", link: "https://certd.handfree.work" } "/guide/": [
], {
sidebar: { text: "入门",
"/guide/": [ items: [
{ {text: "简介", link: "/guide/"},
text: "入门", {text: "快速开始", link: "/guide/start.md"},
items: [ {
{ text: "简介", link: "/guide/" }, text: "私有化部署",
{ text: "快速开始", link: "/guide/start.md" }, items: [
{ {text: "docker部署", link: "/guide/install/docker/"},
text: "私有化部署", {text: "宝塔面板部署", link: "/guide/install/baota/"},
items: [ {text: "1Panel部署", link: "/guide/install/1panel/"},
{ text: "docker部署", link: "/guide/install/docker/" }, {text: "群晖部署", link: "/guide/use/synology/"},
{ text: "宝塔面板部署", link: "/guide/install/baota/" }, {text: "源码部署", link: "/guide/install/source/"}
{ text: "1Panel部署", link: "/guide/install/1panel/" }, ]
{ text: "群晖部署", link: "/guide/use/synology/" }, },
{ text: "源码部署", link: "/guide/install/source/" } {text: "演示教程", link: "/guide/tutorial.md"},
] {text: "版本升级", link: "/guide/install/upgrade.md"}
}, ]
{ text: "演示教程", link: "/guide/tutorial.md" } },
{
text: "特性",
items: [
{text: "CNAME代理校验", link: "/guide/feature/cname/index.md"},
{text: "多数据库支持", link: "/guide/install/database.md"},
{text: "开放接口", link: "/guide/open/index.md"},
{
text: "站点安全", link: "/guide/feature/safe/"
},
{
text: "插件列表", items: [
{text: "授权提供商", link: "/guide/plugins/access.md"},
{text: "DNS提供商", link: "/guide/plugins/dns-provider.md"},
{text: "任务插件", link: "/guide/plugins/deploy.md"},
{text: "通知插件", link: "/guide/plugins/notification.md"},
]
},
]
},
{
text: "常见问题",
items: [
{text: "QA", link: "/guide/qa/use.md"},
{text: "常见报错处理", link: "/guide/qa/"},
{text: "群晖证书部署", link: "/guide/use/synology/"},
{text: "腾讯云密钥获取", link: "/guide/use/tencent/"},
{text: "连接windows主机", link: "/guide/use/host/windows.md"},
{text: "Google EAB获取", link: "/guide/use/google/"},
{text: "阿里云相关", link: "/guide/use/aliyun/"},
{text: "忘记密码", link: "/guide/use/forgotpasswd/"},
{text: "数据备份", link: "/guide/use/backup/"},
{text: "Certd本身的证书更新", link: "/guide/use/https/index.md"},
{text: "js脚本插件使用", link: "/guide/use/custom-script/index.md"},
{text: "邮箱配置", link: "/guide/use/email/index.md"},
{text: "IPv6支持", link: "/guide/use/setting/ipv6.md"},
{text: "ESXi", link: "/guide/use/ESXi/index.md"},
]
},
{
text: "商业版配置", link: "/guide/use/comm/", items: [
{text: "支付宝配置", link: "/guide/use/comm/payments/alipay.md"},
{text: "微信支付配置", link: "/guide/use/comm/payments/wxpay.md"},
{text: "彩虹易支付配置", link: "/guide/use/comm/payments/yizhifu.md"},
]
},
{
text: "其他",
items: [
{text: "贡献代码", link: "/guide/development/index.md"},
{text: "更新日志", link: "/guide/changelogs/CHANGELOG.md"},
{text: "镜像说明", link: "/guide/image.md"},
{text: "联系我们", link: "/guide/contact/"},
{text: "捐赠", link: "/guide/donate/"},
{text: "开源协议", link: "/guide/license/"},
{text: "我的其他开源项目", link: "/guide/link/"},
]
}
],
},
] socialLinks: [
}, {icon: "github", link: "https://github.com/certd/certd"}
{ ],
text: "特性", footer: {
items: [ message: "Certd帮助文档 | <a href='https://beian.miit.gov.cn/' target='_blank'>粤ICP备14088435号</a> ",
{ text: "CNAME代理校验", link: "/guide/feature/cname/index.md" }, copyright: "Copyright © 2021-present <a href='https://handfree.work/' target='_blank'>handfree.work</a> "
{ text: "插件列表", link: "/guide/plugins.md" }
]
},
{
text: "常见问题",
items: [
{ text: "群晖证书部署", link: "/guide/use/synology/" },
{ text: "腾讯云密钥获取", link: "/guide/use/tencent/" },
{ text: "连接windows主机", link: "/guide/use/host/windows.md" },
{ text: "Google EAB获取", link: "/guide/use/google/" },
{ text: "阿里云相关", link: "/guide/use/aliyun/" },
{ text: "忘记密码", link: "/guide/use/forgotpasswd/" },
{ text: "数据备份", link: "/guide/use/backup/" },
{ text: "Certd本身的证书更新", link: "/guide/use/https/index.md" },
{ text: "js脚本插件使用", link: "/guide/use/custom-script/index.md" },
{ text: "邮箱配置", link: "/guide/use/email/index.md" },
{ text: "如何贡献代码", link: "/guide/development/index.md" },
]
},
{
text: "其他",
items: [
{ text: "更新日志", link: "/guide/changelogs/CHANGELOG.md" },
{ text: "镜像说明", link: "/guide/image.md" },
{ text: "联系我们", link: "/guide/contact/" },
{ text: "捐赠", link: "/guide/donate/" },
{ text: "开源协议", link: "/guide/license/" },
{ text: "我的其他开源项目", link: "/guide/link/" },
]
} }
]
},
socialLinks: [
{ icon: "github", link: "https://github.com/certd/certd" }
],
footer: {
message: "Certd帮助文档 | <a href='https://beian.miit.gov.cn/' target='_blank'>粤ICP备14088435号</a> ",
copyright: "Copyright © 2021-present <a href='https://handfree.work/' target='_blank'>handfree.work</a> "
} }
}
}); });
File diff suppressed because it is too large Load Diff
+88
View File
@@ -0,0 +1,88 @@
# 授权插件Demo
```ts
import { AccessInput, BaseAccess, IsAccess } from '@certd/pipeline';
import { isDev } from '../../utils/env.js';
/**
* 这个注解将注册一个授权配置
* 在certd的后台管理系统中,用户可以选择添加此类型的授权
*/
@IsAccess({
name: 'demo',
title: '授权插件示例',
icon: 'clarity:plugin-line',
desc: '',
})
export class DemoAccess extends BaseAccess {
/**
* 授权属性配置
*/
@AccessInput({
title: '密钥Id',
component: {
placeholder: 'demoKeyId',
},
required: true,
})
demoKeyId = '';
/**
* 授权属性配置
*/
@AccessInput({
//标题
title: '密钥串',
component: {
//input组件的placeholder
placeholder: 'demoKeySecret',
},
//是否必填
required: true,
//改属性是否需要加密
encrypt: true,
})
//属性名称
demoKeySecret = '';
}
new DemoAccess();
```
# 阿里云授权
```ts
import { IsAccess, AccessInput, BaseAccess } from "@certd/pipeline";
@IsAccess({
name: "aliyun",
title: "阿里云授权",
desc: "",
icon: "ant-design:aliyun-outlined",
order: 0,
})
export class AliyunAccess extends BaseAccess {
@AccessInput({
title: "accessKeyId",
component: {
placeholder: "accessKeyId",
},
helper: "登录阿里云控制台->AccessKey管理页面获取。",
required: true,
})
accessKeyId = "";
@AccessInput({
title: "accessKeySecret",
component: {
placeholder: "accessKeySecret",
},
required: true,
encrypt: true,
helper: "注意:证书申请需要dns解析权限;其他阿里云插件,需要对应的权限,比如证书上传需要证书管理权限;嫌麻烦就用主账号的全量权限的accessKey",
})
accessKeySecret = "";
}
new AliyunAccess();
```
+22 -11
View File
@@ -3,7 +3,7 @@
建议nodejs版本 `20.x` 及以上 建议nodejs版本 `20.x` 及以上
## 1.本地调试运行 ## 一、本地调试运行
### 克隆代码 ### 克隆代码
```shell ```shell
@@ -14,9 +14,6 @@ git clone https://github.com/certd/certd --depth=1
#进入项目目录 #进入项目目录
cd certd cd certd
# 切换到最新版本代码【如果v2分支无法编译,请尝试切换到最新版tag】
# git checkout v1.27.0 # 这里换成最新版本号
``` ```
### 修改pnpm-workspace.yaml文件 ### 修改pnpm-workspace.yaml文件
@@ -31,7 +28,7 @@ packages:
### 安装依赖和初始化: ### 安装依赖和初始化:
```shell ```shell
# 安装pnpm,如果提示npm命令不存在,就需要先安装nodejs # 安装pnpm,如果提示npm命令不存在,就需要先安装nodejs
npm install -g pnpm@8.15.7 --registry=https://registry.npmmirror.com npm install -g pnpm--registry=https://registry.npmmirror.com
# 使用国内镜像源,如果有代理,就不需要 # 使用国内镜像源,如果有代理,就不需要
pnpm config set registry https://registry.npmmirror.com pnpm config set registry https://registry.npmmirror.com
@@ -39,25 +36,25 @@ pnpm config set registry https://registry.npmmirror.com
pnpm install pnpm install
# 初始化构建 # 初始化构建
npm run init pnpm init
``` ```
### 启动 server: ### 启动 server:
```shell ```shell
cd packages/ui/certd-server cd packages/ui/certd-server
npm run dev pnpm dev
``` ```
### 启动 client: ### 启动 client:
```shell ```shell
cd packages/ui/certd-client cd packages/ui/certd-client
npm run dev pnpm dev
# 会自动打开浏览器,确认正常运行 # 会自动打开浏览器,确认正常运行
``` ```
## 开发插件 ## 二、开发插件
进入 `packages/ui/certd-server/src/plugins` 进入 `packages/ui/certd-server/src/plugins`
### 1.复制`plugin-demo`目录作为你的插件目录 ### 1.复制`plugin-demo`目录作为你的插件目录
@@ -91,8 +88,22 @@ export * from './plugins/plugin-deploy-to-xx'
export * from "./plugin-cloudflare.js" export * from "./plugin-cloudflare.js"
``` ```
## 重启服务进行调试 ### 6. 重启服务进行调试
刷新浏览器,检查你的插件是否工作正常, 确保能够正常进行证书申请和部署 刷新浏览器,检查你的插件是否工作正常, 确保能够正常进行证书申请和部署
## 提交PR ## 三、提交PR
我们将尽快审核PR 我们将尽快审核PR
## 四、 注意事项
### 1. 如何让任务报错停止
```js
// 抛出异常即可使任务停止,否则会判定为成功
throw new Error("错误信息")
```
## 五、贡献插件送激活码
- PR要求,插件功能完整,代码规范
- PR通过后,联系我们,送您一个半年期专业版激活码
Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

+13 -7
View File
@@ -7,16 +7,22 @@ https://afdian.com/a/greper
1. 可加入发电专属群,可以获得作者一对一技术支持 1. 可加入发电专属群,可以获得作者一对一技术支持
2. 您的需求我们将优先实现,并且将作为专业版功能提供 2. 您的需求我们将优先实现,并且将作为专业版功能提供
3. 一年期专业版激活码 3. 一年期专业版激活码
4. 赠送国外免费服务器部署方案(0成本使用Certd,可能需要翻墙,不过现在性能越来越差了)
## 专业版特权对比 ## 专业版特权对比
| 功能 | 免费版 | 专业版 | | 功能 | 免费版 | 专业版 |
|---------|------------------------|-----------------------| |---------|------------------------|-----------------------------|
| 免费证书申请 | 免费无限制 | 免费无限制 | | 免费证书申请 | 免费无限制 | 免费无限制 |
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署等 | 支持群晖、宝塔、1Panel等,持续开发中 | | 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署等 | 支持群晖、宝塔、1Panel等,持续开发中 |
| 发邮件功能 | 需要配置 | 免配置 | | 证书流水线条数 | 无限制 | 无限制 |
| 证书流水线条数 | 10条 | 无限制 | | 站点证书监控 | 限制1条 | 无限制 |
| 通知 | 邮件通知、自定义webhook | 邮件免配置、企微、飞书、anpush、server酱等 |
## 专业版激活方式
![](./images/plus.png)
发电后,在私信中获取激活码
************************ ************************
Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

+27
View File
@@ -0,0 +1,27 @@
# 站点隐藏
* 一般来说Certd设置好之后,很少需要访问。
* 所以我们`平时`可以把`站点访问关闭`,需要的时候再打开,减少站点被攻击的风险
## 1、开启站点隐藏
`系统管理->系统设置->安全设置->站点隐藏 `
![](./images/hidden1.png)
:::warning
注意保存好`解除地址``解除密码`
:::
## 2、临时关闭站点隐藏
访问上面的`解除地址`,输入`解除密码``临时解除`站点隐藏
![](./images/hidden2.png)
## 3、忘记解除地址和解除密码怎么办
登录服务器,在数据库平级的目录下创建`.unhidden`命名的空白文件,即可临时解除站点隐藏
临时解除后会自动删除`.unhidden`文件,请尽快设置好新的`解除地址``解除密码`,并记住
Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

+49
View File
@@ -0,0 +1,49 @@
# 安全特性
Certd 存储了证书以及授权等敏感数据,所以需要严格保障安全。
我们提供了以下安全特性,以及安全生产建议(请遵照建议进行生产部署以保障数据安全)
## 一、站点安全特性
### 1、 授权数据加密存储【默认开启】
* 所有的授权敏感字段会加密后存储
* 每个用户独立维护授权数据,连管理员都无权查看
![星号部分为加密数据](./images/access.png)
星号部分为加密数据
### 2、 密码防爆破【默认开启】
* 登录失败次数过多,账号将被锁定,最高24小时(重启服务可解除锁定)
* 用户登录密码加密hash后存储,无法计算出密码明文
![](./images/login.png)
### 3、站点隐藏【建议开启】
* 一般来说Certd设置好之后,后续很少需要访问修改。
* 所以我们平时可以把站点访问关闭,需要的时候再打开,减少站点被攻击的风险
* 请前往 `系统管理->系统设置->安全设置->开启站点隐藏`
![](./images/hidden.png)
点击查看 [站点隐藏功能详细使用说明](./hidden/)
### 4、登录双重验证
支持2FA双重认证
![](./images/2fa.png)
### 5、数据库自动备份【建议开启】
* [自动备份设置说明](../../use/backup/)
## 二、安全生产建议
尽管`Cert`本身实现了很多安全特性,但`外部环境的安全`仍需要您来确保。
`务必`遵循如下建议做好安全防护
*`务必`使用`HTTPS协议`访问本应用,避免被中间人攻击
*`务必`使用`web应用防火墙`防护本应用,防止XSS、SQL注入等攻击
*`务必`做好`服务器本身`的安全防护,防止数据库泄露
*`务必`做好[`数据备份`](../../use/backup/),避免数据丢失
*`务必`修改管理员账号用户名,且建议将admin注册为普通用户,且设置为禁用。
* 建议开启[`站点隐藏`](./hidden/)功能
+4
View File
@@ -9,6 +9,10 @@
* `greper/certd:latest` * `greper/certd:latest`
* `greper/certd:armv7``greper/certd:[version]-armv7` * `greper/certd:armv7``greper/certd:[version]-armv7`
## GitHub Packages地址:
* `ghcr.io/certd/certd:latest`
* `ghcr.io/certd/certd:armv7``ghcr.io/certd/certd:[version]-armv7`
*
## 镜像构建公开 ## 镜像构建公开
镜像构建通过`Actions`自动执行,过程公开透明,请放心使用 镜像构建通过`Actions`自动执行,过程公开透明,请放心使用
* [点我查看镜像构建日志](https://github.com/certd/certd/actions/workflows/build-image.yml) * [点我查看镜像构建日志](https://github.com/certd/certd/actions/workflows/build-image.yml)
+19 -21
View File
@@ -5,30 +5,28 @@ Certd 是一款开源、免费、全自动申请和部署更新SSL证书的工
关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具 关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具
## 1、关于证书续期
>* 实际上没有办法不改变证书文件本身情况下直接续期或者续签。
>* 我们所说的续期,其实就是按照全套流程重新申请一份新证书,然后重新部署上去。
>* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
## 一、特性
## 2、项目特性
本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。 本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。
* 全自动申请证书(支持所有注册商注册的域名) * 全自动申请证书(支持所有注册商注册的域名,支持DNS-01、HTTP-01、CNAME代理等多种域名验证方式
* 全自动部署更新证书(目前支持部署到主机、部署到阿里云、腾讯云等,目前已支持30+部署插件) * 全自动部署更新证书(目前支持部署到主机、阿里云、腾讯云等70+部署插件)
* 支持通配符域名/泛域名,支持多个域名打到一个证书上 * 支持通配符域名/泛域名,支持多个域名打到一个证书上,支持pem、pfx、der、jks等多种证书格式
* 邮件通知 * 邮件通知、webhook通知、企微、钉钉、飞书、anpush等多种通知方式
* 私有化部署,保障数据安全 * 私有化部署,数据保存本地,安装升级非常简单快捷
* 支持sqlitepostgresql数据库 * 镜像由Github Actions构建,过程公开透明
* 授权加密,站点隐藏,2FA,密码防爆破等多重安全保障
* 支持SQLitePostgreSQL、MySQL多种数据库
* 开放接口支持
* 站点证书监控
* 多用户管理
## 二、一些说明 ![](../images/intro/intro.svg)
* 本项目申请证书过程遵循acme协议
* 需要验证域名所有权,一般有两种方式
* http-01: 在网站根目录下放置一份txt文件
* dns-01: 需要给域名添加txt解析记录,通配符域名只能用这种方式(本项目仅支持dns-01)
* 证书续期:
* 实际上没有办法不改变证书文件本身情况下直接续期或者续签。
* 我们所说的续期,其实就是按照全套流程重新申请一份新证书,然后重新部署上去。
* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
* 设置每天自动运行,当证书过期前20天,会自动重新申请证书并部署
## 三、证书颁发机构对比
* Let's Encrypt:申请最简单。
* Google: 大厂光环,兼容性好,需要翻墙获取EAB。
* ZeroSSL: 有数量限制,获取EAB无需翻墙。
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+7 -9
View File
@@ -19,7 +19,8 @@ https://1panel.cn/docs/installation/online_installation/
3. 点击确定,启动容器 3. 点击确定,启动容器
![](./images/2.png) ![](./images/2.png)
> 默认数据保存在`/data/certd`目录下,可以手动备份 > 默认使用sqlite数据库,数据保存在`/data/certd`目录下,可以手动备份该目录
> certd还支持`mysql`和`postgresql`数据库,[点我了解如何切换其他数据库](../database)
3. 访问测试 3. 访问测试
@@ -31,15 +32,12 @@ admin/123456
## 三、升级 ## 三、升级
1. 找到容器,点击编辑 1. 找到容器,点击更多->升级
![](./images/edit1.png) ![](./images/upgrade-1.png)
2. 将latest修改为最新版本号 2. 选择强制拉取镜像,点击确认即可
![](https://img.shields.io/npm/v/%40certd%2Fpipeline) ![img.png](./images/upgrade-2.png)
![img.png](./images/edit2.png)
3. 点击确定,重启容器
## 四、数据备份 ## 四、数据备份
@@ -48,4 +46,4 @@ admin/123456
## 五、备份恢复 ## 五、备份恢复
将备份的`db.sqlite`覆盖到原来的位置即可 将备份的`db.sqlite`及同目录下的其他文件一起覆盖到原来的位置,重启certd即可
Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

+21 -21
View File
@@ -10,15 +10,16 @@
* 登录宝塔面板,在菜单栏中点击 Docker,首次进入会提示安装Docker服务,点击立即安装,按提示完成安装 * 登录宝塔面板,在菜单栏中点击 Docker,首次进入会提示安装Docker服务,点击立即安装,按提示完成安装
### 2、部署certd ### 2、部署certd
以下两种方式任选一种:
#### 2.1 应用商店一键部署【推荐】 #### 2.1 应用商店方式一键部署【推荐】
* 在应用商店中找到`certd`(要先点右上角更新应用) *宝塔Docker应用商店中找到`certd`(要先点右上角更新应用)
* 点击安装,配置域名等基本信息即可完成安装 * 点击安装,配置域名等基本信息即可完成安装
> 需要宝塔9.2.0及以上版本才支持 > 需要宝塔9.2.0及以上版本才支持
#### 2.2 容器编排部署 #### 2.2 容器编排方式部署
1. 打开`docker-compose.yaml`,整个内容复制下来 1. 打开`docker-compose.yaml`,整个内容复制下来
https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
@@ -29,6 +30,9 @@
点击确定,等待启动完成 点击确定,等待启动完成
![](./images/2.png) ![](./images/2.png)
> certd默认使用sqlite数据库,另外支持`mysql`和`postgresql`数据库,[点我了解如何切换其他数据库](../database)
## 二、访问应用 ## 二、访问应用
http://ip:7001 http://ip:7001
@@ -38,30 +42,17 @@ admin/123456
登录后请及时修改密码 登录后请及时修改密码
## 三、如何升级 ## 三、如何升级
宝塔升级certd非常简单
### 1. 应用商店安装,直接更新镜像即可 打开容器页面: `docker`->`容器编排`->`左侧选择Certd`->`更新镜像`
![img.png](./images/upgrade.png) ![img.png](./images/upgrade.png)
### 2. latest更新方式
在主机上拉取最新镜像,然后面板上重启容器
```shell
docker pull registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
```
### 3. 固定版本号方式
修改容器编排模版中的镜像版本号,然后面板上重启容器
```shell
services:
certd:
# 镜像 # 修改最新版本号 ---- ↓↓↓↓↓
image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:v1.xx.x
```
## 四、数据备份 ## 四、数据备份
部署方式不同,数据保存位置不同
### 4.1 应用商店部署方式 ### 4.1 应用商店部署方式
点击进入安装路径,数据保存在`./data`目录下,可以手动备份 点击进入安装路径,数据保存在`./data`目录下,可以手动备份
@@ -81,4 +72,13 @@ services:
## 五、备份恢复 ## 五、备份恢复
将备份的`db.sqlite`覆盖到原来的位置即可 将备份的`db.sqlite`及同目录下的其他文件一起覆盖到原来的位置,重启certd即可
## 六、宝塔部署相关问题排查
### 1. 无法访问Certd
1. 确认服务器的安全规则,是否放开了对应端口
2. 确认宝塔防火墙是否放开对应端口
3. 尝试将Certd容器加入宝塔的`bridge`网络
![](./images/network.png)
+73
View File
@@ -0,0 +1,73 @@
# 切换数据库
certd支持如下几种数据库:
1. sqlite3 (默认)
2. mysql
3. postgresql
您可以按如下两种方式切换数据库
## 一、全新安装
::: tip
以下按照`docker-compose`安装方式介绍如何使用mysql或postgresql数据库
如果您使用其他方式部署,请自行修改对应的环境变量即可。
:::
### 1.1、使用mysql数据库
1. 安装mysql,创建数据库 `(注意:charset=utf8mb4, collation=utf8mb4_bin)`
2. 下载最新的docker-compose.yaml
3. 修改环境变量配置
```yaml
services:
certd:
environment:
# 使用mysql数据库,需要提前创建数据库 charset=utf8mb4, collation=utf8mb4_bin
- certd_flyway_scriptDir=./db/migration-mysql # 升级脚本目录 【照抄】
- certd_typeorm_dataSource_default_type=mysql # 数据库类型, 或者 mariadb
- certd_typeorm_dataSource_default_host=localhost # 数据库地址
- certd_typeorm_dataSource_default_port=3306 # 数据库端口
- certd_typeorm_dataSource_default_username=root # 用户名
- certd_typeorm_dataSource_default_password=yourpasswd # 密码
- certd_typeorm_dataSource_default_database=certd # 数据库名
```
4. 启动certd
```shell
docker-compose up -d
```
### 1.2、使用Postgresql数据库
1. 安装postgresql,创建数据库
2. 下载最新的docker-compose.yaml
3. 修改环境变量配置
```yaml
services:
certd:
environment:
# 使用postgresql数据库,需要提前创建数据库
- certd_flyway_scriptDir=./db/migration-pg # 升级脚本目录 【照抄】
- certd_typeorm_dataSource_default_type=postgres # 数据库类型 【照抄】
- certd_typeorm_dataSource_default_host=localhost # 数据库地址
- certd_typeorm_dataSource_default_port=5433 # 数据库端口
- certd_typeorm_dataSource_default_username=postgres # 用户名
- certd_typeorm_dataSource_default_password=yourpasswd # 密码
- certd_typeorm_dataSource_default_database=certd # 数据库名
```
4. 启动certd
```shell
docker-compose up -d
```
## 二、从旧版的sqlite切换数据库
1. 先将`旧certd`升级到最新版 `建议:备份sqlite数据库`
2. 按照上面全新安装方式部署一套`新的certd` `注意:新旧版本的certd要一致`
3. 使用数据库工具将数据从sqlite导入到mysql或postgresql `注意:flyway_history数据表不要导入`
4. 重启新certd
5. 确认没有问题之后,删除旧版certd
+9 -2
View File
@@ -41,7 +41,9 @@ docker compose up -d
> 如果提示 没有docker compose命令,请安装docker-compose > 如果提示 没有docker compose命令,请安装docker-compose
> https://docs.docker.com/compose/install/linux/ > https://docs.docker.com/compose/install/linux/
> 然后使用 `docker-compose up -d` 启动
> certd默认使用sqlite数据库,另外还支持`mysql`和`postgresql`数据库,[点我了解如何切换其他数据库](../database)
### 3. 访问测试 ### 3. 访问测试
@@ -53,6 +55,11 @@ https://your_server_ip:7002
## 二、升级 ## 二、升级
::: warning
如果您是第一次升级certd版本,切记切记先备份一下数据
:::
### 如果使用固定版本号 ### 如果使用固定版本号
1. 修改`docker-compose.yaml`中的镜像版本号 1. 修改`docker-compose.yaml`中的镜像版本号
2. 运行`docker compose up -d` 即可 2. 运行`docker compose up -d` 即可
@@ -71,4 +78,4 @@ docker compose up -d
## 四、备份恢复 ## 四、备份恢复
将备份的`db.sqlite`覆盖到原来的位置即可 将备份的`db.sqlite`及同目录下的其他文件一起覆盖到原来的位置,重启certd即可
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

+19 -4
View File
@@ -1,11 +1,15 @@
# 源码部署 # 源码部署
如果没有开发基础、没有运维基础、没有`git``nodejs`基础,强烈不推荐此方式
## 一、源码安装 ## 一、源码安装
### 环境要求
- nodejs 22 及以上
### 源码启动 ### 源码启动
```shell ```shell
# 克隆代码 # 克隆代码
git clone https://github.com/certd/certd git clone https://github.com/certd/certd --depth=1
# git checkout v1.x.x # 1.x.x换成最新版本号,当v2主干分支代码无法正常启动时,可以尝试此命令 # git checkout v1.x.x # 当v2主干分支代码无法正常启动时,可以尝试此命令1.x.x换成最新版本号
cd certd cd certd
# 启动服务 # 启动服务
./start.sh ./start.sh
@@ -26,14 +30,25 @@ https://your_server_ip:7002
## 二、升级 ## 二、升级
```shell ```shell
# 更新代码并启动
cd certd cd certd
# 确保数据安全,备份一下数据
cp -rf ./packages/ui/certd-server/data ../certd-data-backup
git pull git pull
# 如果提示pull失败,可以尝试强制更新
# git checkout v2 -f && git pull
# 先停止旧的服务,7001是certd的默认端口 # 先停止旧的服务,7001是certd的默认端口
kill -9 $(lsof -t -i:7001) kill -9 $(lsof -t -i:7001)
# 重新编译启动 # 重新编译启动
./start.sh ./start.sh
``` ```
::: warning
升级certd版本前,切记切记先备份一下数据
:::
## 三、数据备份 ## 三、数据备份
> 数据默认保存在 `./packages/ui/certd-server/data` 目录下 > 数据默认保存在 `./packages/ui/certd-server/data` 目录下
@@ -42,4 +57,4 @@ kill -9 $(lsof -t -i:7001)
## 四、备份恢复 ## 四、备份恢复
将备份的`db.sqlite`覆盖到原来的位置即可 将备份的`db.sqlite`及同目录下的其他文件覆盖到原来的位置,重启certd即可
+66
View File
@@ -0,0 +1,66 @@
# 版本升级
## 升级方法
根据不同部署方式查看升级方法
1. [Docker方式部署升级](./docker/#二、升级)
2. [宝塔面板方式部署升级](./baota/#三、如何升级)
3. [1Panel面板方式部署升级](./1panel/#三、升级)
4. [源码方式部署](./source/#二、升级)
::: warning
如果您是第一次升级certd版本,切记切记先备份一下数据
:::
## 升级日志
可以查看最新版本号,以及所有版本的更新日志
[CHANGELOG](../changelogs/CHANGELOG.md)
## 自动升级配置
### 1. 方法一:使用watchtower监控
修改docker-compose.yaml文件增加如下配置, 使用watchtower监控自动升级
```yaml
services:
certd:
...
labels:
com.centurylinklabs.watchtower.enable: "true"
# ↓↓↓↓ --------------------------------------------------------- 自动升级,上面certd的版本号要保持为latest
certd-updater: # 添加 Watchtower 服务
image: containrrr/watchtower:latest
container_name: certd-updater
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# 配置 自动更新
environment:
- WATCHTOWER_CLEANUP=true # 自动清理旧版本容器
- WATCHTOWER_INCLUDE_STOPPED=false # 不更新已停止的容器
- WATCHTOWER_LABEL_ENABLE=true # 根据容器标签进行更新
- WATCHTOWER_POLL_INTERVAL=600 # 每 10 分钟检查一次更新
```
### 2. 方法二:使用Certd版本监控功能
选择Github-检查Release版本插件
![](./images/github-release.png)
按如下图填写配置
![](./images/github-release-2.png)
检测到新版本后执行宿主机升级命令:
```shell
# 拉取最新镜像
docker pull registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
# 升级容器命令, 替换成你自己的certd更新命令
export RESTART_CERT='sleep 10; cd ~/deploy/certd/ ; docker compose down; docker compose up -d'
# 构造一个脚本10s后在后台执行,避免容器销毁时执行太快,导致流水线任务无法结束
nohup sh -c '$RESTART_CERT' >/dev/null 2>&1 & echo '10秒后重启' && exit
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

+30
View File
@@ -0,0 +1,30 @@
# 开放接口
被动方式对第三方提供证书, 支持根据域名或证书id获取证书。
## 获取keyId和KeySecret
![](./images/1.png)
## 接口文档
https://apifox.com/apidoc/shared-2e76f8c4-7c58-413b-a32d-a1316529af44/254949529e0
## Token生成方法
header中传入x-certd-token即可调用开放接口
1、首先从OpenKey页面生成keyIdkeySecret
2、准备一个content( json字符串) content={"keyId":keyId, t:时间戳秒数, encrypt:false, signType:"md5"} `// encrypt返回结果是否加密`
3、将content加上keySecret进行签名: sign = md5(content + keySecret)
4、然后将content和sign分别base64后用.号连接: x-certd-token = base64(content) +"."+base64(sign)
## SDK
待开发
## 客户端工具
### SSL-Assistant
`SSL Assistant` 是一个基于 Go 语言开发的跨平台证书部署管理助手。
支持自动扫描主机`Nginx`配置,然后从Certd拉取证书并部署。
在不想暴露ssh主机密码情况下,该工具非常好用。
开源地址: https://github.com/Youngxj/SSL-Assistant
-721
View File
@@ -1,721 +0,0 @@
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.27.2](https://github.com/certd/certd/compare/v1.27.1...v1.27.2) (2024-11-08)
### Bug Fixes
* 修复某些容器管理ui无法识别端口列表的bug ([576e60a](https://github.com/certd/certd/commit/576e60a2b52315909e659d2a58cf98b130e69e6f))
* 修复删除腾讯云过期证书时间判断上的bug,导致已过期仍然没有删除证书 ([1ba1007](https://github.com/certd/certd/commit/1ba10072615015d91b81fc56a3b01dae6a2ae9d1))
### Performance Improvements
* 优化部署到阿里云CDN插件,支持多域名,更易用 ([80c500f](https://github.com/certd/certd/commit/80c500f618b169a1f64c57fe442242a4d0d9d833))
* 优化流水线页面切换回来不丢失查询条件 ([4dcf6e8](https://github.com/certd/certd/commit/4dcf6e87bc5f7657ce8a56c5331e8723a0fee8ee))
* 支持公共cname服务 ([3c919ee](https://github.com/certd/certd/commit/3c919ee5d1aef5d26cf3620a7c49d920786bc941))
* 执行历史支持点击查看流水线详情 ([8968639](https://github.com/certd/certd/commit/89686399f90058835435b92872fc236fac990148))
* 专业版7天试用 ([c58250e](https://github.com/certd/certd/commit/c58250e1f065a9bd8b4e82acc1df754504c0010c))
## [1.27.1](https://github.com/certd/certd/compare/v1.27.0...v1.27.1) (2024-11-04)
### Bug Fixes
* 修复头像没有更新的bug ([9b4a31f](https://github.com/certd/certd/commit/9b4a31fa6a32b9cab2e22bd141cf96ca29120445))
### Performance Improvements
* 禁止页面缓存,点击tab页签可以刷新数据 ([7ad4b55](https://github.com/certd/certd/commit/7ad4b55ee000c1dd0747832b11107f32b0ffb889))
* 优化时间选择器,自动填写分钟和秒钟 ([396dc34](https://github.com/certd/certd/commit/396dc34a841c7d016b033736afdba8366fb2d211))
* cname 域名映射记录可读性优化 ([b1117ed](https://github.com/certd/certd/commit/b1117ed54a3ef015752999324ff72b821ef5e4b9))
# [1.27.0](https://github.com/certd/certd/compare/v1.26.16...v1.27.0) (2024-10-31)
### Bug Fixes
* 修复历史记录不能按名称查询的bug ([6113c38](https://github.com/certd/certd/commit/6113c388b7fc58b11ca19ff05cc1286d096c8d28))
* pfx兼容windows server 2016 ([e5e468a](https://github.com/certd/certd/commit/e5e468a463f66d02f235de54b7c1e09ace5f1cb1))
### Features
* 首页全新改版 ([63ec5b5](https://github.com/certd/certd/commit/63ec5b5519c760a3330569c0da6dac157302a330))
### Performance Improvements
* 管理控制台数据统计 ([babd589](https://github.com/certd/certd/commit/babd5897ae013ff7c04ebfcbfac8a00d84dd627c))
* 增加向导 ([6d9ef26](https://github.com/certd/certd/commit/6d9ef26ecab71d752c2c55d75aed4fb5f6c05a39))
* lego 升级到 4.19.2 ([129bf53](https://github.com/certd/certd/commit/129bf53edc9bbb001fe49fbd7e239bd1d09cc128))
## [1.26.16](https://github.com/certd/certd/compare/v1.26.15...v1.26.16) (2024-10-30)
### Bug Fixes
* 修复lego No help topic for 错误 ([aaaf8d7](https://github.com/certd/certd/commit/aaaf8d7db34896cf8f2ff8f12eec1ab0cae58f0f))
### Performance Improvements
* 支持白山云cdn部署 ([b1b2cd0](https://github.com/certd/certd/commit/b1b2cd088b684eda764962abd61754c26a204d1c))
* 支持华为云cdn ([81a3fdb](https://github.com/certd/certd/commit/81a3fdbc29b71f380762008cc151493ec97458f9))
## [1.26.15](https://github.com/certd/certd/compare/v1.26.14...v1.26.15) (2024-10-28)
### Bug Fixes
* 顶部菜单变...的bug ([6dabad7](https://github.com/certd/certd/commit/6dabad76baba96be0f8af36a3fbfb9f5182aecf1))
### Performance Improvements
* 默认证书更新时间设置为35天,增加腾讯云删除过期证书插件,可以避免腾讯云过期证书邮件 ([51b6fed](https://github.com/certd/certd/commit/51b6fed468eaa6f28ce4497ce303ace1a52abb96))
* 授权加密支持解密查看 ([5575c83](https://github.com/certd/certd/commit/5575c839705f6987ad2bdcd33256b0962c6a9c6a))
* 重置管理员密码同时启用管理员账户,避免之前禁用了,重置密码还是登录不进去 ([f92d918](https://github.com/certd/certd/commit/f92d918a1e28e29b794ad4754661ea760c18af46))
## [1.26.14](https://github.com/certd/certd/compare/v1.26.13...v1.26.14) (2024-10-26)
### Bug Fixes
* 修复阿里云部署大杀器报插件_还未注册错误的bug ([abd2dcf](https://github.com/certd/certd/commit/abd2dcf2e85a545321bae6451406d081f773b132))
* 修复启动时自签证书无法保存的bug ([526c484](https://github.com/certd/certd/commit/526c48450bcd37b3ccded9b448f17de8140bdc6e))
### Performance Improvements
* 顶部菜单自定义 ([54d136c](https://github.com/certd/certd/commit/54d136cc6ae122f7c891b7a5c7232fe5de8e5cb5))
* 禁用readonly用户 ([d10d42e](https://github.com/certd/certd/commit/d10d42e20619bb55a50d636b8867ff33db4e3b4b))
* 限制其他用户流水线数量 ([315e437](https://github.com/certd/certd/commit/315e43746baf01682737f82e41579237a48409af))
* 用户管理优化头像上传 ([661293c](https://github.com/certd/certd/commit/661293c189a3abf3cdc953b5225192372f57930d))
## [1.26.13](https://github.com/certd/certd/compare/v1.26.12...v1.26.13) (2024-10-26)
### Bug Fixes
* 修复对话框全屏按钮与关闭按钮重叠的bug ([95df56c](https://github.com/certd/certd/commit/95df56cc5ca5e3eb843cd17cb7078cde47729f1e))
* deprecated的运行时不要报错,只报警告 ([bcbefaa](https://github.com/certd/certd/commit/bcbefaaa35cf6d0eec085b3a2c5bfc7c6a8de9e1))
### Performance Improvements
* 更新certd本身的证书文档说明 ([0c50ede](https://github.com/certd/certd/commit/0c50ede129337b82df54575cbd2f4c2a783a0732))
* 支持同时监听https端口,7002 ([d5a17f9](https://github.com/certd/certd/commit/d5a17f9e6afd63fda2df0981118480f25a1fac2e))
## [1.26.12](https://github.com/certd/certd/compare/v1.26.11...v1.26.12) (2024-10-25)
### Performance Improvements
* 部署到阿里云任意云资源,阿里云部署大杀器 ([4075be7](https://github.com/certd/certd/commit/4075be7849b140acb92bd8da8a9acbf4eef85180))
* 文件名特殊字符限制输入 ([c4164c6](https://github.com/certd/certd/commit/c4164c66e29f3ec799f98108a344806ca61e94ff))
* 新增部署到百度云CDN插件 ([f126f9f](https://github.com/certd/certd/commit/f126f9f932d37fa01fff1accc7bdd17d349f8db5))
* 新增部署到腾讯云CDN-v2,推荐使用 ([d782655](https://github.com/certd/certd/commit/d782655cb4dfbb74138178afbffeee76fc755115))
* 优化cron选择器,增加下次触发时间显示 ([5b148b7](https://github.com/certd/certd/commit/5b148b7ed960ca6f7f5b733b2eadd56eeecbd4c2))
* 支持部署到腾讯云COS ([a8a45d7](https://github.com/certd/certd/commit/a8a45d7f757820990e278533277a3deda5ba48f3))
* 支持配置公共ZeroSSL授权 ([a90d1e6](https://github.com/certd/certd/commit/a90d1e68ee9cbc3705223457b8a86f071b150968))
## [1.26.11](https://github.com/certd/certd/compare/v1.26.10...v1.26.11) (2024-10-23)
### Bug Fixes
* 申请证书没有使用到系统设置的http代理的bug ([3db216f](https://github.com/certd/certd/commit/3db216f515ba404cb4330fdab452971b22a50f08))
* 修复移动任务后出现空阶段的bug ([4ea3edd](https://github.com/certd/certd/commit/4ea3edd59e93ca4f5b2e43b20dd4ef33909caddb))
* 修复google证书*.xx.com与xx.com同时申请时报错的bug ([f8b99b8](https://github.com/certd/certd/commit/f8b99b81a23e7e9fd5e05ebd5caf355c41d67a90))
* 允许七牛云cdn插件输入.号开头的通配符域名 ([18ee87d](https://github.com/certd/certd/commit/18ee87daff6eafc2201b58e28d85aafd3cb7a5b9))
### Performance Improvements
* 申请证书启用新的反代地址 ([a705182](https://github.com/certd/certd/commit/a705182b85e51157883e48f23463263793bf3c12))
* 优化日志颜色 ([1291e98](https://github.com/certd/certd/commit/1291e98e821c5b1810aab7f0aebe3f5f5cd44a20))
* 优化证书申请速度和成功率,反代地址优化,google基本可以稳定请求。增加请求重试。 ([41d9c3a](https://github.com/certd/certd/commit/41d9c3ac8398def541e65351cbe920d4a927182d))
* 优化pfx密码密码输入框,让浏览器不自动填写密码 ([ffeede3](https://github.com/certd/certd/commit/ffeede38afa70c5ff6f2015516bead23d2c4df87))
## [1.26.10](https://github.com/certd/certd/compare/v1.26.9...v1.26.10) (2024-10-20)
### Bug Fixes
* 修复cname服务普通用户access访问权限问题 ([c1e3e2e](https://github.com/certd/certd/commit/c1e3e2ee1f923ee5806479dd5f178c3286a01ae0))
## [1.26.9](https://github.com/certd/certd/compare/v1.26.8...v1.26.9) (2024-10-19)
### Bug Fixes
* 修复普通用户无法校验cname配置的bug ([6285497](https://github.com/certd/certd/commit/62854978bf0bdbe749b42f8e40ab227ab31ec92f))
* 修复切换普通用户登录时,左侧菜单没有同步更新的bug ([12116a8](https://github.com/certd/certd/commit/12116a89f43cf8b98f16d2ea6073f6b72a643215))
* 修正邮箱设置跳转路由 ([17d8890](https://github.com/certd/certd/commit/17d88900a1f0e3af609b74597f5b1978230db32d))
### Performance Improvements
* 触发证书重新申请input变化对比规则优化,减少升级版本后触发申请证书的情况 ([c46a2a9](https://github.com/certd/certd/commit/c46a2a9a399c2a9a8bb59a48b9fb6e93227cce9b))
* 任务下所有步骤都跳过时,整个任务显示跳过 ([84fd3b2](https://github.com/certd/certd/commit/84fd3b250dd1161ea06c5582fdadece4b29c2e53))
* 授权配置去除前后空格 ([57d8d48](https://github.com/certd/certd/commit/57d8d48046fbf51c52b041d2dec03d51fb018587))
* 数据库备份插件,先压缩再备份 ([304ef49](https://github.com/certd/certd/commit/304ef494fd5787c996ad0dcb6edd2f517afce9e2))
* 优化菜单 ([1f4f157](https://github.com/certd/certd/commit/1f4f15757de1015cf7563f7022599eef58cc93d7))
* 增加文档站 https://certd.docmirror.cn ([6e2ac1c](https://github.com/certd/certd/commit/6e2ac1c089f6ddccb396f1f2738509c05333e1bb))
## [1.26.8](https://github.com/certd/certd/compare/v1.26.7...v1.26.8) (2024-10-15)
### Bug Fixes
* 修复无法设置角色的bug ([02fe704](https://github.com/certd/certd/commit/02fe704769edb25fea5ffd85a51a5530864b37b3))
### Performance Improvements
* 角色删除安全 ([28bb485](https://github.com/certd/certd/commit/28bb4856bee03569153f6471527c9b9f28cb3d14))
* 密钥备份 ([1c6028a](https://github.com/certd/certd/commit/1c6028abcf8849163462bb2f8441b6838357e09b))
* 证书直接查看 ([5dde5bd](https://github.com/certd/certd/commit/5dde5bd3f76db3959d411619d29bfb8064e3b307))
* sqlite数据库备份插件 ([77f1631](https://github.com/certd/certd/commit/77f163144f7dcfb0431475c55508fecfd6d969f8))
## [1.26.7](https://github.com/certd/certd/compare/v1.26.6...v1.26.7) (2024-10-14)
### Bug Fixes
* 修复siteInfo每次都要重新设置的bug ([36b26ae](https://github.com/certd/certd/commit/36b26ae9f5c7a53c1c2546fb79b2ea451b854abf))
## [1.26.6](https://github.com/certd/certd/compare/v1.26.5...v1.26.6) (2024-10-14)
### Bug Fixes
* 修复排序失效的bug ([1f0742e](https://github.com/certd/certd/commit/1f0742ef9f0caae0c7e713acf0fd3cebf5d63875))
## [1.26.5](https://github.com/certd/certd/compare/v1.26.4...v1.26.5) (2024-10-14)
### Bug Fixes
* 修复版本号获取错误的bug ([8851870](https://github.com/certd/certd/commit/8851870400df86e496198ad509061b8989fcc44f))
## [1.26.4](https://github.com/certd/certd/compare/v1.26.3...v1.26.4) (2024-10-14)
### Performance Improvements
* [comm] 支持插件管理 ([e8b617b](https://github.com/certd/certd/commit/e8b617b80ce882dd63006f0cfc719a80a1cc6acc))
* 新增代理设置功能 ([273ab61](https://github.com/certd/certd/commit/273ab6139f5807f4d7fe865cc353b97f51b9a668))
* EAB授权支持绑定邮箱,支持公共EAB设置 ([07043af](https://github.com/certd/certd/commit/07043aff0ca7fd29c56dd3c363002cb15d78b464))
## [1.26.3](https://github.com/certd/certd/compare/v1.26.2...v1.26.3) (2024-10-12)
### Performance Improvements
* 优化系统设置加载时机 ([7396253](https://github.com/certd/certd/commit/73962536d5a4769902d760d005f3f879465addcc))
## [1.26.2](https://github.com/certd/certd/compare/v1.26.1...v1.26.2) (2024-10-11)
### Bug Fixes
* 修复某些情况下bindUrl失败的bug ([91fc1cd](https://github.com/certd/certd/commit/91fc1cd7353be4a22be951239ed70b38baebc74e))
### Performance Improvements
* 邮箱设置改为系统设置,普通用户无需配置发件邮箱 ([4244569](https://github.com/certd/certd/commit/42445692117184a3293e63bef84a74cbb5984b0e))
## [1.26.1](https://github.com/certd/certd/compare/v1.26.0...v1.26.1) (2024-10-10)
**Note:** Version bump only for package root
# [1.26.0](https://github.com/certd/certd/compare/v1.25.9...v1.26.0) (2024-10-10)
### Bug Fixes
* 修复管理员编辑其他用户流水线任务时归属userid也被修改的bug ([e85c477](https://github.com/certd/certd/commit/e85c47744cf740b4af3b93dca7c2f0ccc818ec2f))
* 修复历史记录根据流水线名称查询报错的bug ([ce9a986](https://github.com/certd/certd/commit/ce9a9862f122fce2186e7727eaa4b251b59e6032))
* 修复某些代理情况下 报 400 The plain HTTP request was sent to HTTPS port use proxy 的bug ([a13203f](https://github.com/certd/certd/commit/a13203fb3f48c427d0d81a504912248dcc07df1a))
### Features
* 域名验证方法支持CNAME间接方式,此方式支持所有域名注册商,且无需提供Access授权,但是需要手动添加cname解析 ([f3d3508](https://github.com/certd/certd/commit/f3d35084ed44f9f33845f7045e520be5c27eed93))
* 站点个性化设置 ([11a9fe9](https://github.com/certd/certd/commit/11a9fe9014d96cba929e5a066e78f2af7ae59d14))
### Performance Improvements
* 并行任务名称改成添加任务,取消并行,可以在同一个阶段获取上一个task的输出 ([c5e5877](https://github.com/certd/certd/commit/c5e58770d1c5edc19c6f9ea1618f44b68e091f35))
* 调整静态资源到static目录 ([0584b36](https://github.com/certd/certd/commit/0584b3672b40f9042a2ed87e5627022606d046cd))
* 调整全部静态资源到static目录 ([a218890](https://github.com/certd/certd/commit/a21889080d6c7ffdf0af526a3a21f0b2d1c77288))
* 检查cname是否正确配置 ([b5d8935](https://github.com/certd/certd/commit/b5d8935159374fbe7fc7d4c48ae0ed9396861bdd))
* 七牛云cdn支持配置多个域名 ([88d745e](https://github.com/certd/certd/commit/88d745e29063a089864fb9c6705be7b8d4c2669a))
* 上传到主机插件支持注入环境变量 ([81fac73](https://github.com/certd/certd/commit/81fac736f9ccc8d1cda7ef4178752239cec20849))
* 优化宝塔网站部署插件远程获取数据的提示 ([2a3ca9f](https://github.com/certd/certd/commit/2a3ca9f552d96594ec6690a1c4c91f598451b9a1))
* 优化缩短首页缓存时间 ([49395e8](https://github.com/certd/certd/commit/49395e8cb65f4b30c0145329ed5de48be4ef3842))
* 域名输入增加校验提示,避免输入错误的域名 ([0c8e83e](https://github.com/certd/certd/commit/0c8e83e1254a9ce4d5a4e7888eb1710394a4b77c))
* cname校验配置增加未校验通过提示 ([77cc3c4](https://github.com/certd/certd/commit/77cc3c4a5cbd81f8233a8e0bb33fab0621c0905f))
* google eab授权支持自动获取,不过要配置代理 ([592791d](https://github.com/certd/certd/commit/592791d1356fc252fbb70d7f168567aee9585507))
## [1.25.9](https://github.com/certd/certd/compare/v1.25.8...v1.25.9) (2024-10-01)
### Bug Fixes
* 修复西部数码账户级别apikey不可用的bug ([f8f3e8b](https://github.com/certd/certd/commit/f8f3e8b43fd5d815887bcb53b95f46dc96424b79))
### Performance Improvements
* 增加等待插件 ([3ef0541](https://github.com/certd/certd/commit/3ef0541cc85ab6abf698ead3b258ae1ac156ef98))
## [1.25.8](https://github.com/certd/certd/compare/v1.25.7...v1.25.8) (2024-09-30)
### Bug Fixes
* 修复pfxPassword无效的bug ([251e450](https://github.com/certd/certd/commit/251e450fabfe62405bac13e39f2153736c081ef0))
### Performance Improvements
* 群晖获取deviceid优化 ([8d42273](https://github.com/certd/certd/commit/8d4227366548eb70f6bc04303829e6933168f906))
## [1.25.7](https://github.com/certd/certd/compare/v1.25.6...v1.25.7) (2024-09-29)
### Bug Fixes
* 修复某些地区被屏蔽无法激活专业版的bug ([7532a96](https://github.com/certd/certd/commit/7532a960851b84d4f2cc3dba02353c5235e1a364))
### Performance Improvements
* 上传到主机,支持socks代理 ([d91026d](https://github.com/certd/certd/commit/d91026dc4fbfe5fedc4ee8e43dc0d08f1cf88356))
* 支持上传到七牛云oss ([bf024bd](https://github.com/certd/certd/commit/bf024bdda8bc2a463475be5761acf0da7317a08a))
## [1.25.6](https://github.com/certd/certd/compare/v1.25.5...v1.25.6) (2024-09-29)
### Bug Fixes
* 修复中间证书复制错误的bug ([76e86ea](https://github.com/certd/certd/commit/76e86ea283ecbe4ec76cdc92b98457d0fef544ac))
### Performance Improvements
* 部署支持1Panel ([d047234](https://github.com/certd/certd/commit/d047234d98d31504f2e5a472b66e1b75806af26e))
* 增加使用教程 ([9d9c021](https://github.com/certd/certd/commit/9d9c0218195af5b9896cce7109b26a433480571d))
## [1.25.5](https://github.com/certd/certd/compare/v1.25.4...v1.25.5) (2024-09-26)
**Note:** Version bump only for package root
## [1.25.4](https://github.com/certd/certd/compare/v1.25.3...v1.25.4) (2024-09-25)
### Bug Fixes
* 修复启动报授权验证失败的bug ([3460d3d](https://github.com/certd/certd/commit/3460d3ddca222ea702816ab805909d489eff957f))
## [1.25.3](https://github.com/certd/certd/compare/v1.25.2...v1.25.3) (2024-09-24)
### Bug Fixes
* 修复upload to host trim错误 ([0f0ddb9](https://github.com/certd/certd/commit/0f0ddb9c5963fd643d6d203334efac471c43ec3b))
## [1.25.2](https://github.com/certd/certd/compare/v1.25.1...v1.25.2) (2024-09-24)
**Note:** Version bump only for package root
## [1.25.1](https://github.com/certd/certd/compare/v1.25.0...v1.25.1) (2024-09-24)
**Note:** Version bump only for package root
# [1.25.0](https://github.com/certd/certd/compare/v1.24.4...v1.25.0) (2024-09-24)
### Bug Fixes
* 修复首次创建任务运行时不自动设置当前运行情况的bug ([ecd83ee](https://github.com/certd/certd/commit/ecd83ee136abdd3df9ed2f21ec2ff0f24c0ed9d9))
### Features
* 账号绑定 ([e046640](https://github.com/certd/certd/commit/e0466409d0c021bb415abd94df448c8a0d4799e9))
* 支持中间证书 ([e86756e](https://github.com/certd/certd/commit/e86756e4c65a53dd23106d7ecbfe2fa987cc13f3))
* 支持vip转移 ([361e8fe](https://github.com/certd/certd/commit/361e8fe7ae5877e23fd5de31bc919bedd09c57f5))
### Performance Improvements
* 群晖支持OTP双重验证登录 ([8b8039f](https://github.com/certd/certd/commit/8b8039f42bbce10a4d0e737cdeeeef9bb17bee5a))
* 任务支持禁用 ([8ed16b3](https://github.com/certd/certd/commit/8ed16b3ea2dfe847357863a0bfa614e4fa5fc041))
* 优化收件邮箱输入 ([22ef28f](https://github.com/certd/certd/commit/22ef28f6338a78465bd52ccbad13e66e80263b2f))
* 优化主机登录失败提示 ([9de77b3](https://github.com/certd/certd/commit/9de77b327d39cff5ed6660ec53b58ba0eea18e5a))
* 增加重启certd插件 ([48238d9](https://github.com/certd/certd/commit/48238d929e6c4afa1d428e4d35b9159d37a47ae0))
* 证书支持旧版RSApkcs1 ([3d9c3ec](https://github.com/certd/certd/commit/3d9c3ecb3eb604b2458154f608bde0f01915d116))
* 支持阿里云ACK证书部署 ([d331fea](https://github.com/certd/certd/commit/d331fea47789122650e057ec7c9e85ee8e66f09b))
* 支持七牛云 ([8ecc2f9](https://github.com/certd/certd/commit/8ecc2f9446a9ebd11b9bfbffbb6cf7812a043495))
* 支持k8s ingress secret ([e5a5d0a](https://github.com/certd/certd/commit/e5a5d0a607bb6b4e1a1f7a1a419bada5f2dee59f))
* http请求增加默认超时时间 ([664bd86](https://github.com/certd/certd/commit/664bd863e5b4895aabe2384277c0c65f5902fdb2))
* plugins增加图标 ([a8da658](https://github.com/certd/certd/commit/a8da658a9723342b4f43a579f7805bfef0648efb))
## [1.24.4](https://github.com/certd/certd/compare/v1.24.3...v1.24.4) (2024-09-09)
### Bug Fixes
* 修复腾讯云cdn证书部署后会自动关闭hstshttp2.0等配置的bug ([7908ab7](https://github.com/certd/certd/commit/7908ab79da624c94fa05849925b15e480e3317c4))
* 修复腾讯云tke证书部署报错的bug ([653f409](https://github.com/certd/certd/commit/653f409d91a441850d6381f89a8dd390831f0d5e))
### Performance Improvements
* 插件选择支持搜索 ([d1498a7](https://github.com/certd/certd/commit/d1498a71601b74d38343b1d070eadd03705dd9d5))
* 前置任务步骤增加错误提示 ([ae3daa9](https://github.com/certd/certd/commit/ae3daa9bcf4fc363825aad9b77f5d3879aeeff70))
* 群晖部署教程 ([0f0af2f](https://github.com/certd/certd/commit/0f0af2f309390f388e7a272cea3a1dd30c01977d))
* 支持群晖 ([5c270b6](https://github.com/certd/certd/commit/5c270b6b9d45a2152f9fdb3c07bd98b7c803cb8e))
## [1.24.3](https://github.com/certd/certd/compare/v1.24.2...v1.24.3) (2024-09-06)
### Performance Improvements
* 支持多吉云cdn证书部署 ([65ef685](https://github.com/certd/certd/commit/65ef6857296784ca765926e09eafcb6fc8b6ecde))
## [1.24.2](https://github.com/certd/certd/compare/v1.24.1...v1.24.2) (2024-09-06)
### Bug Fixes
* 修复复制流水线出现的各种问题 ([6314e8d](https://github.com/certd/certd/commit/6314e8d7eb58cd52e2a7bd3b5ffb9112b0b69577))
* 修复windows下无法执行第二条命令的bug ([71ac8aa](https://github.com/certd/certd/commit/71ac8aae4aa694e1a23761e9761c9fba30b43a21))
### Performance Improvements
* 阶段、任务、步骤全面支持拖动排序 ([bd73a16](https://github.com/certd/certd/commit/bd73a163cd0497f062bd424ddc6bc9bbc95f81ea))
* 任务配置不需要的字段可以自动隐藏 ([192d9dc](https://github.com/certd/certd/commit/192d9dc7e36737d684c769f255f407c28b1152ac))
* 任务支持拖动排序 ([1e9b563](https://github.com/certd/certd/commit/1e9b5638aa36a8ce70019a9c750230ba41938327))
* 西部数据支持用户级的apikey ([1c17b41](https://github.com/certd/certd/commit/1c17b41e160944b073e1849e6f9467c3659a4bfc))
* 修复windows下无法执行第二条命令的bug ([d5bfcdb](https://github.com/certd/certd/commit/d5bfcdb6de1dcc1702155442e2e00237d0bbb6e5))
* 优化跳过处理逻辑 ([b80210f](https://github.com/certd/certd/commit/b80210f24bf5db1c958d06ab27c9e5d3db452eda))
* 支持阿里云oss ([87a2673](https://github.com/certd/certd/commit/87a2673e8c33dff6eda1b836d92ecc121564ed78))
* 支持西部数码DNS ([c59cab1](https://github.com/certd/certd/commit/c59cab1aaeb19f86df8e3e0d8127cbd0a9ef77f3))
* 支持pfx、der ([fbeaed2](https://github.com/certd/certd/commit/fbeaed203519f59b6d9396c4e8953353ccb5e723))
* client 请求超时时间延长为10s ([ff46771](https://github.com/certd/certd/commit/ff46771d8dd43e71c1ca70e3ba783945750342cc))
## [1.24.1](https://github.com/certd/certd/compare/v1.24.0...v1.24.1) (2024-09-02)
### Bug Fixes
* 激活仅限管理员 ([1c17970](https://github.com/certd/certd/commit/1c17970b981f0987c506744ee6b2283fd5e40493))
* 修复在没有勾选使用代理的情况下,仍然会使用代理的bug ([0f66794](https://github.com/certd/certd/commit/0f6679425f6a736bb0128527dd99c085fac17d84))
### Performance Improvements
* 部署插件支持宝塔、易盾云等 ([ee61709](https://github.com/certd/certd/commit/ee617095efa1171548cf52fd45f0f98a368555a3))
* 授权配置支持加密 ([42a56b5](https://github.com/certd/certd/commit/42a56b581d754c3e5f9838179d19ab0d004ef2eb))
* 优化内存占用 ([db61033](https://github.com/certd/certd/commit/db6103363364440b650bc10bb334834e4a9470c7))
* 支持阿里云 DCDN ([98b77f8](https://github.com/certd/certd/commit/98b77f80843834616fb26f83b4c42245326abd06))
* 支持已跳过的步骤重新运行 ([ea775ad](https://github.com/certd/certd/commit/ea775adae18d57a04470cfba6b9460d761d74035))
* 支持cdnfly ([724a850](https://github.com/certd/certd/commit/724a85028b4a7146c9e3b4df4497dcf2a7bf7c67))
* 支持ftp上传 ([b9bddbf](https://github.com/certd/certd/commit/b9bddbfabb5664365f1232e9432532187c98006c))
# [1.24.0](https://github.com/certd/certd/compare/v1.23.1...v1.24.0) (2024-08-25)
### Bug Fixes
* 部署到腾讯云cdn选择证书任务步骤限制只能选证书 ([3345c14](https://github.com/certd/certd/commit/3345c145b802170f75a098a35d0c4b8312efcd17))
* 修复成功后跳过之后丢失腾讯云证书id的bug ([37eb762](https://github.com/certd/certd/commit/37eb762afe25c5896b75dee25f32809f8426e7b7))
* 修复创建流水线后立即运行时报no id错误的bug ([17ead54](https://github.com/certd/certd/commit/17ead547aab25333603980304aa3aad3db1f73d5))
* 修复使用代理的情况下申请证书失败的bug ([95122e2](https://github.com/certd/certd/commit/95122e28609333f4df55c266e5434897954c0fb3))
* 修复执行日志没有清理的bug ([22a3363](https://github.com/certd/certd/commit/22a336370a88a7df2a23c967043bae153da71ed5))
* 修复重置密码参数配置后无效的bug ([e358a88](https://github.com/certd/certd/commit/e358a8869696578687306e4cd0dcda53f898fe13))
* 修复ssh无法连接成功,无法执行命令的bug ([41b9837](https://github.com/certd/certd/commit/41b9837582323fb400ef8525ce65e8b37ad4b36f))
### Features
* 支持ECC类型 ([a7424e0](https://github.com/certd/certd/commit/a7424e02f5c7e02ac1688791040785920ce67473))
* 支持google证书申请(需要使用代理) ([a593056](https://github.com/certd/certd/commit/a593056e79e99dd6a74f75b5eab621af7248cfbe))
### Performance Improvements
* 更新k8s底层api库 ([746bb9d](https://github.com/certd/certd/commit/746bb9d385e2f397daef4976eca1d4782a2f5ebd))
* 优化成功后跳过的提示 ([7b451bb](https://github.com/certd/certd/commit/7b451bbf6e6337507f4627b5a845f5bd96ab4f7b))
* 优化证书申请成功率 ([968c469](https://github.com/certd/certd/commit/968c4690a07f69c08dcb3d3a494da4e319627345))
* 优化dnspod的token id 说明 ([790bf11](https://github.com/certd/certd/commit/790bf11af06d6264ef74bc1bb919661f0354239a))
* email proxy ([453f1ba](https://github.com/certd/certd/commit/453f1baa0b9eb0f648aa1b71ccf5a95b202ce13f))
## [1.23.1](https://github.com/certd/certd/compare/v1.23.0...v1.23.1) (2024-08-06)
### Bug Fixes
* 修复模糊查询无效的bug ([9355917](https://github.com/certd/certd/commit/93559174c780173f0daec7cdbd1f72f8d5c504d5))
### Performance Improvements
* 优化插件字段的default value ([24c7be2](https://github.com/certd/certd/commit/24c7be2c9cb39c14f7a97b674127c88033280b02))
* 优化默认值设置 ([1af19f0](https://github.com/certd/certd/commit/1af19f0ac053fe109782882964533636b5969d6b))
# [1.23.0](https://github.com/certd/certd/compare/v1.22.9...v1.23.0) (2024-08-05)
### Bug Fixes
* 修复环境变量多个下划线不生效的bug ([7ec2218](https://github.com/certd/certd/commit/7ec2218c9fee5bee2bf0aa31f3e3a4301575f247))
### Features
* use node 20 ([e8ed972](https://github.com/certd/certd/commit/e8ed97206bf28e83f942db2ef4ea07fa76fd3567))
## [1.22.9](https://github.com/certd/certd/compare/v1.22.8...v1.22.9) (2024-08-05)
### Performance Improvements
* 优化定时任务 ([87e440e](https://github.com/certd/certd/commit/87e440ee2a8b10dc571ce619f28bc83c1e5eb147))
## [1.22.8](https://github.com/certd/certd/compare/v1.22.7...v1.22.8) (2024-08-05)
### Performance Improvements
* 修复删除历史记录没有删除log的bug,新增history管理页面,演示站点启动时不自动启动非管理员用户的定时任务 ([f78ae93](https://github.com/certd/certd/commit/f78ae93eedfe214008c3d071ca3d77c962137a64))
* 优化pipeline删除时,删除其他history ([b425203](https://github.com/certd/certd/commit/b4252033d56a9ad950f3e204ff021497c3978015))
## [1.22.7](https://github.com/certd/certd/compare/v1.22.6...v1.22.7) (2024-08-04)
### Bug Fixes
* 修复保存配置报id不能为空的bug ([367f807](https://github.com/certd/certd/commit/367f80731396003416665c22853dfbc09c2c03a0))
## [1.22.6](https://github.com/certd/certd/compare/v1.22.5...v1.22.6) (2024-08-03)
### Bug Fixes
* 修复在相同的cron时偶尔无法触发定时任务的bug ([680941a](https://github.com/certd/certd/commit/680941af119619006b592e3ab6fb112cb5556a8b))
* 修复pg下pipeline title 类型问题 ([a9717b9](https://github.com/certd/certd/commit/a9717b9a0df7b5a64d4fe03314fecad4f59774cc))
### Performance Improvements
* 流水线支持名称模糊查询 ([59897c4](https://github.com/certd/certd/commit/59897c4ceae992ebe2972ca9e8f9196616ffdfd7))
* 腾讯云clb支持更多大区选择 ([e4f4570](https://github.com/certd/certd/commit/e4f4570b29f26c60f1ee9660a4c507cbeaba3d7e))
* 优化前置任务输出为空的提示 ([6ed1e18](https://github.com/certd/certd/commit/6ed1e18c7d9c46d964ecc6abc90f3908297b7632))
## [1.22.5](https://github.com/certd/certd/compare/v1.22.4...v1.22.5) (2024-07-26)
### Bug Fixes
* 修复用户管理无法添加用户的bug ([e7e89b8](https://github.com/certd/certd/commit/e7e89b8de7386e84c0d6b8e217e2034909657d68))
## [1.22.4](https://github.com/certd/certd/compare/v1.22.3...v1.22.4) (2024-07-26)
### Performance Improvements
* 证书申请支持反向代理,letsencrypt无法访问时的备用方案 ([b7b5df0](https://github.com/certd/certd/commit/b7b5df0587e0f7ea288c1b2af6f87211f207395f))
* 支持arm64 ([fa14f87](https://github.com/certd/certd/commit/fa14f87a8093ef3addc5e5f3315ce1bfc9982782))
## [1.22.3](https://github.com/certd/certd/compare/v1.22.2...v1.22.3) (2024-07-25)
### Bug Fixes
* lege 无执行权限问题 ([338eb3b](https://github.com/certd/certd/commit/338eb3bdfeb461e9b3bc7eee97b97a59f5642ffe))
## [1.22.2](https://github.com/certd/certd/compare/v1.22.1...v1.22.2) (2024-07-23)
### Bug Fixes
* 修复创建流水线时,无法根据dns类型默认正确的dns授权的bug ([a2c43b5](https://github.com/certd/certd/commit/a2c43b50a6069ed48958fd142844a8568c2af452))
## [1.22.1](https://github.com/certd/certd/compare/v1.22.0...v1.22.1) (2024-07-20)
### Performance Improvements
* 创建证书任务可以选择lege插件 ([affef13](https://github.com/certd/certd/commit/affef130378030c517250c58a4e787b0fc85d7d1))
* 创建证书任务增加定时任务和邮件通知输入 ([427620d](https://github.com/certd/certd/commit/427620d34f3b8ad6933005faf1878908441a2453))
* 支持配置启动后自动触发一次任务 ([a5a0c1f](https://github.com/certd/certd/commit/a5a0c1f6e7a3f05e581005e491d5b102ee854412))
# [1.22.0](https://github.com/certd/certd/compare/v1.21.2...v1.22.0) (2024-07-19)
### Features
* 升级midway,支持esm ([485e603](https://github.com/certd/certd/commit/485e603b5165c28bc08694997726eaf2a585ebe7))
* 支持lego,海量DNS提供商 ([0bc6d0a](https://github.com/certd/certd/commit/0bc6d0a211920fb0084d705e1db67ee1e7262c44))
* 支持postgresql ([3b19bfb](https://github.com/certd/certd/commit/3b19bfb4291e89064b3b407a80dae092d54747d5))
### Performance Improvements
* 优化一些小细节 ([b168852](https://github.com/certd/certd/commit/b1688525dbbbfd67e0ab1cf5b4ddfbe9d394f370))
* 增加备案号设置 ([bd3d959](https://github.com/certd/certd/commit/bd3d959944db63a5690b55ee150e1007133868b9))
* 自动生成jwtkey,无需手动配置 ([390e485](https://github.com/certd/certd/commit/390e4853a570390a97df6a3b3882579f9547eeb4))
## [1.21.2](https://github.com/certd/certd/compare/v1.21.1...v1.21.2) (2024-07-08)
### Performance Improvements
* 申请证书时可以选择跳过本地dns校验 ([fe91d94](https://github.com/certd/certd/commit/fe91d94090d22ed0a3ea753ba74dfaa1bf057c17))
## [1.21.1](https://github.com/certd/certd/compare/v1.21.0...v1.21.1) (2024-07-08)
### Performance Improvements
* 上传到主机,支持设置不mkdirs ([5ba9831](https://github.com/certd/certd/commit/5ba9831ed1aa6ec6057df246f1035b36b9c41d2e))
* 说明优化,默认值优化 ([970c7fd](https://github.com/certd/certd/commit/970c7fd8a0f557770e973d8462ee5684ef742810))
# [1.21.0](https://github.com/certd/certd/compare/v1.20.17...v1.21.0) (2024-07-03)
### Features
* 支持zero ssl ([eade2c2](https://github.com/certd/certd/commit/eade2c2b681569f03e9cd466e7d5bcd6703ed492))
## [1.20.17](https://github.com/certd/certd/compare/v1.20.16...v1.20.17) (2024-07-03)
### Performance Improvements
* 创建dns解析后,强制等待60s ([f47b35f](https://github.com/certd/certd/commit/f47b35f6d5bd7d675005c3e286b7e9a029201f8b))
* 文件上传提示由cert.crt改为cert.pem ([a09b0e4](https://github.com/certd/certd/commit/a09b0e48c176f3ed763791bd50322c29729f7c1c))
* 优化cname verify ([eba333d](https://github.com/certd/certd/commit/eba333de7a5b5ef4b0b7eaa904f578720102fa61))
## [1.20.16](https://github.com/certd/certd/compare/v1.20.15...v1.20.16) (2024-07-01)
### Bug Fixes
* 修复配置了cdn cname后申请失败的bug ([4a5fa76](https://github.com/certd/certd/commit/4a5fa767edc347d03d29a467e86c9a4d70b0220c))
## [1.20.15](https://github.com/certd/certd/compare/v1.20.14...v1.20.15) (2024-06-28)
### Bug Fixes
* 修复无法强制取消任务的bug ([9cc01db](https://github.com/certd/certd/commit/9cc01db1d569a5c45bb3e731f35d85df324a8e62))
### Performance Improvements
* 腾讯云dns provider 支持腾讯云的accessId ([e0eb3a4](https://github.com/certd/certd/commit/e0eb3a441384d474fe2923c69b25318264bdc9df))
* 支持windows文件上传 ([7f61cab](https://github.com/certd/certd/commit/7f61cab101fa13b4e88234e9ad47434e6130fed2))
## [1.20.14](https://github.com/certd/certd/compare/v1.20.13...v1.20.14) (2024-06-23)
### Bug Fixes
* 修复修改密码功能异常问题 ([f740ff5](https://github.com/certd/certd/commit/f740ff517f521dce361284c2c54bccc68aee0ea2))
## [1.20.13](https://github.com/certd/certd/compare/v1.20.12...v1.20.13) (2024-06-18)
### Bug Fixes
* 日志高度越界 ([c4c9adb](https://github.com/certd/certd/commit/c4c9adb8bfd513f57252e523794e3799a9b220f8))
* 修复邮箱设置页面SMTP拼写错误的问题 ([b98f1c0](https://github.com/certd/certd/commit/b98f1c0dd0bc6c6b4f814c578692afdf6d90b88d))
* 修复logo问题 ([7e483e6](https://github.com/certd/certd/commit/7e483e60913d509b113148c735fe13ba1d72dddf))
### Performance Improvements
* 增加警告,修复一些样式错乱问题 ([fd54c2f](https://github.com/certd/certd/commit/fd54c2ffac492222e85ff2f5f49a9ee5cfc73588))
* ssh登录支持openssh格式私钥、支持私钥密码 ([5c2c508](https://github.com/certd/certd/commit/5c2c50839a9076004f9034d754ac6deb531acdfb))
## [1.20.12](https://github.com/certd/certd/compare/v1.20.10...v1.20.12) (2024-06-17)
### Bug Fixes
* 修复aliyun域名超过100个找不到域名的bug ([5b1494b](https://github.com/certd/certd/commit/5b1494b3ce93d1026dc56ee741342fbb8bf7be24))
### Performance Improvements
* 增加系统设置,可以关闭自助注册功能 ([20feace](https://github.com/certd/certd/commit/20feacea12d43386540db6a600f391d786be4014))
* 增加cloudflare access token说明 ([934e6e2](https://github.com/certd/certd/commit/934e6e2bd05387cd50ffab95f230933543954098))
* 支持重置管理员密码,忘记密码的补救方案 ([732cbc5](https://github.com/certd/certd/commit/732cbc5e927b526850724594830392b2f10c6705))
* 支持cloudflare域名 ([fbb9a47](https://github.com/certd/certd/commit/fbb9a47e8f7bb805289b9ee64bd46ffee0f01c06))
## [1.20.10](https://github.com/certd/certd/compare/v1.20.9...v1.20.10) (2024-05-30)
### Bug Fixes
* 增加权限相关helper说明 ([83e4083](https://github.com/certd/certd/commit/83e40836ebff10bec60efe8933183e1ba1c22bf9))
* 增加权限相关helper说明 ([4304c94](https://github.com/certd/certd/commit/4304c9443ad9248f63dd6d8c512d8d6f32f90d37))
### Performance Improvements
* 上传到主机插件支持复制到本机路径 ([92446c3](https://github.com/certd/certd/commit/92446c339936f98f08f654b8971a7393d8435224))
* 优化文件下载包名 ([d9eb927](https://github.com/certd/certd/commit/d9eb927b0a1445feab08b1958aa9ea80637a5ae6))
* 增加任务复制功能 ([39ad759](https://github.com/certd/certd/commit/39ad7597fa0e19cc1f7631bbd6fea0a9e05a62c9))
## [1.20.9](https://github.com/certd/certd/compare/v1.20.8...v1.20.9) (2024-03-22)
**Note:** Version bump only for package root
## [1.20.8](https://github.com/certd/certd/compare/v1.20.7...v1.20.8) (2024-03-22)
**Note:** Version bump only for package root
## [1.20.7](https://github.com/certd/certd/compare/v1.20.6...v1.20.7) (2024-03-22)
**Note:** Version bump only for package root
## [1.20.6](https://github.com/certd/certd/compare/v1.20.5...v1.20.6) (2024-03-21)
### Bug Fixes
* 调整按钮图标到居中位置 ([836d18f](https://github.com/certd/certd/commit/836d18f07e22d00faf2f213bc3301a6672b5bafc))
### Performance Improvements
* 插件贡献文档及示例 ([72fb20a](https://github.com/certd/certd/commit/72fb20abf3ba5bdd862575d2907703a52fd7eb17))
## [1.20.5](https://github.com/certd/certd/compare/v1.20.2...v1.20.5) (2024-03-11)
### Bug Fixes
* 修复腾讯云cdn部署无法选择端点的bug ([154409b](https://github.com/certd/certd/commit/154409b1dfee3ea1caae740ad9c1f99a6e7a9814))
## [1.20.2](https://github.com/certd/certd/compare/v1.2.1...v1.20.2) (2024-02-28)
### Bug Fixes
* 临时修复阿里云domainlist接口返回域名列表不全的问题,后续还需要增加翻页查询 ([849c145](https://github.com/certd/certd/commit/849c145926984762bd9dbec87bd91cd047fc0855))
## [1.2.1](https://github.com/certd/certd/compare/v1.2.0...v1.2.1) (2023-12-12)
### Bug Fixes
* 修复邮箱设置无效的bug ([aaa3224](https://github.com/certd/certd/commit/aaa322464d0f65e924d1850995540d396ee24d25))
**Note:** Version bump only for package root
# [1.2.0](https://github.com/certd/certd/compare/v1.1.6...v1.2.0) (2023-10-27)
* 🔱: [client] sync upgrade with 2 commits [trident-sync] ([aa3207f](https://github.com/certd/certd/commit/aa3207fca5f15f7c3da789989d99c8ae7d1c4551))
### BREAKING CHANGES
* search支持自定义布局,search.layout、search.collapse转移到 search.container之下。如果想使用原来的search组件,请配置search.is=fs-search-v1
## [1.1.6](https://github.com/certd/certd/compare/v1.1.5...v1.1.6) (2023-07-10)
### Bug Fixes
* 修复上传证书到腾讯云失败的bug ([e950322](https://github.com/certd/certd/commit/e950322232e19d1263b8552eefa5b0150fd7864e))
## [1.1.5](https://github.com/certd/certd/compare/v1.1.4...v1.1.5) (2023-07-03)
**Note:** Version bump only for package root
## [1.1.4](https://github.com/certd/certd/compare/v1.1.3...v1.1.4) (2023-07-03)
### Bug Fixes
* 成功图标转动的问题 ([f87eee3](https://github.com/certd/certd/commit/f87eee3b9ff1ef9874e79a81fe0ed7104cb9ee8c))
### Performance Improvements
* cancel task ([bc65c0a](https://github.com/certd/certd/commit/bc65c0a786360c087fe95cad93ec6a87804cc5ee))
* flush log ([891a43a](https://github.com/certd/certd/commit/891a43ae6716ff98ed06643f7da2e35199ee195c))
* flush logger ([91be682](https://github.com/certd/certd/commit/91be6826b902e0f302b1a6cbdb1d24e15914c18d))
* timeout ([3eeb1f7](https://github.com/certd/certd/commit/3eeb1f77aa2922f3545f3d2067f561d95621d54f))
## [1.1.3](https://github.com/certd/certd/compare/v1.1.2...v1.1.3) (2023-07-03)
**Note:** Version bump only for package root
## [1.1.2](https://github.com/certd/certd/compare/v1.1.1...v1.1.2) (2023-07-03)
**Note:** Version bump only for package root
## [1.1.1](https://github.com/certd/certd/compare/v1.1.0...v1.1.1) (2023-06-28)
**Note:** Version bump only for package root
# [1.1.0](https://github.com/certd/certd/compare/v1.0.6...v1.1.0) (2023-06-28)
### Bug Fixes
* 修复access选择类型trigger ([2851a33](https://github.com/certd/certd/commit/2851a33eb2510f038fadb55da29512597a4ba512))
### Features
* 权限控制 ([27a4c81](https://github.com/certd/certd/commit/27a4c81c6d70e70abb3892c3ea58d4719988808a))
* 邮件通知 ([937e3fa](https://github.com/certd/certd/commit/937e3fac19cd03b8aa91db8ba03fda7fcfbacea2))
* cert download ([5a51c14](https://github.com/certd/certd/commit/5a51c14de521cb8075a80d2ae41a16e6d5281259))
* config merge ([fdc25dc](https://github.com/certd/certd/commit/fdc25dc0d795555cffacc4572648ec158988fbbb))
* save files ([99522fb](https://github.com/certd/certd/commit/99522fb49adb42c1dfdf7bec3dd52d641158285b))
* save files ([671d273](https://github.com/certd/certd/commit/671d273e2f9136d16896536b0ca127cf372f1619))
## [1.0.6](https://github.com/certd/certd/compare/v1.0.5...v1.0.6) (2023-05-25)
**Note:** Version bump only for package root
## [1.0.5](https://github.com/certd/certd/compare/v1.0.4...v1.0.5) (2023-05-25)
**Note:** Version bump only for package root
## [1.0.4](https://github.com/certd/certd/compare/v1.0.3...v1.0.4) (2023-05-25)
**Note:** Version bump only for package root
## [1.0.3](https://github.com/certd/certd/compare/v1.0.2...v1.0.3) (2023-05-25)
**Note:** Version bump only for package root
## [1.0.2](https://github.com/certd/certd/compare/v1.0.1...v1.0.2) (2023-05-24)
**Note:** Version bump only for package root
## [1.0.1](https://github.com/certd/certd/compare/v1.0.0...v1.0.1) (2023-05-24)
**Note:** Version bump only for package root
-5
View File
@@ -1,5 +0,0 @@
# 插件列表
![img_1.png](../images/plugins/list.png)
+58
View File
@@ -0,0 +1,58 @@
# 授权列表
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **阿里云授权** | |
| 2.| **EAB授权** | ZeroSSL证书申请需要EAB授权 |
| 3.| **google cloud** | 谷歌云授权 |
| 4.| **主机登录授权** | |
| 5.| **SFTP授权** | |
| 6.| **阿里云OSS授权** | 包含地域和Bucket |
| 7.| **FTP授权** | |
| 8.| **腾讯云** | |
| 9.| **腾讯云COS授权** | 腾讯云对象存储授权,包含地域和存储桶 |
| 10.| **七牛云授权** | |
| 11.| **七牛OSS授权** | |
| 12.| **天翼云授权** | |
| 13.| **s3/minio授权** | S3/minio oss授权 |
| 14.| **baota授权** | |
| 15.| **易盾DCDN授权** | https://user.yiduncdn.com |
| 16.| **易盾rcdn授权** | 易盾CDN,每月免费30G[注册即领](https://rhcdn.yiduncdn.com/register?code=8mn536rrzfbf8) |
| 17.| **易发云短信** | sms.yfyidc.cn/ |
| 18.| **cdnfly授权** | |
| 19.| **群晖登录授权** | |
| 20.| **k8s授权** | |
| 21.| **1panel授权** | 账号和密码 |
| 22.| **百度云授权** | |
| 23.| **LeCDN授权** | |
| 24.| **白山云授权** | |
| 25.| **plesk授权** | |
| 26.| **易支付** | |
| 27.| **支付宝** | |
| 28.| **微信支付** | |
| 29.| **长亭雷池授权** | |
| 30.| **lucky** | |
| 31.| **括彩云cdn授权** | 括彩云CDN,每月免费30G[注册即领](https://kuocaicdn.com/register?code=8mn536rrzfbf8) |
| 32.| **uniCloud** | unicloud授权 |
| 33.| **华为云授权** | |
| 34.| **西部数码授权** | |
| 35.| **多吉云** | |
| 36.| **我爱云授权** | 我爱云CDN |
| 37.| **CacheFly** | CacheFly |
| 38.| **Gcore** | Gcore |
| 39.| **亚马逊云aws授权** | |
| 40.| **dns.la授权** | |
| 41.| **又拍云** | |
| 42.| **火山引擎** | |
| 43.| **京东云** | |
| 44.| **51dns授权** | |
<style module>
table th:first-of-type {
width: 65px;
}
table th:nth-of-type(2) {
width: 240px;
}
</style>
+130
View File
@@ -0,0 +1,130 @@
# 任务插件
`70` 款任务插件
## 1. 证书申请
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **证书申请(JS版)** | 免费通配符域名证书申请,支持多个域名打到同一个证书上 |
| 2.| **证书申请(Lego** | 支持海量DNS解析提供商,推荐使用,一样的免费通配符域名证书申请,支持多个域名打到同一个证书上 |
| 3.| **商用证书托管** | 手动上传自定义证书后,自动部署(每次证书有更新,都需要手动上传一次) |
## 2. 主机
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **FTP-上传证书到FTP** | 将证书上传到FTP服务器 |
| 2.| **IIS-部署到IIS站点** | |
| 3.| **主机-执行远程主机脚本命令** | 可以执行重启nginx等操作让证书生效 |
| 4.| **主机-部署证书到SSH主机** | SFTP上传证书到主机,然后SSH执行部署脚本命令 |
## 3. CDN
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **易盾-部署到易盾DCDN** | 主要是防御,http://user.yiduncdn.com/ |
| 2.| **易盾-部署到易盾RCDN** | 易盾CDN,每月免费30G[注册即领](https://rhcdn.yiduncdn.com/register?code=8mn536rrzfbf8) |
| 3.| **cdnfly-部署证书到cdnfly** | cdnfly |
| 4.| **百度云-部署证书到CDN** | 部署到百度云CDN |
| 5.| **LeCDN-更新证书** | |
| 6.| **LeCDN-更新证书V2** | 支持新版本LeCDN |
| 7.| **白山云-更新证书** | |
| 8.| **天翼云-部署证书到CDN** | 部署证书到天翼云CDN和全站加速 |
| 9.| **括彩云-部署到括彩云CDN** | 括彩云CDN,每月免费30G[注册即领](https://kuocaicdn.com/register?code=8mn536rrzfbf8) |
| 10.| **多吉云-部署到多吉云CDN** | |
| 11.| **我爱云-部署证书到我爱云CDN** | 部署证书到我爱云CDN |
| 12.| **CacheFly-部署证书到CacheFly** | 部署证书到 CacheFly |
| 13.| **Gcore-部署证书到Gcore** | 仅上传 并不会部署到cdn |
| 14.| **Gcore-刷新Gcore证书** | 刷新现有的证书 |
| 15.| **又拍云-部署证书到CDN/USS** | 支持又拍云CDN,又拍云云存储USS |
## 4. 面板
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **宝塔-面板证书部署** | 部署宝塔面板本身的ssl证书 |
| 2.| **宝塔-网站证书部署** | 部署宝塔管理的站点的ssl证书,目前支持网站站点、docker站点等 |
| 3.| **群晖-部署证书到群晖面板** | Synology,支持6.x以上版本 |
| 4.| **K8S-部署证书到Secret** | 部署证书到k8s的secret |
| 5.| **K8S-Ingress 证书部署** | 部署证书到k8s的Ingress |
| 6.| **1Panel-部署证书到1Panel** | 更新1Panel的证书 |
| 7.| **Plesk-部署Plesk网站证书** | |
| 8.| **雷池-更新证书** | 更新长亭雷池WAF的证书 |
| 9.| **lucky-更新Lucky证书** | |
| 10.| **uniCloud-部署到服务空间** | 部署到服务空间 |
| 11.| **威联通-部署证书到威联通** | 部署证书到qnap |
## 5. 阿里云
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **阿里云-部署到Ack** | 部署到阿里云Ack集群Ingress等通过Secret管理证书的应用 |
| 2.| **阿里云-部署至任意云资源** | 【不建议使用】需要消耗阿里云自动部署次数,支持SLB、LIVE、webHosting、VOD、CR、DCDN、DDoS、CDN、ALB、APIGateway、FC、GA、MSE、NLB、OSS、SAE、WAF等云产品 |
| 3.| **阿里云-部署证书至CDN** | 自动部署域名证书至阿里云CDN |
| 4.| **阿里云-部署证书至DCDN** | 依赖证书申请前置任务,自动部署域名证书至阿里云DCDN |
| 5.| **阿里云-部署证书至OSS** | 自动部署域名证书至阿里云OSS |
| 6.| **阿里云-上传证书到阿里云** | 如果不想在阿里云上同一份证书上传多次,可以把此任务作为前置任务,其他阿里云任务证书那一项选择此任务的输出 |
| 7.| **阿里云-部署至阿里云WAF** | 部署证书到阿里云WAF |
| 8.| **阿里云-部署至ALB(应用负载均衡)** | ALB,更新监听器的默认证书 |
| 9.| **阿里云-部署至NLB(网络负载均衡)** | NLB,网络负载均衡,更新监听器的默认证书 |
| 10.| **阿里云-部署至SLB(传统负载均衡)** | 部署证书到阿里云SLB(传统负载均衡) |
| 11.| **阿里云-部署至阿里云FC(3.0)** | 部署证书到阿里云函数计算(FC3.0),【注意】证书的加密算法必须选择【pkcs1旧版】 |
## 6. 华为云
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **华为云-部署证书至CDN** | |
## 7. 腾讯云
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **腾讯云-部署证书到任意云资源** | 支持负载均衡、CDN、DDoS、直播、点播、Web应用防火墙、API网关、TEO、容器服务、对象存储、轻应用服务器、云原生微服务、云开发 |
| 2.| **腾讯云-部署到CLB** | 暂时只支持单向认证证书,暂时只支持通用负载均衡 |
| 3.| **腾讯云-部署到CDN(废弃)** | 已废弃,请使用v2版 |
| 4.| **腾讯云-部署到CDN-v2** | 推荐使用 |
| 5.| **腾讯云-上传证书到腾讯云** | 上传成功后输出:tencentCertId |
| 6.| **腾讯云-部署证书到COS** | 部署到腾讯云COS源站域名证书【注意:很不稳定,需要重试很多次偶尔才能成功一次】 |
| 7.| **腾讯云-部署到腾讯云EO** | 腾讯云边缘安全加速平台EO,必须配置上传证书到腾讯云任务 |
| 8.| **腾讯云-删除即将过期证书** | 仅删除未使用的证书 |
| 9.| **腾讯云-部署到TKE-ingress** | serverless集群请使用K8S部署插件;Qcloud类型需要【上传到腾讯云】作为前置任务;ApiServer未开启外网访问则需要做域名的内网IP映射 |
## 8. 火山引擎
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **火山引擎-部署证书至CDN** | 支持网页,文件下载,音视频点播 |
| 2.| **火山引擎-部署证书至CLB** | 部署至火山引擎负载均衡 |
| 3.| **火山引擎-上传证书至证书中心** | 上传证书至火山引擎证书中心 |
| 4.| **火山引擎-部署证书至ALB** | 部署至火山引擎应用负载均衡 |
| 5.| **火山引擎-部署证书至Live** | 部署至火山引擎视频直播 |
## 9. 京东云
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **京东云-部署证书至CDN** | 京东云内容分发网络 |
| 2.| **京东云-更新已有证书** | 更新SSL数字证书中的证书 |
| 3.| **京东云-上传新证书** | 上传证书到SSL数字证书中心 |
## 10. 七牛云
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **七牛云-部署证书至OSS** | 自动部署域名证书至七牛云KODO,注意是自定义源站域名,不是CDN域名 |
| 2.| **七牛云-部署证书至CDN** | 自动部署域名证书至七牛云CDN |
## 11. 亚马逊云
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **AWS-部署证书到CloudFront** | 部署证书到 AWS CloudFront |
## 12. 其他
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **Demo-测试插件** | |
| 2.| **重启 Certd** | 【仅管理员可用】 重启 certd的https服务,用于更新 Certd 的 ssl 证书 |
| 3.| **自定义js脚本** | 【仅管理员】运行自定义js脚本执行 |
| 4.| **等待** | 等待一段时间 |
| 5.| **数据库备份** | 仅支持备份SQLite数据库 |
<style module>
table th:first-of-type {
width: 65px;
}
table th:nth-of-type(2) {
width: 240px;
}
</style>
+22
View File
@@ -0,0 +1,22 @@
# DNS提供商
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **阿里云** | 阿里云DNS解析提供商 |
| 2.| **腾讯云** | 腾讯云域名DNS解析提供者 |
| 3.| **华为云** | 华为云DNS解析提供商 |
| 4.| **西部数码** | west dns provider |
| 5.| **dns.la** | dns.la |
| 6.| **火山引擎** | 火山引擎DNS解析提供商 |
| 7.| **京东云** | 京东云DNS解析提供商 |
| 8.| **51dns** | 51DNS |
<style module>
table th:first-of-type {
width: 65px;
}
table th:nth-of-type(2) {
width: 240px;
}
</style>
+26
View File
@@ -0,0 +1,26 @@
# 通知插件
| 序号 | 名称 | 说明 |
|-----|-----|-----|
| 1.| **企业微信通知** | 企业微信群聊机器人通知 |
| 2.| **电子邮件** | 电子邮件通知 |
| 3.| **爱语飞飞微信通知(iyuu)** | https://iyuu.cn/ |
| 4.| **自定义webhook** | 根据模版自定义http请求 |
| 5.| **Server酱ᵀ** | https://sct.ftqq.com/ |
| 6.| **Server酱³** | https://doc.sc3.ft07.com/serverchan3 |
| 7.| **AnPush** | https://anpush.com |
| 8.| **Telegram通知** | Telegram Bot推送通知 |
| 9.| **Discord 通知** | Discord 机器人通知 |
| 10.| **Slack通知** | Slack消息推送通知 |
| 11.| **Bark 通知** | Bark 推送通知插件 |
| 12.| **飞书通知** | 飞书群聊webhook通知 |
<style module>
table th:first-of-type {
width: 65px;
}
table th:nth-of-type(2) {
width: 240px;
}
</style>
Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

+81
View File
@@ -0,0 +1,81 @@
# 常见报错解决
## 1. getaddrinfo ENOTFOUND错误
如果出现`getaddrinfo ENOTFOUND`/`getaddrinfo EAI_AGAIN`错误,可以尝试在`docker-compose.yaml`中设置dns
```yaml
version: '3.3' # 兼容旧版docker-compose
services:
certd:
#↓↓↓↓ ------------ # 如果出现getaddrinfo ENOTFOUND 或 EAI_AGAIN错误,可以尝试设置dns
dns:
- 223.5.5.5 # 阿里云公共dns
- 223.6.6.6
# # ↓↓↓↓ ------- # 如果你服务器在腾讯云,可以用这个替换上面阿里云的公共dns
# - 119.29.29.29 # 腾讯云公共dns
# - 182.254.116.116
# # ↓↓↓↓ ------- # 如果你服务器部署在国外,可以用这个替换上面阿里云的公共dns
# - 8.8.8.8 # 谷歌公共dns
# - 8.8.4.4
```
如果仍然有问题,按如下步骤检查是否能够ping通域名
```shell
docker exec -it certd /bin/sh
ping www.baidu.com
ping gg.px.certd.handfree.work
ping app.handfree.work
```
如果您是宝塔部署的
可以试试将容器网络加入brige网络,看是否解决问题
![img.png](images/baota-net.png)
如果还是不行,请联系我们
## 2. 连接IPv6超时
docker-compose 需要放开IPv6网络的配置
```yaml
services:
certd:
networks:
- ip6net
# ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把上面networks的注释放开
networks:
ip6net:
enable_ipv6: true
ipam:
config:
- subnet: 2001:db8::/64
```
## 3. SSL_CERT_NOT_MATCH_DOMAIN_ERROR
部署证书任务报类似 `SSL_CERT_NOT_MATCH_DOMAIN_ERROR`错误
这是由于当前流水线的证书域名与要部署的目标站点的域名不匹配导致的,在申请证书任务中,增加目标站点域名,重新运行流水线即可
## 4. 没有服务器配置文件,请检查是否开启了外网映射!
宝塔网站证书部署报错:`Error: 没有服务器配置文件,请检查是否开启了外网映射!`
解决方案:先手动在宝塔网站中设置一次证书
## 5. 如何查看容器日志
```shell
docker logs -f --tail 200 certd
```
## 6. 容器内走时不准,或者时区不对
走时不准确,慢慢偏差越来越大
或者整个时区都不对
可以尝试挂载localtime文件
```yaml
volumes:
# ↓↓↓↓↓ -------------------- 如果走时不准,请尝试挂载localtime文件
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
```
+14
View File
@@ -0,0 +1,14 @@
# 使用问题
## 1. 是否支持IP证书
因为ACME协议不支持IP证书,所以certd目前也不支持IP证书
## 2. 建议设置多长时间运行一次流水线
建议每天运行一次,检查证书过期时间
当证书没过期时,自动跳过部署
当证书到期前35天(创建流水线时可以修改),将会自动重新申请证书,自动部署
Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

+17
View File
@@ -0,0 +1,17 @@
# 部署证书到ESXi
使用`部署证书到主机插件`即可
## 开启ssh
登陆ESXi Web后台,点击 主机 -> 操作 -> 服务 -> 启用 Secure ShellSSH)打开SSH
## 添加部署到主机任务
![img.png](./images/ssh.png)
## 配置重启脚本
```bash
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
```
+10
View File
@@ -9,3 +9,13 @@ ALIYUN_CLIENT_CONNECT_TIMEOUT=10000 # 连接超时,单位毫秒
ALIYUN_CLIENT_READ_TIMEOUT=10000 #读取数据超时,单位毫秒 ALIYUN_CLIENT_READ_TIMEOUT=10000 #读取数据超时,单位毫秒
``` ```
## 阿里云Access权限设置
* 申请证书 `AliyunDNSFullAccess`
* 上传证书到阿里云: `AliyunYundunCertFullAccess`
* 部署证书到OSS: `AliyunYundunCertFullAccess``AliyunOSSFullAccess`
* 部署证书到CDN: `AliyunYundunCertFullAccess``AliyunCDNFullAccess`
* 部署证书到DCDN `AliyunYundunCertFullAccess``AliyunDCDNFullAccess`
+4 -3
View File
@@ -1,5 +1,6 @@
# 数据库自动备份 # 数据库备份
* 两种备份方法: 1、手动备份 2、自动备份
* 本文仅限sqlite数据库。
## 一、手动备份 ## 一、手动备份
数据库文件根据不同的部署方式保存的位置不一样,您可以手动复制出来进行备份 数据库文件根据不同的部署方式保存的位置不一样,您可以手动复制出来进行备份
@@ -27,4 +28,4 @@
## 三、备份恢复 ## 三、备份恢复
将备份的`db.sqlite`覆盖到原来的位置即可 将备份的`db.sqlite`覆盖到原来的位置,重启certd即可
+10
View File
@@ -0,0 +1,10 @@
# 证书申请失败情况
## DNS记录问题
1. DNS 不要设置CAA记录,删除即可
2. DNSSEC相关报错,DNSSEC管理中删除即可
3. DNS 有其他平台申请过的_acme-challenge记录,删除即可
Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

+9
View File
@@ -0,0 +1,9 @@
# 商业版文档
![](./images/index.png)
## 支付方式配置
* [支付宝支付配置](./payments/alipay.md)
* [微信支付配置](./payments/wxpay.md)
* [彩虹易支付配置](./payments/yizhifu.md)
+26
View File
@@ -0,0 +1,26 @@
# 支付宝配置
## 配置步骤
1. 注册支付宝商家账号
* 开通电脑网站支付产品(需营业执照) https://b.alipay.com/page/product-workspace/all-product
2. 开放平台,创建应用,获取APPID
* 登录支付宝开放平台,进入开发者中心,创建网页应用,获取应用的AppId(左上角复制)
* 开发者中心:https://open.alipay.com/develop/manage
3. 进入应用详情,选择开发设置,配置接口加签方式 (选择密钥类型)
* 参考文档:https://opendocs.alipay.com/common/02kdnc?pathHash=fb0c752a
* 此步骤完成后,可以获取应用的私钥、支付宝公钥。
* 注意:支付宝不会保存应用的私钥,你需要自己保管好私钥。
4. 在Certd后台配置支付宝
* 进入“系统”->"设置"->“支付设置”
* 启用支付宝,选择“支付宝配置”,点击添加
* 填写支付宝AppId、应用私钥、支付宝公钥等信息即可。
+27
View File
@@ -0,0 +1,27 @@
# 微信支付配置
## 配置步骤
1. 开通Native支付
* 登录微信支付平台
* 进入产品中心: https://pay.weixin.qq.com/index.php/extend/product/lists?tid=3
* 选择开通Native支付
2. 申请证书
* 进入“账户中心”->“API安全”->“商户API证书”->“管理证书”
* 根据指引生成证书
* 得到私钥和公钥
3. 填写APIv3密钥
* 进入“账户中心”->“API安全”->“解密回调”
* 填写APIv3密钥
* 参考文档 https://kf.qq.com/faq/180830E36vyQ180830AZFZvu.html
4. 在Certd后台配置微信支付
* 进入“系统”->"设置"->“支付设置”
* 启用微信支付,选择“微信支付配置”,点击添加
* 填写微信支付商户号、证书私钥、证书公钥、APIv3密钥即可。
+19
View File
@@ -0,0 +1,19 @@
# 彩虹易支付配置
彩虹易支付是一款非常流行的php聚合支付系统。
## 配置步骤
1. 获取商户ID、商户密钥
* 登录彩虹易支付平台
* 进入用户中心:https://xxxxxx.com/user/userinfo.php?mod=api
* 点击API信息
* 可以复制:接口地址、商户ID、商户密钥(key)
* 点击查看文档,了解支持的签名类型,一般为MD5
2. 进入Certd后台配置彩虹易支付
* 进入“系统”->"设置"->“支付设置”
* 启用彩虹易支付,选择“彩虹易支付配置”,点击添加
* 填写接口地址、商户ID、商户密钥、签名方式等信息即可。
+9
View File
@@ -6,6 +6,10 @@
## 2. 使用示例 ## 2. 使用示例
```js ```js
// 如果需要引用第三方库,必须使用import语法
// const thirdSdk = await import("third-sdk-name")
const certPem = ctx.self.cert.crt const certPem = ctx.self.cert.crt
const certKey = ctx.self.cert.key const certKey = ctx.self.cert.key
@@ -18,6 +22,10 @@ const res = await ctx.http.request({
key : certKey key : certKey
} }
}) })
if(!res || res.code !== 0){
//抛异常才能让任务失败
throw new Error("上传失败")
}
//不能用console.log,需要用ctx.logger 才能把日志打印在ui上 //不能用console.log,需要用ctx.logger 才能把日志打印在ui上
ctx.logger.info("上传成功",res.data) ctx.logger.info("上传成功",res.data)
@@ -79,3 +87,4 @@ type CustomScriptPlugin = {
} }
``` ```
+12
View File
@@ -25,3 +25,15 @@ win+R 弹出运行对话框,输入 services.msc 打开服务管理器
C:\Users\xxxxx> C:\Users\xxxxx>
↑↑↑↑---------这个就是windows ssh的登录用户名 ↑↑↑↑---------这个就是windows ssh的登录用户名
``` ```
### 4. 切换默认shell终端
安装openssh后,默认终端是cmd,建议切换成powershell
```shell
# powershell中执行如下命令切换
# 设置默认shell为powershell 【推荐】
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
# 恢复默认shell为cmd 【不推荐】
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\cmd.exe" -PropertyType String -Force
```
Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 51 KiB

+2
View File
@@ -18,6 +18,8 @@ CERTD_HTTPS_port=7002
### 2、配置复制到本机任务 ### 2、配置复制到本机任务
将证书复制到certd的证书安装位置 将证书复制到certd的证书安装位置
证书路径:`ssl/cert.crt`
私钥路径:`ssl/cert.key`
![](./images/1.png) ![](./images/1.png)
![](./images/2.png) ![](./images/2.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

+13
View File
@@ -0,0 +1,13 @@
# 带输出的前置任务
前置任务输出可以在后续任务中使用
比如上传证书到阿里云,会返回阿里云的CertId,之后其他阿里云的部署任务可以选择复用这个证书
## 复用证书
![img.png](images/pretask1.png)
在后续任务中可以选择前置任务的输出
![img.png](images/pretask2.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

+21
View File
@@ -0,0 +1,21 @@
# IPv6支持
## 启用IPv6
`docker-compose.yaml`中启用IPv6支持,放开如下注释:
```yaml
# #↓↓↓↓ ------------------------------------------------------------- 启用ipv6网络
networks:
- ip6net
networks:
ip6net:
enable_ipv6: true
ipam:
config:
- subnet: 2001:db8::/64
```
## 设置双栈网络优先级
可根据实际情况设置
![img.png](./images/ipv6.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 53 KiB

+6
View File
@@ -1,8 +1,12 @@
# 群晖部署和证书更新 # 群晖部署和证书更新
支持群晖`6.x``7.x`
## 一、群晖部署Certd ## 一、群晖部署Certd
以下是群晖`7.x`的部署`certd`步骤。
群晖`6.x`请参考[docker部署](./../../install/docker/)
### 1. 打开Container Manager ### 1. 打开Container Manager
![](./images/1.png) ![](./images/1.png)
@@ -32,6 +36,8 @@
## 二、更新群晖证书 ## 二、更新群晖证书
证书部署插件支持群晖`6.x``7.x`
## 1. 前提条件 ## 1. 前提条件
* 已经部署了certd * 已经部署了certd
* 群晖上已经设置好了证书(证书建议设置好描述,插件需要根据描述查找证书) * 群晖上已经设置好了证书(证书建议设置好描述,插件需要根据描述查找证书)
Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

+16
View File
@@ -8,8 +8,11 @@
![](./tencent-access.png) ![](./tencent-access.png)
## 如何避免收到腾讯云证书过期邮件 ## 如何避免收到腾讯云证书过期邮件
> 新版本已经自动将证书设置为免提醒,certd上传的证书后续都不会再提醒了。
腾讯云在证书有效期还剩28天时会发送过期通知邮件 腾讯云在证书有效期还剩28天时会发送过期通知邮件
您可以通过配置“腾讯云过期证书删除”任务来避免收到此类邮件。 您可以通过配置“腾讯云过期证书删除”任务来避免收到此类邮件。
@@ -19,3 +22,16 @@
> 1. 选择腾讯云授权,需授权`服务角色SSL_QCSLinkedRoleInReplaceLoadCertificate`权限 > 1. 选择腾讯云授权,需授权`服务角色SSL_QCSLinkedRoleInReplaceLoadCertificate`权限
> 2. `1.26.14`版本之前Certd创建的证书流水线默认是到期前20天才更新证书,需要将之前创建的证书申请任务的更新天数修改为35天,保证删除之前就已经替换掉即将过期证书 > 2. `1.26.14`版本之前Certd创建的证书流水线默认是到期前20天才更新证书,需要将之前创建的证书申请任务的更新天数修改为35天,保证删除之前就已经替换掉即将过期证书
![](./images/delete2.png) ![](./images/delete2.png)
## TKE service 的 TCP_SSL Opaque类型证书授权
部署证书到腾讯云TKE,如果报以下错误:
`is forbidden: User "xxxxxx-xxxxx" cannot get resource "secrets" in API group "" in the namespace "default"'`
则需要单独从授权管理侧再授权子用户的权限
![](./images/tcpssl.png)
![](./images/opaque.png)
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 60 KiB

+3 -3
View File
@@ -24,13 +24,13 @@ features:
- title: 全自动申请证书 - title: 全自动申请证书
details: 支持所有注册商注册的域名 details: 支持所有注册商注册的域名
- title: 全自动部署证书 - title: 全自动部署证书
details: 支持部署到主机、阿里云、腾讯云等,目前已支持30+部署插件 details: 支持部署到主机、阿里云、腾讯云等,目前已支持60+部署插件
- title: 多域名、泛域名打到一个证书上 - title: 多域名、泛域名打到一个证书上
details: 支持通配符域名/泛域名,支持多个域名打到一个证书上 details: 支持通配符域名/泛域名,支持多个域名打到一个证书上
- title: 多证书格式支持 - title: 多证书格式支持
details: 支持pem、pfx、der、jks等多种证书格式,支持Google、Letsencrypt、ZeroSSL证书颁发机构 details: 支持pem、pfx、der、jks等多种证书格式,支持Google、Letsencrypt、ZeroSSL证书颁发机构
- title: 支持私有化部署 - title: 支持私有化部署
details: 保障数据安全 details: 授权数据加密存储,保障数据安全
- title: 多数据库支持 - title: 多数据库支持
details: 支持sqlitepostgresql数据库 details: 支持SQLite、Postgresql、MySQL数据库
--- ---
+1 -1
View File
@@ -9,5 +9,5 @@
} }
}, },
"npmClient": "pnpm", "npmClient": "pnpm",
"version": "1.27.3" "version": "1.36.17"
} }
+13 -6
View File
@@ -9,31 +9,35 @@
"@lerna-lite/run": "^3.9.3", "@lerna-lite/run": "^3.9.3",
"@lerna-lite/version": "^3.9.3", "@lerna-lite/version": "^3.9.3",
"medium-zoom": "^1.1.0", "medium-zoom": "^1.1.0",
"vitepress": "^1.4.1", "vitepress": "^2.0.0-alpha.4",
"vitepress-plugin-lightbox": "^1.0.2" "vitepress-plugin-lightbox": "^1.0.2"
}, },
"scripts": { "scripts": {
"start": "lerna bootstrap --hoist", "start": "lerna bootstrap --hoist",
"start:server": "cd ./packages/ui/certd-server && npm start",
"devb": "lerna run dev-build", "devb": "lerna run dev-build",
"i-all": "lerna link && lerna exec npm install ", "i-all": "lerna link && lerna exec npm install ",
"publish": "npm run prepublishOnly2 && lerna publish --force-publish=pro/plus-core --conventional-commits --create-release github && npm run afterpublishOnly && npm run commitAll", "publish": "npm run prepublishOnly2 && lerna publish --force-publish=pro/plus-core --conventional-commits --create-release github && npm run afterpublishOnly && npm run commitAll",
"afterpublishOnly": "npm run copylogs && time /t >build.trigger && git add ./build.trigger && git commit -m \"build: trigger build image\" && TIMEOUT /T 10 && git push", "afterpublishOnly": "npm run copylogs && time /t >build.trigger && git add ./build.trigger && git commit -m \"build: trigger build image\" && TIMEOUT /T 10 && git push",
"transform-sql": "cd ./packages/ui/certd-server/db/ && node --experimental-json-modules transform.js", "transform-sql": "cd ./packages/ui/certd-server/db/ && node --experimental-json-modules transform.js",
"commitAll": "git add . && git commit -m \"build: publish\" && git push && npm run commitPro", "commitAll": "git add . && git commit -m \"build: publish\" && git push && npm run commitPro",
"commitPro": "cd ./packages/core/ && git add . && git commit -m \"build: publish\" && git push", "commitPro": "cd ./packages/pro/ && git add . && git commit -m \"build: publish\" && git push",
"copylogs": "copyfiles \"CHANGELOG.md\" ./docs/guide/other/changelogs/", "copylogs": "copyfiles \"CHANGELOG.md\" ./docs/guide/changelogs/",
"prepublishOnly1": "npm run check && lerna run build ", "prepublishOnly1": "npm run check && lerna run build ",
"prepublishOnly2": "npm run check && npm run before-build && lerna run build ", "prepublishOnly2": "npm run check && npm run before-build && lerna run build ",
"before-build": "npm run transform-sql && cd ./packages/core/basic && time /t >build.md && git add ./build.md && git commit -m \"build: prepare to build\"", "before-build": "npm run transform-sql && cd ./packages/core/basic && time /t >build.md && git add ./build.md && git commit -m \"build: prepare to build\"",
"deploy1": "node --experimental-json-modules deploy.js ", "deploy1": "node --experimental-json-modules deploy.js ",
"check": "node --experimental-json-modules publish-check.js", "check": "node --experimental-json-modules publish-check.js",
"init": "lerna run build", "init": "lerna run build",
"init:dev": "lerna run build",
"docs:dev": "vitepress dev docs", "docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs", "docs:build": "npm run copylogs && vitepress build docs",
"docs:preview": "vitepress preview docs" "docs:preview": "vitepress preview docs",
"pub": "echo 1"
}, },
"license": "AGPL-3.0", "license": "AGPL-3.0",
"dependencies": { "dependencies": {
"@certd/ui-server": "link:packages/ui/certd-server",
"axios": "^1.7.7", "axios": "^1.7.7",
"copyfiles": "^2.4.1", "copyfiles": "^2.4.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
@@ -41,5 +45,8 @@
}, },
"workspaces": [ "workspaces": [
"packages/**" "packages/**"
] ],
"pnpm": {
"neverBuiltDependencies": []
}
} }
+1 -1
View File
@@ -6,7 +6,7 @@ root = true
[*] [*]
indent_style = space indent_style = space
indent_size = 4 indent_size = 2
trim_trailing_whitespace = true trim_trailing_whitespace = true
[{*.yml,*.yaml}] [{*.yml,*.yaml}]
+7
View File
@@ -0,0 +1,7 @@
{
"printWidth": 220,
"bracketSpacing": true,
"singleQuote": false,
"trailingComma": "es5",
"arrowParens": "avoid"
}
+365
View File
@@ -3,6 +3,371 @@
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.36.17](https://github.com/publishlab/node-acme-client/compare/v1.36.16...v1.36.17) (2025-08-17)
**Note:** Version bump only for package @certd/acme-client
## [1.36.16](https://github.com/publishlab/node-acme-client/compare/v1.36.15...v1.36.16) (2025-08-16)
### Performance Improvements
* 部署到百度cdn支持自动获取域名列表选择 ([4e432ed](https://github.com/publishlab/node-acme-client/commit/4e432ed03f4fb564e85a2f284ee26b58400b82f5))
## [1.36.15](https://github.com/publishlab/node-acme-client/compare/v1.36.14...v1.36.15) (2025-08-07)
**Note:** Version bump only for package @certd/acme-client
## [1.36.14](https://github.com/publishlab/node-acme-client/compare/v1.36.13...v1.36.14) (2025-07-28)
**Note:** Version bump only for package @certd/acme-client
## [1.36.13](https://github.com/publishlab/node-acme-client/compare/v1.36.12...v1.36.13) (2025-07-23)
**Note:** Version bump only for package @certd/acme-client
## [1.36.12](https://github.com/publishlab/node-acme-client/compare/v1.36.11...v1.36.12) (2025-07-22)
**Note:** Version bump only for package @certd/acme-client
## [1.36.11](https://github.com/publishlab/node-acme-client/compare/v1.36.10...v1.36.11) (2025-07-22)
**Note:** Version bump only for package @certd/acme-client
## [1.36.10](https://github.com/publishlab/node-acme-client/compare/v1.36.9...v1.36.10) (2025-07-18)
**Note:** Version bump only for package @certd/acme-client
## [1.36.9](https://github.com/publishlab/node-acme-client/compare/v1.36.7...v1.36.9) (2025-07-15)
**Note:** Version bump only for package @certd/acme-client
## [1.36.7](https://github.com/publishlab/node-acme-client/compare/v1.36.6...v1.36.7) (2025-07-15)
**Note:** Version bump only for package @certd/acme-client
## [1.36.6](https://github.com/publishlab/node-acme-client/compare/v1.36.5...v1.36.6) (2025-07-14)
**Note:** Version bump only for package @certd/acme-client
## [1.36.5](https://github.com/publishlab/node-acme-client/compare/v1.36.4...v1.36.5) (2025-07-11)
**Note:** Version bump only for package @certd/acme-client
## [1.36.4](https://github.com/publishlab/node-acme-client/compare/v1.36.3...v1.36.4) (2025-07-10)
**Note:** Version bump only for package @certd/acme-client
## [1.36.3](https://github.com/publishlab/node-acme-client/compare/v1.36.2...v1.36.3) (2025-07-07)
**Note:** Version bump only for package @certd/acme-client
## [1.36.2](https://github.com/publishlab/node-acme-client/compare/v1.36.1...v1.36.2) (2025-07-06)
**Note:** Version bump only for package @certd/acme-client
## [1.36.1](https://github.com/publishlab/node-acme-client/compare/v1.36.0...v1.36.1) (2025-07-02)
**Note:** Version bump only for package @certd/acme-client
# [1.36.0](https://github.com/publishlab/node-acme-client/compare/v1.35.5...v1.36.0) (2025-07-01)
**Note:** Version bump only for package @certd/acme-client
## [1.35.5](https://github.com/publishlab/node-acme-client/compare/v1.35.4...v1.35.5) (2025-06-20)
**Note:** Version bump only for package @certd/acme-client
## [1.35.4](https://github.com/publishlab/node-acme-client/compare/v1.35.3...v1.35.4) (2025-06-13)
**Note:** Version bump only for package @certd/acme-client
## [1.35.3](https://github.com/publishlab/node-acme-client/compare/v1.35.2...v1.35.3) (2025-06-12)
**Note:** Version bump only for package @certd/acme-client
## [1.35.2](https://github.com/publishlab/node-acme-client/compare/v1.35.1...v1.35.2) (2025-06-09)
**Note:** Version bump only for package @certd/acme-client
## [1.35.1](https://github.com/publishlab/node-acme-client/compare/v1.35.0...v1.35.1) (2025-06-07)
### Performance Improvements
* 证书申请支持letencrypt profile选项 ([2eb0e54](https://github.com/publishlab/node-acme-client/commit/2eb0e54909d8ad36708e07c12fd598998159bc43))
# [1.35.0](https://github.com/publishlab/node-acme-client/compare/v1.34.11...v1.35.0) (2025-06-05)
**Note:** Version bump only for package @certd/acme-client
## [1.34.11](https://github.com/publishlab/node-acme-client/compare/v1.34.10...v1.34.11) (2025-06-05)
### Bug Fixes
* 修复中文域名使用cname方式校验无法通过的问题 ([f7d5baa](https://github.com/publishlab/node-acme-client/commit/f7d5baa6d04cb83c572b06e62f885890cfa0143a))
### Performance Improvements
* 优化cname检查,当有冲突的cname记录时,给出提示 ([e639a8f](https://github.com/publishlab/node-acme-client/commit/e639a8f9f12640ffcca69f1a6a0324459924afbd))
## [1.34.10](https://github.com/publishlab/node-acme-client/compare/v1.34.9...v1.34.10) (2025-06-03)
**Note:** Version bump only for package @certd/acme-client
## [1.34.9](https://github.com/publishlab/node-acme-client/compare/v1.34.8...v1.34.9) (2025-05-30)
**Note:** Version bump only for package @certd/acme-client
## [1.34.8](https://github.com/publishlab/node-acme-client/compare/v1.34.7...v1.34.8) (2025-05-28)
**Note:** Version bump only for package @certd/acme-client
## [1.34.7](https://github.com/publishlab/node-acme-client/compare/v1.34.6...v1.34.7) (2025-05-26)
**Note:** Version bump only for package @certd/acme-client
## [1.34.6](https://github.com/publishlab/node-acme-client/compare/v1.34.5...v1.34.6) (2025-05-25)
**Note:** Version bump only for package @certd/acme-client
## [1.34.5](https://github.com/publishlab/node-acme-client/compare/v1.34.4...v1.34.5) (2025-05-19)
**Note:** Version bump only for package @certd/acme-client
## [1.34.4](https://github.com/publishlab/node-acme-client/compare/v1.34.3...v1.34.4) (2025-05-16)
**Note:** Version bump only for package @certd/acme-client
## [1.34.3](https://github.com/publishlab/node-acme-client/compare/v1.34.2...v1.34.3) (2025-05-15)
**Note:** Version bump only for package @certd/acme-client
## [1.34.2](https://github.com/publishlab/node-acme-client/compare/v1.34.1...v1.34.2) (2025-05-11)
### Performance Improvements
* http方式支持校验443端口 ([d75fcb7](https://github.com/publishlab/node-acme-client/commit/d75fcb7fec421a9a638eaa27fe9378c84b5e0f19))
## [1.34.1](https://github.com/publishlab/node-acme-client/compare/v1.34.0...v1.34.1) (2025-05-05)
### Bug Fixes
* 根据SOA记录判断子域名托管有缺陷,改回手动配置子域名托管记录的方式 ([1b280a2](https://github.com/publishlab/node-acme-client/commit/1b280a2940f9e2d919b0bf23b89cc185be1fa498))
# [1.34.0](https://github.com/publishlab/node-acme-client/compare/v1.33.8...v1.34.0) (2025-04-28)
**Note:** Version bump only for package @certd/acme-client
## [1.33.8](https://github.com/publishlab/node-acme-client/compare/v1.33.7...v1.33.8) (2025-04-26)
### Bug Fixes
* 修复http上传方式无法清除记录文件的bug ([72a7b51](https://github.com/publishlab/node-acme-client/commit/72a7b51d479602b2c54c6c3ac8d8a0dcb9664e73))
### Performance Improvements
* 从域名的soa获取主域名,子域名托管无需额外配置 ([a586a92](https://github.com/publishlab/node-acme-client/commit/a586a92d5e32ea846ac37be52a7ad8c328d89966))
* 七牛oss支持删除过期备份 ([b7113bd](https://github.com/publishlab/node-acme-client/commit/b7113bda2378116d6c116dc583f563cce7cf9f00))
## [1.33.7](https://github.com/publishlab/node-acme-client/compare/v1.33.6...v1.33.7) (2025-04-22)
**Note:** Version bump only for package @certd/acme-client
## [1.33.6](https://github.com/publishlab/node-acme-client/compare/v1.33.5...v1.33.6) (2025-04-20)
**Note:** Version bump only for package @certd/acme-client
## [1.33.5](https://github.com/publishlab/node-acme-client/compare/v1.33.4...v1.33.5) (2025-04-17)
**Note:** Version bump only for package @certd/acme-client
## [1.33.4](https://github.com/publishlab/node-acme-client/compare/v1.33.3...v1.33.4) (2025-04-15)
**Note:** Version bump only for package @certd/acme-client
## [1.33.3](https://github.com/publishlab/node-acme-client/compare/v1.33.2...v1.33.3) (2025-04-14)
**Note:** Version bump only for package @certd/acme-client
## [1.33.2](https://github.com/publishlab/node-acme-client/compare/v1.33.1...v1.33.2) (2025-04-12)
**Note:** Version bump only for package @certd/acme-client
## [1.33.1](https://github.com/publishlab/node-acme-client/compare/v1.33.0...v1.33.1) (2025-04-12)
**Note:** Version bump only for package @certd/acme-client
# [1.33.0](https://github.com/publishlab/node-acme-client/compare/v1.32.0...v1.33.0) (2025-04-11)
**Note:** Version bump only for package @certd/acme-client
# [1.32.0](https://github.com/publishlab/node-acme-client/compare/v1.31.11...v1.32.0) (2025-04-04)
### Bug Fixes
* 修复从本地dns获取记录报错的bug ([c39b1bf](https://github.com/publishlab/node-acme-client/commit/c39b1bf823ddc6216bed2049e4c87e6107def08a))
### Features
* 优化证书申请速度,修复某些情况下letsencrypt 校验失败的问题 ([857589b](https://github.com/publishlab/node-acme-client/commit/857589b365c6f709e0ae67914d2f50ce182e6dd6))
### Performance Improvements
* 优化华为dns解析记录创建和删除问题 ([0948c5b](https://github.com/publishlab/node-acme-client/commit/0948c5bc691d2ee6eb47c72a85da1b7453361878))
## [1.31.11](https://github.com/publishlab/node-acme-client/compare/v1.31.10...v1.31.11) (2025-04-02)
**Note:** Version bump only for package @certd/acme-client
## [1.31.10](https://github.com/publishlab/node-acme-client/compare/v1.31.9...v1.31.10) (2025-03-29)
**Note:** Version bump only for package @certd/acme-client
## [1.31.9](https://github.com/publishlab/node-acme-client/compare/v1.31.8...v1.31.9) (2025-03-28)
### Performance Improvements
* dns支持火山引擎 ([99ff879](https://github.com/publishlab/node-acme-client/commit/99ff879d93658c29ea493a4bde7e9e3f85996d64))
## [1.31.8](https://github.com/publishlab/node-acme-client/compare/v1.31.7...v1.31.8) (2025-03-26)
### Performance Improvements
* 优化txt本地校验效率 ([fd507f2](https://github.com/publishlab/node-acme-client/commit/fd507f269253607e68c5c099c99e0de11636f229))
## [1.31.7](https://github.com/publishlab/node-acme-client/compare/v1.31.6...v1.31.7) (2025-03-24)
**Note:** Version bump only for package @certd/acme-client
## [1.31.6](https://github.com/publishlab/node-acme-client/compare/v1.31.5...v1.31.6) (2025-03-24)
**Note:** Version bump only for package @certd/acme-client
## [1.31.5](https://github.com/publishlab/node-acme-client/compare/v1.31.4...v1.31.5) (2025-03-22)
**Note:** Version bump only for package @certd/acme-client
## [1.31.4](https://github.com/publishlab/node-acme-client/compare/v1.31.3...v1.31.4) (2025-03-21)
**Note:** Version bump only for package @certd/acme-client
## [1.31.3](https://github.com/publishlab/node-acme-client/compare/v1.31.2...v1.31.3) (2025-03-13)
**Note:** Version bump only for package @certd/acme-client
## [1.31.2](https://github.com/publishlab/node-acme-client/compare/v1.31.1...v1.31.2) (2025-03-12)
**Note:** Version bump only for package @certd/acme-client
## [1.31.1](https://github.com/publishlab/node-acme-client/compare/v1.31.0...v1.31.1) (2025-03-11)
**Note:** Version bump only for package @certd/acme-client
# [1.31.0](https://github.com/publishlab/node-acme-client/compare/v1.30.6...v1.31.0) (2025-03-10)
**Note:** Version bump only for package @certd/acme-client
## [1.30.6](https://github.com/publishlab/node-acme-client/compare/v1.30.5...v1.30.6) (2025-02-24)
**Note:** Version bump only for package @certd/acme-client
## [1.30.5](https://github.com/publishlab/node-acme-client/compare/v1.30.4...v1.30.5) (2025-02-14)
**Note:** Version bump only for package @certd/acme-client
## [1.30.4](https://github.com/publishlab/node-acme-client/compare/v1.30.3...v1.30.4) (2025-02-14)
**Note:** Version bump only for package @certd/acme-client
## [1.30.3](https://github.com/publishlab/node-acme-client/compare/v1.30.2...v1.30.3) (2025-02-13)
**Note:** Version bump only for package @certd/acme-client
## [1.30.2](https://github.com/publishlab/node-acme-client/compare/v1.30.1...v1.30.2) (2025-02-09)
**Note:** Version bump only for package @certd/acme-client
## [1.30.1](https://github.com/publishlab/node-acme-client/compare/v1.30.0...v1.30.1) (2025-01-20)
**Note:** Version bump only for package @certd/acme-client
# [1.30.0](https://github.com/publishlab/node-acme-client/compare/v1.29.5...v1.30.0) (2025-01-19)
### Bug Fixes
* 修复查看任务日志偶发性无法自动滚动底部的bug ([7e482f7](https://github.com/publishlab/node-acme-client/commit/7e482f798c0142bce1866f84676cb40210f9638a))
## [1.29.5](https://github.com/publishlab/node-acme-client/compare/v1.29.4...v1.29.5) (2025-01-07)
**Note:** Version bump only for package @certd/acme-client
## [1.29.4](https://github.com/publishlab/node-acme-client/compare/v1.29.3...v1.29.4) (2025-01-06)
**Note:** Version bump only for package @certd/acme-client
## [1.29.3](https://github.com/publishlab/node-acme-client/compare/v1.29.2...v1.29.3) (2025-01-04)
### Performance Improvements
* 优化acme sdk ([54db744](https://github.com/publishlab/node-acme-client/commit/54db74428259de64d12230c2ab7353ae11197bbc))
## [1.29.2](https://github.com/publishlab/node-acme-client/compare/v1.29.1...v1.29.2) (2024-12-25)
**Note:** Version bump only for package @certd/acme-client
## [1.29.1](https://github.com/publishlab/node-acme-client/compare/v1.29.0...v1.29.1) (2024-12-25)
**Note:** Version bump only for package @certd/acme-client
# [1.29.0](https://github.com/publishlab/node-acme-client/compare/v1.28.4...v1.29.0) (2024-12-24)
**Note:** Version bump only for package @certd/acme-client
## [1.28.4](https://github.com/publishlab/node-acme-client/compare/v1.28.3...v1.28.4) (2024-12-12)
**Note:** Version bump only for package @certd/acme-client
## [1.28.3](https://github.com/publishlab/node-acme-client/compare/v1.28.2...v1.28.3) (2024-12-12)
**Note:** Version bump only for package @certd/acme-client
## [1.28.2](https://github.com/publishlab/node-acme-client/compare/v1.28.1...v1.28.2) (2024-12-09)
### Performance Improvements
* 支持mysql ([7cde1fd](https://github.com/publishlab/node-acme-client/commit/7cde1fdc4a9ed851900d231a5460c8dbfbcd148e))
## [1.28.1](https://github.com/publishlab/node-acme-client/compare/v1.28.0...v1.28.1) (2024-12-08)
**Note:** Version bump only for package @certd/acme-client
# [1.28.0](https://github.com/publishlab/node-acme-client/compare/v1.27.9...v1.28.0) (2024-11-30)
**Note:** Version bump only for package @certd/acme-client
## [1.27.9](https://github.com/publishlab/node-acme-client/compare/v1.27.8...v1.27.9) (2024-11-26)
**Note:** Version bump only for package @certd/acme-client
## [1.27.8](https://github.com/publishlab/node-acme-client/compare/v1.27.7...v1.27.8) (2024-11-25)
**Note:** Version bump only for package @certd/acme-client
## [1.27.7](https://github.com/publishlab/node-acme-client/compare/v1.27.6...v1.27.7) (2024-11-25)
**Note:** Version bump only for package @certd/acme-client
## [1.27.6](https://github.com/publishlab/node-acme-client/compare/v1.27.5...v1.27.6) (2024-11-19)
**Note:** Version bump only for package @certd/acme-client
## [1.27.5](https://github.com/publishlab/node-acme-client/compare/v1.27.4...v1.27.5) (2024-11-18)
**Note:** Version bump only for package @certd/acme-client
## [1.27.4](https://github.com/publishlab/node-acme-client/compare/v1.27.3...v1.27.4) (2024-11-14)
**Note:** Version bump only for package @certd/acme-client
## [1.27.3](https://github.com/publishlab/node-acme-client/compare/v1.27.2...v1.27.3) (2024-11-13) ## [1.27.3](https://github.com/publishlab/node-acme-client/compare/v1.27.2...v1.27.3) (2024-11-13)
**Note:** Version bump only for package @certd/acme-client **Note:** Version bump only for package @certd/acme-client
+107 -102
View File
@@ -6,6 +6,38 @@
</dd> </dd>
</dl> </dl>
## Constants
<dl>
<dt><a href="#createPrivateEcdsaKey">createPrivateEcdsaKey</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Generate a private ECDSA key</p>
</dd>
<dt><a href="#getPublicKey">getPublicKey</a> ⇒ <code>buffer</code></dt>
<dd><p>Get a public key derived from a RSA or ECDSA key</p>
</dd>
<dt><a href="#getPemBodyAsB64u">getPemBodyAsB64u</a> ⇒ <code>string</code></dt>
<dd><p>Parse body of PEM encoded object and return a Base64URL string
If multiple objects are chained, the first body will be returned</p>
</dd>
<dt><a href="#readCsrDomains">readCsrDomains</a> ⇒ <code>object</code></dt>
<dd><p>Read domains from a Certificate Signing Request</p>
</dd>
<dt><a href="#readCertificateInfo">readCertificateInfo</a> ⇒ <code>object</code></dt>
<dd><p>Read information from a certificate
If multiple certificates are chained, the first will be read</p>
</dd>
<dt><a href="#createCsr">createCsr</a> ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code></dt>
<dd><p>Create a Certificate Signing Request</p>
</dd>
<dt><a href="#createAlpnCertificate">createAlpnCertificate</a> ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code></dt>
<dd><p>Create a self-signed ALPN certificate for TLS-ALPN-01 challenges</p>
<p><a href="https://datatracker.ietf.org/doc/html/rfc8737">https://datatracker.ietf.org/doc/html/rfc8737</a></p>
</dd>
<dt><a href="#isAlpnCertificateAuthorizationValid">isAlpnCertificateAuthorizationValid</a> ⇒ <code>boolean</code></dt>
<dd><p>Validate that a ALPN certificate contains the expected key authorization</p>
</dd>
</dl>
## Functions ## Functions
<dl> <dl>
@@ -15,12 +47,6 @@
<dt><a href="#createPrivateKey">createPrivateKey()</a></dt> <dt><a href="#createPrivateKey">createPrivateKey()</a></dt>
<dd><p>Alias of <code>createPrivateRsaKey()</code></p> <dd><p>Alias of <code>createPrivateRsaKey()</code></p>
</dd> </dd>
<dt><a href="#createPrivateEcdsaKey">createPrivateEcdsaKey([namedCurve])</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Generate a private ECDSA key</p>
</dd>
<dt><a href="#getPublicKey">getPublicKey(keyPem)</a> ⇒ <code>buffer</code></dt>
<dd><p>Get a public key derived from a RSA or ECDSA key</p>
</dd>
<dt><a href="#getJwk">getJwk(keyPem)</a> ⇒ <code>object</code></dt> <dt><a href="#getJwk">getJwk(keyPem)</a> ⇒ <code>object</code></dt>
<dd><p>Get a JSON Web Key derived from a RSA or ECDSA key</p> <dd><p>Get a JSON Web Key derived from a RSA or ECDSA key</p>
<p><a href="https://datatracker.ietf.org/doc/html/rfc7517">https://datatracker.ietf.org/doc/html/rfc7517</a></p> <p><a href="https://datatracker.ietf.org/doc/html/rfc7517">https://datatracker.ietf.org/doc/html/rfc7517</a></p>
@@ -28,27 +54,6 @@
<dt><a href="#splitPemChain">splitPemChain(chainPem)</a> ⇒ <code>Array.&lt;string&gt;</code></dt> <dt><a href="#splitPemChain">splitPemChain(chainPem)</a> ⇒ <code>Array.&lt;string&gt;</code></dt>
<dd><p>Split chain of PEM encoded objects from string into array</p> <dd><p>Split chain of PEM encoded objects from string into array</p>
</dd> </dd>
<dt><a href="#getPemBodyAsB64u">getPemBodyAsB64u(pem)</a> ⇒ <code>string</code></dt>
<dd><p>Parse body of PEM encoded object and return a Base64URL string
If multiple objects are chained, the first body will be returned</p>
</dd>
<dt><a href="#readCsrDomains">readCsrDomains(csrPem)</a> ⇒ <code>object</code></dt>
<dd><p>Read domains from a Certificate Signing Request</p>
</dd>
<dt><a href="#readCertificateInfo">readCertificateInfo(certPem)</a> ⇒ <code>object</code></dt>
<dd><p>Read information from a certificate
If multiple certificates are chained, the first will be read</p>
</dd>
<dt><a href="#createCsr">createCsr(data, [keyPem])</a> ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code></dt>
<dd><p>Create a Certificate Signing Request</p>
</dd>
<dt><a href="#createAlpnCertificate">createAlpnCertificate(authz, keyAuthorization, [keyPem])</a> ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code></dt>
<dd><p>Create a self-signed ALPN certificate for TLS-ALPN-01 challenges</p>
<p><a href="https://datatracker.ietf.org/doc/html/rfc8737">https://datatracker.ietf.org/doc/html/rfc8737</a></p>
</dd>
<dt><a href="#isAlpnCertificateAuthorizationValid">isAlpnCertificateAuthorizationValid(certPem, keyAuthorization)</a> ⇒ <code>boolean</code></dt>
<dd><p>Validate that a ALPN certificate contains the expected key authorization</p>
</dd>
</dl> </dl>
<a name="crypto"></a> <a name="crypto"></a>
@@ -57,40 +62,12 @@ If multiple certificates are chained, the first will be read</p>
Native Node.js crypto interface Native Node.js crypto interface
**Kind**: global namespace **Kind**: global namespace
<a name="createPrivateRsaKey"></a>
## createPrivateRsaKey([modulusLength]) ⇒ <code>Promise.&lt;buffer&gt;</code>
Generate a private RSA key
**Kind**: global function
**Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded private RSA key
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| [modulusLength] | <code>number</code> | <code>2048</code> | Size of the keys modulus in bits, default: `2048` |
**Example**
Generate private RSA key
```js
const privateKey = await acme.crypto.createPrivateRsaKey();
```
**Example**
Private RSA key with modulus size 4096
```js
const privateKey = await acme.crypto.createPrivateRsaKey(4096);
```
<a name="createPrivateKey"></a>
## createPrivateKey()
Alias of `createPrivateRsaKey()`
**Kind**: global function
<a name="createPrivateEcdsaKey"></a> <a name="createPrivateEcdsaKey"></a>
## createPrivateEcdsaKey([namedCurve]) ⇒ <code>Promise.&lt;buffer&gt;</code> ## createPrivateEcdsaKey ⇒ <code>Promise.&lt;buffer&gt;</code>
Generate a private ECDSA key Generate a private ECDSA key
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded private ECDSA key **Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded private ECDSA key
| Param | Type | Description | | Param | Type | Description |
@@ -109,10 +86,10 @@ const privateKey = await acme.crypto.createPrivateEcdsaKey('P-384');
``` ```
<a name="getPublicKey"></a> <a name="getPublicKey"></a>
## getPublicKey(keyPem) ⇒ <code>buffer</code> ## getPublicKey ⇒ <code>buffer</code>
Get a public key derived from a RSA or ECDSA key Get a public key derived from a RSA or ECDSA key
**Kind**: global function **Kind**: global constant
**Returns**: <code>buffer</code> - PEM encoded public key **Returns**: <code>buffer</code> - PEM encoded public key
| Param | Type | Description | | Param | Type | Description |
@@ -124,44 +101,13 @@ Get public key
```js ```js
const publicKey = acme.crypto.getPublicKey(privateKey); const publicKey = acme.crypto.getPublicKey(privateKey);
``` ```
<a name="getJwk"></a>
## getJwk(keyPem) ⇒ <code>object</code>
Get a JSON Web Key derived from a RSA or ECDSA key
https://datatracker.ietf.org/doc/html/rfc7517
**Kind**: global function
**Returns**: <code>object</code> - JSON Web Key
| Param | Type | Description |
| --- | --- | --- |
| keyPem | <code>buffer</code> \| <code>string</code> | PEM encoded private or public key |
**Example**
Get JWK
```js
const jwk = acme.crypto.getJwk(privateKey);
```
<a name="splitPemChain"></a>
## splitPemChain(chainPem) ⇒ <code>Array.&lt;string&gt;</code>
Split chain of PEM encoded objects from string into array
**Kind**: global function
**Returns**: <code>Array.&lt;string&gt;</code> - Array of PEM objects including headers
| Param | Type | Description |
| --- | --- | --- |
| chainPem | <code>buffer</code> \| <code>string</code> | PEM encoded object chain |
<a name="getPemBodyAsB64u"></a> <a name="getPemBodyAsB64u"></a>
## getPemBodyAsB64u(pem) ⇒ <code>string</code> ## getPemBodyAsB64u ⇒ <code>string</code>
Parse body of PEM encoded object and return a Base64URL string Parse body of PEM encoded object and return a Base64URL string
If multiple objects are chained, the first body will be returned If multiple objects are chained, the first body will be returned
**Kind**: global function **Kind**: global constant
**Returns**: <code>string</code> - Base64URL-encoded body **Returns**: <code>string</code> - Base64URL-encoded body
| Param | Type | Description | | Param | Type | Description |
@@ -170,10 +116,10 @@ If multiple objects are chained, the first body will be returned
<a name="readCsrDomains"></a> <a name="readCsrDomains"></a>
## readCsrDomains(csrPem) ⇒ <code>object</code> ## readCsrDomains ⇒ <code>object</code>
Read domains from a Certificate Signing Request Read domains from a Certificate Signing Request
**Kind**: global function **Kind**: global constant
**Returns**: <code>object</code> - {commonName, altNames} **Returns**: <code>object</code> - {commonName, altNames}
| Param | Type | Description | | Param | Type | Description |
@@ -190,11 +136,11 @@ console.log(`Alt names: ${altNames.join(', ')}`);
``` ```
<a name="readCertificateInfo"></a> <a name="readCertificateInfo"></a>
## readCertificateInfo(certPem) ⇒ <code>object</code> ## readCertificateInfo ⇒ <code>object</code>
Read information from a certificate Read information from a certificate
If multiple certificates are chained, the first will be read If multiple certificates are chained, the first will be read
**Kind**: global function **Kind**: global constant
**Returns**: <code>object</code> - Certificate info **Returns**: <code>object</code> - Certificate info
| Param | Type | Description | | Param | Type | Description |
@@ -215,10 +161,10 @@ console.log(`Alt names: ${altNames.join(', ')}`);
``` ```
<a name="createCsr"></a> <a name="createCsr"></a>
## createCsr(data, [keyPem]) ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> ## createCsr ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code>
Create a Certificate Signing Request Create a Certificate Signing Request
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> - [privateKey, certificateSigningRequest] **Returns**: <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> - [privateKey, certificateSigningRequest]
| Param | Type | Description | | Param | Type | Description |
@@ -276,12 +222,12 @@ const [, certificateRequest] = await acme.crypto.createCsr({
``` ```
<a name="createAlpnCertificate"></a> <a name="createAlpnCertificate"></a>
## createAlpnCertificate(authz, keyAuthorization, [keyPem]) ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> ## createAlpnCertificate ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code>
Create a self-signed ALPN certificate for TLS-ALPN-01 challenges Create a self-signed ALPN certificate for TLS-ALPN-01 challenges
https://datatracker.ietf.org/doc/html/rfc8737 https://datatracker.ietf.org/doc/html/rfc8737
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> - [privateKey, certificate] **Returns**: <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> - [privateKey, certificate]
| Param | Type | Description | | Param | Type | Description |
@@ -303,10 +249,10 @@ const [, alpnCertificate] = await acme.crypto.createAlpnCertificate(authz, keyAu
``` ```
<a name="isAlpnCertificateAuthorizationValid"></a> <a name="isAlpnCertificateAuthorizationValid"></a>
## isAlpnCertificateAuthorizationValid(certPem, keyAuthorization) ⇒ <code>boolean</code> ## isAlpnCertificateAuthorizationValid ⇒ <code>boolean</code>
Validate that a ALPN certificate contains the expected key authorization Validate that a ALPN certificate contains the expected key authorization
**Kind**: global function **Kind**: global constant
**Returns**: <code>boolean</code> - True when valid **Returns**: <code>boolean</code> - True when valid
| Param | Type | Description | | Param | Type | Description |
@@ -314,3 +260,62 @@ Validate that a ALPN certificate contains the expected key authorization
| certPem | <code>buffer</code> \| <code>string</code> | PEM encoded certificate | | certPem | <code>buffer</code> \| <code>string</code> | PEM encoded certificate |
| keyAuthorization | <code>string</code> | Expected challenge key authorization | | keyAuthorization | <code>string</code> | Expected challenge key authorization |
<a name="createPrivateRsaKey"></a>
## createPrivateRsaKey([modulusLength]) ⇒ <code>Promise.&lt;buffer&gt;</code>
Generate a private RSA key
**Kind**: global function
**Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded private RSA key
| Param | Type | Description |
| --- | --- | --- |
| [modulusLength] | <code>number</code> | Size of the keys modulus in bits, default: `2048` |
**Example**
Generate private RSA key
```js
const privateKey = await acme.crypto.createPrivateRsaKey();
```
**Example**
Private RSA key with modulus size 4096
```js
const privateKey = await acme.crypto.createPrivateRsaKey(4096);
```
<a name="createPrivateKey"></a>
## createPrivateKey()
Alias of `createPrivateRsaKey()`
**Kind**: global function
<a name="getJwk"></a>
## getJwk(keyPem) ⇒ <code>object</code>
Get a JSON Web Key derived from a RSA or ECDSA key
https://datatracker.ietf.org/doc/html/rfc7517
**Kind**: global function
**Returns**: <code>object</code> - JSON Web Key
| Param | Type | Description |
| --- | --- | --- |
| keyPem | <code>buffer</code> \| <code>string</code> | PEM encoded private or public key |
**Example**
Get JWK
```js
const jwk = acme.crypto.getJwk(privateKey);
```
<a name="splitPemChain"></a>
## splitPemChain(chainPem) ⇒ <code>Array.&lt;string&gt;</code>
Split chain of PEM encoded objects from string into array
**Kind**: global function
**Returns**: <code>Array.&lt;string&gt;</code> - Array of PEM objects including headers
| Param | Type | Description |
| --- | --- | --- |
| chainPem | <code>buffer</code> \| <code>string</code> | PEM encoded object chain |
+68 -63
View File
@@ -8,37 +8,42 @@ major release. Please migrate to the new <code>acme.crypto</code> interface at y
</dd> </dd>
</dl> </dl>
## Constants
<dl>
<dt><a href="#createPublicKey">createPublicKey</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Create public key from a private RSA key</p>
</dd>
<dt><a href="#getPemBody">getPemBody</a> ⇒ <code>string</code></dt>
<dd><p>Parse body of PEM encoded object from buffer or string
If multiple objects are chained, the first body will be returned</p>
</dd>
<dt><a href="#splitPemChain">splitPemChain</a> ⇒ <code>Array.&lt;string&gt;</code></dt>
<dd><p>Split chain of PEM encoded objects from buffer or string into array</p>
</dd>
<dt><a href="#getModulus">getModulus</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Get modulus</p>
</dd>
<dt><a href="#getPublicExponent">getPublicExponent</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Get public exponent</p>
</dd>
<dt><a href="#readCsrDomains">readCsrDomains</a> ⇒ <code>Promise.&lt;object&gt;</code></dt>
<dd><p>Read domains from a Certificate Signing Request</p>
</dd>
<dt><a href="#readCertificateInfo">readCertificateInfo</a> ⇒ <code>Promise.&lt;object&gt;</code></dt>
<dd><p>Read information from a certificate</p>
</dd>
<dt><a href="#createCsr">createCsr</a> ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code></dt>
<dd><p>Create a Certificate Signing Request</p>
</dd>
</dl>
## Functions ## Functions
<dl> <dl>
<dt><a href="#createPrivateKey">createPrivateKey([size])</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt> <dt><a href="#createPrivateKey">createPrivateKey([size])</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Generate a private RSA key</p> <dd><p>Generate a private RSA key</p>
</dd> </dd>
<dt><a href="#createPublicKey">createPublicKey(key)</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Create public key from a private RSA key</p>
</dd>
<dt><a href="#getPemBody">getPemBody(str)</a> ⇒ <code>string</code></dt>
<dd><p>Parse body of PEM encoded object from buffer or string
If multiple objects are chained, the first body will be returned</p>
</dd>
<dt><a href="#splitPemChain">splitPemChain(str)</a> ⇒ <code>Array.&lt;string&gt;</code></dt>
<dd><p>Split chain of PEM encoded objects from buffer or string into array</p>
</dd>
<dt><a href="#getModulus">getModulus(input)</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Get modulus</p>
</dd>
<dt><a href="#getPublicExponent">getPublicExponent(input)</a> ⇒ <code>Promise.&lt;buffer&gt;</code></dt>
<dd><p>Get public exponent</p>
</dd>
<dt><a href="#readCsrDomains">readCsrDomains(csr)</a> ⇒ <code>Promise.&lt;object&gt;</code></dt>
<dd><p>Read domains from a Certificate Signing Request</p>
</dd>
<dt><a href="#readCertificateInfo">readCertificateInfo(cert)</a> ⇒ <code>Promise.&lt;object&gt;</code></dt>
<dd><p>Read information from a certificate</p>
</dd>
<dt><a href="#createCsr">createCsr(data, [key])</a> ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code></dt>
<dd><p>Create a Certificate Signing Request</p>
</dd>
</dl> </dl>
<a name="forge"></a> <a name="forge"></a>
@@ -50,34 +55,12 @@ DEPRECATION WARNING: This crypto interface is deprecated and will be removed fro
major release. Please migrate to the new `acme.crypto` interface at your earliest convenience. major release. Please migrate to the new `acme.crypto` interface at your earliest convenience.
**Kind**: global namespace **Kind**: global namespace
<a name="createPrivateKey"></a>
## createPrivateKey([size]) ⇒ <code>Promise.&lt;buffer&gt;</code>
Generate a private RSA key
**Kind**: global function
**Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded private RSA key
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| [size] | <code>number</code> | <code>2048</code> | Size of the key, default: `2048` |
**Example**
Generate private RSA key
```js
const privateKey = await acme.forge.createPrivateKey();
```
**Example**
Private RSA key with defined size
```js
const privateKey = await acme.forge.createPrivateKey(4096);
```
<a name="createPublicKey"></a> <a name="createPublicKey"></a>
## createPublicKey(key) ⇒ <code>Promise.&lt;buffer&gt;</code> ## createPublicKey ⇒ <code>Promise.&lt;buffer&gt;</code>
Create public key from a private RSA key Create public key from a private RSA key
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded public RSA key **Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded public RSA key
| Param | Type | Description | | Param | Type | Description |
@@ -91,11 +74,11 @@ const publicKey = await acme.forge.createPublicKey(privateKey);
``` ```
<a name="getPemBody"></a> <a name="getPemBody"></a>
## getPemBody(str) ⇒ <code>string</code> ## getPemBody ⇒ <code>string</code>
Parse body of PEM encoded object from buffer or string Parse body of PEM encoded object from buffer or string
If multiple objects are chained, the first body will be returned If multiple objects are chained, the first body will be returned
**Kind**: global function **Kind**: global constant
**Returns**: <code>string</code> - PEM body **Returns**: <code>string</code> - PEM body
| Param | Type | Description | | Param | Type | Description |
@@ -104,10 +87,10 @@ If multiple objects are chained, the first body will be returned
<a name="splitPemChain"></a> <a name="splitPemChain"></a>
## splitPemChain(str) ⇒ <code>Array.&lt;string&gt;</code> ## splitPemChain ⇒ <code>Array.&lt;string&gt;</code>
Split chain of PEM encoded objects from buffer or string into array Split chain of PEM encoded objects from buffer or string into array
**Kind**: global function **Kind**: global constant
**Returns**: <code>Array.&lt;string&gt;</code> - Array of PEM bodies **Returns**: <code>Array.&lt;string&gt;</code> - Array of PEM bodies
| Param | Type | Description | | Param | Type | Description |
@@ -116,10 +99,10 @@ Split chain of PEM encoded objects from buffer or string into array
<a name="getModulus"></a> <a name="getModulus"></a>
## getModulus(input) ⇒ <code>Promise.&lt;buffer&gt;</code> ## getModulus ⇒ <code>Promise.&lt;buffer&gt;</code>
Get modulus Get modulus
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;buffer&gt;</code> - Modulus **Returns**: <code>Promise.&lt;buffer&gt;</code> - Modulus
| Param | Type | Description | | Param | Type | Description |
@@ -135,10 +118,10 @@ const m3 = await acme.forge.getModulus(certificateRequest);
``` ```
<a name="getPublicExponent"></a> <a name="getPublicExponent"></a>
## getPublicExponent(input) ⇒ <code>Promise.&lt;buffer&gt;</code> ## getPublicExponent ⇒ <code>Promise.&lt;buffer&gt;</code>
Get public exponent Get public exponent
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;buffer&gt;</code> - Exponent **Returns**: <code>Promise.&lt;buffer&gt;</code> - Exponent
| Param | Type | Description | | Param | Type | Description |
@@ -154,10 +137,10 @@ const e3 = await acme.forge.getPublicExponent(certificateRequest);
``` ```
<a name="readCsrDomains"></a> <a name="readCsrDomains"></a>
## readCsrDomains(csr) ⇒ <code>Promise.&lt;object&gt;</code> ## readCsrDomains ⇒ <code>Promise.&lt;object&gt;</code>
Read domains from a Certificate Signing Request Read domains from a Certificate Signing Request
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;object&gt;</code> - {commonName, altNames} **Returns**: <code>Promise.&lt;object&gt;</code> - {commonName, altNames}
| Param | Type | Description | | Param | Type | Description |
@@ -174,10 +157,10 @@ console.log(`Alt names: ${altNames.join(', ')}`);
``` ```
<a name="readCertificateInfo"></a> <a name="readCertificateInfo"></a>
## readCertificateInfo(cert) ⇒ <code>Promise.&lt;object&gt;</code> ## readCertificateInfo ⇒ <code>Promise.&lt;object&gt;</code>
Read information from a certificate Read information from a certificate
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;object&gt;</code> - Certificate info **Returns**: <code>Promise.&lt;object&gt;</code> - Certificate info
| Param | Type | Description | | Param | Type | Description |
@@ -198,10 +181,10 @@ console.log(`Alt names: ${altNames.join(', ')}`);
``` ```
<a name="createCsr"></a> <a name="createCsr"></a>
## createCsr(data, [key]) ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> ## createCsr ⇒ <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code>
Create a Certificate Signing Request Create a Certificate Signing Request
**Kind**: global function **Kind**: global constant
**Returns**: <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> - [privateKey, certificateSigningRequest] **Returns**: <code>Promise.&lt;Array.&lt;buffer&gt;&gt;</code> - [privateKey, certificateSigningRequest]
| Param | Type | Description | | Param | Type | Description |
@@ -256,3 +239,25 @@ const certificateKey = await acme.forge.createPrivateKey();
const [, certificateRequest] = await acme.forge.createCsr({ const [, certificateRequest] = await acme.forge.createCsr({
altNames: ['test.example.com'], altNames: ['test.example.com'],
}, certificateKey); }, certificateKey);
<a name="createPrivateKey"></a>
## createPrivateKey([size]) <code>Promise.&lt;buffer&gt;</code>
Generate a private RSA key
**Kind**: global function
**Returns**: <code>Promise.&lt;buffer&gt;</code> - PEM encoded private RSA key
| Param | Type | Description |
| --- | --- | --- |
| [size] | <code>number</code> | Size of the key, default: `2048` |
**Example**
Generate private RSA key
```js
const privateKey = await acme.forge.createPrivateKey();
```
**Example**
Private RSA key with defined size
```js
const privateKey = await acme.forge.createPrivateKey(4096);
```
+9 -5
View File
@@ -3,7 +3,7 @@
"description": "Simple and unopinionated ACME client", "description": "Simple and unopinionated ACME client",
"private": false, "private": false,
"author": "nmorsman", "author": "nmorsman",
"version": "1.27.3", "version": "1.36.17",
"type": "module", "type": "module",
"module": "scr/index.js", "module": "scr/index.js",
"main": "src/index.js", "main": "src/index.js",
@@ -18,7 +18,7 @@
"types" "types"
], ],
"dependencies": { "dependencies": {
"@certd/basic": "^1.27.3", "@certd/basic": "^1.36.17",
"@peculiar/x509": "^1.11.0", "@peculiar/x509": "^1.11.0",
"asn1js": "^3.0.5", "asn1js": "^3.0.5",
"axios": "^1.7.2", "axios": "^1.7.2",
@@ -26,10 +26,13 @@
"http-proxy-agent": "^7.0.2", "http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.5", "https-proxy-agent": "^7.0.5",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"node-forge": "^1.3.1" "node-forge": "^1.3.1",
"punycode.js": "^2.3.1"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.14.10", "@types/node": "^20.14.10",
"@typescript-eslint/eslint-plugin": "^8.26.1",
"@typescript-eslint/parser": "^8.26.1",
"chai": "^4.4.1", "chai": "^4.4.1",
"chai-as-promised": "^7.1.2", "chai-as-promised": "^7.1.2",
"eslint": "^8.57.0", "eslint": "^8.57.0",
@@ -48,7 +51,8 @@
"lint": "eslint .", "lint": "eslint .",
"lint-types": "tsd", "lint-types": "tsd",
"prepublishOnly": "npm run build-docs", "prepublishOnly": "npm run build-docs",
"test": "mocha -t 60000 \"test/setup.js\" \"test/**/*.spec.js\"" "test": "mocha -t 60000 \"test/setup.js\" \"test/**/*.spec.js\"",
"pub": "npm publish"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@@ -65,5 +69,5 @@
"bugs": { "bugs": {
"url": "https://github.com/publishlab/node-acme-client/issues" "url": "https://github.com/publishlab/node-acme-client/issues"
}, },
"gitHead": "3a0178b2949083c770ed96a4122e4c0a5e0bcc11" "gitHead": "831c325c6383ba0a6f2dfa7496451ec714784e93"
} }
+118 -141
View File
@@ -1,10 +1,10 @@
/** /**
* ACME auto helper * ACME auto helper
*/ */
import { readCsrDomains } from './crypto/index.js'; import { readCsrDomains } from "./crypto/index.js";
import { log } from './logger.js'; import { log } from "./logger.js";
import { wait } from './wait.js'; import { wait } from "./wait.js";
import { CancelError } from './error.js'; import { CancelError } from "./error.js";
const defaultOpts = { const defaultOpts = {
@@ -13,13 +13,13 @@ const defaultOpts = {
preferredChain: null, preferredChain: null,
termsOfServiceAgreed: false, termsOfServiceAgreed: false,
skipChallengeVerification: false, skipChallengeVerification: false,
challengePriority: ['http-01', 'dns-01'], challengePriority: ["http-01", "dns-01"],
challengeCreateFn: async () => { challengeCreateFn: async () => {
throw new Error('Missing challengeCreateFn()'); throw new Error("Missing challengeCreateFn()");
}, },
challengeRemoveFn: async () => { challengeRemoveFn: async () => {
throw new Error('Missing challengeRemoveFn()'); throw new Error("Missing challengeRemoveFn()");
}, }
}; };
/** /**
@@ -30,7 +30,7 @@ const defaultOpts = {
* @returns {Promise<buffer>} Certificate * @returns {Promise<buffer>} Certificate
*/ */
export default async (client, userOpts) => { export default async (client, userOpts) => {
const opts = { ...defaultOpts, ...userOpts }; const opts = { ...defaultOpts, ...userOpts };
const accountPayload = { termsOfServiceAgreed: opts.termsOfServiceAgreed }; const accountPayload = { termsOfServiceAgreed: opts.termsOfServiceAgreed };
@@ -49,14 +49,13 @@ export default async (client, userOpts) => {
* Register account * Register account
*/ */
log('[auto] Checking account'); log("[auto] Checking account");
try { try {
client.getAccountUrl(); client.getAccountUrl();
log('[auto] Account URL already exists, skipping account registration'); log("[auto] Account URL already exists, skipping account registration( 证书申请账户已存在,跳过注册 )");
} } catch (e) {
catch (e) { log("[auto] Registering account (注册证书申请账户)");
log('[auto] Registering account');
await client.createAccount(accountPayload); await client.createAccount(accountPayload);
} }
@@ -64,7 +63,7 @@ export default async (client, userOpts) => {
* Parse domains from CSR * Parse domains from CSR
*/ */
log('[auto] Parsing domains from Certificate Signing Request'); log("[auto] Parsing domains from Certificate Signing Request ");
const { commonName, altNames } = readCsrDomains(opts.csr); const { commonName, altNames } = readCsrDomains(opts.csr);
const uniqueDomains = Array.from(new Set([commonName].concat(altNames).filter((d) => d))); const uniqueDomains = Array.from(new Set([commonName].concat(altNames).filter((d) => d)));
@@ -74,8 +73,11 @@ export default async (client, userOpts) => {
* Place order * Place order
*/ */
log('[auto] Placing new certificate order with ACME provider'); log("[auto] Placing new certificate order with ACME provider");
const orderPayload = { identifiers: uniqueDomains.map((d) => ({ type: 'dns', value: d })) }; const orderPayload = { identifiers: uniqueDomains.map((d) => ({ type: "dns", value: d })) };
if (opts.profile && client.sslProvider === 'letsencrypt' ){
orderPayload.profile = opts.profile;
}
const order = await client.createOrder(orderPayload); const order = await client.createOrder(orderPayload);
const authorizations = await client.getAuthorizations(order); const authorizations = await client.getAuthorizations(order);
@@ -85,99 +87,81 @@ export default async (client, userOpts) => {
* Resolve and satisfy challenges * Resolve and satisfy challenges
*/ */
log('[auto] Resolving and satisfying authorization challenges'); log("[auto] Resolving and satisfying authorization challenges");
const clearTasks = []; const clearTasks = [];
const localVerifyTasks = [];
const completeChallengeTasks = [];
const challengeFunc = async (authz) => { const challengeFunc = async (authz) => {
const d = authz.identifier.value; const d = authz.identifier.value;
let challengeCompleted = false; let challengeCompleted = false;
/* Skip authz that already has valid status */ /* Skip authz that already has valid status */
if (authz.status === 'valid') { if (authz.status === "valid") {
log(`[auto] [${d}] Authorization already has valid status, no need to complete challenges`); log(`[auto] [${d}] Authorization already has valid status, no need to complete challenges`);
return; return;
} }
try { const keyAuthorizationGetter = async (challenge) => {
/* Select challenge based on priority */ return await client.getChallengeKeyAuthorization(challenge);
const challenge = authz.challenges.sort((a, b) => { };
const aidx = opts.challengePriority.indexOf(a.type);
const bidx = opts.challengePriority.indexOf(b.type);
if (aidx === -1) return 1;
if (bidx === -1) return -1;
return aidx - bidx;
}).slice(0, 1)[0];
if (!challenge) {
throw new Error(`Unable to select challenge for ${d}, no challenge found`);
}
log(`[auto] [${d}] Found ${authz.challenges.length} challenges, selected type: ${challenge.type}`);
/* Trigger challengeCreateFn() */
log(`[auto] [${d}] Trigger challengeCreateFn()`);
const keyAuthorization = await client.getChallengeKeyAuthorization(challenge);
async function deactivateAuth(e) {
log(`[auto] [${d}] Unable to complete challenge: ${e.message}`);
try { try {
const { recordReq, recordRes, dnsProvider } = await opts.challengeCreateFn(authz, challenge, keyAuthorization); log(`[auto] [${d}] Deactivating failed authorization`);
log(`[auto] [${d}] challengeCreateFn success`); await client.deactivateAuthorization(authz);
log(`[auto] [${d}] add challengeRemoveFn()`); } catch (f) {
clearTasks.push(async () => { /* Suppress deactivateAuthorization() errors */
/* Trigger challengeRemoveFn(), suppress errors */ log(`[auto] [${d}] Authorization deactivation threw error: ${f.message}`);
log(`[auto] [${d}] Trigger challengeRemoveFn()`);
try {
await opts.challengeRemoveFn(authz, challenge, keyAuthorization, recordReq, recordRes, dnsProvider);
}
catch (e) {
log(`[auto] [${d}] challengeRemoveFn threw error: ${e.message}`);
}
});
// throw new Error('测试异常');
/* Challenge verification */
if (opts.skipChallengeVerification === true) {
log(`[auto] [${d}] Skipping challenge verification since skipChallengeVerification=truewait 60s`);
await wait(60 * 1000);
}
else {
log(`[auto] [${d}] Running challenge verification`);
try {
await client.verifyChallenge(authz, challenge);
}
catch (e) {
log(`[auto] [${d}] challenge verification threw error: ${e.message}`);
}
}
/* Complete challenge and wait for valid status */
log(`[auto] [${d}] Completing challenge with ACME provider and waiting for valid status`);
await client.completeChallenge(challenge);
challengeCompleted = true;
await client.waitForValidStatus(challenge);
}
catch (e) {
log(`[auto] [${d}] challengeCreateFn threw error: ${e.message}`);
throw e;
} }
} }
catch (e) {
/* Deactivate pending authz when unable to complete challenge */
if (!challengeCompleted) {
log(`[auto] [${d}] Unable to complete challenge: ${e.message}`);
log(`[auto] [${d}] Trigger challengeCreateFn()`);
try {
const { recordReq, recordRes, dnsProvider, challenge, keyAuthorization ,httpUploader} = await opts.challengeCreateFn(authz, keyAuthorizationGetter);
clearTasks.push(async () => {
/* Trigger challengeRemoveFn(), suppress errors */
log(`[auto] [${d}] Trigger challengeRemoveFn()`);
try { try {
log(`[auto] [${d}] Deactivating failed authorization`); await opts.challengeRemoveFn(authz, challenge, keyAuthorization, recordReq, recordRes, dnsProvider,httpUploader);
await client.deactivateAuthorization(authz); } catch (e) {
log(`[auto] [${d}] challengeRemoveFn threw error: ${e.message}`);
} }
catch (f) { });
/* Suppress deactivateAuthorization() errors */
log(`[auto] [${d}] Authorization deactivation threw error: ${f.message}`);
}
}
localVerifyTasks.push(async () => {
/* Challenge verification */
log(`[auto] [${d}] 开始本地验证, type = ${challenge.type}`);
try {
await client.verifyChallenge(authz, challenge);
} catch (e) {
log(`[auto] [${d}] 本地验证失败,尝试请求ACME提供商获取状态: ${e.message}`);
}
});
completeChallengeTasks.push(async () => {
/* Complete challenge and wait for valid status */
log(`[auto] [${d}] 请求ACME提供商完成验证`);
try{
await client.completeChallenge(challenge);
}catch (e) {
await deactivateAuth(e);
throw e;
}
challengeCompleted = true;
log(`[auto] [${d}] 等待返回valid状态`);
await client.waitForValidStatus(challenge,d);
});
} catch (e) {
log(`[auto] [${d}] challengeCreateFn threw error: ${e.message}`);
await deactivateAuth(e);
throw e; throw e;
} }
}; };
const domainSets = []; const domainSets = [];
@@ -185,7 +169,7 @@ export default async (client, userOpts) => {
const d = authz.identifier.value; const d = authz.identifier.value;
log(`authorization:domain = ${d}, value = ${JSON.stringify(authz)}`); log(`authorization:domain = ${d}, value = ${JSON.stringify(authz)}`);
if (authz.status === 'valid') { if (authz.status === "valid") {
log(`[auto] [${d}] Authorization already has valid status, no need to complete challenges`); log(`[auto] [${d}] Authorization already has valid status, no need to complete challenges`);
return; return;
} }
@@ -209,8 +193,9 @@ export default async (client, userOpts) => {
const allChallengePromises = []; const allChallengePromises = [];
// eslint-disable-next-line no-restricted-syntax // eslint-disable-next-line no-restricted-syntax
const challengePromises = [];
allChallengePromises.push(challengePromises);
for (const domainSet of domainSets) { for (const domainSet of domainSets) {
const challengePromises = [];
// eslint-disable-next-line guard-for-in,no-restricted-syntax // eslint-disable-next-line guard-for-in,no-restricted-syntax
for (const domain in domainSet) { for (const domain in domainSet) {
const authz = domainSet[domain]; const authz = domainSet[domain];
@@ -219,12 +204,11 @@ export default async (client, userOpts) => {
await challengeFunc(authz); await challengeFunc(authz);
}); });
} }
allChallengePromises.push(challengePromises);
} }
log(`[auto] challengeGroups:${allChallengePromises.length}`); log(`[auto] challengeGroups:${allChallengePromises.length}`);
function runAllPromise(tasks) { async function runAllPromise(tasks) {
let promise = Promise.resolve(); let promise = Promise.resolve();
tasks.forEach((task) => { tasks.forEach((task) => {
promise = promise.then(task); promise = promise.then(task);
@@ -232,73 +216,66 @@ export default async (client, userOpts) => {
return promise; return promise;
} }
async function runPromisePa(tasks) { async function runPromisePa(tasks, waitTime = 8000) {
const results = []; const results = [];
let j = 0
// eslint-disable-next-line no-await-in-loop,no-restricted-syntax // eslint-disable-next-line no-await-in-loop,no-restricted-syntax
for (const task of tasks) { for (const task of tasks) {
j++
log(`开始第${j}个任务`);
results.push(task()); results.push(task());
// eslint-disable-next-line no-await-in-loop // eslint-disable-next-line no-await-in-loop
await wait(10000); log(`wait ${Math.floor(waitTime/1000)}s`)
await wait(waitTime);
} }
return Promise.all(results); return Promise.all(results);
} }
try { log(`开始challenge,共${allChallengePromises.length}`);
log(`开始challenge,共${allChallengePromises.length}`); let i = 0;
let i = 0; // eslint-disable-next-line no-restricted-syntax
// eslint-disable-next-line no-restricted-syntax for (const challengePromises of allChallengePromises) {
for (const challengePromises of allChallengePromises) { i += 1;
i += 1; log(`开始第${i}`);
log(`开始第${i}`); if (opts.signal && opts.signal.aborted) {
if (opts.signal && opts.signal.aborted) { throw new CancelError("用户取消");
throw new CancelError('用户取消'); }
const waitDnsDiffuseTime = opts.waitDnsDiffuseTime || 30;
try {
// eslint-disable-next-line no-await-in-loop
await runPromisePa(challengePromises);
if (opts.skipChallengeVerification === true) {
log(`跳过本地验证(skipChallengeVerification=true),等待 60s`);
await wait(60 * 1000);
} else {
log("开始本地校验")
await runPromisePa(localVerifyTasks, 1000);
log(`本地校验完成,等待${waitDnsDiffuseTime}s`)
await wait(waitDnsDiffuseTime * 1000)
} }
try { log("开始向提供商请求挑战验证");
// eslint-disable-next-line no-await-in-loop await runPromisePa(completeChallengeTasks, 1000);
await runPromisePa(challengePromises); } catch (e) {
} log(`证书申请失败${e.message}`);
catch (e) { throw e;
log(`证书申请失败${e.message}`); } finally {
throw e; // letsencrypt 如果同时检出两个TXT记录,会以第一个为准,就会校验失败,所以需要提前删除
} // zerossl 此方式测试无问题
finally {
if (client.opts.sslProvider !== 'google') {
// letsencrypt 如果同时检出两个TXT记录,会以第一个为准,就会校验失败,所以需要提前删除
// zerossl 此方式测试无问题
log(`清理challenge痕迹,length:${clearTasks.length}`);
try {
// eslint-disable-next-line no-await-in-loop
await runAllPromise(clearTasks);
}
catch (e) {
log('清理challenge失败');
log(e);
}
}
}
}
}
finally {
if (client.opts.sslProvider === 'google') {
// google 相同的域名txt记录是一样的,不能提前删除,否则校验失败,报错如下
// Error: The TXT record retrieved from _acme-challenge.bbc.handsfree.work.
// at the time the challenge was validated did not contain JshHVu7dt_DT6uYILWhokHefFVad2Q6Mw1L-fNZFcq8
// (the base64url-encoded SHA-256 digest of RlJZNBR0LWnxNK_xd2zqtYVvCiNJOKJ3J1NmCjU_9BjaUJgL3k-qSpIhQ-uF4FBS.NRyqT8fRiq6THzzrvkgzgR5Xai2LsA2SyGLAq_wT3qc).
// See https://tools.ietf.org/html/rfc8555#section-8.4 for more information.
log(`清理challenge痕迹,length:${clearTasks.length}`); log(`清理challenge痕迹,length:${clearTasks.length}`);
try { try {
// eslint-disable-next-line no-await-in-loop // eslint-disable-next-line no-await-in-loop
await runAllPromise(clearTasks); await runAllPromise(clearTasks);
} } catch (e) {
catch (e) { log("清理challenge失败");
log('清理challenge失败');
log(e); log(e);
} }
} }
} }
log('challenge结束');
log("challenge结束");
// log('[auto] Waiting for challenge valid status'); // log('[auto] Waiting for challenge valid status');
// await Promise.all(challengePromises); // await Promise.all(challengePromises);
@@ -306,7 +283,7 @@ export default async (client, userOpts) => {
* Finalize order and download certificate * Finalize order and download certificate
*/ */
log('[auto] Finalizing order and downloading certificate'); log("[auto] Finalizing order and downloading certificate");
const finalized = await client.finalizeOrder(order, opts.csr); const finalized = await client.finalizeOrder(order, opts.csr);
const res = await client.getCertificate(finalized, opts.preferredChain); const res = await client.getCertificate(finalized, opts.preferredChain);
return res; return res;
+1
View File
@@ -126,6 +126,7 @@ instance.interceptors.response.use(null, async (error) => {
/* Wait and retry the request */ /* Wait and retry the request */
await new Promise((resolve) => { setTimeout(resolve, (retryAfter * 1000)); }); await new Promise((resolve) => { setTimeout(resolve, (retryAfter * 1000)); });
log(`Retrying request to URL ${config.url}`);
return instance(config); return instance(config);
} }
} }
+9 -7
View File
@@ -90,10 +90,12 @@ const defaultOpts = {
*/ */
class AcmeClient { class AcmeClient {
sslProvider
constructor(opts) { constructor(opts) {
if (!Buffer.isBuffer(opts.accountKey)) { if (!Buffer.isBuffer(opts.accountKey)) {
opts.accountKey = Buffer.from(opts.accountKey); opts.accountKey = Buffer.from(opts.accountKey);
} }
this.sslProvider = opts.sslProvider;
this.opts = { ...defaultOpts, ...opts }; this.opts = { ...defaultOpts, ...opts };
this.backoffOpts = { this.backoffOpts = {
@@ -500,7 +502,7 @@ class AcmeClient {
await verify[challenge.type](authz, challenge, keyAuthorization); await verify[challenge.type](authz, challenge, keyAuthorization);
}; };
log('Waiting for ACME challenge verification', this.backoffOpts); log('Waiting for ACME challenge verification(等待ACME挑战验证)', this.backoffOpts);
return util.retry(verifyFn, this.backoffOpts); return util.retry(verifyFn, this.backoffOpts);
} }
@@ -554,9 +556,9 @@ class AcmeClient {
* ``` * ```
*/ */
async waitForValidStatus(item) { async waitForValidStatus(item,d) {
if (!item.url) { if (!item.url) {
throw new Error('Unable to verify status of item, URL not found'); throw new Error(`[${d}] Unable to verify status of item, URL not found`);
} }
const verifyFn = async (abort) => { const verifyFn = async (abort) => {
@@ -568,23 +570,23 @@ class AcmeClient {
const resp = await this.api.apiRequest(item.url, null, [200]); const resp = await this.api.apiRequest(item.url, null, [200]);
/* Verify status */ /* Verify status */
log(`Item has status: ${resp.data.status}`); log(`[${d}] Item has status(挑战状态): ${resp.data.status}`);
if (invalidStates.includes(resp.data.status)) { if (invalidStates.includes(resp.data.status)) {
abort(); abort();
throw new Error(util.formatResponseError(resp)); throw new Error(util.formatResponseError(resp));
} }
else if (pendingStates.includes(resp.data.status)) { else if (pendingStates.includes(resp.data.status)) {
throw new Error('Operation is pending or processing'); throw new Error(`[${d}] Operation is pending or processing(当前仍然在等待状态)`);
} }
else if (validStates.includes(resp.data.status)) { else if (validStates.includes(resp.data.status)) {
return resp.data; return resp.data;
} }
throw new Error(`Unexpected item status: ${resp.data.status}`); throw new Error(`[${d}] Unexpected item status: ${resp.data.status}`);
}; };
log(`Waiting for valid status from: ${item.url}`, this.backoffOpts); log(`[${d}] Waiting for valid status (等待valid状态): ${item.url}`, this.backoffOpts);
return util.retry(verifyFn, this.backoffOpts); return util.retry(verifyFn, this.backoffOpts);
} }
+2
View File
@@ -5,3 +5,5 @@ export class CancelError extends Error {
} }
} }
+2
View File
@@ -46,3 +46,5 @@ export * from './axios.js'
export * from './logger.js' export * from './logger.js'
export * from './verify.js' export * from './verify.js'
export * from './error.js' export * from './error.js'
export * from './util.js'
+12 -9
View File
@@ -60,8 +60,9 @@ async function retryPromise(fn, attempts, backoff) {
throw e; throw e;
} }
log(`Promise rejected: ${e.message}`);
const duration = backoff.duration(); const duration = backoff.duration();
log(`Promise rejected attempt #${backoff.attempts}, retrying in ${duration}ms: ${e.message}`); log(`Promise rejected attempt #${backoff.attempts}, ${duration}ms 后重试: ${e.message}`);
await new Promise((resolve) => { setTimeout(resolve, duration); }); await new Promise((resolve) => { setTimeout(resolve, duration); });
return retryPromise(fn, attempts, backoff); return retryPromise(fn, attempts, backoff);
@@ -218,15 +219,15 @@ function formatResponseError(resp) {
async function resolveDomainBySoaRecord(recordName) { async function resolveDomainBySoaRecord(recordName) {
try { try {
await dns.resolveSoa(recordName); await dns.resolveSoa(recordName);
log(`Found SOA record, considering domain to be: ${recordName}`); log(`找到${recordName}的SOA记录`);
return recordName; return recordName;
} }
catch (e) { catch (e) {
log(`Unable to locate SOA record for name: ${recordName}`); log(`找不到${recordName}的SOA记录,继续往主域名查找`);
const parentRecordName = recordName.split('.').slice(1).join('.'); const parentRecordName = recordName.split('.').slice(1).join('.');
if (!parentRecordName.includes('.')) { if (!parentRecordName.includes('.')) {
throw new Error('Unable to resolve domain by SOA record'); throw new Error('SOA record查找失败');
} }
return resolveDomainBySoaRecord(parentRecordName); return resolveDomainBySoaRecord(parentRecordName);
@@ -241,7 +242,7 @@ async function resolveDomainBySoaRecord(recordName) {
*/ */
async function getAuthoritativeDnsResolver(recordName) { async function getAuthoritativeDnsResolver(recordName) {
log(`Locating authoritative NS records for name: ${recordName}`); log(`获取域名${recordName}的权威NS服务器: `);
const resolver = new dns.Resolver(); const resolver = new dns.Resolver();
try { try {
@@ -249,13 +250,14 @@ async function getAuthoritativeDnsResolver(recordName) {
const domain = await resolveDomainBySoaRecord(recordName); const domain = await resolveDomainBySoaRecord(recordName);
/* Resolve authoritative NS addresses */ /* Resolve authoritative NS addresses */
log(`Looking up authoritative NS records for domain: ${domain}`); log(`获取到权威NS服务器name: ${domain}`);
const nsRecords = await dns.resolveNs(domain); const nsRecords = await dns.resolveNs(domain);
log(`域名权威NS服务器:${nsRecords}`);
const nsAddrArray = await Promise.all(nsRecords.map(async (r) => dns.resolve4(r))); const nsAddrArray = await Promise.all(nsRecords.map(async (r) => dns.resolve4(r)));
const nsAddresses = [].concat(...nsAddrArray).filter((a) => a); const nsAddresses = [].concat(...nsAddrArray).filter((a) => a);
if (!nsAddresses.length) { if (!nsAddresses.length) {
throw new Error(`Unable to locate any valid authoritative NS addresses for domain: ${domain}`); throw new Error(`Unable to locate any valid authoritative NS addresses for domain(获取权威服务器IP失败): ${domain}`);
} }
/* Authoritative NS success */ /* Authoritative NS success */
@@ -263,12 +265,12 @@ async function getAuthoritativeDnsResolver(recordName) {
resolver.setServers(nsAddresses); resolver.setServers(nsAddresses);
} }
catch (e) { catch (e) {
log(`Authoritative NS lookup error: ${e.message}`); log(`Authoritative NS lookup error(获取权威NS服务器地址失败): ${e.message}`);
} }
/* Return resolver */ /* Return resolver */
const addresses = resolver.getServers(); const addresses = resolver.getServers();
log(`DNS resolver addresses: ${addresses.join(', ')}`); log(`DNS resolver addresses(域名的权威NS服务器地址): ${addresses.join(', ')}`);
return resolver; return resolver;
} }
@@ -338,5 +340,6 @@ export {
formatResponseError, formatResponseError,
getAuthoritativeDnsResolver, getAuthoritativeDnsResolver,
retrieveTlsAlpnCertificate, retrieveTlsAlpnCertificate,
resolveDomainBySoaRecord
}; };
+101 -45
View File
@@ -24,22 +24,46 @@ const dns = dnsSdk.promises
*/ */
async function verifyHttpChallenge(authz, challenge, keyAuthorization, suffix = `/.well-known/acme-challenge/${challenge.token}`) { async function verifyHttpChallenge(authz, challenge, keyAuthorization, suffix = `/.well-known/acme-challenge/${challenge.token}`) {
async function doQuery(challengeUrl){
log(`正在测试请求 ${challengeUrl} `)
// const httpsPort = axios.defaults.acmeSettings.httpsChallengePort || 443;
// const challengeUrl = `https://${authz.identifier.value}:${httpsPort}${suffix}`;
/* May redirect to HTTPS with invalid/self-signed cert - https://letsencrypt.org/docs/challenge-types/#http-01-challenge */
const httpsAgent = new https.Agent({ rejectUnauthorized: false });
log(`Sending HTTP query to ${authz.identifier.value}, suffix: ${suffix}, port: ${httpPort}`);
let data = ""
try{
const resp = await axios.get(challengeUrl, { httpsAgent });
data = (resp.data || '').replace(/\s+$/, '');
}catch (e) {
log(`[error] HTTP request error from ${authz.identifier.value}`,e.message);
return false
}
if (!data || (data !== keyAuthorization)) {
log(`[error] Authorization not found in HTTP response from ${authz.identifier.value}`);
return false
}
return true
}
const httpPort = axios.defaults.acmeSettings.httpChallengePort || 80; const httpPort = axios.defaults.acmeSettings.httpChallengePort || 80;
const challengeUrl = `http://${authz.identifier.value}:${httpPort}${suffix}`; const challengeUrl = `http://${authz.identifier.value}:${httpPort}${suffix}`;
/* May redirect to HTTPS with invalid/self-signed cert - https://letsencrypt.org/docs/challenge-types/#http-01-challenge */ if (!await doQuery(challengeUrl)) {
const httpsAgent = new https.Agent({ rejectUnauthorized: false }); const httpsPort = axios.defaults.acmeSettings.httpsChallengePort || 443;
const httpsChallengeUrl = `https://${authz.identifier.value}:${httpsPort}${suffix}`;
log(`Sending HTTP query to ${authz.identifier.value}, suffix: ${suffix}, port: ${httpPort}`); const res = await doQuery(httpsChallengeUrl)
const resp = await axios.get(challengeUrl, { httpsAgent }); if (!res) {
const data = (resp.data || '').replace(/\s+$/, ''); throw new Error(`[error] 验证失败,请检查以上测试url是否可以正常访问`);
}
log(`Query successful, HTTP status code: ${resp.status}`);
if (!data || (data !== keyAuthorization)) {
throw new Error(`Authorization not found in HTTP response from ${authz.identifier.value}`);
} }
log(`Key authorization match for ${challenge.type}/${authz.identifier.value}, ACME challenge verified`); log(`Key authorization match for ${challenge.type}/${authz.identifier.value}, ACME challenge verified`);
return true; return true;
} }
@@ -48,55 +72,85 @@ async function verifyHttpChallenge(authz, challenge, keyAuthorization, suffix =
* Walk DNS until TXT records are found * Walk DNS until TXT records are found
*/ */
async function walkDnsChallengeRecord(recordName, resolver = dns) { async function walkDnsChallengeRecord(recordName, resolver = dns,deep = 0) {
/* Resolve CNAME record first */
// try { let records = [];
// log(`Checking name for CNAME records: ${recordName}`);
// const cnameRecords = await resolver.resolveCname(recordName);
//
// if (cnameRecords.length) {
// log(`CNAME record found at ${recordName}, new challenge record name: ${cnameRecords[0]}`);
// return walkDnsChallengeRecord(cnameRecords[0]);
// }
// }
// catch (e) {
// log(`No CNAME records found for name: ${recordName}`);
// }
/* Resolve TXT records */ /* Resolve TXT records */
try { try {
log(`Checking name for TXT records: ${recordName}`); log(`检查域名 ${recordName} 的TXT记录`);
const txtRecords = await resolver.resolveTxt(recordName); const txtRecords = await resolver.resolveTxt(recordName);
if (txtRecords && txtRecords.length) { if (txtRecords && txtRecords.length) {
log(`Found ${txtRecords.length} TXT records at ${recordName}`); log(`找到 ${txtRecords.length} TXT记录( ${recordName}`);
log(`TXT records: ${JSON.stringify(txtRecords)}`); log(`TXT records: ${JSON.stringify(txtRecords)}`);
return [].concat(...txtRecords); records = records.concat(...txtRecords);
} }
return []; } catch (e) {
log(`解析 TXT 记录出错, ${recordName} :${e.message}`);
} }
catch (e) {
log(`Resolve TXT records error, ${recordName} :${e.message}`); /* Resolve CNAME record first */
throw e; try {
log(`检查是否存在CNAME映射: ${recordName}`);
const cnameRecords = await resolver.resolveCname(recordName);
if (cnameRecords.length) {
const cnameRecord = cnameRecords[0];
log(`已找到${recordName}的CNAME记录,将检查: ${cnameRecord}`);
let res= await walkTxtRecord(cnameRecord,deep+1);
if (res && res.length) {
log(`从CNAME中找到TXT记录: ${JSON.stringify(res)}`);
records = records.concat(...res);
}
}else{
log(`没有CNAME映射(${recordName}`);
}
} catch (e) {
log(`检查CNAME出错(${recordName} :${e.message}`);
} }
return records
} }
export async function walkTxtRecord(recordName) { export async function walkTxtRecord(recordName,deep = 0) {
if(deep >5){
log(`walkTxtRecord too deep (#${deep}) , skip walk`)
return []
}
const txtRecords = []
try { try {
/* Default DNS resolver first */ /* Default DNS resolver first */
log('Attempting to resolve TXT with default DNS resolver first'); log('从本地DNS服务器获取TXT解析记录');
const res = await walkDnsChallengeRecord(recordName); const res = await walkDnsChallengeRecord(recordName,dns,deep);
if (res && res.length > 0) { if (res && res.length > 0) {
return res; for (const item of res) {
txtRecords.push(item)
}
} }
throw new Error('No TXT records found');
} catch (e) {
log(`本地获取TXT解析记录失败:${e.message}`)
} }
catch (e) {
try{
/* Authoritative DNS resolver */ /* Authoritative DNS resolver */
log(`Error using default resolver, attempting to resolve TXT with authoritative NS: ${e.message}`); log(`从域名权威服务器获取TXT解析记录`);
const authoritativeResolver = await util.getAuthoritativeDnsResolver(recordName); const authoritativeResolver = await util.getAuthoritativeDnsResolver(recordName);
return await walkDnsChallengeRecord(recordName, authoritativeResolver); const res = await walkDnsChallengeRecord(recordName, authoritativeResolver,deep);
if (res && res.length > 0) {
for (const item of res) {
txtRecords.push(item)
}
}
}catch (e) {
log(`权威服务器获取TXT解析记录失败:${e.message}`)
} }
if (txtRecords.length === 0) {
throw new Error(`没有找到TXT解析记录(${recordName}`);
}
return txtRecords;
} }
/** /**
@@ -113,14 +167,16 @@ export async function walkTxtRecord(recordName) {
async function verifyDnsChallenge(authz, challenge, keyAuthorization, prefix = '_acme-challenge.') { async function verifyDnsChallenge(authz, challenge, keyAuthorization, prefix = '_acme-challenge.') {
const recordName = `${prefix}${authz.identifier.value}`; const recordName = `${prefix}${authz.identifier.value}`;
log(`Resolving DNS TXT from record: ${recordName}`); log(`本地校验TXT记录): ${recordName}`);
const recordValues = await walkTxtRecord(recordName); let recordValues = await walkTxtRecord(recordName);
log(`DNS query finished successfully, found ${recordValues.length} TXT records`); //去重
recordValues = [...new Set(recordValues)];
log(`DNS查询成功, 找到 ${recordValues.length} 条TXT记录:${recordValues}`);
if (!recordValues.length || !recordValues.includes(keyAuthorization)) { if (!recordValues.length || !recordValues.includes(keyAuthorization)) {
throw new Error(`Authorization not found in DNS TXT record: ${recordName}need:${keyAuthorization},found:${recordValues}`); throw new Error(`没有找到需要的DNS TXT记录: ${recordName}期望:${keyAuthorization},结果:${recordValues}`);
} }
log(`Key authorization match for ${challenge.type}/${recordName}, ACME challenge verified`); log(`关键授权匹配成功(${challenge.type}/${recordName}:${keyAuthorization},校验成功, ACME challenge verified`);
return true; return true;
} }
@@ -0,0 +1,11 @@
import {assert} from 'chai'
import {resolveDomainBySoaRecord} from "../src/util.js"
describe('dns', () => {
it('resolveDomainBySoaRecord', async () => {
const resp = await resolveDomainBySoaRecord("a.corp.smartdeer.com")
assert.equal(resp, "smartdeer.com")
});
})
+9 -3
View File
@@ -4,6 +4,8 @@
import { AxiosInstance } from 'axios'; import { AxiosInstance } from 'axios';
import * as rfc8555 from './rfc8555'; import * as rfc8555 from './rfc8555';
import {CancelError} from '../src/error.js'
export * from '../src/error.js'
export type PrivateKeyBuffer = Buffer; export type PrivateKeyBuffer = Buffer;
export type PublicKeyBuffer = Buffer; export type PublicKeyBuffer = Buffer;
@@ -56,14 +58,15 @@ export interface ClientExternalAccountBindingOptions {
export interface ClientAutoOptions { export interface ClientAutoOptions {
csr: CsrBuffer | CsrString; csr: CsrBuffer | CsrString;
challengeCreateFn: (authz: Authorization, challenge: rfc8555.Challenge, keyAuthorization: string) => Promise<{recordReq:any,recordRes:any,dnsProvider:any}>; challengeCreateFn: (authz: Authorization, keyAuthorization: (challenge:rfc8555.Challenge)=>Promise<string>) => Promise<{recordReq?:any,recordRes?:any,dnsProvider?:any,challenge: rfc8555.Challenge,keyAuthorization:string}>;
challengeRemoveFn: (authz: Authorization, challenge: rfc8555.Challenge, keyAuthorization: string,recordReq:any, recordRes:any,dnsProvider:any) => Promise<any>; challengeRemoveFn: (authz: Authorization, challenge: rfc8555.Challenge, keyAuthorization: string,recordReq:any, recordRes:any,dnsProvider:any,httpUploader:any) => Promise<any>;
email?: string; email?: string;
termsOfServiceAgreed?: boolean; termsOfServiceAgreed?: boolean;
skipChallengeVerification?: boolean; skipChallengeVerification?: boolean;
challengePriority?: string[]; challengePriority?: string[];
preferredChain?: string; preferredChain?: string;
signal?: AbortSignal; signal?: AbortSignal;
profile?:string;
} }
export class Client { export class Client {
@@ -201,5 +204,8 @@ export const agents: any;
export function setLogger(fn: (message: any, ...args: any[]) => void): void; export function setLogger(fn: (message: any, ...args: any[]) => void): void;
export function walkTxtRecord(record: any): Promise<string[]>; export function walkTxtRecord(record: any): Promise<string[]>;
export function getAuthoritativeDnsResolver(record:string): Promise<any>;
export const CancelError: Error; export const CancelError: typeof CancelError;
export function resolveDomainBySoaRecord(domain: string): Promise<string>;
+2 -2
View File
@@ -16,7 +16,7 @@
"@typescript-eslint/ban-ts-comment": "off", "@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/ban-ts-ignore": "off", "@typescript-eslint/ban-ts-ignore": "off",
"@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-explicit-any": "off",
// "no-unused-expressions": "off", "@typescript-eslint/no-empty-function": "off",
"max-len": [0, 160, 2, { "ignoreUrls": true }] "@typescript-eslint/no-unused-vars": "off"
} }
} }
+1 -1
View File
@@ -1,2 +1,2 @@
link-workspace-packages=true link-workspace-packages=deep
prefer-workspace-packages=true prefer-workspace-packages=true
+7
View File
@@ -0,0 +1,7 @@
{
"printWidth": 220,
"bracketSpacing": true,
"singleQuote": false,
"trailingComma": "es5",
"arrowParens": "avoid"
}
+370
View File
@@ -3,6 +3,376 @@
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.36.17](https://github.com/certd/certd/compare/v1.36.16...v1.36.17) (2025-08-17)
**Note:** Version bump only for package @certd/basic
## [1.36.16](https://github.com/certd/certd/compare/v1.36.15...v1.36.16) (2025-08-16)
**Note:** Version bump only for package @certd/basic
## [1.36.15](https://github.com/certd/certd/compare/v1.36.14...v1.36.15) (2025-08-07)
**Note:** Version bump only for package @certd/basic
## [1.36.14](https://github.com/certd/certd/compare/v1.36.13...v1.36.14) (2025-07-28)
**Note:** Version bump only for package @certd/basic
## [1.36.13](https://github.com/certd/certd/compare/v1.36.12...v1.36.13) (2025-07-23)
**Note:** Version bump only for package @certd/basic
## [1.36.12](https://github.com/certd/certd/compare/v1.36.11...v1.36.12) (2025-07-22)
**Note:** Version bump only for package @certd/basic
## [1.36.11](https://github.com/certd/certd/compare/v1.36.10...v1.36.11) (2025-07-22)
**Note:** Version bump only for package @certd/basic
## [1.36.10](https://github.com/certd/certd/compare/v1.36.9...v1.36.10) (2025-07-18)
**Note:** Version bump only for package @certd/basic
## [1.36.9](https://github.com/certd/certd/compare/v1.36.7...v1.36.9) (2025-07-15)
**Note:** Version bump only for package @certd/basic
## [1.36.7](https://github.com/certd/certd/compare/v1.36.6...v1.36.7) (2025-07-15)
**Note:** Version bump only for package @certd/basic
## [1.36.6](https://github.com/certd/certd/compare/v1.36.5...v1.36.6) (2025-07-14)
**Note:** Version bump only for package @certd/basic
## [1.36.5](https://github.com/certd/certd/compare/v1.36.4...v1.36.5) (2025-07-11)
**Note:** Version bump only for package @certd/basic
## [1.36.4](https://github.com/certd/certd/compare/v1.36.3...v1.36.4) (2025-07-10)
**Note:** Version bump only for package @certd/basic
## [1.36.3](https://github.com/certd/certd/compare/v1.36.2...v1.36.3) (2025-07-07)
**Note:** Version bump only for package @certd/basic
## [1.36.2](https://github.com/certd/certd/compare/v1.36.1...v1.36.2) (2025-07-06)
### Performance Improvements
* 证书检查支持自定义dns服务器 ([c53bb7c](https://github.com/certd/certd/commit/c53bb7cf677faa32729709ae0c10359db5194d7a))
## [1.36.1](https://github.com/certd/certd/compare/v1.36.0...v1.36.1) (2025-07-02)
**Note:** Version bump only for package @certd/basic
# [1.36.0](https://github.com/certd/certd/compare/v1.35.5...v1.36.0) (2025-07-01)
**Note:** Version bump only for package @certd/basic
## [1.35.5](https://github.com/certd/certd/compare/v1.35.4...v1.35.5) (2025-06-20)
**Note:** Version bump only for package @certd/basic
## [1.35.4](https://github.com/certd/certd/compare/v1.35.3...v1.35.4) (2025-06-13)
**Note:** Version bump only for package @certd/basic
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
**Note:** Version bump only for package @certd/basic
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
**Note:** Version bump only for package @certd/basic
## [1.35.1](https://github.com/certd/certd/compare/v1.35.0...v1.35.1) (2025-06-07)
**Note:** Version bump only for package @certd/basic
# [1.35.0](https://github.com/certd/certd/compare/v1.34.11...v1.35.0) (2025-06-05)
**Note:** Version bump only for package @certd/basic
## [1.34.11](https://github.com/certd/certd/compare/v1.34.10...v1.34.11) (2025-06-05)
**Note:** Version bump only for package @certd/basic
## [1.34.10](https://github.com/certd/certd/compare/v1.34.9...v1.34.10) (2025-06-03)
### Performance Improvements
* 支持部署到飞牛OS ([ddfd0fb](https://github.com/certd/certd/commit/ddfd0fb81d6638352920261065f1ab8e27bdd564))
* 支持日志写入文件 ([37edbf5](https://github.com/certd/certd/commit/37edbf5824d6aaae68ea1ef7259c6f739d418d2c))
## [1.34.9](https://github.com/certd/certd/compare/v1.34.8...v1.34.9) (2025-05-30)
**Note:** Version bump only for package @certd/basic
## [1.34.8](https://github.com/certd/certd/compare/v1.34.7...v1.34.8) (2025-05-28)
**Note:** Version bump only for package @certd/basic
## [1.34.7](https://github.com/certd/certd/compare/v1.34.6...v1.34.7) (2025-05-26)
**Note:** Version bump only for package @certd/basic
## [1.34.6](https://github.com/certd/certd/compare/v1.34.5...v1.34.6) (2025-05-25)
**Note:** Version bump only for package @certd/basic
## [1.34.5](https://github.com/certd/certd/compare/v1.34.4...v1.34.5) (2025-05-19)
### Performance Improvements
* 支持部署到宝塔aaWAF ([094565c](https://github.com/certd/certd/commit/094565ccd619ef671c6c11ce5fb7fd54a7a21d1c))
## [1.34.4](https://github.com/certd/certd/compare/v1.34.3...v1.34.4) (2025-05-16)
### Bug Fixes
* 修复导入在线插件不生效的bug ([fcf8309](https://github.com/certd/certd/commit/fcf8309c238208281ecb4575b2c3cfe50c11d783))
* 修复自建插件保存丢失部署策略的bug ([863e74d](https://github.com/certd/certd/commit/863e74dd2e3912f950ff5025b5ed0070aeb37035))
## [1.34.3](https://github.com/certd/certd/compare/v1.34.2...v1.34.3) (2025-05-15)
**Note:** Version bump only for package @certd/basic
## [1.34.2](https://github.com/certd/certd/compare/v1.34.1...v1.34.2) (2025-05-11)
**Note:** Version bump only for package @certd/basic
## [1.34.1](https://github.com/certd/certd/compare/v1.34.0...v1.34.1) (2025-05-05)
### Performance Improvements
* 支持部署证书到火山dcdn ([5f85219](https://github.com/certd/certd/commit/5f852194953dc1b4e6336770f417507b8f5a33ad))
# [1.34.0](https://github.com/certd/certd/compare/v1.33.8...v1.34.0) (2025-04-28)
**Note:** Version bump only for package @certd/basic
## [1.33.8](https://github.com/certd/certd/compare/v1.33.7...v1.33.8) (2025-04-26)
**Note:** Version bump only for package @certd/basic
## [1.33.7](https://github.com/certd/certd/compare/v1.33.6...v1.33.7) (2025-04-22)
### Performance Improvements
* 支持51dns ([96a0900](https://github.com/certd/certd/commit/96a0900edc95dcfd9acccf9d13592f12f5a09b3d))
## [1.33.6](https://github.com/certd/certd/compare/v1.33.5...v1.33.6) (2025-04-20)
**Note:** Version bump only for package @certd/basic
## [1.33.5](https://github.com/certd/certd/compare/v1.33.4...v1.33.5) (2025-04-17)
### Performance Improvements
* 多重认证登录 ([0f82cf4](https://github.com/certd/certd/commit/0f82cf409bc60706ab07e4ca4f272b9a1ca7eecb))
## [1.33.4](https://github.com/certd/certd/compare/v1.33.3...v1.33.4) (2025-04-15)
**Note:** Version bump only for package @certd/basic
## [1.33.3](https://github.com/certd/certd/compare/v1.33.2...v1.33.3) (2025-04-14)
**Note:** Version bump only for package @certd/basic
## [1.33.2](https://github.com/certd/certd/compare/v1.33.1...v1.33.2) (2025-04-12)
### Bug Fixes
* 修复某些情况下无法输出日志的bug ([70101bf](https://github.com/certd/certd/commit/70101bfa7ade65678d9202c804bbae2cb808b594))
## [1.33.1](https://github.com/certd/certd/compare/v1.33.0...v1.33.1) (2025-04-12)
**Note:** Version bump only for package @certd/basic
# [1.33.0](https://github.com/certd/certd/compare/v1.32.0...v1.33.0) (2025-04-11)
**Note:** Version bump only for package @certd/basic
# [1.32.0](https://github.com/certd/certd/compare/v1.31.11...v1.32.0) (2025-04-04)
**Note:** Version bump only for package @certd/basic
## [1.31.11](https://github.com/certd/certd/compare/v1.31.10...v1.31.11) (2025-04-02)
**Note:** Version bump only for package @certd/basic
## [1.31.10](https://github.com/certd/certd/compare/v1.31.9...v1.31.10) (2025-03-29)
**Note:** Version bump only for package @certd/basic
## [1.31.9](https://github.com/certd/certd/compare/v1.31.8...v1.31.9) (2025-03-28)
**Note:** Version bump only for package @certd/basic
## [1.31.8](https://github.com/certd/certd/compare/v1.31.7...v1.31.8) (2025-03-26)
### Performance Improvements
* 支持又拍云cdn ([fd0536b](https://github.com/certd/certd/commit/fd0536bd4b41f15b6b5d42e0b447f0dcbf73b8a8))
## [1.31.7](https://github.com/certd/certd/compare/v1.31.6...v1.31.7) (2025-03-24)
**Note:** Version bump only for package @certd/basic
## [1.31.6](https://github.com/certd/certd/compare/v1.31.5...v1.31.6) (2025-03-24)
**Note:** Version bump only for package @certd/basic
## [1.31.5](https://github.com/certd/certd/compare/v1.31.4...v1.31.5) (2025-03-22)
**Note:** Version bump only for package @certd/basic
## [1.31.4](https://github.com/certd/certd/compare/v1.31.3...v1.31.4) (2025-03-21)
**Note:** Version bump only for package @certd/basic
## [1.31.3](https://github.com/certd/certd/compare/v1.31.2...v1.31.3) (2025-03-13)
### Performance Improvements
* 支持部署到天翼云CDN ([82a72e0](https://github.com/certd/certd/commit/82a72e0b497efa043d342ad0e33c083a2de79a05))
## [1.31.2](https://github.com/certd/certd/compare/v1.31.1...v1.31.2) (2025-03-12)
**Note:** Version bump only for package @certd/basic
## [1.31.1](https://github.com/certd/certd/compare/v1.31.0...v1.31.1) (2025-03-11)
**Note:** Version bump only for package @certd/basic
# [1.31.0](https://github.com/certd/certd/compare/v1.30.6...v1.31.0) (2025-03-10)
### Performance Improvements
* 流水线同一个阶段任务优化为并行执行 ([efa9c74](https://github.com/certd/certd/commit/efa9c748c5c07fc950af3db742ef9310f1ac9a4b))
* 支持易盾RCDN部署 ([065713c](https://github.com/certd/certd/commit/065713cdb6953d16df08585c316c1a7a8eaec437))
## [1.30.6](https://github.com/certd/certd/compare/v1.30.5...v1.30.6) (2025-02-24)
### Performance Improvements
* 支持新版本LeCDN ([44d43f4](https://github.com/certd/certd/commit/44d43f45cb9094619df7494c2a64a51ba77ad116))
## [1.30.5](https://github.com/certd/certd/compare/v1.30.4...v1.30.5) (2025-02-14)
**Note:** Version bump only for package @certd/basic
## [1.30.4](https://github.com/certd/certd/compare/v1.30.3...v1.30.4) (2025-02-14)
**Note:** Version bump only for package @certd/basic
## [1.30.3](https://github.com/certd/certd/compare/v1.30.2...v1.30.3) (2025-02-13)
**Note:** Version bump only for package @certd/basic
## [1.30.2](https://github.com/certd/certd/compare/v1.30.1...v1.30.2) (2025-02-09)
**Note:** Version bump only for package @certd/basic
## [1.30.1](https://github.com/certd/certd/compare/v1.30.0...v1.30.1) (2025-01-20)
**Note:** Version bump only for package @certd/basic
# [1.30.0](https://github.com/certd/certd/compare/v1.29.5...v1.30.0) (2025-01-19)
**Note:** Version bump only for package @certd/basic
## [1.29.5](https://github.com/certd/certd/compare/v1.29.4...v1.29.5) (2025-01-07)
**Note:** Version bump only for package @certd/basic
## [1.29.4](https://github.com/certd/certd/compare/v1.29.3...v1.29.4) (2025-01-06)
**Note:** Version bump only for package @certd/basic
## [1.29.3](https://github.com/certd/certd/compare/v1.29.2...v1.29.3) (2025-01-04)
**Note:** Version bump only for package @certd/basic
## [1.29.2](https://github.com/certd/certd/compare/v1.29.1...v1.29.2) (2024-12-25)
**Note:** Version bump only for package @certd/basic
## [1.29.1](https://github.com/certd/certd/compare/v1.29.0...v1.29.1) (2024-12-25)
### Bug Fixes
* 修复某处金额转换丢失精度的bug ([d2d6f12](https://github.com/certd/certd/commit/d2d6f12218cbe7bd55f4ae082b93084be85f0a7b))
# [1.29.0](https://github.com/certd/certd/compare/v1.28.4...v1.29.0) (2024-12-24)
### Features
* 用户套餐,用户支付功能 ([a019956](https://github.com/certd/certd/commit/a019956698acaf2c4beb620b5ad8c18918ead6a1))
* 支持微信支付 ([45d6347](https://github.com/certd/certd/commit/45d6347f5b6199493b11aabdd74177f6dca2cea4))
### Performance Improvements
* 站点证书监控通知发送,每天定时检查 ([bb4910f](https://github.com/certd/certd/commit/bb4910f4e57234e42b44505f4620ae7af66025c5))
* 支持plesk网站证书部署 ([eda45c1](https://github.com/certd/certd/commit/eda45c1528199648b3970505e87f492d398226cd))
## [1.28.4](https://github.com/certd/certd/compare/v1.28.3...v1.28.4) (2024-12-12)
**Note:** Version bump only for package @certd/basic
## [1.28.3](https://github.com/certd/certd/compare/v1.28.2...v1.28.3) (2024-12-12)
**Note:** Version bump only for package @certd/basic
## [1.28.2](https://github.com/certd/certd/compare/v1.28.1...v1.28.2) (2024-12-09)
**Note:** Version bump only for package @certd/basic
## [1.28.1](https://github.com/certd/certd/compare/v1.28.0...v1.28.1) (2024-12-08)
### Performance Improvements
* 通知选择器优化 ([2c0cbdd](https://github.com/certd/certd/commit/2c0cbdd29ecb74cc939b2ae7ee86b8d40f70ba31))
# [1.28.0](https://github.com/certd/certd/compare/v1.27.9...v1.28.0) (2024-11-30)
### Performance Improvements
* 优化证书申请成功通知发送方式 ([8002a56](https://github.com/certd/certd/commit/8002a56efc5998aa03db5711ae87f9eb4bc9e160))
* 支持短信验证码登录 ([387bcc5](https://github.com/certd/certd/commit/387bcc5fa418cdeea81a06da5e3f8cd6b43cd082))
## [1.27.9](https://github.com/certd/certd/compare/v1.27.8...v1.27.9) (2024-11-26)
**Note:** Version bump only for package @certd/basic
## [1.27.8](https://github.com/certd/certd/compare/v1.27.7...v1.27.8) (2024-11-25)
**Note:** Version bump only for package @certd/basic
## [1.27.7](https://github.com/certd/certd/compare/v1.27.6...v1.27.7) (2024-11-25)
**Note:** Version bump only for package @certd/basic
## [1.27.6](https://github.com/certd/certd/compare/v1.27.5...v1.27.6) (2024-11-19)
**Note:** Version bump only for package @certd/basic
## [1.27.5](https://github.com/certd/certd/compare/v1.27.4...v1.27.5) (2024-11-18)
### Performance Improvements
* 系统设置中的代理设置优化为可全局生效,环境变量中的https_proxy设置将无效 ([381a37f](https://github.com/certd/certd/commit/381a37fbaa6b61c887eda743897ae00afb825bdf))
* 新手导航在非编辑模式下不显示 ([18bfcc2](https://github.com/certd/certd/commit/18bfcc24ad0bde57bb04db8a4209861ec6b8ff1d))
* 优化腾讯云 cloudflare 重复解析记录时的返回值 ([90d1b68](https://github.com/certd/certd/commit/90d1b68bd6cf232fbe085234efe07d29b7690044))
## [1.27.4](https://github.com/certd/certd/compare/v1.27.3...v1.27.4) (2024-11-14)
**Note:** Version bump only for package @certd/basic
## [1.27.3](https://github.com/certd/certd/compare/v1.27.2...v1.27.3) (2024-11-13) ## [1.27.3](https://github.com/certd/certd/compare/v1.27.2...v1.27.3) (2024-11-13)
### Bug Fixes ### Bug Fixes

Some files were not shown because too many files have changed in this diff Show More