4.0 KiB
已保存配置的连接测试
改动原因
草稿测试会让连接结果与后端实际保存的数据产生偏差,尤其是账号密码、出口代理和集群设置。现在目标必须先保存,连接测试只调用已保存目标的测试接口;保存成功后目标编辑页保持打开,便于立即测试和继续调整。
使用方式与行为
在目标服务编辑窗口保存配置后,选择底部的测试账号并点击“测试连接”。只有一个账号时自动选中;多个账号时选择已保存账号。Redis 或 MongoDB 未配置任何账号时不显示测试账号选择器,直接按无上游认证测试。编辑器存在未保存修改、或目标尚未创建时,测试按钮不会发起网络请求,而是提示先保存。
- 使用后端保存的地址、端口、TLS/CA、认证库、集群节点、代理和所选账号。MongoDB 连接串等修改必须保存后才会参与测试。
- 账号密码、私钥或口令由服务端从已保存凭据解析;测试请求不携带草稿配置或明文凭据。
- 测试成功和失败都保留编辑页。保存成功后编辑器刷新为服务端返回的配置视图,并继续保持打开。
- 关闭连接测试结果页会清除编辑器中的本次成功/失败摘要和“实测连接阶段”,避免旧结果继续显示;再次测试会生成新结果。
- 测试不修改配置历史、不保存主机探测记录,也不修改正在使用的网关路由。测试会按现有协议实现连接并认证目标服务;外部服务可能记录连接或认证日志。
SSH/SFTP 仍核对主机身份。已有目标且地址、端口、代理未变时沿用已确认主机密钥;新目标或连接位置改变时先探测公开指纹,不提交认证凭据。用户核对并确认后,再用该指纹固定本次测试连接。此确认仅对本次测试有效,不代替保存后启动网关所需的持久指纹确认;取消可继续编辑。
目标被运行网关引用时仍可保存编辑。若 SSH/SFTP 的主机、端口或出口改变,保存接口会独立返回 target_host_confirmation 和候选 SHA256 指纹;用户确认后前端只重试一次,服务端再次探测一致才持久化。草稿测试阶段的 draft_host_confirmation 不会被当作保存确认。保存成功后只有新连接使用新目标配置,已有连接不迁移。
API 与兼容性
目标测试使用 POST /api/v1/targets/{id}/test?accountId=...,只读取后端已保存的目标和账号。接口沿用登录、令牌权限和 CSRF 防护;连接失败返回脱敏错误阶段。草稿测试接口 POST /api/v1/targets/test 不再由目标编辑器调用,保留后端兼容性以避免影响其他客户端。
保存接口返回完整资源视图后,前端刷新目标缓存并保留当前编辑页;无 API、数据库格式或迁移变更。测试与网关列表中的已保存目标测试共用服务端连接实现。
验证见 测试记录。接口协议分派使用记录型 fixture,SSH 身份确认使用本地隔离 SSH 服务;浏览器测试模拟远端结果,不表示已验证所有生产数据库版本。
网关草稿测试
网关新建和编辑弹窗的底部也提供“测试连接”。测试使用当前网关草稿、当前选中的网关账号及其目标映射;Redis 或 MongoDB 无客户端账号时不显示账号选择器,并使用空的上游账号选择。编辑已保存网关时,留空的密码按网关账号 ID 复用已保存凭据。测试不会保存草稿、创建网关、修改历史或启动网关。
新增 POST /api/v1/proxies/test,请求包含可选 proxyId、gatewayAccountId 和 config。服务端只在内存中合并草稿,解析目标和资产后复用已保存网关的协议测试流程;单次测试只提交所选网关账号的映射,避免未完成的其他账号阻塞当前测试。接口继续使用登录、令牌权限和 CSRF 防护,连接失败返回脱敏阶段诊断。网关列表上已有的 POST /api/v1/proxies/{id}/test 行为不变。