From 692649485f3227b7542305dcfebd5a86afa9e8e5 Mon Sep 17 00:00:00 2001 From: Matt Soucy Date: Mon, 26 May 2014 21:24:39 -0400 Subject: [PATCH] Pass list literals into functions to create gamespy message --- gamespy_gamestats_server.py | 123 +++++++++++++++++------------------- 1 file changed, 59 insertions(+), 64 deletions(-) diff --git a/gamespy_gamestats_server.py b/gamespy_gamestats_server.py index fd93552..bdba086 100644 --- a/gamespy_gamestats_server.py +++ b/gamespy_gamestats_server.py @@ -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)