mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2025-12-05 20:39:59 -08:00
74 lines
1.6 KiB
Python
Executable File
74 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import socket, sys, struct, time
|
|
|
|
from pypb.server_message_pb2 import ServerMessage
|
|
from pypb.session_commands_pb2 import Command_Register as Reg
|
|
from pypb.commands_pb2 import CommandContainer as Cmd
|
|
from pypb.event_server_identification_pb2 import Event_ServerIdentification as ServerId
|
|
from pypb.response_pb2 import Response
|
|
|
|
HOST = "localhost"
|
|
PORT = 4748
|
|
|
|
CMD_ID = 1
|
|
|
|
def build_reg():
|
|
global CMD_ID
|
|
cmd = Cmd()
|
|
sc = cmd.session_command.add()
|
|
|
|
reg = sc.Extensions[Reg.ext]
|
|
reg.user_name = "testUser"
|
|
reg.email = "test@example.com"
|
|
reg.password = "password"
|
|
|
|
cmd.cmd_id = CMD_ID
|
|
CMD_ID += 1
|
|
return cmd
|
|
|
|
def send(msg):
|
|
packed = struct.pack('>I', len(msg))
|
|
sock.sendall(packed)
|
|
sock.sendall(msg)
|
|
|
|
def print_resp(resp):
|
|
print "<<<"
|
|
print repr(resp)
|
|
m = ServerMessage()
|
|
m.ParseFromString(bytes(resp))
|
|
print m
|
|
|
|
def recv(sock):
|
|
print "< header"
|
|
header = sock.recv(4)
|
|
msg_size = struct.unpack('>I', header)[0]
|
|
print "< ", msg_size
|
|
raw_msg = sock.recv(msg_size)
|
|
print_resp(raw_msg)
|
|
|
|
if __name__ == "__main__":
|
|
address = (HOST, PORT)
|
|
sock = socket.socket()
|
|
|
|
print "Connecting to server ", address
|
|
sock.connect(address)
|
|
|
|
# hack for old xml clients - server expects this and discards first message
|
|
print ">>> xml hack"
|
|
xmlClientHack = Cmd().SerializeToString()
|
|
send(xmlClientHack)
|
|
print sock.recv(60)
|
|
|
|
recv(sock)
|
|
|
|
print ">>> register"
|
|
r = build_reg()
|
|
print r
|
|
msg = r.SerializeToString()
|
|
send(msg)
|
|
recv(sock)
|
|
|
|
print "Done"
|
|
|