From 7e3819be868619356c88be4af97f424052837f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BC=A4=E6=9C=88s?= <764475881@qq.com> Date: Thu, 24 Apr 2025 12:21:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Emagisk=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20(#786)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/core.yml | 39 +++++++++++++++++++ .../META-INF/com/google/android/update-binary | 33 ++++++++++++++++ .../com/google/android/updater-script | 1 + easytier-contrib/easytier-magisk/README.md | 6 +++ easytier-contrib/easytier-magisk/action.sh | 16 ++++++++ easytier-contrib/easytier-magisk/build.sh | 25 ++++++++++++ .../easytier-magisk/config/config.conf | 37 ++++++++++++++++++ easytier-contrib/easytier-magisk/customize.sh | 7 ++++ .../easytier-magisk/magisk_update.json | 6 +++ easytier-contrib/easytier-magisk/module.prop | 7 ++++ easytier-contrib/easytier-magisk/service.sh | 20 ++++++++++ easytier-contrib/easytier-magisk/uninstall.sh | 2 + 12 files changed, 199 insertions(+) create mode 100644 easytier-contrib/easytier-magisk/META-INF/com/google/android/update-binary create mode 100644 easytier-contrib/easytier-magisk/META-INF/com/google/android/updater-script create mode 100644 easytier-contrib/easytier-magisk/README.md create mode 100644 easytier-contrib/easytier-magisk/action.sh create mode 100644 easytier-contrib/easytier-magisk/build.sh create mode 100644 easytier-contrib/easytier-magisk/config/config.conf create mode 100644 easytier-contrib/easytier-magisk/customize.sh create mode 100644 easytier-contrib/easytier-magisk/magisk_update.json create mode 100644 easytier-contrib/easytier-magisk/module.prop create mode 100644 easytier-contrib/easytier-magisk/service.sh create mode 100644 easytier-contrib/easytier-magisk/uninstall.sh diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index c858de0..12e5db0 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -275,3 +275,42 @@ jobs: - name: Mark result as failed if: needs.build.result != 'success' run: exit 1 + + + magisk_build: + needs: + - pre_job + - build_web + - build + if: needs.pre_job.outputs.should_skip != 'true' && always() + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 # 必须先检出代码才能获取模块配置 + + # 下载二进制文件到独立目录 + - name: Download Linux aarch64 binaries + uses: actions/download-artifact@v4 + with: + name: easytier-linux-aarch64 + path: ./downloaded-binaries/ # 独立目录避免冲突 + + # 将二进制文件复制到 Magisk 模块目录 + - name: Prepare binaries + run: | + mkdir -p ./easytier-contrib/easytier-magisk/ + cp ./downloaded-binaries/easytier-core ./easytier-contrib/easytier-magisk/ + cp ./downloaded-binaries/easytier-cli ./easytier-contrib/easytier-magisk/ + cp ./downloaded-binaries/easytier-web ./easytier-contrib/easytier-magisk/ + + + # 上传生成的模块 + - name: Upload Magisk Module + uses: actions/upload-artifact@v4 + with: + name: Easytier-Magisk + path: | + ./easytier-contrib/easytier-magisk + !./easytier-contrib/easytier-magisk/build.sh + !./easytier-contrib/easytier-magisk/magisk_update.json + if-no-files-found: error \ No newline at end of file diff --git a/easytier-contrib/easytier-magisk/META-INF/com/google/android/update-binary b/easytier-contrib/easytier-magisk/META-INF/com/google/android/update-binary new file mode 100644 index 0000000..81a7e24 --- /dev/null +++ b/easytier-contrib/easytier-magisk/META-INF/com/google/android/update-binary @@ -0,0 +1,33 @@ +#!/sbin/sh + +################# +# Initialization +################# + +umask 022 + +# echo before loading util_functions +ui_print() { echo "$1"; } + +require_new_magisk() { + ui_print "********************************" + ui_print " Please install Magisk v20.4+! " + ui_print "********************************" + exit 1 +} + +######################### +# Load util_functions.sh +######################### + +OUTFD=$2 +ZIPFILE=$3 + +mount /data 2>/dev/null + +[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk +. /data/adb/magisk/util_functions.sh +[ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk + +install_module +exit 0 \ No newline at end of file diff --git a/easytier-contrib/easytier-magisk/META-INF/com/google/android/updater-script b/easytier-contrib/easytier-magisk/META-INF/com/google/android/updater-script new file mode 100644 index 0000000..492be83 --- /dev/null +++ b/easytier-contrib/easytier-magisk/META-INF/com/google/android/updater-script @@ -0,0 +1 @@ +#MAGISK \ No newline at end of file diff --git a/easytier-contrib/easytier-magisk/README.md b/easytier-contrib/easytier-magisk/README.md new file mode 100644 index 0000000..55e8ac2 --- /dev/null +++ b/easytier-contrib/easytier-magisk/README.md @@ -0,0 +1,6 @@ +# easytier_magisk版模块 +magisk安装后重启 + +目录位置:/data/adb/modules/easytier_magisk +配置文件位置://data/adb/modules/easytier_magisk/config/config.conf +修改config.conf即可,修改后配置文件后去magisk app重新开关模块即可生效 diff --git a/easytier-contrib/easytier-magisk/action.sh b/easytier-contrib/easytier-magisk/action.sh new file mode 100644 index 0000000..1294dc8 --- /dev/null +++ b/easytier-contrib/easytier-magisk/action.sh @@ -0,0 +1,16 @@ +#!/data/adb/magisk/busybox sh +MODDIR=${0%/*} +echo 'Easytier 服务停止中....' + +PIDS=$(pgrep -f "^${MODDIR}/easytier-core -c ${MODDIR}/config/config.conf") + +if [ -n "$PIDS" ]; then + kill $PIDS # 杀死所有匹配的进程 + echo "已停止所有 Easytier 进程 (PIDs: $PIDS)" +else + echo "Easytier 服务未运行" +fi +echo '重启服务中...' +nohup sh ${MODDIR}/service.sh >> ${MODDIR}/log/start.log 2>&1 & +echo '服务已重启' +exit \ No newline at end of file diff --git a/easytier-contrib/easytier-magisk/build.sh b/easytier-contrib/easytier-magisk/build.sh new file mode 100644 index 0000000..2d48ed0 --- /dev/null +++ b/easytier-contrib/easytier-magisk/build.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +version=$(cat module.prop | grep 'version=' | awk -F '=' '{print $2}' | sed 's/ (.*//') + +version='v'$(grep '^version =' ../../easytier/Cargo.toml | cut -d '"' -f 2) + +if [ -z "$version" ]; then + echo "Error: 版本号不存在." + exit 1 +fi + +filename="easytier_magisk_${version}.zip" +echo $version + + +if [ -f "./easytier-core" ] && [ -f "./easytier-cli" ] && [ -f "./easytier-web" ]; then + zip -r -o -X "$filename" ./ -x '.git/*' -x '.github/*' -x 'folder/*' -x 'build.sh' -x 'magisk_update.json' +else + wget -O "easytier_last.zip" https://github.com/EasyTier/EasyTier/releases/download/"$version"/easytier-linux-aarch64-"$version".zip + unzip -o easytier_last.zip -d ./ + mv ./easytier-linux-aarch64/* ./ + rm -rf ./easytier_last.zip + rm -rf ./easytier-linux-aarch64 + zip -r -o -X "$filename" ./ -x '.git/*' -x '.github/*' -x 'folder/*' -x 'build.sh' -x 'magisk_update.json' +fi \ No newline at end of file diff --git a/easytier-contrib/easytier-magisk/config/config.conf b/easytier-contrib/easytier-magisk/config/config.conf new file mode 100644 index 0000000..eb0390a --- /dev/null +++ b/easytier-contrib/easytier-magisk/config/config.conf @@ -0,0 +1,37 @@ +instance_name = "default" +dhcp = false +#ipv4="本机ip" +listeners = [ + "tcp://0.0.0.0:11010", + "udp://0.0.0.0:11010", + "wg://0.0.0.0:11011", + "ws://0.0.0.0:11011/", + "wss://0.0.0.0:11012/", +] +mapped_listeners = [] +exit_nodes = [] +rpc_portal = "0.0.0.0:15888" + +[network_identity] +network_name = "default" +network_secret = "" + +[[peer]] +#uri = "协议://中转ip:端口" + +[flags] +default_protocol = "tcp" +dev_name = "" +enable_encryption = true +enable_ipv6 = true +mtu = 1380 +latency_first = false +enable_exit_node = false +no_tun = false +use_smoltcp = false +foreign_network_whitelist = "*" +disable_p2p = false +relay_all_peer_rpc = false +disable_udp_hole_punching = false + + diff --git a/easytier-contrib/easytier-magisk/customize.sh b/easytier-contrib/easytier-magisk/customize.sh new file mode 100644 index 0000000..2331919 --- /dev/null +++ b/easytier-contrib/easytier-magisk/customize.sh @@ -0,0 +1,7 @@ +ui_print '安装完成' +ui_print '当前架构为' + $ARCH +ui_print '当前系统版本为' + $API +ui_print '安装目录为: /data/adb/modules/easytier_magisk' +ui_print '配置文件位置: /data/adb/modules/easytier_magisk/config/config.conf' +ui_print '修改后配置文件后在magisk app点击操作按钮即可生效' +ui_print '记得重启' \ No newline at end of file diff --git a/easytier-contrib/easytier-magisk/magisk_update.json b/easytier-contrib/easytier-magisk/magisk_update.json new file mode 100644 index 0000000..bb62502 --- /dev/null +++ b/easytier-contrib/easytier-magisk/magisk_update.json @@ -0,0 +1,6 @@ +{ + "version": "v1.0", + "versionCode": 1, + "zipUrl": "", + "changelog": "" +} \ No newline at end of file diff --git a/easytier-contrib/easytier-magisk/module.prop b/easytier-contrib/easytier-magisk/module.prop new file mode 100644 index 0000000..223a10c --- /dev/null +++ b/easytier-contrib/easytier-magisk/module.prop @@ -0,0 +1,7 @@ +id=easytier_magisk +name=easytier_magisk版 +version=v2.2.4 +versionCode=1 +author=EasyTier +description=easytier_magisk版模块 作者:EasyTier https://github.com/EasyTier/EasyTier +updateJson=https://raw.githubusercontent.com/EasyTier/EasyTier/refs/heads/main/easytier-contrib/easytier-magisk/magisk_update.json diff --git a/easytier-contrib/easytier-magisk/service.sh b/easytier-contrib/easytier-magisk/service.sh new file mode 100644 index 0000000..8e95b24 --- /dev/null +++ b/easytier-contrib/easytier-magisk/service.sh @@ -0,0 +1,20 @@ +#!/data/adb/magisk/busybox sh +MODDIR=${0%/*} +# MODDIR="$(dirname $(readlink -f "$0"))" +mkdir -p ${MODDIR}/log +chmod 755 ${MODDIR}/* + +echo $MODDIR >> ${MODDIR}/log/start.log + +echo "Easytier 服务启动" >> ${MODDIR}/log/start.log + +# 启动 +nohup ${MODDIR}/easytier-core -c ${MODDIR}/config/config.conf >> ${MODDIR}/log/start.log 2>&1 & + +# 检查是否启用模块 +while [ ! -f ${MODDIR}/disable ]; do + sleep 2 +done +PID=$(ps -ef|grep "${MODDIR}/easytier-core -c ${MODDIR}/config/config.conf" | awk '{print $2}') +kill $PID +echo "Easytier 服务停止" >> ${MODDIR}/log/start.log diff --git a/easytier-contrib/easytier-magisk/uninstall.sh b/easytier-contrib/easytier-magisk/uninstall.sh new file mode 100644 index 0000000..d50d747 --- /dev/null +++ b/easytier-contrib/easytier-magisk/uninstall.sh @@ -0,0 +1,2 @@ +MODDIR=${0%/*} +rm -rf $MODDIR/* \ No newline at end of file