Mihomo RS
一个用于管理和控制 mihomo 代理服务的 Rust SDK 和命令行工具。
特性
核心功能
- 🚀 完整的 SDK:提供配置管理、代理控制、规则引擎和监控功能
- 🛠️ 命令行工具:功能丰富的 CLI 工具,支持服务管理和代理控制
- 📦 服务管理:自动下载、安装、启动、停止、升级和卸载 mihomo 服务
- 🔄 版本管理:支持多版本管理和自动升级
- 📊 实时监控:提供连接状态、流量统计和性能监控
- 🎯 规则引擎:支持复杂的流量分流规则
- 🔧 配置管理:完整的配置文件解析和管理功能
v0.1.2 新增特性
- 🤖 智能代理选择:自动选择最优代理,支持批量延迟测试
- 📈 高级监控:性能统计、健康检查、实时数据分析
- 🔍 规则验证:规则语法检查、匹配统计、性能分析
- 📁 配置备份:自动备份、版本管理、一键恢复
- 🛡️ 错误处理:统一的错误处理机制和结构化日志
- ✅ 完整测试:单元测试、集成测试、性能测试全覆盖
安装
作为库使用
在 Cargo.toml 中添加依赖:
[]
= "0.1.2"
作为命令行工具安装
或者从源码编译:
快速开始
SDK 使用示例
use ;
async
命令行工具使用
服务管理
# 初始化服务(创建配置目录和默认配置)
# 下载并安装最新版本
# 启动服务
# 查看服务状态
# 停止服务
# 重启服务
# 升级到最新版本
# 升级到指定版本
# 卸载服务(保留配置)
# 清理备份文件(保留最新3个)
代理管理
# 查看服务状态
# 列出所有代理
# 切换代理
# 测试代理延迟
# 批量测试所有代理延迟
# 自动选择最优代理
配置管理
# 显示当前配置
# 重新加载配置
# 验证配置文件
# 备份当前配置
# 恢复配置
# 列出所有备份
监控功能
# 实时监控(每5秒刷新,持续60秒)
# 性能统计监控
# 健康检查
# 查看规则信息和统计
# 验证规则语法
# 查看连接信息
# 关闭指定连接
# 关闭所有连接
API 文档
核心模块
MihomoClient
主要的客户端类,提供与 mihomo 服务的交互接口。
use MihomoClient;
let client = new?;
主要方法:
version()- 获取版本信息proxies()- 获取代理列表connections()- 获取连接信息switch_proxy(group, proxy)- 切换代理test_proxy_delay(proxy, url, timeout)- 测试代理延迟reload_config()- 重新加载配置
ServiceManager
服务管理器,提供 mihomo 服务的生命周期管理。
use ServiceManager;
let mut service_manager = new;
主要方法:
init()- 初始化服务start()- 启动服务stop()- 停止服务restart()- 重启服务status()- 获取服务状态upgrade_to_latest()- 升级到最新版本upgrade_to_version(version)- 升级到指定版本uninstall(keep_config)- 卸载服务
ConfigManager
配置管理器,处理 mihomo 配置文件的解析和管理。
use ConfigManager;
let config_manager = new;
Monitor
监控模块,提供实时的连接和流量监控。
use Monitor;
let monitor = new;
错误处理
所有 API 调用都返回 Result<T, MihomoError>,其中 MihomoError 包含详细的错误信息:
use ;
match client.version.await
配置
默认配置位置
- 配置目录:
~/.config/mihomo-rs/ - 配置文件:
~/.config/mihomo-rs/config.yaml - 二进制文件:
~/.config/mihomo-rs/mihomo - PID 文件:
~/.config/mihomo-rs/mihomo.pid - 备份目录:
~/.config/mihomo-rs/backups/
配置文件示例
port: 7890
socks-port: 7891
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
secret: "your-secret-here"
proxies:
- name: "ss1"
type: ss
server: server
port: 443
cipher: chacha20-ietf-poly1305
password: "password"
proxy-groups:
- name: "GLOBAL"
type: select
proxies:
- ss1
- DIRECT
rules:
- DOMAIN-SUFFIX,google.com,GLOBAL
- DOMAIN-KEYWORD,google,GLOBAL
- GEOIP,CN,DIRECT
- MATCH,GLOBAL
开发
构建项目
# 克隆项目
# 构建
# 运行测试
# 构建发布版本
运行示例
# 基本使用示例
# 高级使用示例
测试
项目包含完整的单元测试和集成测试:
# 运行所有测试
# 运行特定测试
# 运行集成测试
# 运行性能测试
贡献
欢迎贡献代码!请遵循以下步骤:
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
代码规范
- 使用
cargo fmt格式化代码 - 使用
cargo clippy检查代码质量 - 添加适当的文档注释
- 确保所有测试通过
许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
相关项目
支持
如果您遇到问题或有建议,请: