Update start.sh
Browse files
start.sh
CHANGED
|
@@ -2,56 +2,13 @@
|
|
| 2 |
|
| 3 |
set -eu
|
| 4 |
|
| 5 |
-
CONFIG_PATH="${CONFIG_PATH:-/
|
| 6 |
PORT="${PORT:-8317}"
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
ensure_dir_writable() {
|
| 10 |
-
# $1 = 目标目录
|
| 11 |
-
dir="$1"
|
| 12 |
-
if [ -d "$dir" ]; then
|
| 13 |
-
# 已存在,尝试写入
|
| 14 |
-
if [ -w "$dir" ]; then
|
| 15 |
-
return 0
|
| 16 |
-
else
|
| 17 |
-
chmod 777 "$dir" 2>/dev/null || return 1
|
| 18 |
-
return 0
|
| 19 |
-
fi
|
| 20 |
-
else
|
| 21 |
-
mkdir -p "$dir" 2>/dev/null || return 1
|
| 22 |
-
return 0
|
| 23 |
-
fi
|
| 24 |
-
}
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
if [ -n "${AUTH_DIR:-}" ]; then
|
| 28 |
-
AUTH_DIR="$AUTH_DIR"
|
| 29 |
-
else
|
| 30 |
-
if ensure_dir_writable /data 2>/dev/null; then
|
| 31 |
-
AUTH_DIR="/data/auths"
|
| 32 |
-
else
|
| 33 |
-
AUTH_DIR="/tmp/auths"
|
| 34 |
-
fi
|
| 35 |
-
fi
|
| 36 |
-
|
| 37 |
-
ensure_dir_writable "$AUTH_DIR" || {
|
| 38 |
-
echo "WARN: $AUTH_DIR 不可写,回退到 /tmp/auths"
|
| 39 |
-
AUTH_DIR="/tmp/auths"
|
| 40 |
-
ensure_dir_writable "$AUTH_DIR"
|
| 41 |
-
}
|
| 42 |
-
|
| 43 |
-
CONFIG_DIR="$(dirname "$CONFIG_PATH")"
|
| 44 |
-
if ! ensure_dir_writable "$CONFIG_DIR"; then
|
| 45 |
-
echo "WARN: $CONFIG_DIR 不可写,切换 CONFIG_PATH 到 /tmp/config.yaml"
|
| 46 |
-
CONFIG_DIR="/tmp"
|
| 47 |
-
CONFIG_PATH="/tmp/config.yaml"
|
| 48 |
-
ensure_dir_writable "$CONFIG_DIR"
|
| 49 |
-
fi
|
| 50 |
-
|
| 51 |
|
| 52 |
REMOTE_SECRET="${REMOTE_SECRET:-${MANAGEMENT_PASSWORD:-}}"
|
| 53 |
-
ALLOW_REMOTE="${ALLOW_REMOTE:-true}"
|
| 54 |
-
DISABLE_PANEL="${DISABLE_PANEL:-false}"
|
| 55 |
DEBUG="${DEBUG:-false}"
|
| 56 |
LOG_TO_FILE="${LOG_TO_FILE:-false}"
|
| 57 |
USAGE_STATS_ENABLED="${USAGE_STATS_ENABLED:-true}" # 默认开启统计
|
|
@@ -59,11 +16,14 @@ REQUEST_RETRY="${REQUEST_RETRY:-3}"
|
|
| 59 |
SWITCH_PROJECT="${SWITCH_PROJECT:-true}"
|
| 60 |
SWITCH_PREVIEW_MODEL="${SWITCH_PREVIEW_MODEL:-true}"
|
| 61 |
|
|
|
|
|
|
|
| 62 |
API_KEYS_INPUT="${API_KEYS:-}"
|
| 63 |
API_KEYS_YAML="[]"
|
| 64 |
if [ -n "$API_KEYS_INPUT" ]; then
|
| 65 |
tmp="/tmp/_keys.yaml"
|
| 66 |
: > "$tmp"
|
|
|
|
| 67 |
echo "$API_KEYS_INPUT" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed '/^$/d' | \
|
| 68 |
while IFS= read -r key; do
|
| 69 |
esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
|
@@ -97,4 +57,24 @@ EOF
|
|
| 97 |
echo "INFO: config.yaml 已生成于 $CONFIG_PATH"
|
| 98 |
echo "INFO: auth-dir = $AUTH_DIR"
|
| 99 |
|
| 100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
set -eu
|
| 4 |
|
| 5 |
+
CONFIG_PATH="${CONFIG_PATH:-/tmp/config.yaml}"
|
| 6 |
PORT="${PORT:-8317}"
|
| 7 |
+
AUTH_DIR="${AUTH_DIR:-/tmp/auths}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
REMOTE_SECRET="${REMOTE_SECRET:-${MANAGEMENT_PASSWORD:-}}"
|
| 10 |
+
ALLOW_REMOTE="${ALLOW_REMOTE:-true}" # 需要 /management.html 就 true
|
| 11 |
+
DISABLE_PANEL="${DISABLE_PANEL:-false}" # 想禁用管理面板就 true
|
| 12 |
DEBUG="${DEBUG:-false}"
|
| 13 |
LOG_TO_FILE="${LOG_TO_FILE:-false}"
|
| 14 |
USAGE_STATS_ENABLED="${USAGE_STATS_ENABLED:-true}" # 默认开启统计
|
|
|
|
| 16 |
SWITCH_PROJECT="${SWITCH_PROJECT:-true}"
|
| 17 |
SWITCH_PREVIEW_MODEL="${SWITCH_PREVIEW_MODEL:-true}"
|
| 18 |
|
| 19 |
+
mkdir -p "$(dirname "$CONFIG_PATH")" "$AUTH_DIR" || true
|
| 20 |
+
|
| 21 |
API_KEYS_INPUT="${API_KEYS:-}"
|
| 22 |
API_KEYS_YAML="[]"
|
| 23 |
if [ -n "$API_KEYS_INPUT" ]; then
|
| 24 |
tmp="/tmp/_keys.yaml"
|
| 25 |
: > "$tmp"
|
| 26 |
+
# 逗号拆分 -> 去空白/空行
|
| 27 |
echo "$API_KEYS_INPUT" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed '/^$/d' | \
|
| 28 |
while IFS= read -r key; do
|
| 29 |
esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
|
|
|
| 57 |
echo "INFO: config.yaml 已生成于 $CONFIG_PATH"
|
| 58 |
echo "INFO: auth-dir = $AUTH_DIR"
|
| 59 |
|
| 60 |
+
find_and_exec() {
|
| 61 |
+
# 1) PATH 中是否有
|
| 62 |
+
if command -v cli-proxy-api >/dev/null 2>&1; then
|
| 63 |
+
exec cli-proxy-api --config "$CONFIG_PATH"
|
| 64 |
+
fi
|
| 65 |
+
# 2) 常见路径兜底
|
| 66 |
+
for p in \
|
| 67 |
+
/usr/local/bin/cli-proxy-api \
|
| 68 |
+
/usr/bin/cli-proxy-api \
|
| 69 |
+
/app/cli-proxy-api \
|
| 70 |
+
/CLIProxyAPI/cli-proxy-api
|
| 71 |
+
do
|
| 72 |
+
if [ -x "$p" ]; then
|
| 73 |
+
exec "$p" --config "$CONFIG_PATH"
|
| 74 |
+
fi
|
| 75 |
+
done
|
| 76 |
+
echo "FATAL: 找不到 cli-proxy-api 可执行文件。请检查基础镜像或可执行文件路径。" >&2
|
| 77 |
+
exit 127
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
find_and_exec
|