Differences
This shows you the differences between two versions of the page.
software:awstats [2011/01/25 13:44] cyril [Integration] |
software:awstats [2013/09/19 16:40] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== awstats ====== | ||
- | |||
- | ===== Plugins ===== | ||
- | |||
- | - [[http:// | ||
- | |||
- | ===== Mods ===== | ||
- | ==== Follow Me Plugin ==== | ||
- | |||
- | Fix the reverse DNS host problem. | ||
- | |||
- | <code perl> | ||
- | $filename = '/ | ||
- | if (open(FILE, $filename)) { | ||
- | while(< | ||
- | { | ||
- | chomp; | ||
- | @fields = split(' | ||
- | if (lc($fields[2]) eq $host) { $host = $fields[1]; } | ||
- | } | ||
- | close FILE; | ||
- | } | ||
- | </ | ||
- | |||
- | TODO: | ||
- | * fix when different IPs are resolved to the same ns, example:< | ||
- | 21593800 | ||
- | 21593800 | ||
- | 21593800 | ||
- | 21593800 | ||
- | 21593800 | ||
- | 21593800 | ||
- | </ | ||
- | |||
- | ==== Who Visited Plugin ==== | ||
- | |||
- | I wrote a new plugin, based on Following Me plugin, that shows all hosts that visited a given page (vs all pages that a given host visited, as Following Me is doing). | ||
- | |||
- | {{: | ||
- | |||
- | TODO: | ||
- | * exclude search engine robots, or at least display user agent | ||
- | * when looking for a directory only, don't display all files in this directory, only the directory or index.php/ | ||
- | |||
- | ==== Integration ==== | ||
- | |||
- | It would be perfect if these two plugin functionalities were directly integrated in awstats, directly with a link on the url or hostname instead of additional column, and everywhere so that we can continuously navigate between pages and hosts stats. And more important, it should use a database to avoid parsing the whole log every time. | ||
- | |||
- | ==== Increase number of stored DNS ==== | ||
- | |||
- | This is pretty necessary with the previous patch of Follow Me to work correctly with resolved hosts. | ||
- | |||
- | <code diff> | ||
- | --- awstats_orig.pl | ||
- | +++ awstats.pl | ||
- | @@ -42,7 +42,7 @@ | ||
- | ; # Benchmark info are printing every NBOFLINESFORBENCHMARK lines (Must be a power of 2) | ||
- | | ||
- | | ||
- | - 500; # Nb of records to save in DNS last update cache file | ||
- | + 50000; | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | ==== Scale pages count independently from hits ==== | ||
- | |||
- | Apparently they modified the code to have the same scale for pages count and hits count. The problem is that if you have a lot less pages than hits, then pages are not readable, though they are a better information about the traffic than hits. The difference between pages and hits is more a constant of your website design than an interesting information about traffic. | ||
- | |||
- | Here is how to restore and independent scale for pages: | ||
- | |||
- | <code diff> | ||
- | --- awstats_orig.pl | ||
- | +++ awstats.pl | ||
- | @@ -16584,7 +16584,7 @@ | ||
- | $max_v = $DayVisits{ $year . $month . $day }; | ||
- | } | ||
- | |||
- | -#if (($DayPages{$year.$month.$day}||0) > $max_p) | ||
- | +if (($DayPages{$year.$month.$day}||0) > $max_p) | ||
- | if ( ( $DayHits{ $year . $month . $day } || 0 ) > $max_h ) { | ||
- | $max_h = $DayHits{ $year . $month . $day }; | ||
- | } | ||
- | @@ -16617,7 +16617,7 @@ | ||
- | $average_k = $average_k / $average_nb; | ||
- | if ( $average_v > $max_v ) { $max_v = $average_v; } | ||
- | |||
- | - #if ($average_p > $max_p) { $max_p=$average_p; | ||
- | + if ($average_p > $max_p) { $max_p=$average_p; | ||
- | if ( $average_h > $max_h ) { $max_h = $average_h; } | ||
- | if ( $average_k > $max_k ) { $max_k = $average_k; } | ||
- | } | ||
- | @@ -16656,7 +16656,7 @@ | ||
- | ); | ||
- | my @valcolor = | ||
- | ( " | ||
- | - my @valmax | ||
- | + my @valmax | ||
- | my @valtotal = ( $total_v, $total_p, $total_h, $total_k ); | ||
- | $average_v = sprintf( " | ||
- | $average_p = sprintf( " | ||
- | @@ -16717,10 +16717,10 @@ | ||
- | int( ( $DayVisits{ $year . $month . $day } || 0 ) / | ||
- | $max_v * $BarHeight ) + 1; | ||
- | } | ||
- | - if ( $max_h > 0 ) { | ||
- | + if ( $max_p > 0 ) { | ||
- | $bredde_p = | ||
- | int( ( $DayPages{ $year . $month . $day } || 0 ) / | ||
- | - | ||
- | + | ||
- | } | ||
- | if ( $max_h > 0 ) { | ||
- | $bredde_h = | ||
- | @@ -16779,8 +16779,8 @@ | ||
- | if ( $max_v > 0 ) { | ||
- | $bredde_v = int( $average_v / $max_v * $BarHeight ) + 1; | ||
- | } | ||
- | - if ( $max_h > 0 ) { | ||
- | - | ||
- | + if ( $max_p > 0 ) { | ||
- | + | ||
- | } | ||
- | if ( $max_h > 0 ) { | ||
- | $bredde_h = int( $average_h / $max_h * $BarHeight ) + 1; | ||
- | @@ -17066,7 +17066,7 @@ | ||
- | my @vallabel = | ||
- | ( " | ||
- | my @valcolor = ( " | ||
- | - my @valmax = ( int($max_h), | ||
- | + my @valmax = ( int($max_p), | ||
- | my @valtotal = ( $total_p, $total_h, $total_k ); | ||
- | $average_p = sprintf( " | ||
- | $average_h = sprintf( " | ||
- | @@ -17115,13 +17115,13 @@ | ||
- | my $bredde_p = 0; | ||
- | my $bredde_h = 0; | ||
- | my $bredde_k = 0; | ||
- | - if ( $max_h > 0 ) { | ||
- | + if ( $max_p > 0 ) { | ||
- | $bredde_p = int( | ||
- | ( | ||
- | $avg_dayofweek_p[$_] ne '?' | ||
- | ? $avg_dayofweek_p[$_] | ||
- | : 0 | ||
- | - ) / $max_h * $BarHeight | ||
- | + ) / $max_p * $BarHeight | ||
- | ) + 1; | ||
- | } | ||
- | if ( $max_h > 0 ) { | ||
- | @@ -17298,7 +17298,7 @@ | ||
- | $max_h = $max_k = 1; | ||
- | for ( my $ix = 0 ; $ix <= 23 ; $ix++ ) { | ||
- | |||
- | - #if ($_time_p[$ix]> | ||
- | + if ($_time_p[$ix]> | ||
- | if ( $_time_h[$ix] > $max_h ) { $max_h = $_time_h[$ix]; | ||
- | if ( $_time_k[$ix] > $max_k ) { $max_k = $_time_k[$ix]; | ||
- | } | ||
- | @@ -17309,7 +17309,7 @@ | ||
- | my @vallabel | ||
- | ( " | ||
- | my @valcolor = ( " | ||
- | - my @valmax = ( int($max_h), | ||
- | + my @valmax = ( int($max_p), | ||
- | my @valtotal | ||
- | my @valaverage = ( $average_p, $average_h, $average_k ); | ||
- | my @valdata | ||
- | @@ -17334,9 +17334,9 @@ | ||
- | my $bredde_p = 0; | ||
- | my $bredde_h = 0; | ||
- | my $bredde_k = 0; | ||
- | - if ( $max_h > 0 ) { | ||
- | + if ( $max_p > 0 ) { | ||
- | $bredde_p = | ||
- | - int( $BarHeight * $_time_p[$ix] / $max_h ) + 1; | ||
- | + int( $BarHeight * $_time_p[$ix] / $max_p ) + 1; | ||
- | } | ||
- | if ( $max_h > 0 ) { | ||
- | $bredde_h = | ||
- | </ | ||