hequ commited on
Commit
a007882
·
verified ·
1 Parent(s): 7c99d4d

Update start.sh

Browse files
Files changed (1) hide show
  1. start.sh +38 -21
start.sh CHANGED
@@ -2,13 +2,15 @@
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,14 +18,15 @@ REQUEST_RETRY="${REQUEST_RETRY:-3}"
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')
@@ -34,6 +37,7 @@ if [ -n "$API_KEYS_INPUT" ]; then
34
  fi
35
  fi
36
 
 
37
  cat > "$CONFIG_PATH" <<EOF
38
  port: ${PORT}
39
  remote-management:
@@ -57,24 +61,37 @@ EOF
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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  set -eu
4
 
5
+ # ===== 基本参数(全部走 /tmp)=====
6
  CONFIG_PATH="${CONFIG_PATH:-/tmp/config.yaml}"
7
  PORT="${PORT:-8317}"
8
  AUTH_DIR="${AUTH_DIR:-/tmp/auths}"
9
 
10
+ # ===== 管理与开关 =====
11
  REMOTE_SECRET="${REMOTE_SECRET:-${MANAGEMENT_PASSWORD:-}}"
12
+ ALLOW_REMOTE="${ALLOW_REMOTE:-true}"
13
+ DISABLE_PANEL="${DISABLE_PANEL:-false}"
14
  DEBUG="${DEBUG:-false}"
15
  LOG_TO_FILE="${LOG_TO_FILE:-false}"
16
  USAGE_STATS_ENABLED="${USAGE_STATS_ENABLED:-true}" # 默认开启统计
 
18
  SWITCH_PROJECT="${SWITCH_PROJECT:-true}"
19
  SWITCH_PREVIEW_MODEL="${SWITCH_PREVIEW_MODEL:-true}"
20
 
21
+ # ===== 目录准备 =====
22
  mkdir -p "$(dirname "$CONFIG_PATH")" "$AUTH_DIR" || true
23
 
24
+ # ===== API Keys(逗号或换行)=====
25
  API_KEYS_INPUT="${API_KEYS:-}"
26
  API_KEYS_YAML="[]"
27
  if [ -n "$API_KEYS_INPUT" ]; then
28
  tmp="/tmp/_keys.yaml"
29
  : > "$tmp"
 
30
  echo "$API_KEYS_INPUT" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed '/^$/d' | \
31
  while IFS= read -r key; do
32
  esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g')
 
37
  fi
38
  fi
39
 
40
+ # ===== 写入 /tmp/config.yaml =====
41
  cat > "$CONFIG_PATH" <<EOF
42
  port: ${PORT}
43
  remote-management:
 
61
  echo "INFO: config.yaml 已生成于 $CONFIG_PATH"
62
  echo "INFO: auth-dir = $AUTH_DIR"
63
 
64
+ # ===== 自动探测可执行文件并启动 =====
65
+ try_exec() {
66
+ if [ -x "$1" ]; then
67
+ echo "INFO: 使用可执行文件: $1"
68
+ exec "$1" --config "$CONFIG_PATH"
69
  fi
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
 
72
+ # 1) PATH 中尝试(大写/小写名称)
73
+ if command -v CLIProxyAPI >/dev/null 2>&1; then
74
+ exec CLIProxyAPI --config "$CONFIG_PATH"
75
+ fi
76
+ if command -v cli-proxy-api >/dev/null 2>&1; then
77
+ exec cli-proxy-api --config "$CONFIG_PATH"
78
+ fi
79
+
80
+ # 2) 常见绝对路径(优先常用的 /CLIProxyAPI/CLIProxyAPI)
81
+ try_exec /CLIProxyAPI/CLIProxyAPI
82
+ try_exec /CLIProxyAPI/cli-proxy-api
83
+ try_exec /usr/local/bin/CLIProxyAPI
84
+ try_exec /usr/bin/CLIProxyAPI
85
+ try_exec /bin/CLIProxyAPI
86
+ try_exec /usr/local/bin/cli-proxy-api
87
+ try_exec /usr/bin/cli-proxy-api
88
+ try_exec /bin/cli-proxy-api
89
+
90
+ # 3) 兜底:列目录帮助定位
91
+ echo "FATAL: 找不到 CLIProxyAPI 可执行文件。列出常见目录帮助排查:"
92
+ echo "------ ls -l /CLIProxyAPI ------"
93
+ ls -l /CLIProxyAPI 2>/dev/null || true
94
+ echo "------ which -a CLIProxyAPI / cli-proxy-api ------"
95
+ which -a CLIProxyAPI 2>/dev/null || true
96
+ which -a cli-proxy-api 2>/dev/null || true
97
+ exit 127