mirror of
https://github.com/barronwaffles/dwc_network_server_emulator.git
synced 2026-09-30 22:06:48 -05:00
Pass list literals into functions to create gamespy message
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user