d00294c86d
Co-authored-by: Cursor <cursoragent@cursor.com>
3.1 KiB
3.1 KiB
审计 — 2026-06-21 宝塔 SSH 自动获取 API 部署
Changelog: docs/changelog/2026-06-20-btpanel-ssh-api-bootstrap.md
Commit: 82426b19 feat(btpanel): 独立宝塔模块与 SSH 自动获取 API
Step 3 规则扫描
| 文件 | 规则 | 结论 |
|---|---|---|
ssh_bootstrap.py |
无静默吞错、远程 JSON 校验 | PASS |
bootstrap_state.py |
仅已入库服务器进 loop | PASS |
btpanel_service.py |
CUD 审计 bt_panel_ssh_bootstrap |
PASS |
BtPanelSettingsPage.vue |
批量操作二次确认 | PASS |
bootstrap_lock.py |
同机并发 SSH 互斥 | PASS |
Closure
| 项 | 状态 | 说明 |
|---|---|---|
| 后台 loop 误扫全库 | FIXED | is_eligible 需显式 bt_panel 块 |
result.success SSH |
FIXED | 改用 status == success |
| Permission denied 误判 | FIXED | 区分 SSH 认证与 api.json 写权限 |
| 空凭据标 ready | FIXED | bootstrap_empty_credentials |
| get_config 每次 SSH | FIXED | pending/installing 或 refresh 才探测 |
文件清单
frontend/src/App.vuefrontend/src/api/btpanel.tsfrontend/src/components/btpanel/BtPanelPageShell.vuefrontend/src/components/btpanel/BtPanelServerPicker.vuefrontend/src/composables/btpanel/btPanelContext.tsfrontend/src/composables/btpanel/useBtPanelPageLoad.tsfrontend/src/composables/btpanel/useBtPanelServer.tsfrontend/src/constants/cachedPages.tsfrontend/src/pages/btpanel/BtPanelCrontabPage.vuefrontend/src/pages/btpanel/BtPanelDatabasesPage.vuefrontend/src/pages/btpanel/BtPanelDomainsPage.vuefrontend/src/pages/btpanel/BtPanelLoginPage.vuefrontend/src/pages/btpanel/BtPanelMonitorPage.vuefrontend/src/pages/btpanel/BtPanelServicesPage.vuefrontend/src/pages/btpanel/BtPanelSettingsPage.vuefrontend/src/pages/btpanel/BtPanelSiteCreatePage.vuefrontend/src/pages/btpanel/BtPanelSitesPage.vuefrontend/src/pages/btpanel/BtPanelSslPage.vuefrontend/src/router/index.tsserver/api/btpanel.pyserver/api/btpanel_schemas.pyserver/api/servers.pyserver/application/services/btpanel_bootstrap_schedule.pyserver/application/services/btpanel_service.pyserver/application/services/server_batch_service.pyserver/background/bt_panel_bootstrap_loop.pyserver/config.pyserver/infrastructure/btpanel/__init__.pyserver/infrastructure/btpanel/bootstrap_lock.pyserver/infrastructure/btpanel/bootstrap_state.pyserver/infrastructure/btpanel/client.pyserver/infrastructure/btpanel/credentials.pyserver/infrastructure/btpanel/source_ip.pyserver/infrastructure/btpanel/ssh_bootstrap.pyserver/infrastructure/btpanel/ssh_login.pyserver/infrastructure/ssh/remote_shell.pyserver/main.pytests/test_btpanel_bootstrap_loop.pytests/test_btpanel_client.pytests/test_btpanel_get_config.pytests/test_btpanel_ssh_bootstrap.pytests/test_btpanel_ssh_login.py
DoD
- Step 3 规则扫描
- Closure 表
- 文件清单与
git diff HEAD~1..HEAD对齐 local_verify通过tests/test_btpanel_*.py25 passed- 需重启 API 注册
bt_panel_bootstrap_loop