summaryrefslogtreecommitdiff
path: root/servergreps/hercules/src/tables.py
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-10-05 01:58:52 +0300
committerAndrei Karas <akaras@inbox.ru>2016-10-05 01:58:52 +0300
commit328c6d6c1e37eaa6e0d675063bf4e8ffec275636 (patch)
treec92d4a10761c701aa2d3731c0dba9a47b0f3c232 /servergreps/hercules/src/tables.py
parent36058d397b95da6730dd081c79aa1811afcbea30 (diff)
downloadtools-328c6d6c1e37eaa6e0d675063bf4e8ffec275636.tar.gz
tools-328c6d6c1e37eaa6e0d675063bf4e8ffec275636.tar.bz2
tools-328c6d6c1e37eaa6e0d675063bf4e8ffec275636.tar.xz
tools-328c6d6c1e37eaa6e0d675063bf4e8ffec275636.zip
servergreps: add parsing recv packet tables.
Diffstat (limited to 'servergreps/hercules/src/tables.py')
-rwxr-xr-xservergreps/hercules/src/tables.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/servergreps/hercules/src/tables.py b/servergreps/hercules/src/tables.py
new file mode 100755
index 0000000..ccfa4e0
--- /dev/null
+++ b/servergreps/hercules/src/tables.py
@@ -0,0 +1,65 @@
+#! /usr/bin/env python2
+# -*- coding: utf8 -*-
+#
+# Copyright (C) 2015-2016 Evol Online
+# Author: Andrei Karas (4144)
+
+import re
+import os
+
+from src.packetdb import PacketDb
+from src.preproc import PreProc
+from src.utils import Utils
+
+filt = re.compile(".+[.](c|h)", re.IGNORECASE)
+
+class Tables:
+ inPacketsSorted = []
+ inPackets = dict()
+ knownLenPackets = dict()
+
+ clientpacketre = re.compile(
+ "^(?P<packet>[0-9a-fA-F]+) (?P<len>[\w-]+)")
+
+ def collectInPackets(self, packetsH):
+ with open(packetsH, "r") as f:
+ for line in f:
+ m = self.clientpacketre.search(line)
+ if m is not None:
+ data = m.group("packet").lower()
+ while len(data) < 4:
+ data = "0" + data
+ self.inPackets[data] = \
+ (int(m.group("len")), "")
+ self.knownLenPackets[data] = int(m.group("len"))
+
+ def sortInPackets(self):
+ for packet in self.inPackets:
+ self.inPacketsSorted.append(packet)
+ self.inPacketsSorted.sort()
+
+
+ def findVersion(self, srcPath, packetDir):
+ name = packetDir[:4] + "_" + packetDir[4:6] + "_" + packetDir[6:8]
+ files = os.listdir(srcPath)
+ for file1 in files:
+ if file1[0] == ".":
+ continue
+ file2 = os.path.abspath(srcPath + os.path.sep + file1)
+ if os.path.isdir(file2) and file1.find(name) > 0:
+ self.collectInPackets(file2 + os.path.sep + "recvpackets.txt")
+ self.sortInPackets()
+ return
+
+ def processPackets(self, codeDir, packetDir, packetVersion):
+# namedPacketsPath = packetDir + "/src/" + self.dirName + "/packets_struct.h"
+ srcPath = "../links/" + self.dirName
+# packetsDbPath = "../links/" + codeDir + "/db/packet_db.txt"
+# serverInPacketsHPath = packetDir + "/src/" + self.dirName + "/packets.h"
+# serverLoginInPackets = packetDir + "/src/" + self.dirName + "/lclif.c"
+# serverCharPackets = packetDir + "/src/" + self.dirName + "/char.c"
+# self.collectNamedPackets(namedPacketsPath)
+# self.collectOutPackets(srcPath)
+ self.findVersion(srcPath, packetDir)
+# self.collectCharInPackets(serverCharPackets);
+# self.sortOutPackets()