feat: 数据库与 FTP 服务端管理(接管 + 便携托管 + 内嵌 FTP 服务) - #13
Merged
Conversation
把本机 MySQL/MariaDB/PostgreSQL/Redis 以「检测接管」或「便携导入」纳入 托管,数据库页得以从纯客户端连接升级为服务端管理,同时沿用运行时 「检测/导入引用/下载」三通道模式,避免捆绑分发带来的体量与升级滞后。 - Added: services.rs 通用托管抽象(services.json 注册表、便携子进程启停、PID+日志+端口探测、takeover 经 sc/systemctl) - Added: db/service.rs 引擎检测、便携 bootstrap(--initialize-insecure/mysql_install_db/initdb)、在线下载预置、建库建用户改密(标识符校验与转义) - Added: Site 新增 databases 绑定字段(serde default 向后兼容旧 sites.json) - Changed: caddy/runtime/remote 内部函数放宽为 pub(crate) 供新模块复用 - Why: 用户需要在本机直接起库建用户,而不是只能连远程实例
FTP 页需从纯客户端升级为服务端管理。采用双后端策略:Linux 优先对接 系统 Pure-FTPd(pure-pw 同步虚拟用户,JSON 为准源);Windows 及未检测 到 pure-ftpd 的环境内嵌 libunftp + unftp-sbe-fs,避免要求用户自行安装 FTP 服务。 - Added: FtpdManager 双后端检测与启停;内嵌后端每用户 chroot 到数据目录/ftp/<用户名> - Added: FtpUser 虚拟用户注册表(ftp_users.json)、FtpdConfig 端口与被动区间配置 - Added: CLI 守护进程支持(start_daemon 自孵化 runphp ftpd run + PID 文件,stop 兜底 kill) - Added: autostart_services 统一自启入口(数据库服务 + FTP),供桌面端与面板端调用 - Why: 桌面 Windows 环境普遍无 Pure-FTPd,内嵌后端保证开箱即用;Linux 服务器则复用系统级成熟实现
按「Tauri command 与 REST API 同名同参」约定,为桌面端与 Web 面板
同步暴露服务端管理能力,CLI 补充 db-service/ftpd 子命令供无头服务器
使用。
- Added: 18 个 db_service_* tauri 命令与对应 panel 路由(检测/接管/导入/下载/启停/建库建用户/改密/日志)
- Added: 11 个 ftp_server_*/ftp_user_* 命令与路由(状态/启停/配置/虚拟用户 CRUD)
- Added: CLI db-service {list,detect,start,stop,dbs,create-db,create-user} 与 ftpd {status,start,run,stop,user-*}
- Added: 桌面端 setup 与 panel serve 挂接 autostart_services 自启
- Why: 三端能力对齐是本仓库既有架构约束,避免面板端功能落后于桌面端
侧栏「数据库」「FTP」两页的主 Tab 改为服务端管理,原客户端功能降为 页内二级 Tab;设置页环境管理补两张简单配置卡片,满足「环境管理处 提供简单配置」的需求。 - Added: DbServicePanel 组件(检测/接管/导入/下载、启停、建库建用户、改密、日志) - Added: FtpServerPanel 组件(服务启停、端口与被动区间配置、虚拟用户 CRUD、站点关联) - Changed: DatabasesView/FtpView 外层 n-tabs 化,现有客户端内容原样迁入二级 Tab - Changed: SitesView 编辑弹窗新增关联数据库多选;SettingsView 新增数据库/FTP 服务配置卡 - Changed: api/index.ts 适配层新增全部类型定义与 29 个函数(桌面/面板两端同时可用) - Why: 服务端管理是主诉求,保留客户端能力避免功能回退
架构决策变更:数据库与 FTP 从「不捆绑、仅连接管理」调整为 「检测接管 + 便携托管」,文档需同步以免误导后续贡献者。 - Changed: 架构设计 §3.3 改写为三通道托管决策;§2.1 模块表补 services/db::service/ftpd/tunnel/libsql/adminer/ftp - Added: 用户手册「数据库服务托管」「FTP 服务端」章节(界面操作 + CLI 等价命令) - Fixed: 用户手册重复的 2.5 章节编号修正 - Why: 代码行为与文档描述不一致会误导用户与后续开发
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
变更摘要
新增数据库与 FTP 服务端管理能力,基于最新 main rebase(已解决与 #10/#12 的冲突并保留双方修复)。
功能
数据库服务托管
FTP 服务端
UI
rebase 说明
原分支 feat/lopinx/server-side-db-ftp 基于 #10 之前的历史,本分支已 rebase 到最新 main:
验证