mirror of
https://github.com/hotwa/luci-app-openclaw.git
synced 2026-03-30 20:25:44 +00:00
fix(env): fix syntax error in openclaw-env and update upload path to /openclaw-在线安装
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 "✅ 上传完成!"
|
||||
|
||||
Reference in New Issue
Block a user