logo
0
0
WeChat Login

FlatpakCN LocalServer API - Rust 版本

API服务的Rust实现,使用Actix-web框架。

CI Status Fork Star License

版本信息

  • 版本: 1.0.1
  • 作者: FlatpakCN
  • 描述: FlatpakCN LocalServer API - 用于管理Flatpak应用的RESTful API
  • 架构: 支持 x86_64 (AMD64) 和 aarch64 (ARM64)

项目结构

src/ ├── lib.rs # 库根模块定义 ├── main.rs # 应用入口点,配置Actix服务器 ├── models.rs # 数据模型和API响应类型定义 ├── handlers.rs # HTTP请求处理器实现 ├── task_manager.rs # 后台任务队列管理系统 └── utils.rs # 工具函数(Flatpak命令执行、系统信息检测等)

主要功能

任务管理

  • GET /api/tasks - 获取所有任务状态
  • POST /api/tasks/clear - 清除已完成的任务
  • POST /api/tasks/cancel/{task_id} - 取消指定任务

Flatpak应用管理

  • POST /api/flatpak/install - 安装应用
  • POST /api/flatpak/uninstall - 卸载应用
  • POST /api/flatpak/update - 更新应用
  • GET /api/flatpak/list - 列出已安装的应用
  • GET /api/flatpak/info - 获取应用信息
  • POST /api/flatpak/run - 运行应用
  • GET /api/flatpak/search - 搜索应用

远程仓库管理

  • POST /api/flatpak/remote/add - 添加远程仓库
  • POST /api/flatpak/remote/remove - 删除远程仓库
  • GET /api/flatpak/remote/list - 列出远程仓库

系统信息

  • GET /api/version - 获取版本和系统信息
  • GET /health - 健康检查

🚀 快速开始

📥 下载预编译二进制

从仓库 Releases 下载

# 下载 AMD64 版本 (Intel/AMD 处理器) wget https://cnb.cool/FlatpakCN/Manager-Service/-/releases/latest/download/FlatpakCN-Manager-Service-latest-linux-amd64 # 下载 ARM64 版本 (ARM 处理器) wget https://cnb.cool/FlatpakCN/Manager-Service/-/releases/latest/download/FlatpakCN-Manager-Service-latest-linux-arm64 # 验证文件完整性 wget https://cnb.cool/FlatpakCN/Manager-Service/-/releases/latest/download/sha256sums.txt sha256sum -c sha256sums.txt # 运行服务 chmod +x FlatpakCN-Manager-Service-latest-linux-* ./FlatpakCN-Manager-Service-latest-linux-*

使用系统安装脚本

# 自动安装并配置为系统服务 sudo ./install.sh

🛠️ 本地编译

环境要求

  • Rust 1.70+
  • Cargo
  • Linux 系统
  • flatpak 命令行工具

编译步骤

# 1. 安装 Rust (如果尚未安装) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source "$HOME/.cargo/env" # 2. 安装系统依赖 # Ubuntu/Debian: apt install build-essential pkg-config libssl-dev flatpak # 3. 编译项目 cargo build --release # 4. 运行服务 ./target/release/FlatpakCN-Manager-Service

交叉编译

# 安装交叉编译目标 rustup target add x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu # 安装交叉编译工具 apt install gcc-aarch64-linux-gnu # 编译 AMD64 版本 cargo build --release --target x86_64-unknown-linux-gnu # 编译 ARM64 版本 export CC=aarch64-linux-gnu-gcc export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc cargo build --release --target aarch64-unknown-linux-gnu

🏃 运行服务

直接运行

./FlatpakCN-Manager-Service

作为系统服务运行

# 使用安装脚本自动配置 sudo ./install.sh # 或手动配置 sudo cp FlatpakCN-Manager-Service /opt/.FlatpakCN/ sudo systemctl enable flatpak-localserver sudo systemctl start flatpak-localserver

服务默认监听 http://0.0.0.0:5000

🔄 CI/CD 自动构建

自动构建流程

项目配置了完整的 CI/CD 流水线:

  • 主分支推送: 自动构建并创建 nightly release
  • 标签推送: 自动创建正式 release 并上传二进制文件
  • 多架构支持: 并行构建 AMD64 和 ARM64 版本

构建状态查看

本地构建测试

# 使用提供的构建脚本 ./build-local.sh

详细构建指南请参考 BUILD_GUIDE.md

📚 API 文档

核心功能

📋 任务管理

  • GET /api/tasks - 获取所有任务状态
  • POST /api/tasks/clear - 清除已完成的任务
  • POST /api/tasks/cancel/{task_id} - 取消指定任务

📦 Flatpak应用管理

  • POST /api/flatpak/install - 安装应用
  • POST /api/flatpak/uninstall - 卸载应用
  • POST /api/flatpak/update - 更新应用
  • GET /api/flatpak/list - 列出已安装的应用
  • GET /api/flatpak/info - 获取应用信息
  • POST /api/flatpak/run - 运行应用
  • GET /api/flatpak/search - 搜索应用

🌐 远程仓库管理

  • POST /api/flatpak/remote/add - 添加远程仓库
  • POST /api/flatpak/remote/remove - 删除远程仓库
  • GET /api/flatpak/remote/list - 列出远程仓库

⚙️ 系统信息

  • GET /api/version - 获取版本和系统信息
  • GET /health - 健康检查

API 使用示例

# 健康检查 curl http://localhost:5000/health # 获取版本信息 curl http://localhost:5000/api/version # 列出已安装应用 curl http://localhost:5000/api/flatpak/list # 安装应用 curl -X POST http://localhost:5000/api/flatpak/install \ -H "Content-Type: application/json" \ -d '{"app_id": "org.mozilla.firefox"}' # 搜索应用 curl http://localhost:5000/api/flatpak/search?query=firefox

🔧 技术栈

核心依赖

  • actix-web 4.12+ - 高性能 Web 框架
  • tokio 1.35+ - 异步运行时
  • serde 1.0+ - 序列化/反序列化
  • uuid 1.6+ - UUID 生成
  • chrono 0.4+ - 日期时间处理
  • log + env_logger - 日志记录
  • hostname - 主机名获取

构建工具

  • rustc 1.70+ - Rust 编译器
  • cargo - 包管理器和构建工具
  • cross - 交叉编译支持

系统依赖

  • flatpak - Flatpak 包管理器
  • systemd - 系统服务管理(可选)

🏗️ 项目架构

src/ ├── lib.rs # 库根模块定义 ├── main.rs # 应用入口点,配置Actix服务器 ├── models.rs # 数据模型和API响应类型定义 ├── handlers.rs # HTTP请求处理器实现 ├── task_manager.rs # 后台任务队列管理系统 └── utils.rs # 工具函数(Flatpak命令执行、系统信息检测等) docs/ ├── BUILD_GUIDE.md # 详细构建指南 ├── API_EXAMPLES.md # API 使用示例 └── .cnb.yml # CI/CD 构建配置

核心模块说明

📋 models.rs

定义了所有的数据结构:

  • TaskStatus - 任务状态枚举
  • Task - 任务对象
  • TaskResult - 任务执行结果
  • 各种API请求和响应结构

⚙️ task_manager.rs

实现了任务队列系统:

  • 异步任务队列处理
  • 后台工作线程 (start_worker)
  • 任务生命周期管理
  • 命令执行和输出捕获

🌐 handlers.rs

实现了所有HTTP路由处理器:

  • 处理Flatpak命令的API端点
  • 返回结构化的JSON响应
  • 错误处理

🛠️ utils.rs

提供工具函数:

  • 执行Flatpak命令
  • 解析命令输出
  • 系统信息检测(桌面环境、显示服务器等)
  • 判断是否需要sudo权限

⚙️ 配置选项

环境变量

  • RUST_LOG - 日志级别 (info, debug, warn, error)
  • HOST - 监听地址 (默认: 0.0.0.0)
  • PORT - 监听端口 (默认: 5000)

配置文件

支持通过环境变量或配置文件进行配置,详见配置文档。

🔒 安全说明

权限管理

  • 服务建议以非 root 用户运行
  • 使用 systemd 配置文件自动管理权限
  • flatpak 命令需要适当的 sudo 配置

网络安全

  • 默认监听所有接口,生产环境建议配置防火墙
  • 支持 HTTPS 配置(需额外配置)
  • API 认证功能(开发中)

🧪 测试

运行测试

# 运行所有测试 cargo test # 运行特定测试 cargo test -- test_name # 显示测试输出 cargo test -- --nocapture

基准测试

# 安装 nightly 工具链 rustup install nightly rustup component add bench --toolchain nightly # 运行基准测试 cargo +nightly bench

📋 更新日志

v1.0.1 (2025-12-10)

  • ✨ 新增 CI/CD 自动构建
  • 🏗️ 支持 AMD64 和 ARM64 架构
  • 📦 自动生成 Release 附件
  • 🔧 完善的构建文档
  • 🚀 优化的安装脚本

v1.0.1 (2025-12-08)

  • 🎉 Rust 实现版本
  • 🌐 完整的 API 功能实现
  • ⚡ 异步任务处理
  • 🛡️ 完善的错误处理

由 FlatpakCN 团队开发和维护 ❤️

About

No description, topics, or website provided.
104.00 KiB
0 forks0 stars1 branches1 TagREADMEMIT license
Language
Rust63.3%
Shell36.7%