diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-09-10 02:32:39 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-09-10 02:32:39 +0300 |
commit | 0c4845fbb0dac4e96e85ae725b00b2aa79116e57 (patch) | |
tree | 2e7222046f363a6c710417aa30bc4d543edf7f2e /servergreps/hercules/src/server.py | |
parent | 786a270a6bbf68741f21ce69139bc524137fa06f (diff) | |
download | tools-0c4845fbb0dac4e96e85ae725b00b2aa79116e57.tar.gz tools-0c4845fbb0dac4e96e85ae725b00b2aa79116e57.tar.bz2 tools-0c4845fbb0dac4e96e85ae725b00b2aa79116e57.tar.xz tools-0c4845fbb0dac4e96e85ae725b00b2aa79116e57.zip |
servergreps: add support for parsing packets from server (2013 and 2014)
Diffstat (limited to 'servergreps/hercules/src/server.py')
-rwxr-xr-x | servergreps/hercules/src/server.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/servergreps/hercules/src/server.py b/servergreps/hercules/src/server.py new file mode 100755 index 0000000..c70d411 --- /dev/null +++ b/servergreps/hercules/src/server.py @@ -0,0 +1,57 @@ +#! /usr/bin/env python2 +# -*- coding: utf8 -*- +# +# Copyright (C) 2015-2016 Evol Online +# Author: Andrei Karas (4144) + +import os +import re + +class Server: + packetre = re.compile( + "([ ]*)HEADER_(?P<type>[A-Z][A-Z])_(?P<name>[A-Z0-9_]+)([ ]*)=" + + "([ ]*)0x(?P<packet>[0-9a-fA-F]+),") + + def __init__(self): + self.outPackets = set() + self.inPackets = set() + self.outPacketsSorted = [] + self.inPacketsSorted = [] + self.idToName = dict() + + def collectPackets(self): + with open("../links/" + self.dirName + "/packets.txt", "r") as f: + for line in f: + m = self.packetre.search(line) + if m is not None: + data = m.group("packet").lower() + packetType = m.group("type") + partName = m.group("name") + if len(data) > 2 and data[:2] == "0x": + data = data[2:] + while len(data) < 4: + data = "0" + data + if packetType in ("CA", "CH", "CZ"): + self.inPackets.add(data) + if packetType in ("AC", "HC", "ZC"): + self.outPackets.add(data) + self.idToName[data] = "HEADER_{0}_{1}".format(packetType, partName) + + + def sortOutPackets(self): + for packet in self.outPackets: + self.outPacketsSorted.append(packet) + self.outPacketsSorted.sort() + + + def sortInPackets(self): + for packet in self.inPackets: + self.inPacketsSorted.append(packet) + self.inPacketsSorted.sort() + + + def processPackets(self, dirName): + self.dirName = dirName + self.collectPackets() + self.sortInPackets() + self.sortOutPackets() |