c9a99f4fb3
代码修复: - web/agent/agent.py: datetime.utcnow() → datetime.now(timezone.utc) - requirements.txt: 移除 paramiko==3.5.0 (已无活跃引用) - 删除 server/infrastructure/ssh/pool.py (DEPRECATED, 无引用) 连接池三层对齐 (config.py/.env.example/session.py): - DB_POOL_SIZE 100→160, DB_MAX_OVERFLOW 100→120 - 基于 MySQL max_connections=400, install.php 公式 文档修复 (21项): - P0: 硬编码域名/IP替换为配置变量占位符 - P1: 10个过时设计文档加归档标注 (引用旧文件结构) - P2: step-3-webssh报告 paramiko引用修正 - 6份审查报告连接池参数勘误 100/100→160/120 - ECC安全报告 EC5 datetime.utcnow 标记已修复 - docs/README.md 文档索引重写 - docs/memory/mem_nexus_overview.md 移除硬编码凭证 - docs/project/tech-stack-inventory.md paramiko标记已移除 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
密码预设 — 设计规格
⚠️ 已归档 — 2026-05-22 本文档引用的文件结构已过时:
server/database.py已拆分为server/domain/models/;PHP 前端 (servers.php/settings.php) 已迁移到 Tailwind CSS v4 + Alpine.js (web/app/servers.html/settings.html)。功能已实现,保留本文档供历史参考。
背景
多台服务器的 SSH 密码通常相同,每次新建服务器时重复输入密码效率低。提供密码预设列表,新建服务器时下拉选择即可。
核心变更
数据模型
新增 PasswordPreset 表:
class PasswordPreset(Base):
__tablename__ = "password_presets"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(100), nullable=False, comment="预设名称")
encrypted_pw = Column(String(500), nullable=False, comment="加密后的密码")
created_at = Column(DateTime, default=datetime.datetime.utcnow)
加密方式与 Server.password 一致(Fernet),复用 encrypt_value / decrypt_value。
API 端点
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/servers/password-presets |
列表,只返回 id + name(不含密码) |
| POST | /api/servers/password-presets |
创建 {name, password},加密存储 |
| DELETE | /api/servers/password-presets/{id} |
删除 |
| POST | /api/servers/password-presets/{id}/reveal |
解密返回明文(需 API 认证) |
前端改动
servers.php 密码字段区:
密码预设: [选择预设 ▾] ← 新建
├─ 生产环境 — 123abc
├─ 测试环境 — test456
└─ 自定义(手动输入)
SSH密码: [自动填充 ████████] 👁
← 选预设后自动填入,也可手动改
settings.php 新增「密码预设管理」tab/区:
┌─ 密码预设管理 ────────────────────────────────┐
│ 名称 操作 │
│ 生产环境密码 [👁 查看] [🗑 删除] │
│ 测试环境密码 [👁 查看] [🗑 删除] │
│ [+ 添加] 名称: [____] 密码: [____] [保存] │
└────────────────────────────────────────────────┘
涉及文件
| 文件 | 改动 |
|---|---|
server/database.py |
PasswordPreset 模型 |
server/api/servers.py |
4 个预设端点 |
web/servers.php |
预设下拉 + JS 联动 |
web/settings.php |
预设管理面板 |
docs/CHANGELOG.md |
追加记录 |
预估:5 文件,~200 行。
规格自检
- 无占位符/TODO
- 加密/解密复用现有 infrastructure(Fernet + encrypt_value/decrypt_value)
- 列表 API 不返回密码明文,reveal 端点需单独调用
- 范围聚焦:仅密码预设,不涉及其他