File size: 2,799 Bytes
df25c58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash
set -e

rm -f /root/.openclaw/openclaw.json

mkdir -p /root/.openclaw/sessions
mkdir -p /root/.openclaw/workspace

# 根据 Secrets 自动选择 provider
if [ -n "$GEMINI_API_KEY" ]; then
  PROVIDER="google"
  API_KEY_VAR="$GEMINI_API_KEY"
  BASE_URL_VAR="https://generativelanguage.googleapis.com/v1beta"
  MODEL_VAR="$MODEL"
  PRIMARY_MODEL="google/$MODEL_VAR"
  API_TYPE="google-generative-ai"
else
  PROVIDER="openai"
  API_KEY_VAR="$OPENAI_API_KEY"
  CLEAN_BASE=$(echo "$OPENAI_API_BASE" | sed "s|/chat/completions||g" | sed "s|/v1/|/v1|g" | sed "s|/v1$|/v1|g")
  BASE_URL_VAR="$CLEAN_BASE"
  MODEL_VAR="$MODEL"
  PRIMARY_MODEL="openai/$MODEL_VAR"
  API_TYPE="openai-completions"
fi

cat > /root/.openclaw/openclaw.json <<EOF
{
  "models": {
    "providers": {
      "$PROVIDER": {
        "baseUrl": "$BASE_URL_VAR",
        "apiKey": "$API_KEY_VAR",
        "api": "$API_TYPE",
        "models": [{ "id": "$MODEL_VAR", "name": "$MODEL_VAR", "contextWindow": 128000 }]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "$PRIMARY_MODEL"
      }
    }
  },
  "gateway": {
    "mode": "local",
    "bind": "lan",
    "port": $PORT,
    "trustedProxies": ["0.0.0.0/0", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"],
    "auth": {
      "mode": "token",
      "token": "$OPENCLAW_GATEWAY_PASSWORD"
    },
    "controlUi": {
      "allowInsecureAuth": true,
      "allowedOrigins": ["*"]
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "$TELEGRAM_BOT_TOKEN"
    }
  }
}
EOF

echo "=== openclaw.json content ==="
cat /root/.openclaw/openclaw.json
echo "=== end ==="

# 启动网关(后台运行)
openclaw gateway run --port $PORT &
GATEWAY_PID=$!

# 等待网关完全启动
sleep 8

# 自动批准 Telegram 配对(支持表格和旧格式)
echo "Starting Telegram auto-pairing..."
for i in {1..10}; do
    PAIR_OUTPUT=$(openclaw pairing list 2>/dev/null || true)
    echo "Attempt $i: pairing list output:"
    echo "$PAIR_OUTPUT"

    CODE=""
    CODE=$(echo "$PAIR_OUTPUT" | grep -oP 'Pairing code: \K[A-Z0-9]{7,}' | head -1)
    if [ -z "$CODE" ]; then
        CODE=$(echo "$PAIR_OUTPUT" | awk '/^│ Code/ {getline; split($0, a, "│"); gsub(/^ +| +$/, "", a[2]); if (a[2] ~ /^[A-Z0-9]{7,}$/) print a[2]}' | head -1)
    fi
    if [ -z "$CODE" ]; then
        CODE=$(echo "$PAIR_OUTPUT" | grep -oE '[A-Z0-9]{7,}' | grep -v "PAIRING" | grep -v "REQUEST" | head -1)
    fi

    if [ -n "$CODE" ]; then
        echo "Found pairing code: $CODE"
        openclaw pairing approve telegram "$CODE"
        echo "Approval sent. Bot should now respond."
        break
    else
        echo "No pending pairing code found (attempt $i/10). Waiting 5 seconds..."
        sleep 5
    fi
done

wait $GATEWAY_PID