feat: 端口密码确认提示 + 彻底修复单节点变量泄漏

This commit is contained in:
mango
2026-02-14 21:12:35 +08:00
parent daa8239255
commit 8c25dbeaa5

View File

@@ -105,8 +105,32 @@ install_ssrust() {
/usr/local/bin/ssserver --version && info "shadowsocks-rust 安装完成" || error "安装验证失败" /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 ""
echo -e "${CYAN}════════════════════════════════════════${NC}" echo -e "${CYAN}════════════════════════════════════════${NC}"
echo -e "${CYAN} 🔐 选择节点类型${NC}" echo -e "${CYAN} 🔐 选择节点类型${NC}"
@@ -118,22 +142,19 @@ select_node_type() {
echo "" echo ""
read -p "请选择 [1-3] (默认3): " node_choice read -p "请选择 [1-3] (默认3): " node_choice
node_choice=${node_choice:-3} 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_2022="2022-blake3-aes-128-gcm"
METHOD_RAW="aes-128-gcm" METHOD_RAW="aes-128-gcm"
case "${node_choice}" in case "${node_choice}" in
1) 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 cat > /etc/shadowsocks-rust/config.json << EOF
{ {
"servers": [ "servers": [
@@ -148,10 +169,16 @@ gen_config() {
] ]
} }
EOF EOF
NODE_MODE="ss2022" METHOD_RAW=""
PORT_RAW="" ; KEY_RAW="" ; METHOD_RAW=""
;; ;;
2) 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 cat > /etc/shadowsocks-rust/config.json << EOF
{ {
"servers": [ "servers": [
@@ -166,10 +193,22 @@ EOF
] ]
} }
EOF EOF
NODE_MODE="ss128" METHOD_2022=""
PORT_2022="" ; KEY_2022="" ; METHOD_2022=""
;; ;;
3|*) 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 cat > /etc/shadowsocks-rust/config.json << EOF
{ {
"servers": [ "servers": [
@@ -192,7 +231,6 @@ EOF
] ]
} }
EOF EOF
NODE_MODE="both"
;; ;;
esac esac
@@ -458,9 +496,8 @@ do_install() {
get_pkg_manager get_pkg_manager
install_deps install_deps
sync_time sync_time
select_node_type
install_ssrust install_ssrust
gen_config select_and_configure
setup_service setup_service
gen_subscribe gen_subscribe
show_result show_result