Merge branch 'master' of soutade.fr:iwla
This commit is contained in:
commit
56b3457e92
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1,3 +1,5 @@
|
|||
*~
|
||||
*.pyc
|
||||
*.gz
|
||||
*.gz
|
||||
output
|
||||
output_db
|
||||
|
|
29
ChangeLog
Normal file
29
ChangeLog
Normal file
|
@ -0,0 +1,29 @@
|
|||
v0.3 (13/07/2015)
|
||||
** User **
|
||||
Add referers_diff display plugin
|
||||
Add year statistics in month details
|
||||
Add analysis duration
|
||||
Add browsers detection
|
||||
Add operating systems detection
|
||||
Add track users plugin
|
||||
Add feeds plugin
|
||||
Add _append feature to conf.py
|
||||
Add hours_stats plugin
|
||||
Add display/top_downloads_diff plugin
|
||||
Can specify multiple files to analyze
|
||||
Add reset feature
|
||||
Add gz files support
|
||||
Add -z option (don't compress databases)
|
||||
Add own search enfines files
|
||||
|
||||
** Dev **
|
||||
Add istats_diff interface
|
||||
Sort documentation output
|
||||
Add debug traces in robots plugin
|
||||
Update awstats data
|
||||
|
||||
** Bugs **
|
||||
Forgot <body> tag
|
||||
Bad UTC time computation
|
||||
Hits/pages in the same second where not analyzed
|
||||
Last day of month was skipped
|
File diff suppressed because one or more lines are too long
23
conf.py
23
conf.py
|
@ -1,7 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Web server log
|
||||
analyzed_filename = 'access.log'
|
||||
analyzed_filename = '/var/log/apache2/access.log.1,/var/log/apache2/access.log'
|
||||
|
||||
# Domain name to analyze
|
||||
domain_name = 'soutade.fr'
|
||||
|
@ -11,24 +10,28 @@ display_visitor_ip = True
|
|||
|
||||
# Hooks used
|
||||
pre_analysis_hooks = ['page_to_hit', 'robots']
|
||||
post_analysis_hooks = ['referers', 'top_pages', 'top_downloads', 'top_hits']#, 'reverse_dns']
|
||||
display_hooks = ['top_visitors', 'all_visits', 'referers', 'top_pages', 'top_downloads', 'top_hits']
|
||||
post_analysis_hooks = ['referers', 'top_pages', 'top_downloads', 'operating_systems', 'browsers', 'feeds', 'hours_stats', 'reverse_dns']
|
||||
display_hooks = ['track_users', 'top_visitors', 'all_visits', 'referers', 'top_pages', 'top_downloads', 'referers_diff', 'operating_systems', 'browsers', 'feeds', 'hours_stats', 'top_downloads_diff']
|
||||
|
||||
# Reverse DNS timeout
|
||||
reverse_dns_timeout = 0.2
|
||||
|
||||
# Count this addresses as hit
|
||||
page_to_hit_conf = [r'^.+/logo[/]?$']
|
||||
## Count this addresses as page
|
||||
hit_to_page_conf = [r'^.+/category/.+$', r'^.+/tag/.+$', r'^.+/archive/.+$', r'^.+/ljdc[/]?$']
|
||||
# Count this addresses as page
|
||||
hit_to_page_conf = [r'^.+/category/.+$', r'^.+/tag/.+$', r'^.+/archive/.+$', r'^.+/ljdc[/]?$', r'^.+/source/tree/.*$', r'^.+/source/file/.*$', r'^.+/search/.+$']
|
||||
|
||||
# Because it's too long to build HTML when there is too much entries
|
||||
max_hits_displayed = 100
|
||||
max_downloads_displayed = 100
|
||||
|
||||
# Compress these files after generation
|
||||
compress_output_files = ['html', 'css', 'js']
|
||||
compress_output_files = ['html', 'css', 'js', 'xml']
|
||||
|
||||
# Display result in French
|
||||
locale = 'fr'
|
||||
#locale = 'fr'
|
||||
|
||||
# Tracked IP
|
||||
tracked_ip = ['192.168.1.1']
|
||||
|
||||
feeds = [r'^.*/atom.xml$', r'^.*/rss.xml$']
|
||||
|
||||
multimedia_file_append = ['xml']
|
||||
|
|
43
display.py
43
display.py
|
@ -52,6 +52,9 @@ class DisplayHTMLRaw(object):
|
|||
self._buildHTML()
|
||||
self._build(f, self.html)
|
||||
|
||||
def getTitle(self):
|
||||
return ''
|
||||
|
||||
class DisplayHTMLBlock(DisplayHTMLRaw):
|
||||
|
||||
def __init__(self, iwla, title=''):
|
||||
|
@ -99,6 +102,21 @@ class DisplayHTMLBlockTable(DisplayHTMLBlock):
|
|||
self.rows.append(listToStr(row))
|
||||
self.rows_cssclasses.append([u''] * len(row))
|
||||
|
||||
def insertCol(self, col_number, col_title='', col_css_class=''):
|
||||
self.cols.insert(col_number, col_title)
|
||||
for r in self.rows:
|
||||
r.insert(col_number, u'')
|
||||
for r in self.rows_cssclasses:
|
||||
v = r[0]
|
||||
# If all cells have the same CSS class, set it
|
||||
for cur_value in r:
|
||||
if v != cur_value:
|
||||
v = None
|
||||
break
|
||||
v = v or u''
|
||||
r.insert(col_number, v)
|
||||
self.cols_cssclasses.insert(col_number, col_css_class)
|
||||
|
||||
def getNbRows(self):
|
||||
return len(self.rows)
|
||||
|
||||
|
@ -157,6 +175,20 @@ class DisplayHTMLBlockTable(DisplayHTMLBlock):
|
|||
|
||||
self.cols_cssclasses = listToStr(values)
|
||||
|
||||
def computeRatio(self, column, column_insertion=None):
|
||||
if column_insertion is None:
|
||||
column_insertion = column+1
|
||||
|
||||
total = 0
|
||||
for r in self.rows:
|
||||
if r[column]:
|
||||
total += int(r[column])
|
||||
|
||||
self.insertCol(column_insertion, self.iwla._('Ratio'), u'iwla_hit')
|
||||
for (index, r) in enumerate(self.rows):
|
||||
val = r[column] and int(r[column]) or 0
|
||||
self.setCellValue(index, column_insertion, '%.1f%%' % (float(val*100)/float(total)))
|
||||
|
||||
def _buildHTML(self):
|
||||
style = u''
|
||||
if self.table_css: style = u' class="%s"' % (self.table_css)
|
||||
|
@ -226,7 +258,7 @@ class DisplayHTMLBlockTableWithGraph(DisplayHTMLBlockTable):
|
|||
elif style.startswith(u'iwla_visit'): icon = u'vv.png'
|
||||
else: return ''
|
||||
|
||||
return u'/%s/%s' % (self.icon_path, icon)
|
||||
return u'/%s/other/%s' % (self.icon_path, icon)
|
||||
|
||||
def _buildHTML(self):
|
||||
self._computeMax()
|
||||
|
@ -287,7 +319,7 @@ class DisplayHTMLPage(object):
|
|||
def appendBlock(self, block):
|
||||
self.blocks.append(block)
|
||||
|
||||
def build(self, root):
|
||||
def build(self, root, displayVersion=True):
|
||||
filename = os.path.join(root, self.filename)
|
||||
|
||||
base = os.path.dirname(filename)
|
||||
|
@ -305,11 +337,12 @@ class DisplayHTMLPage(object):
|
|||
f.write(u'<link rel="stylesheet" href="/%s"/>' % (css))
|
||||
if self.title:
|
||||
f.write(u'<title>%s</title>' % (self.title))
|
||||
f.write(u'</head>')
|
||||
f.write(u'</head><body>')
|
||||
for block in self.blocks:
|
||||
block.build(f)
|
||||
f.write(u'<center>Generated by <a href="%s">IWLA %s</a></center>' %
|
||||
("http://indefero.soutade.fr/p/iwla", self.iwla.getVersion()))
|
||||
if displayVersion:
|
||||
f.write(u'<center>Generated by <a href="%s">IWLA %s</a></center>' %
|
||||
("http://indefero.soutade.fr/p/iwla", self.iwla.getVersion()))
|
||||
f.write(u'</body></html>')
|
||||
f.close()
|
||||
|
||||
|
|
731
docs/index.md
731
docs/index.md
|
@ -4,19 +4,21 @@ iwla
|
|||
Introduction
|
||||
------------
|
||||
|
||||
iwla (Intelligent Web Log Analyzer) is basically a clone of [awstats](http://www.awstats.org). The main problem with awstats is that it's a very monolothic project with everything in one big PERL file. In opposite, iwla has been though to be very modular : a small core analysis and a lot of filters. It can be viewed as UNIX pipes. Philosophy of iwla is : add, update, delete ! That's the job of each filter : modify statistics until final result. It's written in Python.
|
||||
iwla (Intelligent Web Log Analyzer) is basically a clone of [awstats](http://www.awstats.org). The main problem with awstats is that it's a very monolithic project with everything in one big PERL file. In opposite, iwla has been though to be very modular : a small core analysis and a lot of filters. It can be viewed as UNIX pipes. Philosophy of iwla is : add, update, delete ! That's the job of each filter : modify statistics until final result. It's written in Python.
|
||||
|
||||
Nevertheless, iwla is only focused on HTTP logs. It uses data (robots definitions, search engines definitions) and design from awstats. Moreover, it's not dynamic, but only generates static HTML page (with gzip compression option).
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
./iwla [-c|--clean-output] [-i|--stdin] [-f FILE|--file FILE] [-d LOGLEVEL|--log-level LOGLEVEL]
|
||||
./iwla [-c|--clean-output] [-i|--stdin] [-f FILE|--file FILE] [-d LOGLEVEL|--log-level LOGLEVEL] [-r|--reset year/month] [-z|--dont-compress]
|
||||
|
||||
-c : Clean output (database and HTML) before starting
|
||||
-i : Read data from stdin instead of conf.analyzed_filename
|
||||
-f : Read data from FILE instead of conf.analyzed_filename
|
||||
-f : Analyse this log file, multiple files can be specified (comma separated). gz files are acceptedRead data from FILE instead of conf.analyzed_filename
|
||||
-d : Loglevel in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
||||
-r : Reset analysis to a specific date (month/year)
|
||||
-z : Don't compress databases (bigger but faster, not compatible with compressed databases)
|
||||
|
||||
Basic usage
|
||||
-----------
|
||||
|
@ -32,6 +34,12 @@ Main values to edit are :
|
|||
* **display_hooks** : List of display hooks
|
||||
* **locale** : Displayed locale (_en_ or _fr_)
|
||||
|
||||
You can also append an element to an existing default configuration list by using "_append" suffix. Example :
|
||||
multimedia_files_append = ['xml']
|
||||
or
|
||||
multimedia_files_append = 'xml'
|
||||
Will append 'xml' to current multimedia_files list
|
||||
|
||||
Then, you can launch iwla. Output HTML files are created in _output_ directory by default. To quickly see it, go into _output_ and type
|
||||
|
||||
python -m SimpleHTTPServer 8000
|
||||
|
@ -90,6 +98,34 @@ Plugins
|
|||
|
||||
Optional configuration values ends with *.
|
||||
|
||||
* iwla.py
|
||||
* plugins/display/all_visits.py
|
||||
* plugins/display/browsers.py
|
||||
* plugins/display/feeds.py
|
||||
* plugins/display/hours_stats.py
|
||||
* plugins/display/istats_diff.py
|
||||
* plugins/display/operating_systems.py
|
||||
* plugins/display/referers.py
|
||||
* plugins/display/referers_diff.py
|
||||
* plugins/display/top_downloads.py
|
||||
* plugins/display/top_downloads_diff.py
|
||||
* plugins/display/top_hits.py
|
||||
* plugins/display/top_pages.py
|
||||
* plugins/display/top_visitors.py
|
||||
* plugins/display/track_users.py
|
||||
* plugins/post_analysis/browsers.py
|
||||
* plugins/post_analysis/feeds.py
|
||||
* plugins/post_analysis/hours_stats.py
|
||||
* plugins/post_analysis/operating_systems.py
|
||||
* plugins/post_analysis/referers.py
|
||||
* plugins/post_analysis/reverse_dns.py
|
||||
* plugins/post_analysis/top_downloads.py
|
||||
* plugins/post_analysis/top_hits.py
|
||||
* plugins/post_analysis/top_pages.py
|
||||
* plugins/pre_analysis/page_to_hit.py
|
||||
* plugins/pre_analysis/robots.py
|
||||
|
||||
|
||||
iwla
|
||||
----
|
||||
|
||||
|
@ -110,6 +146,7 @@ iwla
|
|||
DB_ROOT/meta.db
|
||||
DB_ROOT/year/month/iwla.db
|
||||
OUTPUT_ROOT/index.html
|
||||
OUTPUT_ROOT/year/_stats.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
|
@ -156,6 +193,9 @@ iwla
|
|||
requests =>
|
||||
[fields_from_format_log]
|
||||
extract_request =>
|
||||
http_method
|
||||
http_uri
|
||||
http_version
|
||||
extract_uri
|
||||
extract_parameters*
|
||||
extract_referer* =>
|
||||
|
@ -202,6 +242,139 @@ plugins.display.all_visits
|
|||
None
|
||||
|
||||
|
||||
plugins.display.browsers
|
||||
------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create browsers page
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/browsers
|
||||
|
||||
Conf values needed :
|
||||
max_browsers_displayed*
|
||||
create_browsers_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/browsers.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.feeds
|
||||
---------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Display feeds parsers
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/feeds
|
||||
|
||||
Conf values needed :
|
||||
create_all_feeds_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
OUTPUT_ROOT/year/month/all_feeds.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.hours_stats
|
||||
---------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Display statistics by hour/week day
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/hours_stats
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.istats_diff
|
||||
---------------------------
|
||||
|
||||
Display hook interface
|
||||
|
||||
Enlight new and updated statistics
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.operating_systems
|
||||
---------------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Add operating systems statistics
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/operating_systems
|
||||
|
||||
Conf values needed :
|
||||
create_families_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.referers
|
||||
------------------------
|
||||
|
||||
|
@ -233,20 +406,102 @@ plugins.display.referers
|
|||
None
|
||||
|
||||
|
||||
plugins.display.top_visitors
|
||||
----------------------------
|
||||
plugins.display.referers_diff
|
||||
-----------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP visitors block
|
||||
Enlight new and updated key phrases in in all_key_phrases.html
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
display/referers
|
||||
|
||||
Conf values needed :
|
||||
display_visitor_ip*
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.top_downloads
|
||||
-----------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP downloads page
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_downloads
|
||||
|
||||
Conf values needed :
|
||||
max_downloads_displayed*
|
||||
create_all_downloads_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_downloads.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.top_downloads_diff
|
||||
----------------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Enlight new and updated downloads in in top_downloads.html
|
||||
|
||||
Plugin requirements :
|
||||
display/top_downloads
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.top_hits
|
||||
------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP hits page
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_hits
|
||||
|
||||
Conf values needed :
|
||||
max_hits_displayed*
|
||||
create_all_hits_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_hits.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
|
@ -287,22 +542,20 @@ plugins.display.top_pages
|
|||
None
|
||||
|
||||
|
||||
plugins.display.top_hits
|
||||
------------------------
|
||||
plugins.display.top_visitors
|
||||
----------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP hits page
|
||||
Create TOP visitors block
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_hits
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
max_hits_displayed*
|
||||
create_all_hits_page*
|
||||
display_visitor_ip*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_hits.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
|
@ -315,23 +568,23 @@ plugins.display.top_hits
|
|||
None
|
||||
|
||||
|
||||
plugins.display.top_downloads
|
||||
-----------------------------
|
||||
plugins.display.track_users
|
||||
---------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP downloads page
|
||||
Track users
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_downloads
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
max_downloads_displayed*
|
||||
create_all_downloads_page*
|
||||
tracked_ip
|
||||
create_tracked_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_downloads.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
OUTPUT_ROOT/year/month/tracked_users.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
@ -343,6 +596,290 @@ plugins.display.top_downloads
|
|||
None
|
||||
|
||||
|
||||
plugins.post_analysis.browsers
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Detect browser information from requests
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
visits :
|
||||
remote_addr =>
|
||||
browser
|
||||
|
||||
month_stats :
|
||||
browsers =>
|
||||
browser => count
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.feeds
|
||||
---------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Find feeds parsers (first hit in feeds conf value and no viewed pages if it's a robot)
|
||||
If there is ony one hit per day to a feed, merge feeds parsers with the same user agent
|
||||
as it must be the same person with a different IP address.
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
feeds
|
||||
merge_one_hit_only_feeds_parsers*
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
remote_addr =>
|
||||
feed_parser
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.hours_stats
|
||||
---------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count pages, hits and bandwidth by hour/week day
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
month_stats:
|
||||
hours_stats =>
|
||||
00 .. 23 =>
|
||||
pages
|
||||
hits
|
||||
bandwidth
|
||||
|
||||
days_stats =>
|
||||
0 .. 6 =>
|
||||
pages
|
||||
hits
|
||||
bandwidth
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.operating_systems
|
||||
---------------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Detect operating systems from requests
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
visits :
|
||||
remote_addr =>
|
||||
operating_system
|
||||
|
||||
month_stats :
|
||||
operating_systems =>
|
||||
operating_system => count
|
||||
|
||||
os_families =>
|
||||
family => count
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.referers
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Extract referers and key phrases from requests
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
domain_name
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats :
|
||||
referers =>
|
||||
pages => count
|
||||
hits => count
|
||||
robots_referers =>
|
||||
pages => count
|
||||
hits => count
|
||||
search_engine_referers =>
|
||||
pages => count
|
||||
hits => count
|
||||
key_phrases =>
|
||||
phrase => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.reverse_dns
|
||||
---------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Replace IP by reverse DNS names
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
reverse_dns_timeout*
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
valid_visitors:
|
||||
remote_addr
|
||||
dns_name_replaced
|
||||
dns_analyzed
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_downloads
|
||||
-----------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP downloads
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_downloads =>
|
||||
uri => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_hits
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP hits
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_hits =>
|
||||
uri => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_pages
|
||||
-------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP pages
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_pages =>
|
||||
uri => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.pre_analysis.page_to_hit
|
||||
--------------------------------
|
||||
|
||||
|
@ -400,153 +937,3 @@ plugins.pre_analysis.robots
|
|||
None
|
||||
|
||||
|
||||
plugins.post_analysis.referers
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Extract referers and key phrases from requests
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
domain_name
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats :
|
||||
referers =>
|
||||
pages
|
||||
hits
|
||||
robots_referers =>
|
||||
pages
|
||||
hits
|
||||
search_engine_referers =>
|
||||
pages
|
||||
hits
|
||||
key_phrases =>
|
||||
phrase
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_pages
|
||||
-------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP pages
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_pages =>
|
||||
uri
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.reverse_dns
|
||||
---------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Replace IP by reverse DNS names
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
reverse_dns_timeout*
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
valid_visitors:
|
||||
remote_addr
|
||||
dns_name_replaced
|
||||
dns_analyzed
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_hits
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP hits
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_hits =>
|
||||
uri
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_downloads
|
||||
-----------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP downloads
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_downloads =>
|
||||
uri
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
|
|
14
docs/main.md
14
docs/main.md
|
@ -4,19 +4,21 @@ iwla
|
|||
Introduction
|
||||
------------
|
||||
|
||||
iwla (Intelligent Web Log Analyzer) is basically a clone of [awstats](http://www.awstats.org). The main problem with awstats is that it's a very monolothic project with everything in one big PERL file. In opposite, iwla has been though to be very modular : a small core analysis and a lot of filters. It can be viewed as UNIX pipes. Philosophy of iwla is : add, update, delete ! That's the job of each filter : modify statistics until final result. It's written in Python.
|
||||
iwla (Intelligent Web Log Analyzer) is basically a clone of [awstats](http://www.awstats.org). The main problem with awstats is that it's a very monolithic project with everything in one big PERL file. In opposite, iwla has been though to be very modular : a small core analysis and a lot of filters. It can be viewed as UNIX pipes. Philosophy of iwla is : add, update, delete ! That's the job of each filter : modify statistics until final result. It's written in Python.
|
||||
|
||||
Nevertheless, iwla is only focused on HTTP logs. It uses data (robots definitions, search engines definitions) and design from awstats. Moreover, it's not dynamic, but only generates static HTML page (with gzip compression option).
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
./iwla [-c|--clean-output] [-i|--stdin] [-f FILE|--file FILE] [-d LOGLEVEL|--log-level LOGLEVEL]
|
||||
./iwla [-c|--clean-output] [-i|--stdin] [-f FILE|--file FILE] [-d LOGLEVEL|--log-level LOGLEVEL] [-r|--reset year/month] [-z|--dont-compress]
|
||||
|
||||
-c : Clean output (database and HTML) before starting
|
||||
-i : Read data from stdin instead of conf.analyzed_filename
|
||||
-f : Read data from FILE instead of conf.analyzed_filename
|
||||
-f : Analyse this log file, multiple files can be specified (comma separated). gz files are acceptedRead data from FILE instead of conf.analyzed_filename
|
||||
-d : Loglevel in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
||||
-r : Reset analysis to a specific date (month/year)
|
||||
-z : Don't compress databases (bigger but faster, not compatible with compressed databases)
|
||||
|
||||
Basic usage
|
||||
-----------
|
||||
|
@ -32,6 +34,12 @@ Main values to edit are :
|
|||
* **display_hooks** : List of display hooks
|
||||
* **locale** : Displayed locale (_en_ or _fr_)
|
||||
|
||||
You can also append an element to an existing default configuration list by using "_append" suffix. Example :
|
||||
multimedia_files_append = ['xml']
|
||||
or
|
||||
multimedia_files_append = 'xml'
|
||||
Will append 'xml' to current multimedia_files list
|
||||
|
||||
Then, you can launch iwla. Output HTML files are created in _output_ directory by default. To quickly see it, go into _output_ and type
|
||||
|
||||
python -m SimpleHTTPServer 8000
|
||||
|
|
717
docs/modules.md
717
docs/modules.md
|
@ -1,3 +1,31 @@
|
|||
* iwla.py
|
||||
* plugins/display/all_visits.py
|
||||
* plugins/display/browsers.py
|
||||
* plugins/display/feeds.py
|
||||
* plugins/display/hours_stats.py
|
||||
* plugins/display/istats_diff.py
|
||||
* plugins/display/operating_systems.py
|
||||
* plugins/display/referers.py
|
||||
* plugins/display/referers_diff.py
|
||||
* plugins/display/top_downloads.py
|
||||
* plugins/display/top_downloads_diff.py
|
||||
* plugins/display/top_hits.py
|
||||
* plugins/display/top_pages.py
|
||||
* plugins/display/top_visitors.py
|
||||
* plugins/display/track_users.py
|
||||
* plugins/post_analysis/browsers.py
|
||||
* plugins/post_analysis/feeds.py
|
||||
* plugins/post_analysis/hours_stats.py
|
||||
* plugins/post_analysis/operating_systems.py
|
||||
* plugins/post_analysis/referers.py
|
||||
* plugins/post_analysis/reverse_dns.py
|
||||
* plugins/post_analysis/top_downloads.py
|
||||
* plugins/post_analysis/top_hits.py
|
||||
* plugins/post_analysis/top_pages.py
|
||||
* plugins/pre_analysis/page_to_hit.py
|
||||
* plugins/pre_analysis/robots.py
|
||||
|
||||
|
||||
iwla
|
||||
----
|
||||
|
||||
|
@ -18,6 +46,7 @@ iwla
|
|||
DB_ROOT/meta.db
|
||||
DB_ROOT/year/month/iwla.db
|
||||
OUTPUT_ROOT/index.html
|
||||
OUTPUT_ROOT/year/_stats.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
|
@ -64,6 +93,9 @@ iwla
|
|||
requests =>
|
||||
[fields_from_format_log]
|
||||
extract_request =>
|
||||
http_method
|
||||
http_uri
|
||||
http_version
|
||||
extract_uri
|
||||
extract_parameters*
|
||||
extract_referer* =>
|
||||
|
@ -110,6 +142,139 @@ plugins.display.all_visits
|
|||
None
|
||||
|
||||
|
||||
plugins.display.browsers
|
||||
------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create browsers page
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/browsers
|
||||
|
||||
Conf values needed :
|
||||
max_browsers_displayed*
|
||||
create_browsers_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/browsers.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.feeds
|
||||
---------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Display feeds parsers
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/feeds
|
||||
|
||||
Conf values needed :
|
||||
create_all_feeds_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
OUTPUT_ROOT/year/month/all_feeds.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.hours_stats
|
||||
---------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Display statistics by hour/week day
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/hours_stats
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.istats_diff
|
||||
---------------------------
|
||||
|
||||
Display hook interface
|
||||
|
||||
Enlight new and updated statistics
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.operating_systems
|
||||
---------------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Add operating systems statistics
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/operating_systems
|
||||
|
||||
Conf values needed :
|
||||
create_families_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.referers
|
||||
------------------------
|
||||
|
||||
|
@ -141,20 +306,102 @@ plugins.display.referers
|
|||
None
|
||||
|
||||
|
||||
plugins.display.top_visitors
|
||||
----------------------------
|
||||
plugins.display.referers_diff
|
||||
-----------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP visitors block
|
||||
Enlight new and updated key phrases in in all_key_phrases.html
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
display/referers
|
||||
|
||||
Conf values needed :
|
||||
display_visitor_ip*
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.top_downloads
|
||||
-----------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP downloads page
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_downloads
|
||||
|
||||
Conf values needed :
|
||||
max_downloads_displayed*
|
||||
create_all_downloads_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_downloads.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.top_downloads_diff
|
||||
----------------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Enlight new and updated downloads in in top_downloads.html
|
||||
|
||||
Plugin requirements :
|
||||
display/top_downloads
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.display.top_hits
|
||||
------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP hits page
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_hits
|
||||
|
||||
Conf values needed :
|
||||
max_hits_displayed*
|
||||
create_all_hits_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_hits.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
|
@ -195,22 +442,20 @@ plugins.display.top_pages
|
|||
None
|
||||
|
||||
|
||||
plugins.display.top_hits
|
||||
------------------------
|
||||
plugins.display.top_visitors
|
||||
----------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP hits page
|
||||
Create TOP visitors block
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_hits
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
max_hits_displayed*
|
||||
create_all_hits_page*
|
||||
display_visitor_ip*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_hits.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
|
||||
Statistics creation :
|
||||
|
@ -223,23 +468,23 @@ plugins.display.top_hits
|
|||
None
|
||||
|
||||
|
||||
plugins.display.top_downloads
|
||||
-----------------------------
|
||||
plugins.display.track_users
|
||||
---------------------------
|
||||
|
||||
Display hook
|
||||
|
||||
Create TOP downloads page
|
||||
Track users
|
||||
|
||||
Plugin requirements :
|
||||
post_analysis/top_downloads
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
max_downloads_displayed*
|
||||
create_all_downloads_page*
|
||||
tracked_ip
|
||||
create_tracked_page*
|
||||
|
||||
Output files :
|
||||
OUTPUT_ROOT/year/month/top_downloads.html
|
||||
OUTPUT_ROOT/year/month/index.html
|
||||
OUTPUT_ROOT/year/month/tracked_users.html
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
@ -251,6 +496,290 @@ plugins.display.top_downloads
|
|||
None
|
||||
|
||||
|
||||
plugins.post_analysis.browsers
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Detect browser information from requests
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
visits :
|
||||
remote_addr =>
|
||||
browser
|
||||
|
||||
month_stats :
|
||||
browsers =>
|
||||
browser => count
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.feeds
|
||||
---------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Find feeds parsers (first hit in feeds conf value and no viewed pages if it's a robot)
|
||||
If there is ony one hit per day to a feed, merge feeds parsers with the same user agent
|
||||
as it must be the same person with a different IP address.
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
feeds
|
||||
merge_one_hit_only_feeds_parsers*
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
remote_addr =>
|
||||
feed_parser
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.hours_stats
|
||||
---------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count pages, hits and bandwidth by hour/week day
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
month_stats:
|
||||
hours_stats =>
|
||||
00 .. 23 =>
|
||||
pages
|
||||
hits
|
||||
bandwidth
|
||||
|
||||
days_stats =>
|
||||
0 .. 6 =>
|
||||
pages
|
||||
hits
|
||||
bandwidth
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.operating_systems
|
||||
---------------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Detect operating systems from requests
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
visits :
|
||||
remote_addr =>
|
||||
operating_system
|
||||
|
||||
month_stats :
|
||||
operating_systems =>
|
||||
operating_system => count
|
||||
|
||||
os_families =>
|
||||
family => count
|
||||
|
||||
Statistics update :
|
||||
None
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.referers
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Extract referers and key phrases from requests
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
domain_name
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats :
|
||||
referers =>
|
||||
pages => count
|
||||
hits => count
|
||||
robots_referers =>
|
||||
pages => count
|
||||
hits => count
|
||||
search_engine_referers =>
|
||||
pages => count
|
||||
hits => count
|
||||
key_phrases =>
|
||||
phrase => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.reverse_dns
|
||||
---------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Replace IP by reverse DNS names
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
reverse_dns_timeout*
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
valid_visitors:
|
||||
remote_addr
|
||||
dns_name_replaced
|
||||
dns_analyzed
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_downloads
|
||||
-----------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP downloads
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_downloads =>
|
||||
uri => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_hits
|
||||
------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP hits
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_hits =>
|
||||
uri => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.post_analysis.top_pages
|
||||
-------------------------------
|
||||
|
||||
Post analysis hook
|
||||
|
||||
Count TOP pages
|
||||
|
||||
Plugin requirements :
|
||||
None
|
||||
|
||||
Conf values needed :
|
||||
None
|
||||
|
||||
Output files :
|
||||
None
|
||||
|
||||
Statistics creation :
|
||||
None
|
||||
|
||||
Statistics update :
|
||||
month_stats:
|
||||
top_pages =>
|
||||
uri => count
|
||||
|
||||
Statistics deletion :
|
||||
None
|
||||
|
||||
|
||||
plugins.pre_analysis.page_to_hit
|
||||