From 2f4cb4fc22b187fa22edda9a32ee0a3e523a2522 Mon Sep 17 00:00:00 2001 From: "enus.linden" Date: Fri, 6 Feb 2009 06:45:03 +0000 Subject: [PATCH] added some more fine grain logging control, update to packet parser --- pyogp/lib/base/message/packet_handler.py | 2 +- pyogp/lib/base/regiondomain.py | 4 +-- pyogp/lib/base/settings.py | 2 +- pyogp/lib/base/utilities/parse_packet.py | 39 +++++++++++++++++++----- 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/pyogp/lib/base/message/packet_handler.py b/pyogp/lib/base/message/packet_handler.py index 8e3ae50..0a9977a 100644 --- a/pyogp/lib/base/message/packet_handler.py +++ b/pyogp/lib/base/message/packet_handler.py @@ -62,7 +62,7 @@ class PacketHandler(): handler(packet) except AttributeError: - log(WARNING, "Received an unhandled packet: %s" % (packet.name)) + log(INFO, "Received an unhandled packet: %s" % (packet.name)) pass class PacketReceivedNotifier(): diff --git a/pyogp/lib/base/regiondomain.py b/pyogp/lib/base/regiondomain.py index f77a6aa..53769fd 100644 --- a/pyogp/lib/base/regiondomain.py +++ b/pyogp/lib/base/regiondomain.py @@ -167,7 +167,7 @@ class Region(object): data = llsd.parse(response.body) - log(DEBUG, 'Get of cap %s response is: %s' % (self.region_uri, data)) + if self.settings.ENABLE_CAPS_LOGGING: log(DEBUG, 'Get of cap %s response is: %s' % (self.region_uri, data)) return data @@ -365,7 +365,7 @@ class Region(object): #log(DEBUG, 'region event queue cap called, returned id: %s' % (self.last_id)) - log(DEBUG, 'Region EventQueueGet result: %s' % (result)) + if self.settings.ENABLE_CAPS_LOGGING: log(DEBUG, 'Region EventQueueGet result: %s' % (result)) class RegionSeedCapability(Capability): diff --git a/pyogp/lib/base/settings.py b/pyogp/lib/base/settings.py index 42cf035..ad078c7 100644 --- a/pyogp/lib/base/settings.py +++ b/pyogp/lib/base/settings.py @@ -36,7 +36,7 @@ class Settings(object): # Logging behaviors self.ENABLE_BYTES_TO_HEX_LOGGING = True - self.ENABLE_CAPS_LOGGING = True + self.ENABLE_CAPS_LOGGING = False # parameters for xmplrpc login def get_default_xmlrpc_login_parameters(self): diff --git a/pyogp/lib/base/utilities/parse_packet.py b/pyogp/lib/base/utilities/parse_packet.py index 783d4f0..848326f 100644 --- a/pyogp/lib/base/utilities/parse_packet.py +++ b/pyogp/lib/base/utilities/parse_packet.py @@ -18,33 +18,50 @@ def main(): if options.verbose: enable_logging() - data = options.data - datatype = options.datatype + if options.file: + process_file(options.file) + else: + process_stream(options.data) - msg_buff = gen_message_buffer(data, datatype) +def process_file(file): + + handle = open(file,"r") + + lines = handle.readlines() + for line in lines: + process_stream(line.strip()) + + +def process_stream(data): + + msg_buff = gen_message_buffer(data) deserializer = UDPPacketDeserializer(msg_buff) packet = deserializer.deserialize() #print packet.__dict__ - display_packet(packet) + try: + display_packet(packet, data) + except AttributeError: + print 'Unable to parse hex stream' def parse_options(): parser = OptionParser() - parser.add_option("-t", "--type", dest="datatype", default="hex", help="datatype to parse, default = hex") + #parser.add_option("-t", "--type", dest="datatype", default="hex", help="datatype to parse, default = hex") parser.add_option("-d", "--data", dest="data", help="data to parse") parser.add_option("-v", "--verbose", dest="verbose", default=True, action="store_false") + parser.add_option("-f", "--file", dest="file", help="parse data located in file") (options, args) = parser.parse_args() return options -def gen_message_buffer(data, datatype): +def gen_message_buffer(data, datatype='hex'): if datatype == 'hex': - return message_buff_from_hex(data) + return message_buff_from_hex(data.strip()) return @@ -52,8 +69,12 @@ def message_buff_from_hex(data): return binascii.unhexlify(''.join(data.split())) -def display_packet(packet): +def display_packet(packet, data): + print "~~~~~~~~~~~~~~~~~~~" + print "Source data:" + print data + print "~~~~~~~~~~~~~~~~~~~" delim = " " print 'Packet Name:%s%s' % (delim, packet.name) @@ -68,6 +89,8 @@ def display_packet(packet): for avar in somevars.var_list: zvar = somevars.get_variable(avar) print "%s%s%s:%s%s" % (delim, delim, zvar.name, delim, zvar.get_data_as_string()) + print "~~~~~~~~~~~~~~~~~~~" + #print '%s:\t%s' % (k, packet.__dict__[k]) #print '%s:\t%s (%s)' (k, packet.__dict__[k], type(packet.__dict__[k]))