mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-25 08:03:58 -05:00
Restore register.py script removed in 5ace0dd892
This is intended to be an example of using the protocol from something other than C++ and to be a building block for future test clients.
This commit is contained in:
parent
f4ae08f8b1
commit
ebc4011559
10
servatrice/scripts/mk_pypb.sh
Executable file
10
servatrice/scripts/mk_pypb.sh
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
SRC_DIR=../../common/pb/
|
||||
DST_DIR=./pypb
|
||||
|
||||
rm -rf "$DST_DIR"
|
||||
mkdir -p "$DST_DIR"
|
||||
protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/*.proto
|
||||
touch "$DST_DIR/__init__.py"
|
||||
|
||||
73
servatrice/scripts/register.py
Executable file
73
servatrice/scripts/register.py
Executable file
|
|
@ -0,0 +1,73 @@
|
|||
#!/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 = 4747
|
||||
|
||||
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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user