#!/bin/bash # 下载地址 DOWNLOAD_URL="https://github.com/bqlpfy/forward-panel/releases/download/gost/gost" INSTALL_DIR="/etc/gost" # 显示菜单 show_menu() { echo "===============================================" echo " 管理脚本" echo "===============================================" echo "请选择操作:" echo "1. 安装" echo "2. 更新" echo "3. 卸载" echo "4. 退出" echo "===============================================" } # 获取用户输入的配置参数 get_config_params() { if [[ -z "$SERVER_ADDR" || -z "$SECRET" ]]; then echo "请输入配置参数:" if [[ -z "$SERVER_ADDR" ]]; then read -p "服务器地址: " SERVER_ADDR fi if [[ -z "$SECRET" ]]; then read -p "密钥: " SECRET fi if [[ -z "$SERVER_ADDR" || -z "$SECRET" ]]; then echo "❌ 参数不完整,操作取消。" exit 1 fi fi } # 解析命令行参数 while getopts "a:s:" opt; do case $opt in a) SERVER_ADDR="$OPTARG" ;; s) SECRET="$OPTARG" ;; *) echo "❌ 无效参数"; exit 1 ;; esac done # 安装功能 install_gost() { echo "🚀 开始安装 GOST..." get_config_params mkdir -p "$INSTALL_DIR" # 停止并禁用已有服务 if systemctl list-units --full -all | grep -Fq "gost.service"; then echo "🔍 检测到已存在的gost服务" systemctl stop gost 2>/dev/null && echo "🛑 停止服务" systemctl disable gost 2>/dev/null && echo "🚫 禁用自启" fi # 删除旧文件 [[ -f "$INSTALL_DIR/gost" ]] && echo "🧹 删除旧文件 gost" && rm -f "$INSTALL_DIR/gost" # 下载 gost echo "⬇️ 下载 gost 中..." curl -L "$DOWNLOAD_URL" -o "$INSTALL_DIR/gost" if [[ ! -f "$INSTALL_DIR/gost" || ! -s "$INSTALL_DIR/gost" ]]; then echo "❌ 下载失败,请检查网络或下载链接。" exit 1 fi chmod +x "$INSTALL_DIR/gost" echo "✅ 下载完成" # 打印版本 echo "🔎 gost 版本:$($INSTALL_DIR/gost -V)" # 写入 config.json CONFIG_FILE="$INSTALL_DIR/config.json" if [[ -f "$CONFIG_FILE" ]]; then echo "⏭️ 跳过配置文件: config.json (已存在)" else echo "📄 创建新配置: config.json" cat > "$CONFIG_FILE" < "$GOST_CONFIG" < "$SERVICE_FILE" </dev/null systemctl disable gost 2>/dev/null fi # 删除服务文件 if [[ -f "/etc/systemd/system/gost.service" ]]; then rm -f "/etc/systemd/system/gost.service" echo "🧹 删除服务文件" fi # 删除安装目录 if [[ -d "$INSTALL_DIR" ]]; then rm -rf "$INSTALL_DIR" echo "🧹 删除安装目录: $INSTALL_DIR" fi # 重载 systemd systemctl daemon-reload echo "✅ 卸载完成" } # 主逻辑 main() { # 如果提供了命令行参数,直接执行安装 if [[ -n "$SERVER_ADDR" && -n "$SECRET" ]]; then install_gost exit 0 fi # 显示交互式菜单 while true; do show_menu read -p "请输入选项 (1-4): " choice case $choice in 1) install_gost break ;; 2) update_gost break ;; 3) uninstall_gost break ;; 4) echo "👋 退出脚本" exit 0 ;; *) echo "❌ 无效选项,请输入 1-4" echo "" ;; esac done } # 执行主函数 main