diff --git a/install.sh b/install.sh index 1c4f7cc..e44c97c 100755 --- a/install.sh +++ b/install.sh @@ -1,42 +1,7 @@ #!/bin/bash -# GOST 多实例管理脚本 -# 支持在同一台机器上运行多个 GOST 实例 -# -# 使用方法: -# 交互式安装: ./install.sh -# 命令行安装: ./install.sh -a "服务器地址" -s "密钥" -# -# 参数说明: -# -a: 服务器地址 -# -s: 密钥 -# # 下载地址 DOWNLOAD_URL="https://raw.githubusercontent.com/bqlpfy/forward-panel/refs/heads/main/go-gost/gost" - -# 获取实例名称 -get_instance_name() { - if [[ -z "$INSTANCE_NAME" ]]; then - echo "" - echo "🏷️ 实例名称配置..." - read -p "请输入实例名称 (留空使用默认名称 'gost'): " INSTANCE_NAME - if [[ -z "$INSTANCE_NAME" ]]; then - INSTANCE_NAME="gost" - fi - fi - - # 设置动态变量 - if [[ "$INSTANCE_NAME" == "gost" ]]; then - INSTALL_DIR="/etc/gost" - SERVICE_NAME="gost" - else - INSTALL_DIR="/etc/gost-${INSTANCE_NAME}" - SERVICE_NAME="gost-${INSTANCE_NAME}" - fi - - echo "✅ 实例名称: $INSTANCE_NAME" - echo "📁 安装目录: $INSTALL_DIR" - echo "🔧 服务名称: $SERVICE_NAME" -} +INSTALL_DIR="/etc/gost" # 显示菜单 show_menu() { @@ -47,72 +12,7 @@ show_menu() { echo "1. 安装" echo "2. 更新" echo "3. 卸载" - echo "4. 查看已有服务" - echo "5. 退出" - echo "===============================================" -} - -# 查看已有服务 -list_services() { - echo "🔍 查看已有的 GOST 服务..." - echo "" - - # 检查是否支持systemctl - if ! command -v systemctl &> /dev/null; then - echo "❌ 此功能需要 systemd 支持(Linux 系统)" - echo "💡 当前系统不支持 systemctl 命令" - return 0 - fi - - # 查找所有gost相关的服务 - GOST_SERVICES=$(systemctl list-units --all --no-pager | grep -E "gost.*\.service" | awk '{print $1}' || true) - - if [[ -z "$GOST_SERVICES" ]]; then - echo "❌ 未找到任何 GOST 服务" - return 0 - fi - - echo "📋 已安装的 GOST 服务:" - echo "===============================================" - - for service in $GOST_SERVICES; do - # 提取实例名称 - if [[ "$service" == "gost.service" ]]; then - instance_name="gost (默认)" - config_dir="/etc/gost" - else - instance_name=$(echo "$service" | sed 's/gost-//' | sed 's/\.service//') - config_dir="/etc/gost-${instance_name}" - fi - - # 获取服务状态 - status=$(systemctl is-active "$service" 2>/dev/null || echo "unknown") - enabled=$(systemctl is-enabled "$service" 2>/dev/null || echo "unknown") - - # 显示服务信息 - echo "🔧 服务名称: $service" - echo "🏷️ 实例名称: $instance_name" - echo "📁 配置目录: $config_dir" - echo "🟢 运行状态: $status" - echo "⚡ 开机启动: $enabled" - - # 显示配置信息(如果配置文件存在) - if [[ -f "$config_dir/config.json" ]]; then - server_addr=$(grep -o '"addr":[[:space:]]*"[^"]*"' "$config_dir/config.json" 2>/dev/null | cut -d'"' -f4 || echo "未知") - echo "🌐 服务器地址: $server_addr" - else - echo "🌐 服务器地址: 配置文件不存在" - fi - - echo "-----------------------------------------------" - done - - echo "" - echo "💡 服务管理命令:" - echo " 查看状态: systemctl status <服务名>" - echo " 启动服务: systemctl start <服务名>" - echo " 停止服务: systemctl stop <服务名>" - echo " 查看日志: journalctl -u <服务名> -f" + echo "4. 退出" echo "===============================================" } @@ -216,7 +116,6 @@ done # 安装功能 install_gost() { echo "🚀 开始安装 GOST..." - get_instance_name get_config_params # 询问是否有加速下载地址 @@ -230,15 +129,15 @@ install_gost() { echo "✅ 使用默认下载地址: $DOWNLOAD_URL" fi - # 检查并安装 tcpkill + # 检查并安装 tcpkill check_and_install_tcpkill mkdir -p "$INSTALL_DIR" # 停止并禁用已有服务 - if systemctl list-units --full -all | grep -Fq "${SERVICE_NAME}.service"; then - echo "🔍 检测到已存在的${SERVICE_NAME}服务" - systemctl stop ${SERVICE_NAME} 2>/dev/null && echo "🛑 停止服务" - systemctl disable ${SERVICE_NAME} 2>/dev/null && echo "🚫 禁用自启" + 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 # 删除旧文件 @@ -282,10 +181,10 @@ EOF chmod 600 "$INSTALL_DIR"/*.json # 创建 systemd 服务 - SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" + SERVICE_FILE="/etc/systemd/system/gost.service" cat > "$SERVICE_FILE" </dev/null - systemctl disable ${SERVICE_NAME} 2>/dev/null + systemctl stop gost 2>/dev/null + systemctl disable gost 2>/dev/null fi # 删除服务文件 - if [[ -f "/etc/systemd/system/${SERVICE_NAME}.service" ]]; then - rm -f "/etc/systemd/system/${SERVICE_NAME}.service" + if [[ -f "/etc/systemd/system/gost.service" ]]; then + rm -f "/etc/systemd/system/gost.service" echo "🧹 删除服务文件" fi @@ -412,7 +309,7 @@ main() { # 显示交互式菜单 while true; do show_menu - read -p "请输入选项 (1-5): " choice + read -p "请输入选项 (1-4): " choice case $choice in 1) @@ -428,15 +325,11 @@ main() { break ;; 4) - list_services - break - ;; - 5) echo "👋 退出脚本" exit 0 ;; *) - echo "❌ 无效选项,请输入 1-5" + echo "❌ 无效选项,请输入 1-4" echo "" ;; esac