def __init__(self, project): ProjectAgent.__init__(self, project, "syslog") self.syslog = FileWatch(project, open('/var/log/syslog'), 'syslog:syslog', start='end') self.messages = FileWatch(project, open('/var/log/messages'), 'syslog:messages', start='end')
def create(self, project, filename): if exists(filename): return FileWatch(project, open(filename), 'syslog:%s' % basename(filename), start='end') else: self.warning("Skip (non existent) log file: %s" % filename) return None
def setupProject(project): # Some options DEBUG = False USE_STDOUT = DEBUG sql = GenerateSQL(project, "sql") if DEBUG: sql.max_nb_instr = 1 # Watch mysqld process mysqld = AttachProcess(project, 'mysqld') mysqld.max_memory = 300*1024*1024 if USE_STDOUT: stdout = 'file' else: stdout = 'null' # MySQL client used to send fuzzy SQL process = MysqlProcess(project, ['/usr/bin/mysql'], stdout) WatchProcess(process, exitcode_score=0.15, timeout_score=0.15) if USE_STDOUT: stdout = WatchStdout(process) stdout.ignoreRegex('You have an error in your SQL syntax; check the manual') if not DEBUG: stdout.words['error'] = 0.10 else: stdout.words['error'] = 1.0 # Watch logs syslog = Syslog(project) mysql_log = FileWatch(project, open('/var/log/mysql/mysql.log'), 'mysql.log', start="end") # FileWatch(project, open('/var/log/mysql/mysql.err'), 'mysql.err', start="end"), logs = [ syslog.syslog, syslog.messages, mysql_log, ] for log in logs: log.words['mysqld'] = 1.0
def __init__(self, process): FileWatch.__init__(self, process.project(), None, "watch:stdout") self.process = weakref_ref(process)
def deinit(self): FileWatch.deinit(self) self.file_obj = None
def deinit(self): FileWatch.deinit(self) self.close()
def setupProject(project): FileWatch(project, open('/var/log/Xorg.0.log'), "Xorg.log", start="end") GenerateCode(project, "x11.c") process = X11Process(project, name="x11") process.env.copy('DISPLAY') WatchProcess(process)
def setupProject(project): USE_DAEMON = True if USE_DAEMON: NB_FILE = 3 PROGRAM = 'clamdscan' else: NB_FILE = 20 PROGRAM = 'clamscan' orig_filename = project.application().getInputFilename("ClamAV valid file (eg. program)") mangle = AutoMangle(project, orig_filename, NB_FILE) mangle.config.max_op = 100 mangle.config.change_size = True # Watch clamd server if USE_DAEMON: AttachProcess(project, 'clamd') process = ClamavProcess(project, [PROGRAM], timeout=100.0) WatchProcess(process, exitcode_score=0.10) if USE_DAEMON: log = FileWatch(project, open('/var/log/clamav/clamav.log'), 'clamav.log', start="end") else: log = WatchStdout(process) log.ignoreRegex('SCAN SUMMARY') log.ignoreRegex(': OK$') log.ignoreRegex('^Infected files: ') log.ignoreRegex('^Time: ') log.addRegex(' FOUND$', 0.05) log.words['error'] = 0.30 / NB_FILE log.patterns[r"Can't connect to clamd"] = 1.0 log.show_not_matching = True