5 Commits

Author SHA1 Message Date
xfy911
7747ec921f feat(tls): 添加 TLS/HTTPS 支持
- 新增 tls.c/tls.h,使用 OpenSSL Memory BIO 与 coco 协程 I/O 集成
- 支持 TLS 1.2+,通过命令行 --cert/--key 或配置文件启用
- 所有静态文件、目录浏览、POST/文件上传功能均已支持 HTTPS
- 集成测试新增 TLS 握手 + HTTPS 响应验证
- 单元测试 127 项通过,集成测试 39 项通过
2026-06-04 12:50:28 +08:00
xfy911
ea5436febb feat(compression): 添加 Brotli 压缩支持,优先于 Gzip
- static.c: 新增 brotli_compress(),使用 libbrotlienc(质量 11,窗口 22)
- static_serve_file(): 优先 Brotli,回退 Gzip,二进制文件跳过
- http.c: 解析 Accept-Encoding: br,http_request_t 新增 accept_brotli
- cocoon.h: cocoon_config_t 新增 brotli_enabled(默认 true)
- config.c/h: 解析 brotli_enabled JSON 字段,config_merge() 新增 has_brotli_enabled
- main.c: --no-brotli 命令行选项
- server.c: 连接结构体新增 brotli_enabled
- Makefile: 链接 -lbrotlienc
- 单元测试: test_static.c 新增 4 个 Brotli 测试;test_config.c 新增 brotli 配置测试
- 集成测试: 新增 5 项 Brotli 测试(br 压缩、优先策略、图片不压缩)
- cocoon.json: 添加 brotli_enabled 字段
- README: 更新特性描述、curl 示例、命令行参数、路线图
- 113 个单元测试全部通过,37 项集成测试全部通过
2026-06-04 06:19:42 +08:00
xfy911
3801f3ac0d feat(config): 添加 JSON 配置文件支持 + gzip_enabled 控制 + README 修正
- config.c/config.h: 极简 JSON 解析器,支持数字/字符串/布尔//注释
- cocoon_config_t 新增 gzip_enabled 字段(默认 true)
- main.c: -c <file> 加载配置,--no-gzip 禁用压缩,命令行覆盖配置
- 修复 -r 参数 strdup 崩溃(避免 free 野指针)
- 修复 signal handler 双重 free 问题
- 单元测试: test_config.c 17 个测试全部通过
- 集成测试: 32 项全部通过
- README 修正过时描述(配置方式、安全设计、-v 说明)
2026-06-04 03:14:32 +08:00
xfy911
19c97ae6a9 test(config): 补充边界与异常路径测试
- test_load_invalid_field_type: 字段类型非法(port 为字符串),验证不 crash
- test_load_log_level_invalid: 非法 log_level 值保持默认 INFO
- test_load_nested_ignored: 嵌套对象——极简解析器返回 false 但不 crash
- test_load_array_ignored: 数组——同上,不 crash 即可
- test_merge_cmdline_null_root_dir: cmdline root_dir 为 NULL 时不覆盖 base
2026-06-04 00:24:29 +08:00
xfy911
3c521823b1 feat(tests): 添加 config 和 log 模块单元测试 + http.c 缓冲区溢出防护
- 新增 test_log.c: 8 个测试覆盖日志级别 getter/setter、前缀设置、持久化
- 新增 test_config.c: 11 个测试覆盖 JSON 配置加载、注释支持、错误处理、merge 覆盖逻辑
- http.c: 修复 response header 格式化中的 snprintf 边界条件,防止缓冲区溢出
- Makefile: 添加 test_log、test_config 编译规则,更新 .PHONY 列表
2026-06-04 00:02:18 +08:00