fix: 端口更换 & 代码审核修复

端口:
- 服务端口 8000 → 7329
- 前端开发端口 5173 → 7330

安全:
- CORS 收紧为白名单,关闭 credentials
- SPA 路由白名单完善
- 前端 XSS 转义

可靠性:
- 时区统一为 datetime.now(timezone.utc)
- 文章入库改为内存去重 + 增量计数
- OPML 导入改为 body 参数接收
- OPML 导出 URL XML 转义
- 首次抓取改为 BackgroundTasks 异步
- articles.py HTTPException 移到顶部 import
- FTS5 异常显式日志
- FTS5 查询加引号包裹防布尔注入
- 中文摘要支持中文标点
- 去掉未使用的 hashlib import

部署:
- Dockerfile 锁 python:3.12.7-slim
- requirements 锁定具体版本
- healthcheck 不用 curl(镜像里没有)
- docker-compose 使用 .env 文件
- 新增 .env 配置文件
This commit is contained in:
congsh
2026-06-11 14:31:29 +08:00
parent 54e7db0ef0
commit c59dd304f7
17 changed files with 701 additions and 106 deletions
+4 -11
View File
@@ -7,21 +7,14 @@ services:
dockerfile: Dockerfile
container_name: rsskeeper
ports:
- "8000:8000"
- "7329:7329"
volumes:
- ./data:/app/data
environment:
- DATA_DIR=/app/data
- DATABASE_URL=/app/data/rsskeeper.db
- FETCH_CONCURRENCY=10
- FETCH_TIMEOUT=30
- DEFAULT_FETCH_INTERVAL=60
- MIN_FETCH_INTERVAL=15
- MAX_ARTICLE_CONTENT_LENGTH=50000
- MAX_SUMMARY_LENGTH=500
env_file:
- .env
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:7329/api/health')"]
interval: 30s
timeout: 10s
retries: 3