#!/bin/bash red(){ echo -e "\033[31m$1\033[0m" } green(){ echo -e "\033[32m$1\033[0m" } # 获取系统包管理器 get_package_manager(){ if command -v apt-get &> /dev/null; then echo "apt-get" elif command -v yum &> /dev/null; then echo "yum" else echo "未知的系统包管理器" return 1 # 返回错误状态码 fi } # 检查 jq 是否已安装 check_jq() { if command -v jq >/dev/null 2>&1; then return 0 else echo "jq 未安装" return 1 fi } # 动态安装软件包 install_package() { local package_name=$1 if command -v "$package_name" &> /dev/null; then echo "$package_name 已安装, 跳过." return 0 fi echo "安装 $package_name..." local package_manager=$(get_package_manager) if [ "$package_manager" == "apt-get" ]; then sudo apt-get update sudo apt-get install -y "$package_name" elif [ "$package_manager" == "yum" ]; then sudo yum install -y "$package_name" else echo "未知的包管理器, 请手动安装 $package_name." return 1 fi } check_config(){ local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径 local config_file="$script_dir/../conf/config.json" # 如果配置文件不存在或者空白 if [ ! -e "$config_file" ] || [ ! -s "$config_file" ];then echo "请先'创建配置'" exit 1 fi # 如果配置未初始化 local uuid=$(jq -r '.inbounds[0].settings.clients[0].id' "$config_file") if [ "$uuid" = "你的UUID" ] || [ -z "$uuid" ]; then echo "请先'创建配置'" exit 1 fi # 检查配置文件是否为有效的JSON格式 if ! jq '.' "$config_file" >/dev/null 2>&1; then echo "配置文件不是有效的JSON格式, 请重新生成配置文件." exit 1 fi } # 通用:展示当前值并询问新值 # 用法: ask_input "提示语" "当前值(当前配置文件的值)" # 示例: # new_port=$(ask_input "请输入新的端口号" "$(jq -r '.inbounds[0].port' $config_dir/config.json)") ask_input() { local prompt="$1" # 提示语 local current_value="$2" local input read -p "${prompt} [当前: ${current_value}]: " input # 用户直接回车则保留当前值,否则使用新输入 echo "${input:-$current_value}" }