Paillasse/proxy-console/test-manuel.py
Adam Belkacemi 8742bde807 ajoute le proxy console Go et le relais WebSocket vers nova-serialproxy
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-08 09:35:16 +02:00

51 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""Test manuel du proxy-console, comme le ferait le navigateur (étape 9) :
pas de sous-protocole demandé, contrairement au test direct de nova-serialproxy."""
import sys
import time
import websocket
url = sys.argv[1]
commande = sys.argv[2] if len(sys.argv) > 2 else "echo bonjour-syllabus"
def lire(ws, duree=3):
fin = time.time() + duree
sortie = b""
while time.time() < fin:
ws.settimeout(max(0.2, fin - time.time()))
try:
morceau = ws.recv()
except websocket.WebSocketTimeoutException:
break
except websocket.WebSocketConnectionClosedException:
print("[connexion fermée par le serveur]")
break
if isinstance(morceau, str):
morceau = morceau.encode()
if not morceau:
break
sortie += morceau
return sortie
ws = websocket.create_connection(url, timeout=10)
print("=== lecture initiale ===")
sys.stdout.buffer.write(lire(ws, 3))
print("\n=== connexion : eleve ===")
ws.send_binary(b"eleve\r")
sys.stdout.buffer.write(lire(ws, 2))
print("\n=== mot de passe ===")
ws.send_binary(b"eleve\r")
sys.stdout.buffer.write(lire(ws, 2))
print(f"\n=== commande : {commande} ===")
ws.send_binary((commande + "\r").encode())
sys.stdout.buffer.write(lire(ws, 3))
ws.close()
print("\n=== fin ===")