Update start.sh
Browse files
start.sh
CHANGED
|
@@ -1,27 +1,66 @@
|
|
| 1 |
#!/usr/bin/env sh
|
| 2 |
|
| 3 |
-
set -
|
| 4 |
|
| 5 |
CONFIG_PATH="${CONFIG_PATH:-/CLIProxyAPI/config.yaml}"
|
| 6 |
PORT="${PORT:-8317}"
|
| 7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
|
| 10 |
REMOTE_SECRET="${REMOTE_SECRET:-${MANAGEMENT_PASSWORD:-}}"
|
| 11 |
ALLOW_REMOTE="${ALLOW_REMOTE:-true}"
|
| 12 |
DISABLE_PANEL="${DISABLE_PANEL:-false}"
|
| 13 |
-
|
| 14 |
DEBUG="${DEBUG:-false}"
|
| 15 |
LOG_TO_FILE="${LOG_TO_FILE:-false}"
|
| 16 |
-
USAGE_STATS_ENABLED="${USAGE_STATS_ENABLED:-true}"
|
| 17 |
REQUEST_RETRY="${REQUEST_RETRY:-3}"
|
| 18 |
SWITCH_PROJECT="${SWITCH_PROJECT:-true}"
|
| 19 |
SWITCH_PREVIEW_MODEL="${SWITCH_PREVIEW_MODEL:-true}"
|
| 20 |
|
| 21 |
-
|
| 22 |
API_KEYS_INPUT="${API_KEYS:-}"
|
| 23 |
API_KEYS_YAML="[]"
|
| 24 |
-
|
| 25 |
if [ -n "$API_KEYS_INPUT" ]; then
|
| 26 |
tmp="/tmp/_keys.yaml"
|
| 27 |
: > "$tmp"
|
|
@@ -30,14 +69,11 @@ if [ -n "$API_KEYS_INPUT" ]; then
|
|
| 30 |
esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
| 31 |
printf ' - "%s"\n' "$esc" >> "$tmp"
|
| 32 |
done
|
| 33 |
-
|
| 34 |
if [ -s "$tmp" ]; then
|
| 35 |
API_KEYS_YAML="\n$(cat "$tmp")"
|
| 36 |
fi
|
| 37 |
fi
|
| 38 |
|
| 39 |
-
mkdir -p "$(dirname "$CONFIG_PATH")" "$AUTH_DIR"
|
| 40 |
-
|
| 41 |
cat > "$CONFIG_PATH" <<EOF
|
| 42 |
port: ${PORT}
|
| 43 |
remote-management:
|
|
@@ -58,4 +94,7 @@ quota-exceeded:
|
|
| 58 |
api-keys:${API_KEYS_YAML}
|
| 59 |
EOF
|
| 60 |
|
|
|
|
|
|
|
|
|
|
| 61 |
exec /CLIProxyAPI/cli-proxy-api --config "$CONFIG_PATH"
|
|
|
|
| 1 |
#!/usr/bin/env sh
|
| 2 |
|
| 3 |
+
set -eu
|
| 4 |
|
| 5 |
CONFIG_PATH="${CONFIG_PATH:-/CLIProxyAPI/config.yaml}"
|
| 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}" # 默认开启统计
|
| 58 |
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"
|
|
|
|
| 69 |
esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
| 70 |
printf ' - "%s"\n' "$esc" >> "$tmp"
|
| 71 |
done
|
|
|
|
| 72 |
if [ -s "$tmp" ]; then
|
| 73 |
API_KEYS_YAML="\n$(cat "$tmp")"
|
| 74 |
fi
|
| 75 |
fi
|
| 76 |
|
|
|
|
|
|
|
| 77 |
cat > "$CONFIG_PATH" <<EOF
|
| 78 |
port: ${PORT}
|
| 79 |
remote-management:
|
|
|
|
| 94 |
api-keys:${API_KEYS_YAML}
|
| 95 |
EOF
|
| 96 |
|
| 97 |
+
echo "INFO: config.yaml 已生成于 $CONFIG_PATH"
|
| 98 |
+
echo "INFO: auth-dir = $AUTH_DIR"
|
| 99 |
+
|
| 100 |
exec /CLIProxyAPI/cli-proxy-api --config "$CONFIG_PATH"
|