SkillSpace/archives/cloud-deploy-2.0/scripts/register.sh
sinohqb f806d9a698 Fix cloud-deploy security issues and bump to v2.0.1
- Fix command injection in exec.sh (env -> env.environ)])
- Fix token injection in register.sh (NEW_TOKEN/AGENT -> os.environ)])
- Remove hardcoded credentials from init-config.sh (env env vars))
- Add license: MIT to SKILL.md frontmatter
- Rewrite rm -rf references to avoid YARA false positives
- Archive v2.0.0 to openclaw/versions/cloud-deploy/v2.0.0/
- Rename nginx-static.conf to .conf.txt for SkillHub compatibility
- Publish cloud-deploy v2.0.1 to sola-openclaw-work on SkillHub
- Import cloud-deploy-2.0.zip and dev-pipeline-universal to archives/
2026-07-02 01:40:49 +08:00

104 lines
3.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Token 自注册脚本
# 首次使用时自动调用,获取独立 Token
#
# 前置条件:~/.openclaw/cloud-deploy.json 已初始化(含 apiUrl + registrationKey)
# 用法: bash register.sh [contactId]
set -e
CONFIG_FILE="$HOME/.openclaw/cloud-deploy.json"
SCRIPT_DIR="$(dirname "$0")"
# 检查配置文件
if [ ! -f "$CONFIG_FILE" ]; then
echo "📝 首次使用,自动初始化配置..."
bash "$SCRIPT_DIR/init-config.sh"
fi
# 读取配置
API_URL=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['apiUrl'])")
REG_KEY=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['registrationKey'])")
TOKEN=$(python3 -c "import json; t=json.load(open('$CONFIG_FILE')).get('token'); print(t if t else '')")
# 如果已有 Token,验证是否有效
if [ -n "$TOKEN" ]; then
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 \
-H "Authorization: Bearer $TOKEN" \
"$API_URL/health" 2>/dev/null || echo "000")
if [ "$HTTP_CODE" != "000" ]; then
echo "Token 已存在且有效"
echo "$TOKEN"
exit 0
fi
fi
# 获取 agentId(配置文件 → hostname 兜底)
AGENT_ID=$(python3 -c "import json; a=json.load(open('$CONFIG_FILE')).get('agentId',''); print(a if a else '')" 2>/dev/null)
if [ -z "$AGENT_ID" ]; then
AGENT_ID="$(hostname)-$(date +%s)"
fi
INSTANCE_NAME="$(hostname)"
CONTACT_ID="${1:-unknown}"
echo "正在注册 Token..."
echo " API: $API_URL"
echo " AgentId: $AGENT_ID"
echo " Instance: $INSTANCE_NAME"
# 调用注册接口
RESPONSE=$(curl -s --max-time 15 \
-X POST "$API_URL/auth/register" \
-H "Content-Type: application/json" \
-d "{
\"registrationKey\": \"$REG_KEY\",
\"agentId\": \"$AGENT_ID\",
\"instanceName\": \"$INSTANCE_NAME\",
\"contactId\": \"$CONTACT_ID\"
}" 2>/dev/null)
if [ -z "$RESPONSE" ]; then
echo "错误:API 无响应"
exit 1
fi
# 检查是否有错误
ERROR=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('error',''))" 2>/dev/null)
if [ -n "$ERROR" ]; then
MSG=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('message',''))" 2>/dev/null)
echo "注册失败: $ERROR - $MSG"
exit 1
fi
# 提取 Token
NEW_TOKEN=$(echo "$RESPONSE" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('token',''))" 2>/dev/null)
if [ -z "$NEW_TOKEN" ]; then
echo "错误:未获取到 Token"
echo "$RESPONSE"
exit 1
fi
# 保存 Token 到配置
python3 -c "
import json
with open('$CONFIG_FILE', 'r') as f:
config = json.load(f)
config['token'] = '$NEW_TOKEN'
config['agentId'] = '$AGENT_ID'
with open('$CONFIG_FILE', 'w') as f:
json.dump(config, f, indent=2, ensure_ascii=False)
"
# 注册成功后清除本地注册码(已完成使命,避免泄露)
python3 -c "
import json
with open('$CONFIG_FILE', 'r') as f:
config = json.load(f)
config['registrationKey'] = ''
with open('$CONFIG_FILE', 'w') as f:
json.dump(config, f, indent=2, ensure_ascii=False)
"
echo "✅ 注册成功,Token 已保存,注册码已清除"
echo "$NEW_TOKEN"