Add conf_requires.

Load plugins in order
This commit is contained in:
Grégory Soutadé
2014-11-27 12:34:42 +01:00
parent dd8349ab08
commit 9fbc5448bc
7 changed files with 60 additions and 35 deletions

29
iwla.py
View File

@@ -35,11 +35,11 @@ class IWLA(object):
self.http_request_extracted = re.compile(r'(?P<http_method>\S+) (?P<http_uri>\S+) (?P<http_version>\S+)')
self.log_re = re.compile(self.log_format_extracted)
self.uri_re = re.compile(r'(?P<extract_uri>[^\?]+)(\?(?P<extract_parameters>.+))?')
self.plugins = {conf.PRE_HOOK_DIRECTORY : conf.pre_analysis_hooks,
conf.POST_HOOK_DIRECTORY : conf.post_analysis_hooks,
conf.DISPLAY_HOOK_DIRECTORY : conf.display_hooks}
self.plugins = [(conf.PRE_HOOK_DIRECTORY , conf.pre_analysis_hooks),
(conf.POST_HOOK_DIRECTORY , conf.post_analysis_hooks),
(conf.DISPLAY_HOOK_DIRECTORY , conf.display_hooks)]
def getConfValue(self, key, default):
def getConfValue(self, key, default=None):
if not key in dir(conf):
return default
else:
@@ -77,7 +77,7 @@ class IWLA(object):
def isValidForCurrentAnalysis(self, request):
cur_time = self.meta_infos['start_analysis_time']
return (time.mktime(cur_time) < time.mktime(request['time_decoded']))
return (time.mktime(cur_time) <= time.mktime(request['time_decoded']))
def _clearMeta(self):
self.meta_infos = {
@@ -115,12 +115,15 @@ class IWLA(object):
return pickle.load(f)
return None
def _callPlugins(self, root, *args):
print '==> Call plugins (%s)' % root
for p in self.plugins[root]:
print '\t%s' % (p)
mod = self.cache_plugins[root + '.' + p]
mod.hook(*args)
def _callPlugins(self, target_root, *args):
print '==> Call plugins (%s)' % target_root
for (root, plugins) in self.plugins:
if root != target_root: continue
for p in plugins:
mod = self.cache_plugins.get(root + '.' + p, None)
if mod:
print '\t%s' % (p)
mod.hook(*args)
def isPage(self, request):
for e in conf.pages_extensions:
@@ -143,9 +146,7 @@ class IWLA(object):
request = hit['extract_request']
if 'extract_uri' in request.keys():
uri = request['extract_uri'] = request['http_uri']
uri = request['extract_uri']
uri = request.get('extract_uri', request['http_uri'])
hit['is_page'] = self.isPage(uri)