mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-07 10:14:35 +00:00
74 lines
2.4 KiB
Bash
74 lines
2.4 KiB
Bash
#!/data/adb/magisk/busybox sh
|
|
MODDIR=${0%/*}
|
|
MODULE_PROP="${MODDIR}/module.prop"
|
|
IP_RULE_SCRIPT="${MODDIR}/hotspot_iprule.sh"
|
|
|
|
ET_STATUS=""
|
|
REDIR_STATUS=""
|
|
IS_RUNNING=false
|
|
|
|
# 确保辅助脚本有执行权限
|
|
chmod +x "${IP_RULE_SCRIPT}" 2>/dev/null
|
|
|
|
# 更新 module.prop 文件中的 description
|
|
update_module_description() {
|
|
local status_message=$1
|
|
# 检查 module.prop 文件存在且 description 发生变化了再写入
|
|
if [ -f "${MODULE_PROP}" ]; then
|
|
local current_desc=$(grep "^description=" "${MODULE_PROP}")
|
|
local new_desc="description=[状态] ${status_message}"
|
|
if [ "${current_desc}" != "${new_desc}" ]; then
|
|
sed -i "s#^description=.*#${new_desc}#" "${MODULE_PROP}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# 判断程序启动状态
|
|
if [ -f "${MODDIR}/disable" ]; then
|
|
IS_RUNNING=false
|
|
ET_STATUS="主程序已关闭"
|
|
|
|
elif pgrep -f "${MODDIR}/easytier-core" >/dev/null; then
|
|
IS_RUNNING=true
|
|
if [ -f "${MODDIR}/config/command_args" ]; then
|
|
ET_STATUS="主程序正在运行(启动参数模式)"
|
|
else
|
|
ET_STATUS="主程序正在运行(配置文件模式)"
|
|
fi
|
|
|
|
elif [ -z "$ET_STATUS" ]; then
|
|
# 既没 disable 也没运行,说明是异常停止或未启动
|
|
ET_STATUS="主程序启动失败或未运行"
|
|
fi
|
|
|
|
# 无论主程序是否运行,都允许切换“开关文件”的状态,以便下次生效
|
|
if [ -f "${MODDIR}/enable_IP_rule" ]; then
|
|
rm -f "${MODDIR}/enable_IP_rule"
|
|
|
|
"${IP_RULE_SCRIPT}" del >/dev/null 2>&1
|
|
|
|
REDIR_STATUS="转发已禁用"
|
|
echo "热点子网转发已禁用"
|
|
echo "[ET-NAT] Action: IP rule disabled." >> "${MODDIR}/log.log"
|
|
else
|
|
touch "${MODDIR}/enable_IP_rule"
|
|
|
|
if [ "$IS_RUNNING" = true ]; then
|
|
"${IP_RULE_SCRIPT}" del >/dev/null 2>&1
|
|
"${IP_RULE_SCRIPT}" add_once
|
|
echo "转发规则将立即生效,无需重启"
|
|
else
|
|
echo "主程序未运行,转发规则将在下次启动时生效"
|
|
fi
|
|
|
|
REDIR_STATUS="转发已激活"
|
|
echo "----------------------------------"
|
|
echo "热点子网转发已激活"
|
|
echo "热点开启后将自动将热点加入转发网络"
|
|
echo "需要在配置中提前配置好 cidr 参数"
|
|
echo "----------------------------------"
|
|
echo "[ET-NAT] Action: IP rule enabled." >> "${MODDIR}/log.log"
|
|
fi
|
|
|
|
sync
|
|
update_module_description "${ET_STATUS}| ${REDIR_STATUS}" |