From 903e2feae6909790d644e77917a19bcc21100ecf Mon Sep 17 00:00:00 2001 From: Adriana Draghici Date: Sun, 8 Nov 2009 18:47:07 +0000 Subject: [PATCH] Tribler: LogParser parses BT_Request messages, not interacting with the DB --- log-parser/tribler/LogParser.py | 121 +++++++++++++++++++++++++++++++- 1 file changed, 119 insertions(+), 2 deletions(-) diff --git a/log-parser/tribler/LogParser.py b/log-parser/tribler/LogParser.py index 96ba9b9..af26310 100644 --- a/log-parser/tribler/LogParser.py +++ b/log-parser/tribler/LogParser.py @@ -1,6 +1,123 @@ #!/usr/bin/env python +# Parser for verbose messages + import sys -from DatabaseWriter import DatabaseWriter +#from DatabaseWriter import DatabaseWriter +import datetime +import getopt +import re + +# the names used by Tribler for the BitTorrent messages +msg_types = {"BT_REQUEST": "new_request"} +msg_db_code = {"BT_CHOKE" : 0, "BT_HAVE" : 4, "BT_REQUEST" : 6} + +DEBUG = True + + +def usage(): + print "Usage: python StatusParser.py -i|--id id status_file" + print "id:" + print "\t--id" + print "\t-i\t\tclient_session_id" + print "\tstatus_file:" + print "\t--file" + print "\t-f\t\tstatus_file for tribler" + print "\tdatabase\t\tSQLite database file" + print "\t--help" + print "\t-h\t\t\tprint this help screen" + +""" line format: 20-10-2009 12:56:39 Downloader: new_request 52 98304 16384 to 141.85.37.41 14398 + BitTorrent protocol message: request: + Returns a list (timestamp, peer_ip, peer_port, message_type, index, begin, length, listen_port) +""" +def tribler_parse_request_msg(line): + if line.find(msg_types["BT_REQUEST"]) == -1: + return None + + timestamp = None + + line_parts = re.split(" *", line) + if len(line_parts) < 10 : + print "Error: invalid line format for Downloader." + return None + + # get date and timestamp and transform it in datetime format + + date_array = line_parts[0].split("-"); + time_array = line_parts[1].split(":"); + if len(date_array) != 3 or len(time_array) != 3: + print "Error: invalid line format for Downloader." + return None + + timestamp = datetime.datetime(int(date_array[2]), int(date_array[1]), int(date_array[0]), #year, month, day + int(time_array[0]), int(time_array[1]), int(time_array[2])) #hour, min, sec + index = int(line_parts[4]) + begin = int(line_parts[5]) + length = int(line_parts[6]) + peer_ip = line_parts[8] + peer_port = int(line_parts[9]) + + return (timestamp, peer_ip, peer_port, msg_db_code["BT_REQUEST"], index, begin, length, 0) + +def tribler_parse_have_msg(line): + + pass + +def tribler_parse_choke_msg(line): + pass + +def tribler_parse_piece_msg(line): + pass + +def tribler_parse_line(line): + + result = tribler_parse_request_msg(line) + if result != None: + return result + + result = tribler_parse_have_msg(line) + if result != None: + return result + + result = tribler_parse_choke_msg(line) + if result != None: + return result + + result = tribler_parse_piece_msg(line) + return result; + +def tribler_parse_status_file(dbw, client_session_id, filename): + + try: + fin = open(filename, "r") + while 1: + line = fin.readline() + if not line: + break + + line = line.strip() + + result = tribler_parse_line(line) + if result == None: + continue + + if DEBUG == True: + print result + + except IOError: + print "Error processing file %s." %filename + +def main_just_parse(): + filename = sys.argv[1] + client_session_id = 1 + tribler_parse_status_file(None, 1, filename) + +if __name__ == "__main__": + sys.exit(main_just_parse()) + + + + + -# TODO -- 2.20.1