2 import os, string, select, struct, syslog
3 import audit, avc, traceback
5 from setroubleshoot.signature import *
6 from setroubleshoot.util import LoadPlugins
12 self.plugins = LoadPlugins()
13 syslog.syslog( "Number of Plugins = %d" % len(self.plugins))
16 for i in self.audit_list:
17 if i[0] == audit.AUDIT_AVC:
25 for ( type, data_list ) in self.audit_list:
33 myavc = AVC(rules.AVCS[0])
34 for plugin in self.plugins:
36 if plugin.analyze(myavc):
41 syslog.syslog("Type exception %s: %s " % ( plugin.analysisID, e.args))
43 syslog.syslog("Plugin Exception %s " % plugin.analysisID)
47 def process(self, type, data):
48 data_list=data.split()
51 if len(self.audit_list) > 0 and new_sig != self.cur_sig:
53 self.cur_sig = new_sig
55 self.audit_list.append((type, data_list[1:]))
59 input,output, err = select.select([0],[], [], 5)
62 msg = AuditMsg.AuditMsg()
63 if not msg.read_from_fd(0):
64 syslog.syslog("Connection closing")
66 self.process(msg.get_type(), msg.get_body())
70 except struct.error, e:
71 syslog.syslog("struct exception %s " % e.args)
74 syslog.syslog("Type exception %s " % e.args)
77 syslog.openlog("avc_snap")
82 syslog.syslog("IOError exception %s" % e.args)
85 syslog.syslog("Unexpected exception %s " % e.args)
86 syslog.syslog(traceback.format_exc())
89 syslog.syslog("Caught Exception")
90 syslog.syslog(traceback.format_exc())