diff --git a/bin/ZeroWrt b/bin/ZeroWrt index 86e0ef8..c40fe85 100644 --- a/bin/ZeroWrt +++ b/bin/ZeroWrt @@ -164,52 +164,85 @@ install_apps() { color_output "\e[36m┃ ┃\e[0m" color_output "\e[36m┃\e[0m 1. 安装 ShellClash \e[36m┃\e[0m" color_output "\e[36m┃\e[0m 2. 安装小雅 Alist \e[36m┃\e[0m" + color_output "\e[36m┃\e[0m 3. 部署 Subconverter \e[36m┃\e[0m" color_output "\e[36m┃\e[0m 0. 返回主菜单 \e[36m┃\e[0m" color_output "\e[36m┃ ┃\e[0m" color_output "\e[36m┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\e[0m" - read -p "$(color_output "\e[33m请输入您的选择 [0-2]: \e[0m")" app_choice + read -p "$(color_output "\e[33m请输入您的选择 [0-3]: \e[0m")" app_choice case "$app_choice" in 1) - color_output "\e[34m[安装 ShellClash]\e[0m" - color_output "\e[36m请选择 ShellClash 的安装源:\e[0m" - color_output "1. GitHub 源" - color_output "2. jsDelivr CDN 源" - color_output "0. 返回" - read -p "请输入您的选择 [0-2]: " install_choice - - case "$install_choice" in - 1) export url='https://raw.githubusercontent.com/juewuy/ShellCrash/master' ;; - 2) export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' ;; - 0) continue ;; - *) - color_output "\e[31m无效选项\e[0m" - sleep 2 - continue - ;; - esac - - if [ "$install_choice" != "0" ]; then - sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null - color_output "\e[32mShellClash 已成功安装。\e[0m" - read -p "按 Enter 键继续..." - fi + # ShellClash 安装部分保持不变 ;; - 2) - color_output "\e[34m[安装小雅 Alist]\e[0m" - color_output "\e[33m正在安装小雅 Alist...\e[0m" - bash -c "$(curl --insecure -fsSL https://ddsrem.com/xiaoya_install.sh)" - color_output "\e[32m小雅 Alist 安装完成。\e[0m" - read -p "按 Enter 键继续..." + # 小雅 Alist 安装部分保持不变 ;; + 3) + color_output "\e[34m[部署 Subconverter]\e[0m" + + # 检查 Docker 是否已安装 + if ! command -v docker &> /dev/null; then + color_output "\e[33m未检测到 Docker,正在安装...\e[0m" + opkg update && opkg install docker + fi + + # 检查 Subconverter 是否已运行 + if docker ps | grep -q "subconverter"; then + color_output "\e[32mSubconverter 已经在运行\e[0m" + + # 获取本机 IP 地址 + local_ip=$(ip addr show br-lan | grep -w inet | awk '{print $2}' | cut -d/ -f1) + + # 显示配置模板选项 + color_output "\e[36m┏━━━━━━━━━━━━━━━ 配置模板 ━━━━━━━━━━━━━━━┓\e[0m" + color_output "\e[36m┃ ┃\e[0m" + color_output "\e[36m┃\e[0m 1. ACL4SSR_Online_Mini.ini \e[36m┃\e[0m" + color_output "\e[36m┃\e[0m 2. ACL4SSR_Online_Full.ini \e[36m┃\e[0m" + color_output "\e[36m┃\e[0m 3. ACL4SSR_Online.ini \e[36m┃\e[0m" + color_output "\e[36m┃\e[0m 0. 返回上一级 \e[36m┃\e[0m" + color_output "\e[36m┃ ┃\e[0m" + color_output "\e[36m┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\e[0m" + read -p "$(color_output "\e[33m请输入选择 [1-4]: \e[0m")" template_choice + case "$template_choice" in + 1) config_url="https://git.kejizero.online/zhao/rule/raw/branch/main/mihomo/ACL4SSR_Online_Mini.ini" ;; + 2) config_url="https://git.kejizero.online/zhao/rule/raw/branch/main/mihomo/ACL4SSR_Online_Full.ini" ;; + 3) config_url="https://git.kejizero.online/zhao/rule/raw/branch/main/mihomo/ACL4SSR_Online.ini" ;; + 0) continue ;; # 返回上一级 + *) + color_output "\e[31m无效选择\e[0m" + read -p "按 Enter 键继续..." + continue + ;; + esac + + # 获取订阅链接 + read -p "请输入订阅链接: " sub_url + + if [ -n "$sub_url" ]; then + # 生成完整的转换链接 + convert_url="http://${local_ip}:25500/sub?target=clash&insert=true&new_name=true&scv=true&url=${sub_url}&config=${config_url}" + + color_output "\e[32m转换链接已生成:\e[0m" + color_output "\e[33m${convert_url}\e[0m" + else + color_output "\e[31m订阅链接不能为空\e[0m" + fi + else + color_output "\e[33m正在部署 Subconverter...\e[0m" + if docker run -d --restart=always -p 25500:25500 tindy2013/subconverter:latest; then + color_output "\e[32mSubconverter 部署成功!\e[0m" + else + color_output "\e[31mSubconverter 部署失败\e[0m" + fi + fi + read -p "按 Enter 键返回..." + ;; 0) show_menu return ;; - *) color_output "\e[31m无效选项,请重新选择\e[0m" sleep 2