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 "安装验证失败"
}
# ============ 节点选择菜单 ============
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