Skip to content

feat: 数据库与 FTP 服务端管理(接管 + 便携托管 + 内嵌 FTP 服务) - #13

Merged
lopinx merged 5 commits into
mainfrom
feat/lopinx/server-side-db-ftp-rebase
Aug 22, 2026
Merged

feat: 数据库与 FTP 服务端管理(接管 + 便携托管 + 内嵌 FTP 服务)#13
lopinx merged 5 commits into
mainfrom
feat/lopinx/server-side-db-ftp-rebase

Conversation

@lopinx

@lopinx lopinx commented Aug 22, 2026

Copy link
Copy Markdown
Owner

变更摘要

新增数据库与 FTP 服务端管理能力,基于最新 main rebase(已解决与 #10/#12 的冲突并保留双方修复)。

功能

数据库服务托管

  • 引擎检测:扫描 PATH、安装目录、系统服务、默认端口
  • 三条通道:检测接管(takeover)/ 便携导入(不复制文件)/ 在线下载预置
  • 便携实例自动初始化(MySQL --initialize-insecure / initdb / Redis 免初始化)
  • 建库/删库、建用户/删用户/改密、root 改密、日志查看
  • 「在连接页打开」自动注册连接档案,复用表浏览与 SQL 执行器

FTP 服务端

  • 双后端:Linux 对接 Pure-FTPd(pure-pw 同步);Windows/无 pure-ftpd 环境内嵌 libunftp
  • 虚拟用户注册表(ftp_users.json),每用户 chroot 主目录
  • 守护进程自孵化 + 随面板自启

UI

  • 数据库页双 Tab(服务/连接)、FTP 页双 Tab(服务端/远程文件)
  • 站点编辑支持关联数据库绑定

rebase 说明

原分支 feat/lopinx/server-side-db-ftp 基于 #10 之前的历史,本分支已 rebase 到最新 main:

验证

  • cargo test -p runphp-core 59/59 通过
  • cargo check -p runphp-cli / runphp-desktop 通过
  • vue-tsc + vite build 通过

lopinx added 5 commits August 22, 2026 22:14
把本机 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: 代码行为与文档描述不一致会误导用户与后续开发
@lopinx
lopinx merged commit aa3849e into main Aug 22, 2026
@lopinx
lopinx deleted the feat/lopinx/server-side-db-ftp-rebase branch August 22, 2026 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant