timzaak / blog

8 stars 1 forks source link

v2fly 拓展 #79

Closed timzaak closed 2 years ago

timzaak commented 2 years ago

Linux上没有能支持订阅的客户端,需要搭建一个。但目前自己懒,后续也不确定能否用得上,故把收集的材料记录一下,有待后续。

设计思路

做个命令行工具,通过工具二次启动v2fly。

实现方式

基于 tui-rs,这样不用考虑命令行兼容问题,也能有一定的交互,可进行列表展示和选择。 http client 通过url 获取 vmess 配置列表,base64解析,再二次解析 vmess 配置到 v2fly outbounds配置, 转换格式代码参考: https://github.com/2dust/v2rayNG/blob/e9b1052ef78a71506d6b98f9099980b45e0ac15c/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt#L192 v2fly 支持多配置文件,可以把选择的 outbounds 配置转换成单独的 json 文件,其余为基础配置文件。用 rust 构建出命令行,跑起来即可。

timzaak commented 2 years ago

看了下 gitui 的源码,要用 crossbeam 的 channel 来传递多线程事件, 用 自写的 queue 来传递具体事件,并进行解析, 由于 queue 的事件都只在主线程产生,所以不需要Arc, 目前 queue 调用 push 的地方有监听键盘事件、channel select 事件、以及 queue 处理事件时产生的新事件。

timzaak commented 2 years ago

目前做完了,只能说能用,从易用性上来讲,需要手把手教别人方可( 做个操作 gif ),所以说是完败的。 从后期拓展,由于无法和 v2fly 直接交互,所以没有拓展可言。

timzaak commented 2 years ago

clash 是个支持多协议的客户端。以后有机会用用,但这个 docker 镜像无法记录选择的是哪一个,需要配置 UI/客户端 使用。