Pass list literals into functions to create gamespy message

This commit is contained in:
Matt Soucy
2014-05-26 21:24:39 -04:00
parent d1a6309875
commit 692649485f

View File

@@ -79,12 +79,12 @@ class Gamestats(LineReceiver):
self.challenge = utils.generate_random_str(10, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
# The first command sent to the client is always a login challenge containing the server challenge key.
msg_d = []
msg_d.append(('__cmd__', "lc"))
msg_d.append(('__cmd_val__', "1"))
msg_d.append(('challenge', self.challenge))
msg_d.append(('id', "1"))
msg = gs_query.create_gamespy_message(msg_d)
msg = gs_query.create_gamespy_message([
('__cmd__', "lc"),
('__cmd_val__', "1"),
('challenge', self.challenge),
('id', "1"),
])
self.log(logging.DEBUG, "SENDING: '%s'..." % msg)
@@ -103,25 +103,22 @@ class Gamestats(LineReceiver):
commands, self.remaining_message = gs_query.parse_gamespy_message(msg)
#logger.log(logging.DEBUG, "STATS RESPONSE: %s" % msg)
for data_parsed in commands:
print data_parsed
cmds = {
"auth": self.perform_auth,
"authp": self.perform_authp,
"ka": self.perform_ka,
"setpd": self.perform_setpd,
"getpd": self.perform_getpd,
"newgame": self.perform_newgame,
"updgame": self.perform_updgame,
}
def cmd_err(data_parsed):
logger.log(logging.DEBUG, "Found unknown command, don't know how to handle '%s'.", data_parsed['__cmd__'])
if data_parsed['__cmd__'] == "auth":
self.perform_auth(data_parsed)
elif data_parsed['__cmd__'] == "authp":
self.perform_authp(data_parsed)
elif data_parsed['__cmd__'] == "ka":
self.perform_ka(data_parsed)
elif data_parsed['__cmd__'] == "setpd":
self.perform_setpd(data_parsed, msg)
elif data_parsed['__cmd__'] == "getpd":
self.perform_getpd(data_parsed)
elif data_parsed['__cmd__'] == "newgame":
self.perform_newgame(data_parsed)
elif data_parsed['__cmd__'] == "updgame":
self.perform_updgame(data_parsed)
else:
logger.log(logging.DEBUG, "Found unknown command, don't know how to handle '%s'." % data_parsed['__cmd__'])
for data_parsed in commands:
print(data_parsed)
cmds.get(data_parsed['__cmd__'], cmd_err)(data_parsed)
def perform_auth(self, data_parsed):
self.log(logging.DEBUG, "Parsing 'auth'...")
@@ -131,13 +128,13 @@ class Gamestats(LineReceiver):
self.session = utils.generate_random_number_str(10)
msg_d = []
msg_d.append(('__cmd__', "lc"))
msg_d.append(('__cmd_val__', "2"))
msg_d.append(('sesskey', self.session))
msg_d.append(('proof', 0))
msg_d.append(('id', "1"))
msg = gs_query.create_gamespy_message(msg_d)
msg = gs_query.create_gamespy_message([
('__cmd__', "lc"),
('__cmd_val__', "2"),
('sesskey', self.session),
('proof', 0),
('id', "1"),
])
self.log(logging.DEBUG, "SENDING: '%s'..." % msg)
@@ -217,11 +214,11 @@ class Gamestats(LineReceiver):
self.sessions[profileid] = self
msg_d = []
msg_d.append(('__cmd__', "pauthr"))
msg_d.append(('__cmd_val__', profileid))
msg_d.append(('lid', self.lid))
msg = gs_query.create_gamespy_message(msg_d)
msg = gs_query.create_gamespy_message([
('__cmd__', "pauthr"),
('__cmd_val__', profileid),
('lid', self.lid),
])
self.profileid = int(profileid)
@@ -234,10 +231,10 @@ class Gamestats(LineReceiver):
pass
def perform_ka(self, data_parsed):
msg_d = []
msg_d.append(('__cmd__', "ka"))
msg_d.append(('__cmd_val__', ""))
msg = gs_query.create_gamespy_message(msg_d)
msg = gs_query.create_gamespy_message([
('__cmd__', "ka"),
('__cmd_val__', ""),
])
self.log(logging.DEBUG, "SENDING: '%s'..." % msg)
@@ -246,13 +243,13 @@ class Gamestats(LineReceiver):
return
def perform_setpd(self, data_parsed, data):
msg_d = []
msg_d.append(('__cmd__', "setpdr"))
msg_d.append(('__cmd_val__', 1))
msg_d.append(('lid', self.lid))
msg_d.append(('pid', self.profileid))
msg_d.append(('mod', int(time.time())))
msg = gs_query.create_gamespy_message(msg_d)
msg = gs_query.create_gamespy_message([
('__cmd__', "setpdr"),
('__cmd_val__', 1),
('lid', self.lid),
('pid', self.profileid),
('mod', int(time.time())),
])
self.log(logging.DEBUG, "SENDING: '%s'..." % msg)
@@ -280,7 +277,6 @@ class Gamestats(LineReceiver):
def perform_getpd(self, data_parsed):
profile = self.db.pd_get(self.profileid, data_parsed['dindex'], data_parsed['ptype'])
data = ""
keys = data_parsed['keys'].split('\x01')
profile_data = None
@@ -291,25 +287,24 @@ class Gamestats(LineReceiver):
if profile_data != None:
profile_data = profile_data[0][0]
for key in keys:
if key != "__cmd__" and key != "__cmd_val__" and key != "":
data += "\\"
data += key
data += "\\"
if key in profile_data:
data += profile_data[key]
data = ""
for key in (key for key in keys if key not in ("__cmd__", "__cmd_val__", "")):
data += "\\" + key + "\\"
# this WILL error if profile_data isn't properly set above
if key in profile_data:
data += profile_data[key]
modified = int(time.time())
msg_d = []
msg_d.append(('__cmd__', "getpdr"))
msg_d.append(('__cmd_val__', 1))
msg_d.append(('lid', self.lid))
msg_d.append(('pid', self.profileid))
msg_d.append(('mod', modified))
msg_d.append(('length', len(data)))
msg_d.append(('data', data))
msg = gs_query.create_gamespy_message(msg_d)
msg = gs_query.create_gamespy_message([
('__cmd__', "getpdr"),
('__cmd_val__', 1),
('lid', self.lid),
('pid', self.profileid),
('mod', modified),
('length', len(data)),
('data', data),
])
self.log(logging.DEBUG, "SENDING: '%s'..." % msg)