hequ commited on
Commit
8265395
·
verified ·
1 Parent(s): 24eb98e

Update start.sh

Browse files
Files changed (1) hide show
  1. start.sh +28 -48
start.sh CHANGED
@@ -2,56 +2,13 @@
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}" # 默认开启统计
@@ -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
- exec /CLIProxyAPI/cli-proxy-api --config "$CONFIG_PATH"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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