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

57 lines
2.4 KiB
Python

import os
import paramiko
pw = os.environ["DEPLOY_PASSWORD"]
base = os.path.dirname(os.path.abspath(__file__))
remote_stack = "/home/wakka/guest-cs-stack"
compose = "docker-compose.chat.yaml -f docker-compose.chat.test7777.yaml"
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect("20.191.152.26", username="wakka", password=pw, timeout=30)
sftp = c.open_sftp()
for name in ["maxkb_chatwoot_bridge.py", "app.py"]:
with open(os.path.join(base, "flask", name), "rb") as fh:
data = fh.read().replace(b"\r\n", b"\n")
with sftp.file(f"/home/wakka/{name}", "w") as rf:
rf.write(data)
with open(os.path.join(base, "guest-cs.test.env"), "rb") as fh:
data = fh.read().replace(b"\r\n", b"\n")
with sftp.file(f"{remote_stack}/guest-cs.test.env", "w") as rf:
rf.write(data)
sftp.close()
cmd = f"""
set -e
cd {remote_stack}
sudo docker compose -f {compose} up -d --force-recreate guest-chat
sleep 40
sudo docker cp /home/wakka/maxkb_chatwoot_bridge.py guest-chat:/opt/guest-cs/maxkb_chatwoot_bridge.py
sudo docker cp /home/wakka/app.py guest-chat:/opt/guest-cs/app.py
# reload gunicorn workers
sudo docker exec guest-chat pkill -HUP gunicorn || sudo docker restart guest-chat
sleep 15
sudo docker exec guest-chat printenv CHATWOOT_AGENT_BOT_TOKEN
sudo docker exec guest-chat python3 -c "
import json, urllib.request, importlib, maxkb_chatwoot_bridge as m
importlib.reload(m)
p={{'event':'conversation_updated','id':3,'account':{{'id':1}},'messages':[{{'id':777777,'content':'你好','message_type':0,'private':False,'conversation_id':3,'account_id':1,'sender':{{'name':'游客'}}}}]}}
print('extract', m._extract_incoming(p))
"
sudo docker exec guest-chat python3 -c "
import json, urllib.request
p={{'event':'conversation_updated','id':3,'account':{{'id':1}},'messages':[{{'id':777776,'content':'你好','message_type':0,'private':False,'conversation_id':3,'account_id':1,'sender':{{'name':'游客'}}}}]}}
req=urllib.request.Request('http://127.0.0.1:7788/webhook/bot1/chatwoot', data=json.dumps(p).encode(), headers={{'Content-Type':'application/json'}}, method='POST')
with urllib.request.urlopen(req, timeout=120) as r:
print('webhook', r.status, r.read()[:300])
"
sleep 5
sudo docker logs guest-chat 2>&1 | grep -iE 'bridge|MaxKB|401|reply_len|橋接' | tail -8
"""
_, o, e = c.exec_command(cmd, timeout=300)
print(o.read().decode(errors="replace"))
print(e.read().decode(errors="replace"))
c.close()