Files
ai-customer-service/guest-cs-stack/_fix_chatwoot_confirm.py
T
2026-08-15 14:51:51 +08:00

64 lines
1.7 KiB
Python

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)
fix = r"""
sudo docker exec guest-chat bundle exec rails runner "
email = 'admin@localhost.local'
user = User.find_by(email: email)
if user
user.confirm if user.respond_to?(:confirm)
user.update!(confirmed_at: Time.current) if user.respond_to?(:confirmed_at) && user.confirmed_at.nil?
puts \"confirmed user id=#{user.id} confirmed_at=#{user.confirmed_at}\"
else
puts 'user not found'
end
"
"""
print(">>> confirm admin user")
_, o, e = c.exec_command(fix, timeout=120)
print(o.read().decode())
print(e.read().decode())
# test guest-chat/new with csrf
test = r"""
python3 <<'PY'
import re, json, urllib.request
req = urllib.request.Request('http://127.0.0.1:7777/guest-customer-service')
with urllib.request.urlopen(req, timeout=15) as r:
html = r.read().decode()
m = re.search(r'"csrf_token":\s*"([^"]+)"', html)
csrf = m.group(1) if m else ''
print('csrf', csrf[:20] + '...')
post = urllib.request.Request(
'http://127.0.0.1:7777/guest-chat/new',
data=b'{}',
headers={'Content-Type': 'application/json', 'X-CSRF-Token': csrf},
method='POST',
)
try:
with urllib.request.urlopen(post, timeout=30) as r:
body = r.read().decode()
print('status', r.status)
print('body', body[:300])
except Exception as e:
if hasattr(e, 'read'):
print('error', e.read().decode()[:400])
else:
print('error', e)
PY
"""
print(">>> test guest-chat/new")
_, o, e = c.exec_command(test, timeout=60)
print(o.read().decode())
print(e.read().decode())
c.close()