diff --git a/ai/hwaishell.sh b/ai/hwaishell.sh index f9da6e9..823a6b1 100644 --- a/ai/hwaishell.sh +++ b/ai/hwaishell.sh @@ -13,34 +13,6 @@ log_warn() { echo -e "${YELLOW}[WARN]${PLAIN} $1"; } log_error() { echo -e "${RED}[ERROR]${PLAIN} $1"; } log_step() { echo -e "\n${BLUE}[${1}]${PLAIN} ${2}"; } -# 交互式读取,必须提供非空值;管道模式下要求环境变量 -read_required() { - local prompt_msg="$1" - local var_name="$2" - - if [ -t 0 ]; then - local val - while true; do - read -p "$prompt_msg" val - if [ -n "$val" ]; then - echo "$val" - return 0 - fi - echo -e "${RED}此项为必填,请输入!${PLAIN}" - done - else - # 管道模式:从环境变量取,没有则报错提示改为交互式执行 - local env_val="${!var_name}" - if [ -n "$env_val" ]; then - echo "$env_val" - else - log_error "管道模式下参数 $var_name 未通过环境变量提供" - log_error "请改为交互式执行: curl -sSL -o hwaishell.sh && bash hwaishell.sh" - exit 1 - fi - fi -} - # 交互式读取,有默认值可选 read_or_default() { local prompt_msg="$1" @@ -245,12 +217,28 @@ fi # ================= 配置网关与 frpc 代理参数 ================= log_step "2/5" "配置 frpc 连接与网关端口参数:" -# frps 服务器连接信息(必填) -FRPS_ADDR="${FRPS_ADDR:-$(read_required "请输入 frps 服务器地址 (例: 1.2.3.4): " "FRPS_ADDR")}" -FRPS_PORT="${FRPS_PORT:-$(read_or_default "请输入 frps 服务器端口 (默认 7000): " "7000")}" -FRPS_TOKEN="${FRPS_TOKEN:-$(read_or_default "请输入 frps 认证 token (默认留空): " "")}" +# frps 服务器连接信息(必填 —— 管道模式下必须通过环境变量提供) +if [ -t 0 ]; then + # 交互模式 + while [ -z "$FRPS_ADDR" ]; do + read -p "请输入 frps 服务器地址 (例: 1.2.3.4): " FRPS_ADDR + [ -z "$FRPS_ADDR" ] && log_error "此项为必填,请输入!" + done + read -p "请输入 frps 服务器端口 (默认 7000): " FRPS_PORT + FRPS_PORT=${FRPS_PORT:-7000} + read -p "请输入 frps 认证 token (默认留空): " FRPS_TOKEN +else + # 管道模式:必须通过环境变量提供关键参数 + if [ -z "$FRPS_ADDR" ]; then + log_error "管道模式下必须通过环境变量提供参数!" + log_error "用法: FRPS_ADDR=1.2.3.4 FRPS_PORT=7000 FRPS_TOKEN=xxx curl -sSL ... | bash" + log_error "或下载后交互式: curl -sSL -o hwaishell.sh && bash hwaishell.sh" + exit 1 + fi + FRPS_PORT=${FRPS_PORT:-7000} + FRPS_TOKEN=${FRPS_TOKEN:-} +fi -# 代理规则 PROXY_NAME="${PROXY_NAME:-$(read_or_default "请输入代理名称 (默认 huawei-dynamic-gateway): " "huawei-dynamic-gateway")}" GATEWAY_PORT="${GATEWAY_PORT:-$(read_or_default "请输入 Python 动态网关的本地监听端口 (默认 8080): " "8080")}" REMOTE_PORT="${REMOTE_PORT:-$(read_or_default "请输入在 frps 公网端暴露的端口 (默认 18000): " "18000")}"