| | #!/usr/bin/env sh |
| |
|
| | set -eu |
| |
|
| | |
| | CONFIG_PATH="${CONFIG_PATH:-/tmp/config.yaml}" |
| | PORT="${PORT:-8317}" |
| | AUTH_DIR="${AUTH_DIR:-/tmp/auths}" |
| |
|
| | |
| | REMOTE_SECRET="${REMOTE_SECRET:-${MANAGEMENT_PASSWORD:-}}" |
| | ALLOW_REMOTE="${ALLOW_REMOTE:-true}" |
| | DISABLE_PANEL="${DISABLE_PANEL:-false}" |
| | DEBUG="${DEBUG:-false}" |
| | LOG_TO_FILE="${LOG_TO_FILE:-false}" |
| | USAGE_STATS_ENABLED="${USAGE_STATS_ENABLED:-true}" |
| | REQUEST_RETRY="${REQUEST_RETRY:-3}" |
| | SWITCH_PROJECT="${SWITCH_PROJECT:-true}" |
| | SWITCH_PREVIEW_MODEL="${SWITCH_PREVIEW_MODEL:-true}" |
| |
|
| | |
| | mkdir -p "$(dirname "$CONFIG_PATH")" "$AUTH_DIR" || true |
| |
|
| | |
| | API_KEYS_INPUT="${API_KEYS:-}" |
| | API_KEYS_YAML="[]" |
| | if [ -n "$API_KEYS_INPUT" ]; then |
| | tmp="/tmp/_keys.yaml" |
| | : > "$tmp" |
| | |
| | echo "$API_KEYS_INPUT" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed '/^$/d' | \ |
| | while IFS= read -r key; do |
| | esc=$(printf '%s' "$key" | sed 's/\\/\\\\/g; s/"/\\"/g') |
| | printf ' - "%s"\n' "$esc" >> "$tmp" |
| | done |
| | if [ -s "$tmp" ]; then |
| | API_KEYS_YAML="\n$(cat "$tmp")" |
| | fi |
| | fi |
| |
|
| | |
| | cat > "$CONFIG_PATH" <<EOF |
| | port: ${PORT} |
| | remote-management: |
| | allow-remote: ${ALLOW_REMOTE} |
| | secret-key: "${REMOTE_SECRET}" |
| | disable-control-panel: ${DISABLE_PANEL} |
| | auth-dir: "${AUTH_DIR}" |
| | |
| | debug: ${DEBUG} |
| | logging-to-file: ${LOG_TO_FILE} |
| | usage-statistics-enabled: ${USAGE_STATS_ENABLED} |
| | request-retry: ${REQUEST_RETRY} |
| | |
| | quota-exceeded: |
| | switch-project: ${SWITCH_PROJECT} |
| | switch-preview-model: ${SWITCH_PREVIEW_MODEL} |
| | |
| | api-keys:${API_KEYS_YAML} |
| | EOF |
| |
|
| | echo "INFO: config.yaml 已生成于 $CONFIG_PATH" |
| | echo "INFO: auth-dir = $AUTH_DIR" |
| |
|
| | |
| | if [ -n "${PGSTORE_DSN:-}" ]; then |
| | export PGSTORE_LOCAL_PATH="${PGSTORE_LOCAL_PATH:-/tmp}" |
| | mkdir -p "${PGSTORE_LOCAL_PATH}/pgstore" || true |
| | fi |
| |
|
| | |
| | exec_with_cd() { |
| | cd /tmp || true |
| | exec "$1" --config "$CONFIG_PATH" |
| | } |
| |
|
| | |
| | if command -v CLIProxyAPI >/dev/null 2>&1; then |
| | exec_with_cd "$(command -v CLIProxyAPI)" |
| | fi |
| | if command -v cli-proxy-api >/dev/null 2>&1; then |
| | exec_with_cd "$(command -v cli-proxy-api)" |
| | fi |
| |
|
| | |
| | for p in \ |
| | /CLIProxyAPI/CLIProxyAPI \ |
| | /CLIProxyAPI/cli-proxy-api \ |
| | /usr/local/bin/CLIProxyAPI \ |
| | /usr/local/bin/cli-proxy-api \ |
| | /usr/bin/CLIProxyAPI \ |
| | /usr/bin/cli-proxy-api \ |
| | /bin/CLIProxyAPI \ |
| | /bin/cli-proxy-api |
| | do |
| | if [ -x "$p" ]; then |
| | echo "INFO: 使用可执行文件: $p" |
| | exec_with_cd "$p" |
| | fi |
| | done |
| |
|
| | |
| | echo "FATAL: 找不到 CLIProxyAPI 可执行文件。列出常见目录帮助排查:" >&2 |
| | echo "------ ls -l /CLIProxyAPI ------" >&2 |
| | ls -l /CLIProxyAPI 2>/dev/null || true |
| | echo "------ which -a CLIProxyAPI / cli-proxy-api ------" >&2 |
| | which -a CLIProxyAPI 2>/dev/null || true |
| | which -a cli-proxy-api 2>/dev/null || true |
| | exit 127 |
| |
|