Skip to content

WeiguangTWK/wstunnel4magisk

 
 

Repository files navigation

WSTunnel4Magisk

English Version

WSTunnel4Magisk 是面向KernelSU/Magisk(以及其兼容环境)的WSTunnel前后端配套环境,支持:

  • 多实例运行(每个实例独立配置、拥有独立日志和开机自启动开关)
  • 非特权模式(通过 su shell -c 执行,并复制二进制到 /data/local/tmp/wstunnel-<id>
  • 基于SolidJS开发的WebUI
  • Action 按钮一键全部启动 / 全部关闭

注意: 当前只兼容arm64-v8a

P.S.: 本模块的设计风格很大程度上源于Hyprid Mount, 若有挂载的需求请务必试试这个美观与实用兼具的优秀模块

目录结构

  • module/: 模块模板根目录
  • module/wstunnelctl.sh: 控制脚本(实例管理、启停、状态、日志)
  • module/webroot/: KernelSU WebUI 页面
  • module/customize.sh: 安装脚本(解包、拷贝二进制、初始化数据目录)
  • module/service.sh: 开机启动
  • module/action.sh: 一键启停
  • build-module.sh: 构建脚本
  • prebuilt/arm64-v8a/wstunnel: 编译好的wstunnel二进制放在这

功能概览

启动行为

  • 安装后和 post-fs-data:确保至少存在一个 default 实例
  • service.sh:执行 start-autostart,仅拉起 AUTOSTART=1 的实例
  • action.sh
    • 实例运行 -> stop all
    • 反之 -> start all

控制命令

CLI控制脚本:

bash /data/adb/modules/wstunnel/wstunnelctl.sh <command>

命令:

  • ensure-default
  • start [id|all]
  • stop [id|all]
  • restart [id|all]
  • status [id]
  • instances
  • upsert-instance <id> <enabled> <autostart> <privileged> <label_b64> <src_host> <src_port> <dst_host> <dst_port> <args_b64>
  • delete-instance <id>
  • set-enabled <id> <0|1>
  • tail-log [id]

数据目录

运行时目录固定为:

/data/adb/wstunnel

其中:

  • instances/*.conf: 多实例配置
  • log.<id>: 实例日志
  • pid.<id>: 实例 PID
  • wstunnel.args: 预置配置

关于多实例:每个实例都会保存为<id>.conf

字段说明:

  • ID: 实例 ID
  • ENABLED: 启用
  • AUTOSTART: 开机启动
  • PRIVILEGED: 特权模式
  • LABEL: 展示名称
  • SRC_HOST / SRC_PORT: 本地绑定
  • DST_HOST / DST_PORT: 远端目标
  • ARGS: 拼合而成的 wstunnel 启动参数

需要注意的是DNS设置会直接作为参数插入至ARGS里

为什么非特权模式下DNS不允许设置为"System"(也就是参数缺省)

在su shell -c的低权限环境下域名解析是存在问题的——这意味着你必须手动指定DNS才能通网,此时DNS参数不可缺省

运行产生的文件:

  • /data/adb/wstunnel/pid.<id>
  • /data/adb/wstunnel/log.<id>

构建与打包

1 准备WSTunnel

参考 WSTunnel-How To Build,编译前你需要先安装RUST的aarch64-linux-android工具链并且PATH已有NDK工具链,编译命令:

cargo build --release --package wstunnel-cli --target aarch64-linux-android

将输出的二进制放置到:

android-module/prebuilt/arm64-v8a/wstunnel

2 准备SolidJS版WebUI(可选)

本模块已经切换至SolidJS版本——但是旧版WebUI依旧存在,两个WebUI版本的显示效果基本一致,如果你想使用旧版WebUI那么可以略过这一步

(你需要预先安装NodeJS 20+) 在项目根目录下

cd android-module/webui-solid
npm install
npm run build

3 运行打包

在仓库根目录执行:

新版:

WEBUI_FLAVOR=solid ./android-module/build-module.sh

旧版:

WEBUI_FLAVOR=legacy ./android-module/build-module.sh

最后模块压缩包会放在

android-module/out/wstunnel-module-<version>.zip

CREDIT

Hybrid Mount: 本模块的WebUI设计参考

WSTunnel: WSTunnel服务端与客户端实现

About

Tunnel all your traffic over Websocket or HTTP2 - Bypass firewalls/DPI - available for KernelSU/Magisk

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Rust 72.2%
  • TypeScript 9.1%
  • CSS 6.5%
  • JavaScript 5.6%
  • Shell 3.5%
  • HTML 2.3%
  • Other 0.8%