From cffb433c1eb2249ac9d61cee66bc10e05b2ff0ef Mon Sep 17 00:00:00 2001 From: xfy911 Date: Thu, 4 Jun 2026 14:36:16 +0800 Subject: [PATCH] =?UTF-8?q?docs(plan):=20=E6=9B=B4=E6=96=B0=20TLS/HTTPS=20?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=8A=B6=E6=80=81=EF=BC=8C=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E4=BC=98=E5=85=88=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cocoon-plan.md | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/.cocoon-plan.md b/.cocoon-plan.md index e3dde85..3311169 100644 --- a/.cocoon-plan.md +++ b/.cocoon-plan.md @@ -33,7 +33,7 @@ ### Phase 3 — 扩展 - [x] **配置文件支持** — JSON 配置替代纯命令行 ✅ 2026-06-04 - [x] **Brotli 压缩** — 比 gzip 更高压缩率 ✅ 2026-06-04 -- [ ] HTTPS / TLS +- [x] **HTTPS / TLS** — OpenSSL Memory BIO 集成,支持命令行与配置文件启用 ✅ 2026-06-04 - [ ] HTTP/2 - [ ] Windows 兼容性 @@ -45,24 +45,37 @@ ## 当前状态 - 编译通过,零警告(除 coco 子模块的 linker .note.GNU-stack 提示) -- **37 项集成测试全部通过**(GET/HEAD/POST/404/Range/304/gzip/brotli/MIME/目录浏览/路径防护/文件上传) -- **125 个单元测试全部通过**(Unity 框架,server 测试 17 个) +- **39 项集成测试全部通过**(GET/HEAD/POST/404/Range/304/gzip/brotli/MIME/目录浏览/路径防护/文件上传/TLS握手/HTTPS响应) +- **127 个单元测试全部通过**(Unity 框架,1 个忽略),新增 2 个 TLS 集成测试 - 压测数据:wrk -t4 -c100 -d10s → 16,179 RPS,平均延迟 59.86μs - POST 支持:JSON 和 form-urlencoded 回显,multipart 文件上传,Content-Length 解析,8MB 上限 - **配置文件支持**:JSON 格式,8 个字段,命令行参数可覆盖 +- **TLS/HTTPS**:OpenSSL 3.0 Memory BIO + coco 协程集成,自签名证书支持,sendfile 降级为缓冲读写 - README / Makefile 已更新 ## 待办池 -1. **[高] HTTPS / TLS** — 生产部署必备 -2. **[高] HTTP/2 多路复用** — 长期演进方向 -3. **[中] Windows 兼容性** — 平台抽象层(platform.h / platform.c) -4. **[中] Doxygen 中文注释** — 所有模块的公共 API 需要完整文档 -5. **[低] 检查远程更新内容** — 上游有 new commits,需 review 9041d8d +1. **[高] HTTP/2 多路复用** — 长期演进方向 +2. **[中] Windows 兼容性** — 平台抽象层(platform.h / platform.c) +3. **[中] Doxygen 中文注释** — 所有模块的公共 API 需要完整文档 +4. **[低] 检查远程更新内容** — 上游有 new commits,需 review 9041d8d ## 最近行动记录 -- **2026-06-04: 本轮行动 — 修复拼写错误 + 扩展 server 单元测试** +- **2026-06-04: 本轮行动 — 实现 TLS/HTTPS 支持** + - 新增 `tls.c` / `tls.h`:OpenSSL 3.0 Memory BIO 与 coco 协程 I/O 集成 + - `cocoon.h`:新增 `tls_enabled`, `tls_cert`, `tls_key` 配置字段 + - `server.c`:accept 后执行 TLS 握手,读/写/关闭路由到 TLS 层 + - `static.c`:TLS 连接降级 sendfile 为缓冲 read+write,修复 lseek 定位(压缩读取后重置文件位置) + - `config.c` / `config.h`:JSON 配置支持 `tls_cert`, `tls_key`, `tls_enabled` + - `main.c`:新增 `--cert`, `--key`, `--tls` CLI 选项 + - `Makefile`:加入 `tls.c`,链接 `-lssl -lcrypto` + - 生成自签名测试证书 `tests/server.crt` / `tests/server.key` + - `tests/integration_test.sh`:新增 TLS 握手 + HTTPS 响应验证,修复 `kill_server` 匹配规则,curl 添加 `--max-time` 和 `-k` + - `tests/unit/test_config.c`:更新 `config_merge` 测试签名 + - 单元测试:127 个通过(1 忽略),集成测试:39 个通过(含 2 个 TLS 测试) + - 推送到 main +- **2026-06-04: 本轮行动 — 修复拼写错误 + 扩展 server 单元测试(17 个)** - `cocoon.h`:`COCOONForbidden` → `COCOON_FORBIDDEN`(统一下划线命名) - `test_server.c`:从 5 个测试扩展到 17 个 - 空 root_dir 边界测试