From c970c7f73aeeaf6daf2480787c3d55cea1325ecd Mon Sep 17 00:00:00 2001 From: xfy911 Date: Tue, 16 Jun 2026 12:46:28 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=20.cocoon-plan.md=20?= =?UTF-8?q?=E2=80=94=20ACME=20=E9=85=8D=E7=BD=AE=E9=9B=86=E6=88=90=20+=20?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=BB=AD=E6=9C=9F=E5=B7=B2=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cocoon-plan.md | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/.cocoon-plan.md b/.cocoon-plan.md index 8cfcd63..6144b65 100644 --- a/.cocoon-plan.md +++ b/.cocoon-plan.md @@ -51,7 +51,7 @@ - [x] **配置热重载校验** — 新配置语法校验失败时拒绝重载,避免把服务搞坏 - [x] **内存响应缓存** — 基于 LRU + TTL,文件不大时直接缓存到内存,避免重复磁盘 I/O - [x] **管理 Dashboard** — 内置 `/_status` 页面,SSE 实时推送指标,像 HAProxy stats 那种 -- [x] **ACME / Let's Encrypt 自动证书** — 客户端骨架完成(目录发现、nonce、账户、订单、授权、CSR、证书下载、thumbprint),OpenSSL 3.0 零警告;服务器端 HTTP-01 挑战响应路由已完成(`/.well-known/acme-challenge/` 返回 keyAuthorization);配置集成与自动续期待完成 +- [x] **ACME / Let's Encrypt 自动证书** — 客户端骨架完成(目录发现、nonce、账户、订单、授权、CSR、证书下载、thumbprint),OpenSSL 3.0 零警告;服务器端 HTTP-01 挑战响应路由已完成(`/.well-known/acme-challenge/` 返回 keyAuthorization);配置集成与自动续期后台协程已完成(2026-06-16) - [ ] **带宽限速 / 流量整形** — 按连接或全局限速,防止突发流量打满带宽 - [ ] **YAML / TOML 配置格式** — 配置验证时更友好 - [x] **systemd 服务文件** — 一键安装成系统服务,支持 SIGHUP 热重载、安全加固、自动恢复 @@ -67,13 +67,13 @@ ## 当前状态 -- **编译状态**:零警告,全部通过(2026-06-16 09:17 验证) -- **单元测试**:474 个全部通过 ✓(1 个 Ignored,为预期行为) +- **编译状态**:零警告,全部通过(2026-06-16 12:17 验证) +- **单元测试**:480 个全部通过 ✓(1 个 Ignored,为预期行为) - **集成测试**:111 项通过(4 项反向代理环境相关失败,非项目问题) - **代码覆盖率**:核心模块覆盖完整,Phase 4 模块覆盖良好 - **文档状态**:README 完整,API 文档齐全,.cocoon-plan.md 已更新 -- **项目阶段**:Phase 1~4 全部完成,Phase 5 进行中(ACME 服务器端 HTTP-01 挑战响应已完成) -- **代码规模**:30,000+ 行 C 代码(不含 coco 子模块),474 单元测试 + 111 集成测试 +- **项目阶段**:Phase 1~4 全部完成,Phase 5 进行中(ACME 配置集成 + 自动续期已完成) +- **代码规模**:30,000+ 行 C 代码(不含 coco 子模块),480 单元测试 + 111 集成测试 ## 待办池(Phase 5 — 自然扩展) @@ -227,7 +227,25 @@ - 提交已推送到 origin main 和 rua main(`a198b08`) - 项目状态:Phase 5 进行中,ACME 服务器端 HTTP-01 挑战响应已完成,下阶段目标:ACME 配置集成 + 自动续期后台任务 -+ 2026-06-16 06:17: **Phase 5 — systemd 服务文件** ++ 2026-06-16 12:17: **Phase 5 — ACME 配置集成 + 自动续期后台协程** + - `cocoon_config_t` 扩展:新增 ACME 配置字段(enabled, directory_url, email, domains[8], + cert_path, key_path, renew_days),支持配置文件 JSON 解析和命令行覆盖 + - `config.c`: 新增 ACME 配置块解析、字段校验(域名数量/邮箱格式/路径非空)、 + `config_merge` 支持 ACME 字段合并 + - `main.c`: 新增 `--acme` 命令行开关,用于启用/覆盖配置文件中的 ACME 设置 + - `acme.c`: 实现 `acme_save_certificate`(自动创建目录、原子写入 PEM 证书+私钥)、 + `acme_cert_days_until_expiry`(解析 X.509 ASN1_TIME,支持 UTCTime/GeneralizedTime) + - `server.c`: `server_start` 启动 ACME 自动续期后台协程,检查周期 24h, + 在证书到期前 `renew_days` 天自动触发重新签发并持久化新证书 + - 新增 `tests/unit/test_acme_config.c`:6 项单元测试 + - 覆盖 ACME 配置 JSON 解析、校验(邮箱/域名/路径)、默认值、 + 证书过期天数检查(UTCTime 13位/GeneralizedTime 15位)、证书保存、配置合并 + - 修复 `test_config.c` 中 5 处 `config_merge` 调用,匹配新增 `has_acme_enabled` 参数 + - 编译验证:零警告,全部通过 + - 单元测试:480 个全部通过 ✓(474 原有 + 6 新增 ACME 配置测试) + - 集成测试:111 项通过(4 项反向代理环境相关失败,非项目问题) + - 提交已推送到 origin main 和 rua main(`f38efff`) + - 项目状态:Phase 5 进行中,ACME 配置集成 + 自动续期已完成,下阶段目标:带宽限速 / 流量整形 - 新增 `cocoon.service`:完整的 systemd 服务单元配置 - Type=simple,默认启动 `/usr/local/bin/cocoon -c /etc/cocoon/cocoon.json` - ExecReload:发送 SIGHUP 触发配置热重载