From 1d85b1d8573af8368f2d5bf6a77cb4dc7edb4309 Mon Sep 17 00:00:00 2001 From: 10000ge10000 <10000ge10000@users.noreply.github.com> Date: Fri, 13 Mar 2026 18:25:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(env):=20fix=20syntax=20error=20in=20opencla?= =?UTF-8?q?w-env=20and=20update=20upload=20path=20to=20/openclaw-=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- root/usr/bin/openclaw-env | 51 ++++++++++----------- scripts/upload_openlist.sh | 92 +++++++++++++++++++++++--------------- 2 files changed, 81 insertions(+), 62 deletions(-) diff --git a/root/usr/bin/openclaw-env b/root/usr/bin/openclaw-env index 4e0b856..1f50b87 100755 --- a/root/usr/bin/openclaw-env +++ b/root/usr/bin/openclaw-env @@ -623,29 +623,30 @@ do_factory_reset() { log_info "出厂设置已恢复,Gateway 重启中..." } -# ── 离线安装 (从本地文件安装 Node.js + OpenClaw) ── - do_setup - ;; - ;; - check) - do_check - ;; - upgrade) - do_upgrade - ;; - node) - download_node "$NODE_VERSION" - ;; - factory-reset) - do_factory_reset - ;; - *) - echo "" - echo " setup — 完整安装 (下载 Node.js + pnpm + OpenClaw)" - echo " check — 检查环境状态" - echo " upgrade — 升级 OpenClaw 到最新版" - echo " node — 仅下载/更新 Node.js" - echo " factory-reset — 恢复出厂设置 (清除所有配置)" - exit 1 - ;; +# ── 主入口 ── +case "${1:-}" in +setup) +do_setup +;; +check) +do_check +;; +upgrade) +do_upgrade +;; +node) +download_node "$NODE_VERSION" +;; +factory-reset) +do_factory_reset +;; +*) +echo "" +echo " setup — 完整安装 (下载 Node.js + pnpm + OpenClaw)" +echo " check — 检查环境状态" +echo " upgrade — 升级 OpenClaw 到最新版" +echo " node — 仅下载/更新 Node.js" +echo " factory-reset — 恢复出厂设置 (清除所有配置)" +exit 1 +;; esac diff --git a/scripts/upload_openlist.sh b/scripts/upload_openlist.sh index df1c6ac..270d782 100755 --- a/scripts/upload_openlist.sh +++ b/scripts/upload_openlist.sh @@ -1,49 +1,67 @@ #!/bin/sh -# ============================================================================ -# 上传构建产物到 OpenList 软件源 -# ============================================================================ set -e -if [ -z "$OPENLIST_TOKEN" ]; then - echo "错误: 未提供 OPENLIST_TOKEN 环境变量" - exit 1 +SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) +PKG_DIR=$(cd "$SCRIPT_DIR/.." && pwd) +DIST_DIR="${1:-$PKG_DIR/dist}" + +if [ -z "$OPENLIST_URL" ]; then +echo "错误: 请设置 OPENLIST_URL 环境变量" +exit 1 fi -DIST_DIR="${1:-dist}" -if [ ! -d "$DIST_DIR" ]; then - echo "错误: 产物目录不存在: $DIST_DIR" - exit 1 +if [ -z "$OPENLIST_TOKEN" ] && { [ -z "$OPENLIST_USER" ] || [ -z "$OPENLIST_PASS" ]; }; then +echo "错误: 请设置登录凭据" +exit 1 fi -API_URL="https://list.910501.xyz/api/packages" +UPLOAD_ROOT="${OPENLIST_PATH:-/}" +PKG_VERSION=$(cat "$PKG_DIR/VERSION" 2>/dev/null | tr -d '[:space:]' || echo "unknown") +UPLOAD_ROOT="${UPLOAD_ROOT%/}" +UPLOAD_SUBDIR="openclaw-在线安装" +OPENLIST_URL="${OPENLIST_URL%/}" + +get_token() { +if [ -n "$OPENLIST_TOKEN" ]; then echo "$OPENLIST_TOKEN"; return; fi +local resp=$(curl -s -X POST "${OPENLIST_URL}/api/auth/login" \ +-H "Content-Type: application/json" \ +-d "{\"username\":\"${OPENLIST_USER}\",\"password\":\"${OPENLIST_PASS}\"}") +local token=$(echo "$resp" | grep -o '"token":"[^"]*"' | sed 's/"token":"//;s/"//' | head -n 1) +if [ -z "$token" ]; then exit 1; fi +echo "$token" +} + +create_remote_dir() { +curl -s -X POST "${OPENLIST_URL}/api/fs/mkdir" \ +-H "Authorization: ${1}" \ +-H "Content-Type: application/json" \ +-d "{\"path\":\"${2}\"}" >/dev/null 2>&1 || true +} + +upload_file() { +local filename=$(basename "$2") +echo " 上传: ${filename} ..." +local resp=$(curl -s -X PUT "${OPENLIST_URL}/api/fs/put" \ +-H "Authorization: ${1}" \ +-H "File-Path: ${3}/${filename}" \ +-H "Content-Type: application/octet-stream" \ +--data-binary "@${2}" \ +--max-time 3600) +local code=$(echo "$resp" | grep -o '"code":[0-9]*' | grep -o '[0-9]*' | head -n 1) +if [ "$code" = "200" ]; then echo " [✓] 上传成功"; else echo " [✗] 失败: $resp"; fi +} + UPLOAD_FILES=$(find "$DIST_DIR" -type f -name "*.run" -o -name "*.ipk" 2>/dev/null) +if [ -z "$UPLOAD_FILES" ]; then echo "错误: 未找到可上传文件"; exit 1; fi -if [ -z "$UPLOAD_FILES" ]; then - echo "错误: 在 $DIST_DIR 中没有找到 .run 或 .ipk 文件" - exit 1 -fi +TOKEN=$(get_token) +REMOTE_DIR="${UPLOAD_ROOT}/${UPLOAD_SUBDIR}/v${PKG_VERSION}" +REMOTE_DIR=$(echo "$REMOTE_DIR" | sed 's#^//#/#g') -echo "找到以下文件准备上传:" -echo "$UPLOAD_FILES" +echo "创建远程目录: ${REMOTE_DIR}" +create_remote_dir "$TOKEN" "$REMOTE_DIR" -for file in $UPLOAD_FILES; do - filename=$(basename "$file") - echo "--------------------------------------------------" - echo "正在上传: $filename" - - RESPONSE=$(curl -s -X POST "$API_URL" \ - -H "Authorization: Bearer $OPENLIST_TOKEN" \ - -F "file=@$file") - - HTTP_CODE=$(echo "$RESPONSE" | grep -o 'HTTP/1.1 [0-9]*' | awk '{print $2}') - if echo "$RESPONSE" | grep -q '"success":true' || echo "$RESPONSE" | grep -q 'ok'; then - echo "✅ 上传成功: $filename" - else - echo "❌ 上传失败: $filename" - echo "返回内容: $RESPONSE" - exit 1 - fi +for f in $UPLOAD_FILES; do +upload_file "$TOKEN" "$f" "$REMOTE_DIR" done - -echo "==================================================" -echo "🎉 所有文件已成功上传至 OpenList!" +echo "✅ 上传完成!"