Pastebin

Paste #2506: watcher.py

< previous paste - next paste>

Pasted by tdn@malbec

Download View as text

--- /usr/share/pyshared/spye/plugins/sikkerhedorg/log/watcher.py	2012-05-14 23:01:07.000000000 +0200
+++ /home/tdn/wc/software/spye-sikkerhedorg/spye-sikkerhedorg/plugins/sikkerhedorg/log/watcher.py	2012-08-20 22:14:50.211761437 +0200
@@ -26,8 +26,16 @@
         patterns = self.config_get("patterns", require = True)
         return [(x, re.compile(x)) for x in patterns]
 
+    def exclude_patterns_load(self):
+        patterns = self.config_get("exclude_patterns", require = False)
+        if patterns:
+            return [(x, re.compile(x)) for x in patterns]
+        else:
+            return None
+
     def meta_check(self, filename='-'):
-        patterns = self.patterns_load()
+        patterns         = self.patterns_load()
+        exclude_patterns = self.exclude_patterns_load()
 
         if filename == '-':
             fh = sys.stdin
@@ -40,11 +48,20 @@
             line = line.strip()
 
             for p, re in patterns:
-                if re.search(line):
+                if re.search(line) and not self.exclude_match(line, exclude_patterns):
                     self.print_hint("Line [%s] matched pattern [%s]", line, p)
                 else:
                     self.print_debug("Line [%s] does not match pattern [%s]", line, p)
 
+    def exclude_match(self, line, exclude_patterns):
+        """Returns True if line matches any pattern in exclude_patterns
+        Returns False otherwise"""
+        if exclude_patterns:
+            for ep, ere in exclude_patterns:
+                if ere.search(line):
+                    return True
+        return False
+
     def meta_tail(self):
         patterns = self.patterns_load()
         mailfrom = self.config_get_string("mailfrom", require = True)
@@ -57,7 +74,7 @@
             line = line.strip()
 
             for p, re in patterns:
-                if re.search(line):
+                if re.search(line) and not self.exclude_match(line, exclude_patterns):
                     self.print_hint("Line [%s] matched pattern [%s]", line, p)
 
                     subject = "[%s] logwatch alert [%s]" % (hostname_fqdn, p)
@@ -66,3 +83,4 @@
                     mail.set_envelope(From = mailfrom, To = mailto)
                     mail.set_headers (From = mailfrom, To = mailto, Subject = subject)
                     mail.send(template % (line, p))
+

New Paste


Do not write anything in this field if you're a human.

Go to most recent paste.