feat: MeshSafe 文件摆渡安全卫士 v1.0 初始提交

核心功能:
- 6 层检测管线: L0 结构分析 → L1 ClamAV → L2 文档深度检测 → L3 关键词匹配 → L4 YARA → L5 PE/二进制
- FastAPI + PostgreSQL + Redis + Docker Compose 架构
- 客户端 HMAC-SHA256 签名鉴权 + 限流 + 幂等性
- 控制台 UI (登录/Dashboard/诊断中心/策略管理/任务列表/测试中心/产品介绍页)
- 三层诊断定时器 (error_scan 30s / db_aggregate 30s / container_check 5min)

并发与稳定性修复:
- 诊断定时器 Redis 时间槽位锁 (多 worker 同一槽位只有一个执行)
- JSONL 存储 fcntl 跨进程排他锁 + 容错解码 + 原子重写
- 移除 SQLite fallback, 统一 PostgreSQL
- API_CLIENTS 脱敏为环境变量, .env 已 .gitignore
This commit is contained in:
2026-10-28 19:07:11 +08:00
commit 16f134e328
113 changed files with 24604 additions and 0 deletions

50
.env.example Normal file
View File

@@ -0,0 +1,50 @@
# =============================================================================
# MeshSafe 生产部署环境变量(示例模板)
# 复制为 .env 后填入真实值(master_key + db_password + admin_password 必须改)
# =============================================================================
#
# docker-compose.yml 会自动加载同级 .env 文件。
# Settings 类(app/config.py)通过 pydantic_settings 读取,前缀 MESHSAFE_。
#
# 字段分三类:
# ── 必填(缺失启动报错)────────────
# MESHSAFE_MASTER_KEY 主密钥(base64 ≥ 32 字节)—— 密码哈希/HMAC 签名/HKDF 派生都用它
# MESHSAFE_DB_PASSWORD PostgreSQL 密码 —— 与 compose postgres.POSTGRES_PASSWORD 保持一致
# MESHSAFE_ADMIN_PASSWORD 默认管理员初始密码 —— scripts/init_db.py 首次建 admin 时使用
#
# ── docker-compose.yml 内置(API 服务会注入)──
# MESHSAFE_DB_URL =postgresql+psycopg://meshsafe:<DB_PASSWORD>@postgres:5432/meshsafe
# MESHSAFE_CLAMAV_HOST =clamav
# MESHSAFE_CLAMAV_PORT =3310
# MESHSAFE_REDIS_URL =redis://redis:6379/0
#
# ── 可选(有合理默认值)──────────
# MESHSAFE_ENV prod | dev
# MESHSAFE_HOST 0.0.0.0
# MESHSAFE_PORT 8443
# MESHSAFE_LOG_LEVEL DEBUG | INFO | WARNING | ERROR
# MESHSAFE_LOG_DIR /var/log/meshsafe
# MESHSAFE_WORKERS 2(异步扫描后台 worker 数)
# MESHSAFE_RULES_DIR /app/rules(YARA 规则目录)
# MESHSAFE_POLICY_FILE /app/config/policy.yaml
#
# ---------- master_key 生成 ----------
# python -c "import base64, os; print(base64.b64encode(os.urandom(32)).decode())"
# =============================================================================
# ---------- 必填 ----------
MESHSAFE_MASTER_KEY=CHANGE_ME_GENERATE_WITH_COMMAND_ABOVE
MESHSAFE_DB_PASSWORD=CHANGE_ME_DB_PASSWORD
MESHSAFE_ADMIN_PASSWORD=CHANGE_ME_ADMIN_PASSWORD
# ---------- 可选 ----------
MESHSAFE_ENV=prod
MESHSAFE_LOG_LEVEL=INFO
MESHSAFE_LOG_DIR=/var/log/meshsafe
MESHSAFE_WORKERS=2
MESHSAFE_RULES_DIR=/app/rules
MESHSAFE_POLICY_FILE=/app/config/policy.yaml
MESHSAFE_HOST=0.0.0.0
MESHSAFE_PORT=8443