Files
MeshSate/scripts/init_clamav.sh
zhaolei 16f134e328 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
2026-10-28 19:07:11 +08:00

38 lines
1.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# =============================================================================
# ClamAV 容器入口脚本(POSIX sh 兼容,Alpine/Debian slim 通用)
# =============================================================================
#
# 逻辑:
# 1) 检查 /var/lib/clamav 是否有 .cvd/.cld 签名库文件
# - 有 → 直接启动 clamd
# - 没有 → 尝试 freshclam 拉取(外网场景),失败则静默降级(内网正常)
# 2) 光闸摆渡导入:用户把 clamav-db-*.tar.gz 解压到 ./data/clamav/ 后
# 下次 docker restart meshsafe-clamav 会自动加载
# =============================================================================
set -eu
DATA_DIR="/var/lib/clamav"
CVD_COUNT=$(ls -1 "$DATA_DIR"/*.cvd "$DATA_DIR"/*.cld 2>/dev/null | wc -l || true)
echo "[init_clamav] ClamAV 签名库检查..."
echo "[init_clamav] 数据目录: $DATA_DIR 已有签名文件: $CVD_COUNT"
if [ "$CVD_COUNT" -eq 0 ]; then
echo "[init_clamav] 签名库为空,尝试 freshclam 拉取(外网环境)..."
if freshclam --stdout 2>&1 | tail -20; then
NEW_COUNT=$(ls -1 "$DATA_DIR"/*.cvd 2>/dev/null | wc -l || true)
echo "[init_clamav] freshclam 成功,新签名文件数: $NEW_COUNT"
else
echo "[init_clamav] freshclam 失败(内网光闸环境正常,等离线导入)"
echo "[init_clamav] 离线导入步骤:"
echo " 1. 外网: bash scripts/sync_clamav_db.sh → 生成 clamav-db-*.tar.gz"
echo " 2. 光闸: 把 tar.gz 摆渡到内网"
echo " 3. 内网: tar -xzf clamav-db-*.tar.gz -C ./data/clamav/"
echo " 4. 内网: docker restart meshsafe-clamav"
fi
fi
echo "[init_clamav] 启动 clamd..."
exec clamd --foreground