Files
2026-08-15 14:51:51 +08:00

51 lines
2.2 KiB
Python

"""Diagnose remote 7777 stuck: guest-new + messages API + chatwoot health."""
import os
import paramiko
pw = os.environ["DEPLOY_PASSWORD"]
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect("20.191.152.26", username="wakka", password=pw, timeout=30)
script = r"""
set -e
echo '=== docker ps ==='
sudo docker ps --filter name=guest-chat --format 'table {{.Names}}\t{{.Status}}'
echo '=== chatwoot rails :3000 ==='
curl -s -o /dev/null -w 'rails root: %{http_code}\n' http://127.0.0.1:3000/ 2>/dev/null || echo rails curl failed
sudo docker exec guest-chat bash -c 'curl -s -o /dev/null -w "internal rails: %{http_code}\n" http://127.0.0.1:3000/' 2>/dev/null || true
echo '=== guest-chat/new ==='
rm -f /tmp/gc.jar /tmp/g.html
curl -s -c /tmp/gc.jar http://127.0.0.1:7777/guest-customer-service -o /tmp/g.html
csrf=$(python3 -c "import re; print(re.search(r'\"csrf_token\":\s*\"([^\"]+)\"', open('/tmp/g.html').read()).group(1))")
NEW=$(curl -s -b /tmp/gc.jar -X POST http://127.0.0.1:7777/guest-chat/new -H 'Content-Type: application/json' -H "X-CSRF-Token: $csrf" -d '{}')
echo "$NEW" | head -c 400
echo
wt=$(python3 -c "import json,sys; d=json.loads(open('/dev/stdin').read()); print(d.get('widget_token',''))" <<< "$NEW")
echo widget_token_len=${#wt}
echo '=== messages via flask proxy ==='
curl -s -o /dev/null -w 'proxy messages: %{http_code}\n' "http://127.0.0.1:7777/api/v1/widget/messages?website_token=j1UAjqBgZMWQ8WfczgJSymQx&cw_conversation=$wt"
curl -s "http://127.0.0.1:7777/api/v1/widget/messages?website_token=j1UAjqBgZMWQ8WfczgJSymQx&cw_conversation=$wt" | head -c 500
echo
echo '=== messages direct chatwoot ==='
curl -s -o /dev/null -w 'direct messages: %{http_code}\n' "http://127.0.0.1:3000/api/v1/widget/messages?website_token=j1UAjqBgZMWQ8WfczgJSymQx&cw_conversation=$wt" 2>/dev/null || echo direct failed
echo '=== FRONTEND_URL ==='
sudo docker exec guest-chat printenv FRONTEND_URL 2>/dev/null || true
sudo docker exec guest-chat printenv CHATWOOT_GUEST_BASE_URL 2>/dev/null || true
echo '=== recent logs ==='
sudo docker logs guest-chat --tail 25 2>&1
"""
_, o, e = c.exec_command(script, timeout=120)
print(o.read().decode())
err = e.read().decode()
if err:
print("ERR:", err[:800])
c.close()