#!/usr/bin/env bash # 配置 Higress 三条总入口路由:/llm → LiteLLM,/dify → Dify,/xf → Xinference set -euo pipefail CONSOLE="${HIGRESS_CONSOLE:-http://127.0.0.1:8001}" USER="${HIGRESS_ADMIN_USER:-admin}" PASS="${HIGRESS_ADMIN_PASS:-Higress207admin!}" BACKEND_HOST="${HIGRESS_BACKEND_HOST:-192.168.110.207}" COOKIE="$(mktemp)" trap 'rm -f "$COOKIE"' EXIT login() { curl -sS -c "$COOKIE" -b "$COOKIE" -X POST "$CONSOLE/session/login" \ -H "Content-Type: application/json" \ -d "{\"username\":\"$USER\",\"password\":\"$PASS\"}" | tee /tmp/higress_login.json echo if ! grep -q '"name"' /tmp/higress_login.json; then echo "[FAIL] Console 登录失败(若未初始化,先 POST /system/init)" exit 1 fi } put_json() { local path="$1" body="$2" curl -sS -b "$COOKIE" -X PUT "$CONSOLE$path" \ -H "Content-Type: application/json" \ -d "$body" echo } post_json() { local path="$1" body="$2" curl -sS -b "$COOKIE" -X POST "$CONSOLE$path" \ -H "Content-Type: application/json" \ -d "$body" echo } ensure_source() { local name="$1" domain="$2" port="$3" # 已存在则跳过 if curl -sS -b "$COOKIE" "$CONSOLE/v1/service-sources" | grep -q "\"name\":\"$name\""; then echo "[INFO] service-source 已存在: $name" return 0 fi echo "[INFO] 创建 service-source: $name → $domain" post_json /v1/service-sources "$(cat </dev/null 2>&1 || true curl -sS -b "$COOKIE" -X DELETE "$CONSOLE/v1/routes/dify-root" >/dev/null 2>&1 || true echo "[INFO] 请在客户端 hosts 增加: ${BACKEND_HOST} ${DIFY_HOST}" echo "[OK] 路由配置完成"