7 class OssecTester(object):
11 self._ossec_conf = "/var/ossec/etc/ossec.conf"
12 self._base_dir = "/var/ossec/"
13 self._ossec_path = "/var/ossec/bin/"
14 self._test_path = "./tests"
16 def buildCmd(self, rule, alert, decoder):
17 cmd = ['%s/ossec-logtest'%(self._ossec_path),]
18 if self._ossec_conf: cmd += ["-c",self._ossec_conf]
19 if self._base_dir: cmd += ["-D", self._base_dir]
20 cmd += ['-U', "%s:%s:%s"%(rule,alert,decoder)]
23 def runTest(self, log, rule, alert, decoder, section, name, negate=False):
24 print self.buildCmd(rule, alert, decoder)
25 p = subprocess.Popen(self.buildCmd(rule, alert, decoder),
26 stdout=subprocess.PIPE,
27 stderr=subprocess.STDOUT,
28 stdin=subprocess.PIPE,
30 std_out = p.communicate(log)[0]
31 if (p.returncode != 0 and not negate) or (p.returncode == 0 and negate):
34 print "Failed: Exit code = %s"%(p.returncode)
35 print " Alert = %s"%(alert)
36 print " Rule = %s"%(rule)
37 print " Decoder = %s"%(decoder)
38 print " Section = %s"%(section)
39 print " line name = %s"%(name)
43 print "Exit code= %s"%(p.returncode)
49 for aFile in os.listdir(self._test_path):
50 aFile = os.path.join(self._test_path, aFile)
51 print "- [ File = %s ] ---------"%(aFile)
52 if aFile.endswith(".ini"):
53 tGroup = ConfigParser.ConfigParser()
55 tSections = tGroup.sections()
57 rule = tGroup.get(t, "rule")
58 alert = tGroup.get(t, "alert")
59 decoder = tGroup.get(t, "decoder")
60 for (name, value) in tGroup.items(t):
61 if name.startswith("log "):
64 if name.endswith("pass"):
66 elif name.endswith("fail"):
70 self.runTest(value, rule, alert, decoder, t, name, negate=neg)
73 if __name__ == "__main__":