#!/system/bin/sh
RED='\033[1;31m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
BLUE='\033[1;34m'
PURPLE='\033[1;35m'
CYAN='\033[1;36m'
WHITE='\033[1;37m'
GRAY='\033[0;90m'
ORANGE='\033[1;91m'
PINK='\033[1;95m'
NC='\033[0m'
BOLD='\033[1m'
DIM='\033[2m'
EMOJI_FISH="🐟"
EMOJI_SUCCESS="✅"
EMOJI_WARN="⚠️"
EMOJI_ERROR="❌"
EMOJI_TOOL="🧰"
EMOJI_EXIT="🚪"
MENU_LINE="${BLUE}┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈${NC}"
USER_AGENT="Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36"
SAVE_DIR="/storage/emulated/0/防高/"
mkdir -p "$SAVE_DIR"
# =========三个模块独立下载链接=========
URL1="http://cccimg.com/down.php/dc8cad69a053051b038ee894ac02f434.zip"
URL2="http://cccimg.com/down.php/dc8cad69a053051b038ee894ac02f434.zip"
URL3="http://cccimg.com/down.php/2be8737b351b3a60e93b771fef166a0d.zip"
FILE1="${SAVE_DIR}/mod1.zip"
FILE2="${SAVE_DIR}/mod2.zip"
FILE3="${SAVE_DIR}/mod3.zip"
SELINUX_STATE_TMP="/data/local/tmp/selinux_ori.tmp"

# 全局环境变量，取自1.sh的检测逻辑
ENV=""
INSTALL_CMD=""

trap restore_selinux EXIT SIGINT SIGTERM

# --------------------------
# 从1.sh复制过来的完整框架检测函数
# --------------------------
detect_framework(){
    ENV=""
    INSTALL_CMD=""
    if command -v magisk >/dev/null 2>&1; then
        ENV="Magisk"
        INSTALL_CMD="magisk --install-module"
    elif [ -x /data/adb/magisk/magisk ]; then
        ENV="Magisk"
        INSTALL_CMD="/data/adb/magisk/magisk --install-module"
    elif command -v ksud >/dev/null 2>&1 && ksud module install --help >/dev/null 2>&1; then
        ENV="KernelSU"
        INSTALL_CMD="ksud module install"
    elif command -v apatch >/dev/null 2>&1; then
        ENV="APatch"
        INSTALL_CMD="apatch install"
    elif [ -x /data/adb/apd/apd ]; then
        ENV="APatch"
        INSTALL_CMD="/data/adb/apd/apd install"
    else
        ENV="NONE"
        INSTALL_CMD=""
    fi
}

# 执行模块安装
exec_install_module(){
    local zipfile="$1"
    if [ -z "$INSTALL_CMD" ];then
        return 1
    fi
    su -mm -c "${INSTALL_CMD} ${zipfile}"
    return $?
}

back_to_menu() {
    local msg="${1:-操作已完成}"
    echo ""
    echo -e "${CYAN}${BOLD}══════════════════════════════════════════════════${NC}"
    echo -e "${GREEN}${EMOJI_SUCCESS} ${msg}！${NC}"
    echo -e "${YELLOW}💡 按回车键返回主菜单，继续其他操作~${NC}"
    echo -e "${CYAN}${BOLD}══════════════════════════════════════════════════${NC}"
    read
}

clear_screen() {
    clear 2>/dev/null && return
    printf "\033[H\033[2J" 2>/dev/null && return
    printf "\033c" 2>/dev/null
}

boot_anim(){
    clear_screen
    detect_framework
    echo ""
    echo -e "${CYAN}${BOLD}"
    echo '╔══════════════════════════════════════════════════╗'
    echo '║       Anonymous Helper 防高模块一键刷入工具      ║'
    echo '║   适配 KSU / Magisk / Magisk‑Alpha / APatch     ║'
    echo '╚══════════════════════════════════════════════════╝'
    echo -e "${NC}"
    echo -e "${PURPLE}${BOLD}${EMOJI_FISH} 批量模块下载&安装实用工具 ${NC}"
    echo ""
    if [ "$ENV" != "NONE" ];then
        echo -e "${GREEN}检测当前框架：${BOLD}$ENV${NC}"
    else
        echo -e "${RED}${EMOJI_WARN} 未识别任何Root框架！${NC}"
    fi
    echo ""
    sleep 0.4
}

show_menu(){
    clear_screen
    detect_framework
    echo ""
    echo -e "${CYAN}${BOLD}"
    echo '╔══════════════════════════════════════════════════╗'
    echo '║       Anonymous Helper 防高模块一键刷入工具      ║'
    echo '╚══════════════════════════════════════════════════╝'
    echo -e "${NC}"
    echo -e "${MENU_LINE}"
    echo -e "${GREEN}[1]${NC} ${BOLD}注入防高模块${NC}"
    echo -e "${RED}[0]${NC} ${BOLD}退出脚本${NC}"
    echo -e "${MENU_LINE}"
    echo ""
    if [ "$ENV" != "NONE" ];then
        echo -e "${CYAN}当前Root框架：${BOLD}$ENV${NC}"
    else
        echo -e "${RED}${EMOJI_ERROR} ⚠️ 当前未检测到可用框架，刷入会失败${NC}"
    fi
    echo ""
}

download_and_install(){
    local down_url="$1"
    local out_file="$2"
    local env_name="$3"
    echo ""
    echo -e "${CYAN}${BOLD}───正在处理：${env_name} ───${NC}"
    if [ ! -w /sdcard ];then
        printf "\n  ${RED}${EMOJI_ERROR} ❌ MT管理器请授予存储读写权限${NC}\n"
        return 1
    fi
    [ -f "$out_file" ] && rm -f "$out_file"
    echo -e "  ${YELLOW}[*]${NC} ${EMOJI_TOOL} 初始化下载任务"
    printf "  ${YELLOW}[*]${NC} 正在下载【${env_name}】：\n"
    curl -s -k -L -A "$USER_AGENT" -o "$out_file" "$down_url"
    local curl_code=$?
    if [ "$curl_code" -ne 0 ] || [ ! -s "$out_file" ];then
        printf "  ${RED}${EMOJI_ERROR} ❌ ${env_name}下载失败，请检查网络和链接${NC}\n"
        rm -f "$out_file"
        return 2
    fi
    local final_bytes=$(busybox stat -c %s "$out_file")
    local final_kb=$(( final_bytes / 1024 ))
    echo ""
    echo -e "${BLUE}--------------------下载详情-------------------${NC}"
    printf "  文件总大小：${GREEN}%s KB${NC}\n" "$final_kb"
    echo -e "${BLUE}------------------------------------------------${NC}"
    printf "  ${GREEN}${EMOJI_SUCCESS} ✅ ${env_name} 文件下载成功${NC}\n"
    sleep 1

    # 判断框架是否有效
    if [ "$ENV" = "NONE" ] || [ -z "$INSTALL_CMD" ];then
        printf "  ${RED}${EMOJI_ERROR} ❌ 未检测到 Magisk / KernelSU / APatch 环境，无法刷入模块${NC}\n"
        return 3
    fi

    echo -e "  ${YELLOW}[*]${NC} ${EMOJI_TOOL} 提交模块至$ENV"
    exec_install_module "$out_file"
    local install_ret=$?
    if [ $install_ret -ne 0 ];then
        printf "  ${RED}${EMOJI_ERROR} ❌ ${env_name}模块提交失败，返回码：$install_ret${NC}\n"
        return 4
    fi
    printf "  ${GREEN}${EMOJI_SUCCESS} 🎉 ${env_name}模块提交完成${NC}\n"
    sleep 1
}

restore_selinux() {
    [ -f "$SELINUX_STATE_TMP" ] || return 0
    ORI_RAW=$(cat "$SELINUX_STATE_TMP" 2>/dev/null)
    rm -f "$SELINUX_STATE_TMP" >/dev/null 2>&1
    case "$(echo "$ORI_RAW" | tr 'A-Z' 'a-z')" in
        *permiss*|0) TARGET=0 ;;
        *disabled*) return 0 ;;
        *) TARGET=1 ;;
    esac
    local try=0
    while [ "$try" -lt 4 ]; do
        setenforce "$TARGET" >/dev/null 2>&1
        cur=$(getenforce 2>/dev/null)
        if [ "$TARGET" = "1" ] && echo "$cur" | grep -qi "enforc"; then break; fi
        if [ "$TARGET" = "0" ] && echo "$cur" | grep -qi "permiss"; then break; fi
        sleep 0.5
        try=$((try+1))
    done
}

check_root() {
    if [ "$(id -u)" -ne 0 ];then
        echo -e "${RED}${EMOJI_ERROR} [ERROR] 需要Root权限，请执行su获取权限！${NC}"
        exit 1
    fi
    rm -f "$SELINUX_STATE_TMP"
    CUR_SE=$(getenforce 2>/dev/null)
    echo "$CUR_SE" > "$SELINUX_STATE_TMP"
    setenforce 0 >/dev/null 2>&1
}

run_all_three(){
    detect_framework
    if [ "$ENV" = "NONE" ];then
        echo -e "${RED}${EMOJI_ERROR} ❌ 未识别 Magisk / KernelSU / APatch，终止任务${NC}"
        return 9
    fi

    echo ""
    echo -e "${YELLOW}${BOLD}>>>>>开始处理第1个模块<<<<${NC}"
    download_and_install "$URL1" "$FILE1" "Anonymous Helper防高"
    echo ""
    echo -e "${YELLOW}${BOLD}>>>>>开始处理第2个模块<<<<${NC}"
    download_and_install "$URL2" "$FILE2" "内部防高附属模块"
    echo ""
    echo -e "${YELLOW}${BOLD}>>>>>开始处理第3个模块<<<<${NC}"
    download_and_install "$URL3" "$FILE3" "第三个附属模块"
    echo ""
    echo -e "${CYAN}${BOLD}${MENU_LINE}${NC}"
    echo -e "  ${GREEN}${EMOJI_SUCCESS} ✅ 全部三个模块已经提交${ENV}安装队列${NC}"
    echo -e "  ${YELLOW}[*]${NC} ${EMOJI_WARN} 正在清理下载缓存目录：${SAVE_DIR}"
    rm -rf "${SAVE_DIR}"
    echo -e "  ${GREEN}${EMOJI_SUCCESS} ✅ 缓存目录清理完成${NC}"
    echo ""
    echo -e "${ORANGE}${BOLD}⚠️  等待3秒后设备自动重启！${NC}"
    sleep 3
    
}

main(){
    check_root
    boot_anim
    while true;do
        show_menu
        printf "${YELLOW}请输入数字选择功能：${NC}\n"
        read select_num
        case "$select_num" in
            1)
                run_all_three
                ;;
            0)
                printf "\n${YELLOW}${EMOJI_EXIT} 👋 脚本关闭，再见~${NC}\n"
                exit 0
                ;;
            *)
                printf "  ${RED}${EMOJI_ERROR} ⚠️ 只能输入 1 或者 0${NC}\n";
                sleep 1
                ;;
        esac
        back_to_menu
    done
}
main
