ppf/new: Add IP and port information to verbose messages.
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 28 Aug 2011 05:01:50 +0000 (08:01 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 28 Aug 2011 05:04:10 +0000 (08:04 +0300)
IP and port information are determined from verbose log file name.

ppf/new/parsing.py

index 824d728..41cea1f 100644 (file)
@@ -28,7 +28,7 @@ logger.setLevel(logging.DEBUG)
 
 # Create console handler and set level to ERROR.
 ch = logging.StreamHandler()
-ch.setLevel(logging.DEBUG)
+ch.setLevel(logging.WARNING)
 
 # Create formatter.
 formatter = logging.Formatter('%(filename)s:%(lineno)s - %(levelname)s: %(message)s')
@@ -119,10 +119,10 @@ class LibtorrentLogParser(SessionLogParser):
     def get_have_parsed_list(self):
         return self.have_parsed
 
-    def is_verbose_log_filename(self, filename):
+    def verbose_log_filename_to_ip_port(self, filename):
         r = re.compile(r'^[0-9]+(?:\.[0-9]+){3}_[0-9]+\.log$')
         if not r.match(filename):
-            return False
+            return (None, None)
 
         # Check for valid IP address and port.
         a = re.split('_', filename)
@@ -131,14 +131,19 @@ class LibtorrentLogParser(SessionLogParser):
 
         # Check valid port.
         if port <= 0 or port > 65535:
-            return False
+            return (None, None)
 
         # Check valid IP address.
         try:
             socket.inet_aton(ip)
         except socket.error, e:
-            return False
+            return (None, None)
 
+        return (ip, port)
+
+    def is_verbose_log_filename(self, filename):
+        if (self.verbose_log_filename_to_ip_port(filename) == (None, None)):
+            return False
         return True
 
     def open_next_file(self):
@@ -157,6 +162,9 @@ class LibtorrentLogParser(SessionLogParser):
         self.line = ""
         self.message_list = []
 
+        # Initiate self.verbose_log_ip and self.verbose_log_port if case.
+        (self.verbose_log_ip, self.verbose_log_port) = self.verbose_log_filename_to_ip_port(os.path.basename(self.parsing))
+
         # TODO: Log this information somewhere for snapshotting purpose.
         # In case an error occurs parsing would resume from that point.
 
@@ -338,7 +346,7 @@ class LibtorrentLogParser(SessionLogParser):
 
     def parse_verbose_log_line(self, line, message_type):
         if self.verbose_log_ip == None or self.verbose_log_port == None:
-            # TODO: Initiate verbose_log_ip and verbose_log_port.
+            logger.warning("No IP or port information for verbose message.")
             pass
         msg = storage.VerboseMessage()
         msg.peer_ip = self.verbose_log_ip