diff --git a/display.py b/display.py index d414604..3f5ae3c 100644 --- a/display.py +++ b/display.py @@ -1,3 +1,4 @@ +import os class DisplayHTMLBlock(object): @@ -56,7 +57,13 @@ class DisplayHTMLPage(object): self.blocks.append(block) def build(self, root): - f = open(root + self.filename, 'w') + filename = root + self.filename + + base = os.path.dirname(filename) + if not os.path.exists(base): + os.makedirs(base) + + f = open(filename, 'w') f.write('%s' % (self.title)) for block in self.blocks: block.build(f) diff --git a/iwla.py b/iwla.py index 2261e80..c467687 100755 --- a/iwla.py +++ b/iwla.py @@ -77,11 +77,17 @@ 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'])) + # Analyse not started + if not cur_time: return False + return (time.mktime(cur_time) < time.mktime(request['time_decoded'])) def hasBeenViewed(self, request): return int(request['status']) in conf.viewed_http_codes + def getCurDisplayRoot(self): + cur_time = self.meta_infos['last_time'] + return '%d/%d/' % (cur_time.tm_year, cur_time.tm_mon) + def _clearMeta(self): self.meta_infos = { 'last_time' : None @@ -93,7 +99,7 @@ class IWLA(object): return self.display def getDBFilename(self, time): - return (conf.DB_ROOT + '%d/%d_%s') % (time.tm_year, time.tm_mon, conf.DB_FILENAME) + return (conf.DB_ROOT + '%d/%d/%s') % (time.tm_year, time.tm_mon, conf.DB_FILENAME) def _serialize(self, obj, filename): base = os.path.dirname(filename) @@ -214,14 +220,14 @@ class IWLA(object): def getDisplayIndex(self): cur_time = self.meta_infos['last_time'] - filename = '%d/index_%d.html' % (cur_time.tm_year, cur_time.tm_mon) + filename = '%s/index.html' % (self.getCurDisplayRoot()) return self.display.getPage(filename) def _generateDisplayDaysStat(self): cur_time = self.meta_infos['last_time'] title = 'Stats %d/%d' % (cur_time.tm_mon, cur_time.tm_year) - filename = '%d/index_%d.html' % (cur_time.tm_year, cur_time.tm_mon) + filename = '%s/index.html' % (self.getCurDisplayRoot()) print '==> Generate display (%s)' % (filename) page = DisplayHTMLPage(title, filename) @@ -367,7 +373,7 @@ class IWLA(object): self.analyse_started = True else: if not self.analyse_started: - if not self.isValidForCurrentAnalysis(hit): + if time.mktime(t) < time.mktime(cur_time): return False else: self.analyse_started = True diff --git a/plugins/display/all_visits.py b/plugins/display/all_visits.py index 2374233..ae9ed40 100644 --- a/plugins/display/all_visits.py +++ b/plugins/display/all_visits.py @@ -15,11 +15,10 @@ class IWLADisplayAllVisits(IPlugin): last_access = sorted(hits.values(), key=lambda t: t['last_access'], reverse=True) - cur_time = self.iwla.getCurTime() - title = time.strftime('All visits - %B %Y', cur_time) + title = time.strftime('All visits - %B %Y', self.iwla.getCurTime()) - filename = 'all_visits_%d.html' % (cur_time.tm_mon) - path = '%d/%s' % (cur_time.tm_year, filename) + filename = 'all_visits.html' + path = '%s/%s' % (self.iwla.getCurDisplayRoot(), filename) page = DisplayHTMLPage(title, path) table = DisplayHTMLBlockTable('Last seen', ['Host', 'Pages', 'Hits', 'Bandwidth', 'Last seen']) diff --git a/plugins/display/referers.py b/plugins/display/referers.py index 318c94f..329f998 100644 --- a/plugins/display/referers.py +++ b/plugins/display/referers.py @@ -54,8 +54,8 @@ class IWLADisplayReferers(IPlugin): cur_time = self.iwla.getCurTime() title = time.strftime('Connexion from - %B %Y', cur_time) - filename = 'referers_%d.html' % (cur_time.tm_mon) - path = '%d/%s' % (cur_time.tm_year, filename) + filename = 'referers.html' + path = '%s/%s' % (self.iwla.getCurDisplayRoot(), filename) page = DisplayHTMLPage(title, path) table = DisplayHTMLBlockTable('Connexion from', ['Origin', 'Pages', 'Hits']) @@ -93,8 +93,8 @@ class IWLADisplayReferers(IPlugin): # All key phrases in a file title = time.strftime('Key Phrases - %B %Y', cur_time) - filename = 'key_phrases_%d.html' % (cur_time.tm_mon) - path = '%d/%s' % (cur_time.tm_year, filename) + filename = 'key_phrases.html' + path = '%s/%s' % (self.iwla.getCurDisplayRoot(), filename) page = DisplayHTMLPage(title, path) table = DisplayHTMLBlockTable('Top key phrases', ['Key phrase', 'Search']) diff --git a/plugins/display/top_downloads.py b/plugins/display/top_downloads.py index 970e104..44141a9 100644 --- a/plugins/display/top_downloads.py +++ b/plugins/display/top_downloads.py @@ -22,11 +22,10 @@ class IWLADisplayTopDownloads(IPlugin): table.appendRow([uri, entrance]) index.appendBlock(table) - cur_time = self.iwla.getCurTime() - title = time.strftime('Top Downloads - %B %Y', cur_time) + title = time.strftime('Top Downloads - %B %Y', self.iwla.getCurTime()) - filename = 'top_downloads_%d.html' % (cur_time.tm_mon) - path = '%d/%s' % (cur_time.tm_year, filename) + filename = 'top_downloads.html' + path = '%s/%s' % (self.iwla.getCurDisplayRoot(), filename) page = DisplayHTMLPage(title, path) table = DisplayHTMLBlockTable('All Downloads', ['URI', 'Hit']) diff --git a/plugins/display/top_hits.py b/plugins/display/top_hits.py index 4809d0b..fb7fe47 100644 --- a/plugins/display/top_hits.py +++ b/plugins/display/top_hits.py @@ -22,11 +22,10 @@ class IWLADisplayTopHits(IPlugin): table.appendRow([uri, entrance]) index.appendBlock(table) - cur_time = self.iwla.getCurTime() - title = time.strftime('All Hits - %B %Y', cur_time) + title = time.strftime('All Hits - %B %Y', self.iwla.getCurTime()) - filename = 'top_hits_%d.html' % (cur_time.tm_mon) - path = '%d/%s' % (cur_time.tm_year, filename) + filename = 'top_hits.html' + path = '%s/%s' % (self.iwla.getCurDisplayRoot(), filename) page = DisplayHTMLPage(title, path) table = DisplayHTMLBlockTable('Top Hits', ['URI', 'Entrance']) diff --git a/plugins/display/top_pages.py b/plugins/display/top_pages.py index 100f97b..e2e29c0 100644 --- a/plugins/display/top_pages.py +++ b/plugins/display/top_pages.py @@ -22,11 +22,10 @@ class IWLADisplayTopPages(IPlugin): table.appendRow([uri, entrance]) index.appendBlock(table) - cur_time = self.iwla.getCurTime() - title = time.strftime('All Pages - %B %Y', cur_time) + title = time.strftime('All Pages - %B %Y', self.iwla.getCurTime()) - filename = 'top_pages_%d.html' % (cur_time.tm_mon) - path = '%d/%s' % (cur_time.tm_year, filename) + filename = 'top_pages.html' + path = '%s/%s' % (self.iwla.getCurDisplayRoot(), filename) page = DisplayHTMLPage(title, path) table = DisplayHTMLBlockTable('Top Pages', ['URI', 'Entrance'])