Skip to content

zouxiaoliang/mihomoctl

Repository files navigation

Mihomoctl

简介

Mihomoctl 是一个易用的 TUI 与 CLI 工具,用于和 Mihomo RESTful API 交互。

当前仓库地址:git@github.com:zouxiaoliang/mihomoctl.git

本项目 fork 自 George-Miao/clashctl。当前版本在原项目基础上改名为 mihomoctl,并补充了 MetaCubeX Mihomo API 文档 中的接口。

接口补充范围包括日志、流量、内存、版本、缓存、运行配置、更新、策略组、代理与代理集合、规则与规则集合、连接、DNS 查询、存储和 DEBUG 等端点。

截图

状态面板

状态面板

代理面板

代理面板

安装

下载发布二进制

macOS 和 Linux x86 用户可以在当前仓库的 Releases 页面查找已编译二进制。

原始上游 release 页面仍保留为参考:https://github.com/George-Miao/clashctl/releases

从源码编译

$ git clone git@github.com:zouxiaoliang/mihomoctl.git
$ cd mihomoctl
$ cargo install --path ./mihomoctl # 这里的路径不是写错了:同名子目录中包含二进制 crate

快速开始

首先添加一个 API 服务器:

$ mihomoctl server add
# 按提示填写配置

不带子命令运行时,默认打开 TUI:

$ mihomoctl

# 等同于

$ mihomoctl tui

也可以使用子命令进入 CLI 流程:

$ mihomoctl proxy list

---------------------------------------------------------
TYPE                DELAY   NAME
---------------------------------------------------------
selector            -       All

    URLTest         -       Auto-All
    ShadowsocksR    19      SomeProxy-1
    Vmess           177     SomeProxy-2
    Vmess           137     SomeProxy-3
    Shadowsocks     143     SomeProxy-4

---------------------------------------------------------

功能

  • 美观的终端界面
  • 切换代理
  • 展示代理列表,支持过滤与排序,支持普通模式和分组模式
  • 保存并使用多个服务器
  • 补充支持 MetaCubeX Mihomo API 文档中的接口
  • 生成 shell 补全脚本(基于 clap_generate
  • 管理多个服务器

已完成与待办

  • 项目基础
    • George-Miao/clashctl fork 并重命名为 mihomoctl
    • 更新 crate 名称、二进制名称、配置目录与仓库地址
    • README 中文化,并保留原始上游仓库路径
  • CLI
    • 管理服务器:添加、选择、查看、移除
    • 列出代理,支持排序、包含/排除类型、反向排序、普通/分组显示
    • 交互式切换代理
    • 生成 shell 补全脚本
  • TUI
    • 状态、代理、规则、连接、日志、配置、调试面板
    • Core、DNS、APIs 分页调用 Mihomo API
    • 代理切换、延迟测试、排序与搜索
    • 规则、连接、日志列表搜索
    • 连接列表排序
  • Mihomo API
    • 补充 MetaCubeX Mihomo API 文档 中的 REST 接口
    • 支持日志、流量、内存、连接等 WebSocket/流式接口
    • 支持 DNS、存储、规则集合、代理集合、DEBUG、核心升级等端点
  • 待完善
    • 配置面板支持表单化编辑 mihomo 配置
    • 配置面板支持表单化编辑 mihomoctl 本地配置
    • CLI 覆盖更多 MetaCubeX API 操作
    • 为需要真实 Mihomo 服务的集成测试补充环境说明
    • 完善 release 工作流与发布产物说明
    • 鼠标支持(可能)

前置条件

编译和安装需要 nightly Rust 环境(Cargo 与 rustc)。

使用方式

使用 TUI

  • 首次使用无需先配置服务器:没有活跃服务器时进入 TUI 会自动打开服务器管理列表,按 a 即可添加
  • 使用数字键在标签页之间切换
  • 按空格键锁定列表,之后可以移动列表
  • 在锁定模式下使用方向键移动列表
  • 在 Proxies 页按 t 测试当前组的节点延迟,按 Shift-T 测试所有节点
  • Shift-S 打开服务器管理弹窗:方向键选择、回车切换,a 添加服务器,d 删除选中的服务器(需回车确认,当前活跃服务器不可删除)
  • Shift-H 打开操作指南,查看完整的快捷键说明(方向键滚动,Shift-H 或 Esc 关闭)
  • Ctrl-D 打开调试面板

使用 CLI

$ mihomoctl -h
mihomoctl

George Miao <gm@miao.dev>

Cli & Tui used to interact with Mihomo RESTful API

USAGE:
    mihomoctl [OPTIONS] [SUBCOMMAND]

OPTIONS:
    -c, --config-path <CONFIG_PATH>    Path of config file. Default to ~/.config/mihomoctl/config.ron
        --config-dir <CONFIG_DIR>      Path of config directory. Default to ~/.config/mihomoctl
    -h, --help                         Print help information
    -t, --timeout <TIMEOUT>            Timeout of requests, in ms [default: 2000]
        --test-url <TEST_URL>          Url for testing proxy endpointes [default: http://
                                       www.gstatic.com/generate_204]
    -v, --verbose                      Verbosity. Default: INFO, -v DEBUG, -vv TRACE
    -V, --version                      Print version information

SUBCOMMANDS:
    completion    Generate auto-completion scripts
    help          Print this message or the help of the given subcommand(s)
    proxy         Interacting with proxies
    server        Interacting with servers
    tui           Open TUI

作为 crate 使用

# Cargo.toml

[dependencies]
mihomoctl-core = "*" # 不要添加 `mihomoctl`;它是二进制 crate,`mihomoctl-core` 才包含 API 能力。

在项目中使用:

use mihomoctl_core::Clash;

fn main() {
  let clash = Clash::builder("http://example.com:9090").unwrap().build();
  println!("Mihomo version is {:?}", clash.get_version().unwrap())
}

开发

mihomoctl 提供了 justfile 来加速开发。 其中 just dev 使用 cargo-watch 实现了类似前端开发的热重载流程。

Just 命令

just dev(别名:d

热重载开发。启用所有功能,并在 cargo check 通过后自动重新运行。

just run {{ Args }}(别名:r

运行 CLI 与 UI 功能。

just ui

仅运行 UI。

just cli

仅运行 CLI。

just build(别名:b

以 release 模式构建 CLI 与 UI 功能。

just add

预留命令。

项目结构

$ tree -L 2
├── mihomoctl                # 二进制 crate,包含 CLI 与 TUI
├── mihomoctl-core           # API 交互 crate
└── ...

About

No description, website, or topics provided.

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors