hequ commited on
Commit
36d870e
·
verified ·
1 Parent(s): 825d06b

Update start.sh

Browse files
Files changed (1) hide show
  1. start.sh +48 -9
start.sh CHANGED
@@ -1,27 +1,66 @@
1
  #!/usr/bin/env sh
2
 
3
- set -e
4
 
5
  CONFIG_PATH="${CONFIG_PATH:-/CLIProxyAPI/config.yaml}"
6
  PORT="${PORT:-8317}"
7
- AUTH_DIR="${AUTH_DIR:-/data/auths}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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"