summaryrefslogtreecommitdiff
path: root/servergreps/hercules/src/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'servergreps/hercules/src/utils.py')
-rwxr-xr-xservergreps/hercules/src/utils.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/servergreps/hercules/src/utils.py b/servergreps/hercules/src/utils.py
index b89051c..de42a36 100755
--- a/servergreps/hercules/src/utils.py
+++ b/servergreps/hercules/src/utils.py
@@ -10,6 +10,19 @@ class Utils:
casere = re.compile("^case 0x(?P<packet>[0-9a-fA-F]+)[:]")
charParseFunctionre = re.compile(
"(?P<function>chr->[0-9a-zA-Z_>-]+)([(]|[ ][(])");
+ ourPacketre = re.compile(
+ "(WFIFOW|WBUFW)([ ]*)[(]([ ]*)([\w>_-]+),([ ]*)" +
+ "(?P<offset>0)([ ]*)[)]([ ]*)=([ ]*)0x(?P<packet>[0-9a-fA-F]+)([ ]*)[;]")
+ ourPacketre2 = re.compile("PacketType([ ]*)=([ ]*)(?P<name>[\w_]+);")
+ ourPacketre3 = re.compile(
+ "(WFIFOW|WBUFW)([ ]*)[(]([ ]*)([\w>_-]+),([ ]*)" +
+ "(?P<offset>0)([ ]*)[)]([ ]*)=([ ]*)(?P<packet>[0-9\w]+)([ ]*)[;]")
+ ourPacketre4 = re.compile(" cmd([ ]*)=([ ]*)0x(?P<packet>[0-9a-fA-F]+);")
+ ourPacketre5 = re.compile(
+ "(WFIFOW|WBUFW)([ ]*)[(]([ ]*)([\w>_-]+),([ ]*)" +
+ "(count[*]p_len)([ ]*)[)]([ ]*)=([ ]*)(?P<packet>[0-9\w]+)([ ]*)[;]")
+ ourPacketre6 = re.compile("int cmde([ ]*)=([ ]*)0x(?P<packet>[0-9a-fA-F]+);")
+ ourPacketre7 = re.compile(" (packet|packet_num|PacketType|packet_type)([ ]*)=([ ]*)0x(?P<packet>[0-9a-fA-F]+);")
@staticmethod
def enumCasePackets(fileName, startCode):
@@ -44,3 +57,60 @@ class Utils:
else:
yield (func, packets[0])
break
+
+
+ @staticmethod
+ def getOutPackets(line, server):
+ packets = []
+ m = Utils.ourPacketre4.findall(line)
+ if len(m) > 0:
+ for str in m:
+ data = str[2]
+ while len(data) < 4:
+ data = "0" + data
+ server.addServerPacket(data)
+ m = Utils.ourPacketre5.findall(line)
+ if len(m) > 0:
+ for str in m:
+ data = str[9]
+ while len(data) < 4:
+ data = "0" + data
+ server.addServerPacket(data)
+ m = Utils.ourPacketre.findall(line)
+ if len(m) == 0:
+ m = Utils.ourPacketre3.findall(line)
+ if len(m) > 0:
+ for str in m:
+ if str[9] == "0":
+ continue
+ data = str[9]
+ if data == "cmd":
+ continue
+ while len(data) < 4:
+ data = "0" + data
+ server.addServerPacket(data)
+ m = Utils.ourPacketre2.findall(line)
+ if len(m) > 0:
+ for str in m:
+ if str[2] == "0":
+ continue
+ data = str[2]
+ if len(data) > 2 and data[0:2] == "0x":
+ data = data[2:]
+ while len(data) < 4:
+ data = "0" + data
+ server.addServerPacket(data)
+ m = Utils.ourPacketre6.findall(line)
+ if len(m) > 0:
+ for str in m:
+ data = str[2]
+ while len(data) < 4:
+ data = "0" + data
+ server.addServerPacket(data)
+ m = Utils.ourPacketre7.findall(line)
+ if len(m) > 0:
+ for str in m:
+ data = str[3]
+ while len(data) < 4:
+ data = "0" + data
+ server.addServerPacket(data)