diff --git a/ss-rust.sh b/ss-rust.sh index 32f427d..26d6d60 100644 --- a/ss-rust.sh +++ b/ss-rust.sh @@ -105,8 +105,32 @@ install_ssrust() { /usr/local/bin/ssserver --version && info "shadowsocks-rust 安装完成" || error "安装验证失败" } -# ============ 节点选择菜单 ============ -select_node_type() { +# ============ 询问端口和密码 ============ +ask_port_key() { + local label="$1" + local default_port="$2" + local default_key="$3" + + echo "" + echo -e "${GREEN}【${label}】${NC}" + read -p " 端口 (回车随机=${default_port}): " input_port + [[ -z "$input_port" ]] && input_port="$default_port" + read -p " 密码 (回车随机=${default_key}): " input_key + [[ -z "$input_key" ]] && input_key="$default_key" + + echo "$input_port $input_key" +} + +# ============ 节点选择 + 配置生成 ============ +select_and_configure() { + SERVER_IP=$(get_ip) + mkdir -p /etc/shadowsocks-rust + + # 清空所有变量 + PORT_2022="" ; KEY_2022="" ; METHOD_2022="" + PORT_RAW="" ; KEY_RAW="" ; METHOD_RAW="" + NODE_MODE="" + echo "" echo -e "${CYAN}════════════════════════════════════════${NC}" echo -e "${CYAN} 🔐 选择节点类型${NC}" @@ -118,22 +142,19 @@ select_node_type() { echo "" read -p "请选择 [1-3] (默认3): " node_choice node_choice=${node_choice:-3} -} - -# ============ 生成配置 ============ -gen_config() { - SERVER_IP=$(get_ip) - mkdir -p /etc/shadowsocks-rust - PORT_2022=$((RANDOM % 10000 + 20000)) - PORT_RAW=$((RANDOM % 10000 + 30000)) - KEY_2022=$(openssl rand -base64 16) - KEY_RAW=$(openssl rand -base64 16) METHOD_2022="2022-blake3-aes-128-gcm" METHOD_RAW="aes-128-gcm" case "${node_choice}" in 1) + local dp=$((RANDOM % 10000 + 20000)) + local dk=$(openssl rand -base64 16) + local result=$(ask_port_key "SS2022-128" "$dp" "$dk") + PORT_2022=$(echo "$result" | awk '{print $1}') + KEY_2022=$(echo "$result" | awk '{print $2}') + NODE_MODE="ss2022" + cat > /etc/shadowsocks-rust/config.json << EOF { "servers": [ @@ -148,10 +169,16 @@ gen_config() { ] } EOF - NODE_MODE="ss2022" - PORT_RAW="" ; KEY_RAW="" ; METHOD_RAW="" + METHOD_RAW="" ;; 2) + local dp=$((RANDOM % 10000 + 30000)) + local dk=$(openssl rand -base64 16) + local result=$(ask_port_key "SS-AES-128" "$dp" "$dk") + PORT_RAW=$(echo "$result" | awk '{print $1}') + KEY_RAW=$(echo "$result" | awk '{print $2}') + NODE_MODE="ss128" + cat > /etc/shadowsocks-rust/config.json << EOF { "servers": [ @@ -166,10 +193,22 @@ EOF ] } EOF - NODE_MODE="ss128" - PORT_2022="" ; KEY_2022="" ; METHOD_2022="" + METHOD_2022="" ;; 3|*) + local dp1=$((RANDOM % 10000 + 20000)) + local dk1=$(openssl rand -base64 16) + local result1=$(ask_port_key "SS2022-128" "$dp1" "$dk1") + PORT_2022=$(echo "$result1" | awk '{print $1}') + KEY_2022=$(echo "$result1" | awk '{print $2}') + + local dp2=$((RANDOM % 10000 + 30000)) + local dk2=$(openssl rand -base64 16) + local result2=$(ask_port_key "SS-AES-128" "$dp2" "$dk2") + PORT_RAW=$(echo "$result2" | awk '{print $1}') + KEY_RAW=$(echo "$result2" | awk '{print $2}') + NODE_MODE="both" + cat > /etc/shadowsocks-rust/config.json << EOF { "servers": [ @@ -192,7 +231,6 @@ EOF ] } EOF - NODE_MODE="both" ;; esac @@ -458,9 +496,8 @@ do_install() { get_pkg_manager install_deps sync_time - select_node_type install_ssrust - gen_config + select_and_configure setup_service gen_subscribe show_result