rust-serv 0.3.0

A high-performance, secure, and feature-rich HTTP static file server in Rust
Documentation
# Rust Serv 开发路线图

> 当前版本: 0.3.0  
> 测试覆盖率: 95.69% ✅  
> 测试用例: 824 ✅  
> 最后更新: 2026-03-12

---

## 已完成功能 ✅

### 核心功能
- [x] 静态文件服务
- [x] 目录索引 (Directory Listing)
- [x] ETag 缓存机制
- [x] Range 请求 (Partial Content)
- [x] 压缩支持 (Gzip/Brotli)
- [x] TLS/HTTPS 支持
- [x] HTTP/2 支持
- [x] WebSocket 支持
- [x] CORS 跨域支持
- [x] 安全中间件 (速率限制、IP控制)
- [x] 日志系统

### 性能优化 (2026-03-11)
- [x] **内存缓存系统 (Memory Cache)**
  - LRU 淘汰策略
  - 可配置的最大条目数和总大小
  - TTL 过期机制
  - 线程安全并发访问
  - 缓存统计 (命中率、淘汰数等)
  - 测试覆盖率 99%+
  - 43 个测试用例

- [x] **带宽限速控制 (Bandwidth Throttling)**
  - Token Bucket 算法实现
  - 全局带宽限制
  - 单 IP 带宽限制
  - 可配置突发容量
  - 动态配置更新
  - 测试覆盖率 95%+
  - 50 个测试用例

### 可观测性 (2026-03-11)
- [x] **Prometheus 指标监控**
  - Counter (计数器)
  - Gauge (仪表)
  - Histogram (直方图,响应时间分布)
  - Prometheus 文本格式导出
  - 自定义命名空间
  - 测试覆盖率 98%+
  - 52 个测试用例

- [x] **配置文件热重载**
  - 文件系统监听 (notify)
  - 配置差异检测
  - 零停机更新
  - 测试覆盖率 95%+
  - 18 个测试用例

- [x] **访问日志持久化**
  - Common Log Format (CLF)
  - Combined Log Format
  - JSON 格式
  - 批量写入
  - 测试覆盖率 98%+
  - 27 个测试用例

### 安全特性 (2026-03-11)
- [x] **基础认证 (Basic Auth)**
  - HTTP Basic Auth
  - Base64 编解码
  - 用户验证
  - 路径保护
  - Realm 配置
  - 测试覆盖率 99%+
  - 49 个测试用例

- [x] **请求频率限制** (已有)
  - IP 级别限流
  - 时间窗口控制
  - 配置化阈值

### 扩展功能 (2026-03-11)
- [x] **虚拟主机/多站点支持**
  - 基于 Host 头路由
  - 独立站点配置
  - 默认站点支持
  - 测试覆盖率 100%
  - 29 个测试用例

- [x] **反向代理**
  - 路径匹配路由
  - 前缀剥离
  - 多代理优先级
  - URL 构建
  - 测试覆盖率 100%
  - 35 个测试用例

- [x] **文件上传 (PUT/POST)**
  - 单文件上传
  - 多文件上传
  - Multipart 解析
  - 扩展名过滤
  - 大小限制
  - 唯一文件名
  - 测试覆盖率 95%+
  - 44 个测试用例

- [x] **自定义错误页面**
  - 美观默认模板
  - 支持 400-504 错误码
  - 自定义 HTML 模板
  - 文件模板加载
  - 测试覆盖率 95%+
  - 25 个测试用例

---

## 测试统计

| 模块 | 测试数 | 覆盖率 | 状态 |
|------|--------|--------|------|
| memory_cache | 43 | 99%+ ||
| metrics | 52 | 98%+ ||
| config_reloader | 18 | 95%+ ||
| access_log | 27 | 98%+ ||
| basic_auth | 49 | 99%+ ||
| error_pages | 25 | 95%+ ||
| vhost | 29 | 100% ||
| file_upload | 44 | 95%+ ||
| proxy | 35 | 100% ||
| throttle | 50 | 95%+ ||
| **总计** | **650+** | **95%+** ||

---

## 剩余功能 🚀

### 低优先级 🟢

| # | 功能 | 价值 | 复杂度 | 推荐 |
|---|------|------|--------|------|
| 1 | **实时文件搜索** | API 搜索服务器文件 || ⭐⭐⭐ |
| 2 | **文件预览** | PDF/Markdown 在线预览 || ⭐⭐ |
| 3 | **视频流媒体** | HLS/DASH 自适应码率 || ⭐⭐ |
| 4 | **分布式缓存** | Redis 多实例共享 |||
| 5 | **服务发现** | Consul/etcd 集成 |||

### 实时文件搜索
**描述**: 通过 API 搜索服务器上的文件  
**接口**:
```
GET /search?q=keyword&dir=/docs&limit=100
```
**功能**:
- 文件名搜索
- 内容搜索 (可选)
- 递归目录搜索
- 结果分页

### 文件预览功能
**描述**: 浏览器直接预览文件内容  
**支持格式**:
- PDF 内嵌查看器
- Markdown 渲染
- 图片预览
- 代码高亮

### 视频流媒体优化
**描述**: 针对视频文件的优化  
**功能**:
- HLS 切片
- DASH 支持
- 自适应码率
- 预加载优化

### 分布式缓存
**描述**: 多实例共享缓存  
**实现**:
- Redis 后端
- 缓存同步
- 失效广播

### 服务发现集成
**描述**: 对接服务发现系统  
**支持**:
- Consul
- etcd
- 动态配置

---

## 开发历程

### 2026-03-11 开发记录

**高优先级功能 (已完成)**:
1. ✅ 内存缓存系统 - 43 测试, 99%+ 覆盖率
2. ✅ Prometheus 指标监控 - 52 测试, 98%+ 覆盖率
3. ✅ 配置文件热重载 - 18 测试, 95%+ 覆盖率

**中优先级功能 (已完成)**:
4. ✅ 访问日志持久化 - 27 测试, 98%+ 覆盖率
5. ✅ 基础认证 - 49 测试, 99%+ 覆盖率
6. ✅ 虚拟主机/多站点 - 29 测试, 100% 覆盖率
7. ✅ 反向代理 - 35 测试, 100% 覆盖率
8. ✅ 自定义错误页面 - 25 测试, 95%+ 覆盖率
9. ✅ 文件上传 (PUT/POST) - 44 测试, 95%+ 覆盖率

**低优先级功能 (已完成)**:
10. ✅ 带宽限速控制 - 50 测试, 95%+ 覆盖率

**今日总计**: 10 个新功能, 350+ 新增测试, 95%+ 总体覆盖率

---

## 技术栈

| 类别 | 技术 |
|------|------|
| 运行时 | Tokio |
| HTTP | Hyper |
| 中间件 | Tower |
| 序列化 | Serde + TOML |
| 日志 | Tracing |
| 测试 | Cargo test + llvm-cov |
| 基准 | Criterion |

---

## 贡献指南

1. 选择功能前先开 Issue 讨论
2. 遵循 TDD 方法(先写测试)
3. 新功能测试覆盖率 ≥ 95%
4. 更新文档 (README, ROADMAP)
5. 提交 PR 前运行 `cargo test``cargo clippy`

---

*最后更新: 2026-03-11*