[vhffs-dev] [421] Port new web stats generator from 4.0 to 4.1

[ Thread Index | Date Index | More vhffs.org/vhffs-dev Archives ]


Revision: 421
Author:   gradator
Date:     2007-01-21 21:22:48 +0000 (Sun, 21 Jan 2007)

Log Message:
-----------
Port new web stats generator from 4.0 to 4.1

Modified Paths:
--------------
    branches/vhffs_4.1/Makefile
    branches/vhffs_4.1/vhffs-api/src/Vhffs/Conf.pm
    branches/vhffs_4.1/vhffs-api/src/Vhffs/Functions.pm
    branches/vhffs_4.1/vhffs-backend/conf/vhffs.conf
    branches/vhffs_4.1/vhffs-robots/misc/awstats.sample

Added Paths:
-----------
    branches/vhffs_4.1/vhffs-robots/misc/awstats_6.4_vhffs.patch
    branches/vhffs_4.1/vhffs-robots/src/generate_webstats.pl

Removed Paths:
-------------
    branches/vhffs_4.1/vhffs-robots/misc/awstats.conf
    branches/vhffs_4.1/vhffs-robots/src/create_stats.pl
    branches/vhffs_4.1/vhffs-robots/src/create_statsconf.pl
    branches/vhffs_4.1/vhffs-robots/src/generate_webstats.sh
    branches/vhffs_4.1/vhffs-robots/src/parse_httplog.pl


Modified: branches/vhffs_4.1/Makefile
===================================================================
--- branches/vhffs_4.1/Makefile	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/Makefile	2007-01-21 21:22:48 UTC (rev 421)
@@ -74,7 +74,6 @@
 	install -d -m 755 $(BOTSDIR)	
 	install -d -m 755 $(BOTSDIR)/misc/
 	install -m 755 vhffs-robots/src/*.pl            $(BOTSDIR)/
-	install -m 755 vhffs-robots/src/*.sh            $(BOTSDIR)/
 	install -m 644 vhffs-robots/misc/*   $(BOTSDIR)/misc/
 
 install-doc:

Modified: branches/vhffs_4.1/vhffs-api/src/Vhffs/Conf.pm
===================================================================
--- branches/vhffs_4.1/vhffs-api/src/Vhffs/Conf.pm	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-api/src/Vhffs/Conf.pm	2007-01-21 21:22:48 UTC (rev 421)
@@ -896,4 +896,19 @@
 }
 
 
+sub get_web_config
+{
+	my $webconf = $Config{"services"}{"web"};
+
+	if( defined $webconf )
+	{
+		return $webconf;
+	}
+	else
+	{
+		return undef;
+	}
+}
+
+
 1;

Modified: branches/vhffs_4.1/vhffs-api/src/Vhffs/Functions.pm
===================================================================
--- branches/vhffs_4.1/vhffs-api/src/Vhffs/Functions.pm	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-api/src/Vhffs/Functions.pm	2007-01-21 21:22:48 UTC (rev 421)
@@ -453,4 +453,69 @@
 }
 
 
+sub rotate_log
+{
+	use File::Basename;
+
+	my $path = shift;
+	my $rotation = shift;
+	my $compress = shift;
+	my $dir = dirname ( $path );
+	my $file = basename ( $path );
+
+	return if ( ! -f $path );
+
+	# remove files out of the rotation
+	opendir ( DIR , $dir );
+	my @files = readdir( DIR );
+	foreach ( @files )
+	{
+		next if( $file ne substr($_, 0, length( $file ) ) );
+		my $suffix = substr($_, length( $file ) );
+		$suffix =~ s/^.//;
+		$suffix =~ s/.gz$//;
+		next if( ! ( $suffix =~ /\d+/ ) );
+		unlink $dir."/".$_ if( $suffix >= $rotation-1 );
+	}
+
+	# rotate logs
+	my $i;
+	for ( $i = $rotation-2 ; $i >= 0 ; $i-- )  {
+		my $j = $i +1;
+
+		# found a file which is not compressed
+		if ( -f $dir."/".$file.".".$i )  {
+
+			# rotate it
+			rename $dir."/".$file.".".$i , $dir."/".$file.".".$j ;
+	
+			# compress it if compression is enabled
+			if ( $compress )  {
+				my $cmd = "gzip ".$dir."/".$file.".".$j;
+				system ( $cmd );
+			}
+		}
+		# found a file which is already compressed
+		elsif ( -f $dir."/".$file.".".$i.".gz" )  {
+
+			# rotate it
+			rename $dir."/".$file.".".$i.".gz" , $dir."/".$file.".".$j.".gz" ;
+
+			# uncompress it if compression is disabled
+			if ( ! $compress )  {
+				my $cmd = "gzip -d ".$dir."/".$file.".".$j.".gz";
+				system ( $cmd );
+			}
+		}
+	}
+
+	# last rotate, log -> log.0
+	rename $dir."/".$file , $dir."/".$file.".0" ;
+
+	# create an empty file (prevent re-using of file .0 in stats parser)
+	open( EMPTYFILE , "> ".$dir."/".$file );
+	print EMPTYFILE "";
+	close( EMPTYFILE );
+}
+
 1;

Modified: branches/vhffs_4.1/vhffs-backend/conf/vhffs.conf
===================================================================
--- branches/vhffs_4.1/vhffs-backend/conf/vhffs.conf	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-backend/conf/vhffs.conf	2007-01-21 21:22:48 UTC (rev 421)
@@ -160,6 +160,42 @@
 #####################################
 <services>
 
+	<web>
+		# Where to find log from webserver, each webserver should be in a separate directory, example :
+		# - /data/logs/web/incoming/webserver0
+		# - /data/logs/web/incoming/webserver1
+		# - ...
+		log_incoming_root = /data/logs/web/incoming
+
+		# The number of maximum rotations, a rotation is made each time the robots to create stats is ran
+		log_incoming_rotations = 7
+
+		# Should I compress rotated logs ?
+		log_incoming_compress = yes
+
+		# Where to put parsed logfile from each website, it uses the same hash model of web storage,
+		# consider using the same tree for both so user have access to its logs in its ftp account.
+		# If log_parsed_root = /data/web and log_parsed_dir = logs then example.com logs
+		# will be in /data/web/1b/df/72/example.com/logs/
+		log_parsed_root = /data/web
+
+		# Same as incoming
+		log_parsed_rotation = 7
+		log_parsed_compress = yes		
+
+		# Where to find the awstat sampe file ?
+		log_awstats_sample = /usr/lib/vhffs/bots/misc/awstats.sample
+
+		# Where to find awstat (caution, you must apply the vhffs patch on)
+		log_awstats = /var/www/stats/awstats.pl
+
+		# Is apache running locally or not ? (If not you should use the ugly remote restart of apaches over nfs)
+		log_apachelocal = yes
+
+		# If it runs locally, where is apache2ctl ?
+		log_apachectl = /usr/sbin/apache2ctl
+	</web>
+
 	#DNS configuration
 	<dns>
 		#Default configuration for each domain-name

Deleted: branches/vhffs_4.1/vhffs-robots/misc/awstats.conf
===================================================================
--- branches/vhffs_4.1/vhffs-robots/misc/awstats.conf	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/misc/awstats.conf	2007-01-21 21:22:48 UTC (rev 421)
@@ -1,1467 +0,0 @@
-# AWSTATS CONFIGURE FILE 6.3
-#-----------------------------------------------------------------------------
-# Copy this file into awstats.www.mydomain.conf and edit this new config file
-# to setup AWStats (See documentation in docs/ directory).
-# The config file must be in /etc/awstats, /usr/local/etc/awstats or /etc (for
-# Unix/Linux) or same directory than awstats.pl (Windows, Mac, Unix/Linux...)
-# To include an environment variable in any parameter (AWStats will replace
-# it with its value when reading it), follow the example:
-# Parameter="__ENVNAME__"
-# Note that environment variable AWSTATS_CURRENT_CONFIG is always defined with
-# the config value in an AWStats running session and can be used like others.
-#-----------------------------------------------------------------------------
-# $Revision: 1.305 $ - $Author: eldy $ - $Date: 2005/01/22 15:26:06 $
-
-
-
-#-----------------------------------------------------------------------------
-# MAIN SETUP SECTION (Required to make AWStats work)
-#-----------------------------------------------------------------------------
-
-# "LogFile" contains the web, ftp or mail server log file to analyze.
-# Possible values: A full path, or a relative path from awstats.pl directory.
-# Example: "/var/log/apache/access.log"
-# Example: "../logs/mycombinedlog.log"
-# You can also use tags in this filename if you need a dynamic file name
-# depending on date or time (Replacement is made by AWStats at the beginning
-# of its execution). This is available tags :
-#   %YYYY-n  is replaced with 4 digits year we were n hours ago
-#   %YY-n    is replaced with 2 digits year we were n hours ago
-#   %MM-n    is replaced with 2 digits month we were n hours ago
-#   %MO-n    is replaced with 3 letters month we were n hours ago
-#   %DD-n    is replaced with day we were n hours ago
-#   %HH-n    is replaced with hour we were n hours ago
-#   %NS-n    is replaced with number of seconds at 00:00 since 1970
-#   %WM-n    is replaced with the week number in month (1-5)
-#   %Wm-n    is replaced with the week number in month (0-4)
-#   %WY-n    is replaced with the week number in year (01-52)
-#   %Wy-n    is replaced with the week number in year (00-51)
-#   %DW-n    is replaced with the day number in week (1-7, 1=sunday)
-#                              use n=24 if you need (1-7, 1=monday)
-#   %Dw-n    is replaced with the day number in week (0-6, 0=sunday)
-#                              use n=24 if you need (0-6, 0=monday)
-#   Use 0 for n if you need current year, month, day, hour...
-# Example: "/var/log/access_log.%YYYY-0%MM-0%DD-0.log"
-# Example: "C:/WINNT/system32/LogFiles/W3SVC1/ex%YY-24%MM-24%DD-24.log"
-# You can also use a pipe if log file come from a pipe :
-# Example: "gzip -d </var/log/apache/access.log.gz |"
-# If there is several log files from load balancing servers :
-# Example: "/pathtotools/logresolvemerge.pl *.log |"
-#
-LogFile="/var/log/apache/access.log"
-
-
-# Enter the log file type you want to analyze.
-# Possible values:
-#  W - For a web log file
-#  S - For a streaming log file
-#  M - For a mail log file
-#  F - For a ftp log file
-# Example: W
-# Default: W
-#
-LogType=W
-
-
-# Enter here your log format (Must match your web server config. See setup
-# instructions in documentation to know how to configure your web server to
-# have the required log format).
-# Possible values: 1,2,3,4 or "your_own_personalized_log_format"
-# 1 - Apache or Lotus Notes/Domino native combined log format (NCSA combined/XLF/ELF log format)
-# 2 - Old IIS log format (IIS W3C log format). See FAQ for IIS 6.x.
-# 3 - Webstar native log format.
-# 4 - Apache or Squid native common log format (NCSA common/CLF log format)
-#     With LogFormat=4, some features (browsers, os, keywords...) can't work.
-# "your_own_personalized_log_format" = If your log is ftp, mail or other format,
-#     you must use following keys to define the log format string (See FAQ
-#     for ftp, mail or exotic web log format examples):
-#   %host             Host client name or IP address
-#   %lognamequot      Authenticated login/user with format: "john"
-#   %logname          Authenticated login/user with format: john
-#   %time1            Date and time with format: [dd/mon/yyyy:hh:mm:ss +0000] or [dd/mon/yyyy:hh:mm:ss]
-#   %time2            Date and time with format: yyyy-mm-dd hh:mm:ss
-#   %time3            Date and time with format: Mon dd hh:mm:ss or Mon dd hh:mm:ss yyyy
-#   %time4            Date and time with unix timestamp format: dddddddddd
-#   %methodurl        Method and URL with format: "GET /index.html HTTP/x.x"
-#   %methodurlnoprot  Method and URL with format: "GET /index.html"
-#   %method           Method with format: GET
-#   %url              URL only with format: /index.html
-#   %query            Query string (used by URLWithQuery option)
-#   %code             Return code status (with format for web log: 999)
-#   %bytesd           Size of document in bytes
-#   %refererquot      Referer page with format: "http://from.com/from.htm";
-#   %referer          Referer page with format: http://from.com/from.htm
-#   %uaquot           User agent with format: "Mozilla/4.0 (compatible, ...)"
-#   %ua               User agent with format: Mozilla/4.0_(compatible...)
-#   %gzipin           mod_gzip compression input bytes: In:XXX
-#   %gzipout          mod_gzip compression output bytes & ratio: Out:YYY:ZZpct.
-#   %gzipratio        mod_gzip compression ratio: ZZpct.
-#   %deflateratio     mod_deflate compression ratio with format: (ZZ)
-#   %email            EMail sender (for mail log)
-#   %email_r          EMail receiver (for mail log)
-#   %virtualname      Web sever virtual hostname. Use this tag when same log
-#                     contains data of several virtual web servers. AWStats
-#                     will discard records not in SiteDomain nor HostAliases
-#   %cluster          If log file is provided from several computers (merged by
-#                     logresolvemerge.pl), use this to define cluster id field.
-#   %extraX           Another field that you plan to use for building a
-#                     personalized report with ExtraSection feature (See later).
-#   If your log format has some fields not included in this list, use:
-#   %other            Means another not used field
-#   %otherquot        Means another not used double quoted field
-#
-# Examples for Apache combined logs (following two examples are equivalent):
-# LogFormat = 1
-# LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
-#
-LogFormat=4
-
-
-# If your log field's separator is not a space, you can change this parameter.
-# This parameter is not used if LogFormat is a predefined value (1,2,3,4)
-# Backslash can be used as escape character.
-# Example: " "
-# Example: "\t"
-# Example: "\|"
-# Default: " "
-#
-LogSeparator=" "
-
-
-# "SiteDomain" must contain the main domain name, or the main intranet web
-# server name, used to reach the web site.
-# If you share the same log file for several virtual web servers, this
-# parameter is used to tell AWStats to filter record that contains records for
-# this virtual host name only (So check that this virtual hostname can be
-# found in your log file and use a personalized log format that include the
-# %virtualname tag).
-# But for multi hosting a better solution is to have one log file for each
-# virtual web server. In this case, this parameter is only used to generate
-# full URL's links when ShowLinksOnUrl option is set to 1.
-# If analysing mail log, enter here the domain name of mail server.
-# Example: "myintranetserver"
-# Example: "www.domain.com"
-# Example: "ftp.domain.com"
-# Example: "domain.com"
-#
-SiteDomain=""
-
-
-# Enter here all other possible domain names, addresses or virtual host
-# aliases someone can use to access your site. Try to keep only the minimum
-# number of possible names/addresses to have the best performances.
-# You can repeat the "SiteDomain" value in this list.
-# This parameter is used to analyze referer field in log file and to help
-# AWStats to know if a referer URL is a local URL of same site or an URL of
-# another site.
-# Note: Use space between each value.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Note: You can also use @/mypath/myfile if list of aliases are in a file.
-# Example: "www.myserver.com localhost 127.0.0.1 REGEX[mydomain\.(net|org)$]"
-#
-HostAliases="localhost 127.0.0.1"
-
-
-# If you want to have hosts reported by name instead of ip address, AWStats
-# need to make reverse DNS lookups (if not already done in your log file).
-# With DNSLookup to 0, all hosts will be reported by their IP addresses and
-# not by the full hostname of visitors (except if names are already available
-# in log file).
-# If you want/need to set DNSLookup to 1, don't forget that this will reduce
-# dramatically AWStats update process speed. Do not use on large web sites.
-# Note: Reverse DNS lookup is done on IPv4 only (Enable ipv6 plugin for IPv6).
-# Note: Result of DNS Lookup can be used to build the Country report. However
-# it is highly recommanded to enable the plugin 'geoipfree' or 'geoip' to
-# have an accurate Country report with no need of DNS Lookup.
-# Possible values:
-# 0 - No DNS Lookup
-# 1 - DNS Lookup is fully enabled
-# 2 - DNS Lookup is made only from static DNS cache file (if it exists)
-# Default: 2
-# 
-DNSLookup=1
-
-
-# When AWStats updates its statistics, it stores results of its analysis in 
-# files (AWStats database). All those files are written in the directory
-# defined by the "DirData" parameter. Set this value to the directory where
-# you want AWStats to save its database and working files into.
-# Warning: If you want to be able to use the "AllowToUpdateStatsFromBrowser"
-# feature (see later), you need "Write" permissions by web server user on this
-# directory (and "Modify" for Windows NTFS file systems).
-# Example: "/var/lib/awstats"
-# Example: "../data"
-# Example: "C:/awstats_data_dir"
-# Default: "."          (means same directory as awstats.pl)
-#
-DirData="/var/lib/awstats"
-
-
-# Relative or absolute web URL of your awstats cgi-bin directory.
-# This parameter is used only when AWStats is run from command line
-# with -output option (to generate links in HTML reported page).
-# Example: "/awstats"
-# Default: "/cgi-bin"   (means awstats.pl is in "/yourwwwroot/cgi-bin")
-#
-DirCgi="/cgi-bin"
-
-
-# Relative or absolute web URL of your awstats icon directory.
-# If you build static reports ("... -output > outputpath/output.html"), enter
-# path of icon directory relative to the output directory 'outputpath'.
-# Example: "/awstatsicons"
-# Example: "../icon"
-# Default: "/icon" (means you must copy icon directories in "/mywwwroot/icon")
-#
-DirIcons="/awstats-icon"
-
-
-# When this parameter is set to 1, AWStats add a button on report page to
-# allow to "update" statistics from a web browser. Warning, when "update" is
-# made from a browser, AWStats is ran as a CGI by the web server user defined
-# in your web server (user "nobody" by default with Apache, "IUSR_XXX" with
-# IIS), so the "DirData" directory and all already existing history files
-# awstatsMMYYYY[.xxx].txt must be writable by this user. Change permissions if
-# necessary to "Read/Write" (and "Modify" for Windows NTFS file systems).
-# Warning: Update process can be long so you might experience "time out"
-# browser errors if you don't launch AWStats enough frequently.
-# When set to 0, update is only made when AWStats is ran from the command
-# line interface (or a task scheduler).
-# Possible values: 0 or 1
-# Default: 0
-#
-AllowToUpdateStatsFromBrowser=0
-
-
-# AWStats save and sort its database on a month basis, this allows to build
-# build a report quickly. However, if you choose the -month=all from command
-# line or value '-Year-' from CGI combo form to have a report for all year,
-# AWStats needs to reload all data for full year, and resort them completely,
-# requiring a large amount of time, memory and CPU. This might be a problem
-# for web hosting providers that offer AWStats for large sites, on shared
-# servers, to non CPU cautious customers.
-# For this reason, the 'full year' is only enabled on Command Line by default.
-# You can change this by setting this parameter to 0, 1, 2 or 3.
-# Possible values:
-#  0 - Never allowed
-#  1 - Allowed on CLI only, -Year- value in combo is not visible
-#  2 - Allowed on CLI only, -Year- value in combo is visible but not allowed
-#  3 - Possible on CLI and CGI
-# Default: 2
-#
-AllowFullYearView=2
-
-
-
-#-----------------------------------------------------------------------------
-# OPTIONAL SETUP SECTION (Not required but increase AWStats features)
-#-----------------------------------------------------------------------------
-
-# When the update process run, AWStats can set a lock file in TEMP or TMP
-# directory. This lock is to avoid to have 2 update processes running at the
-# same time to prevent unknown conflicts problems and avoid DoS attacks when
-# AllowToUpdateStatsFromBrowser is set to 1.
-# Because, when you use lock file, you can experience sometimes problems in
-# lock file not correctly removed (killed process for example requires that
-# you remove the file manualy), this option is not enabled by default (Do
-# not enable this option with no console server access).
-# Change : Effective immediatly
-# Possible values: 0 or 1
-# Default: 0
-#
-EnableLockForUpdate=0
-
-
-# AWStats can do reverse DNS lookups through a static DNS cache file that was
-# previously created manually. If no path is given in static DNS cache file
-# name, AWStats will search DirData directory. This file is never changed.
-# This option is not used if DNSLookup=0.
-# Note: DNS cache file format is 'minsince1970 ipaddress resolved_hostname'
-# or just 'ipaddress resolved_hostname'
-# Change : Effective for new updates only
-# Example: "/mydnscachedir/dnscache"
-# Default: "dnscache.txt"
-#
-DNSStaticCacheFile="dnscache.txt"
-
-
-# AWStats can do reverse DNS lookups through a DNS cache file that was created
-# by a previous run of AWStats. This file is erased and recreated after each
-# statistics update process. You don't need to create and/or edit it.
-# AWStats will read and save this file in DirData directory.
-# This option is used only if DNSLookup=1.
-# Note: If a DNSStaticCacheFile is available, AWStats will check for DNS
-# lookup in DNSLastUpdateCacheFile after checking into DNSStaticCacheFile.
-# Change : Effective for new updates only
-# Example: "/mydnscachedir/dnscachelastupdate"
-# Default: "dnscachelastupdate.txt"
-#
-DNSLastUpdateCacheFile="dnscachelastupdate.txt"
-
-
-# You can specify specific IP addresses that should NOT be looked up in DNS.
-# This option is used only if DNSLookup=1.
-# Note: Use space between each value.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Change : Effective for new updates only
-# Example: "123.123.123.123 REGEX[^192\.168\.]"
-# Default: ""
-#
-SkipDNSLookupFor=""
-
-
-# The following two parameters allow you to protect a config file from being
-# read by AWStats when called from a browser if web user has not been
-# authenticated. Your AWStats program must be in a web protected "realm" (With
-# Apache, you can use .htaccess files to do so. With other web servers, see
-# your server setup manual).
-# Change : Effective immediatly
-# Possible values: 0 or 1
-# Default: 0
-#
-AllowAccessFromWebToAuthenticatedUsersOnly=0
-
-
-# This parameter give the list of all authorized authenticated users to view
-# statistics for this domain/config file. This parameter is used only if
-# AllowAccessFromWebToAuthenticatedUsersOnly is set to 1.
-# Change : Effective immediatly
-# Example: "user1 user2"
-# Example: "__REMOTE_USER__"
-# Default: ""
-#
-AllowAccessFromWebToFollowingAuthenticatedUsers=""
-
-
-# When this parameter is define to something, the IP address of the user that
-# read its statistics from a browser (when AWStats is used as a CGI) is
-# checked and must match one of the IP address values or ranges.
-# Change : Effective immediatly
-# Example: "127.0.0.1 123.123.123.1-123.123.123.255"
-# Default: ""
-#
-AllowAccessFromWebToFollowingIPAddresses=""
-
-
-# If the "DirData" directory (see above) does not exists, AWStats return an
-# error. However, you can ask AWStats to create it.
-# This option can be used by some Web Hosting Providers that has defined a 
-# dynamic value for DirData (for example DirData="/home/__REMOTE_USER__") and
-# don't want to have to create a new directory each time they add a new user.
-# Change : Effective immediatly
-# Possible values: 0 or 1
-# Default: 0
-#
-CreateDirDataIfNotExists=0
-
-
-# You can choose in which format the Awstats history database is saved.
-# Note: Using "xml" format make AWStats building database files three times
-# larger than using "text" format.
-# Change : Database format is switched after next update
-# Possible values: text or xml
-# Default: text
-#
-BuildHistoryFormat=text
-
-
-# If you prefer having the report output pages be built as XML compliant pages
-# instead of simple HTML pages, you can set this to 'xhtml' (May not works
-# properly with old browsers).
-# Change : Effective immediatly
-# Possible values: html or xhtml
-# Default: html
-#
-BuildReportFormat=html
-
-
-# AWStats databases can be updated from command line of from a browser (when
-# used as a cgi program). So AWStats database files need write permission
-# for both command line user and default web server user (nobody for Unix,
-# IUSR_xxx for IIS/Windows,...).
-# To avoid permission's problems between update process (run by an admin user)
-# and CGI process (ran by a low level user), AWStats can save its database 
-# files with read and write permissions for everyone.
-# By default, AWStats keep default user permissions on updated files. If you 
-# set AllowToUpdateStatsFromBrowser to 1, you can change this parameter to 1.
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-#
-SaveDatabaseFilesWithPermissionsForEveryone=0
-
-
-# AWStats can purge log file, after analyzing it. Note that AWStats is able
-# to detect new lines in a log file, to process only them, so you can launch
-# AWStats as often as you want, even with this parameter to 0.
-# With 0, no purge is made, so you must use a scheduled task or a web server
-# that make this purge frequently.
-# With 1, the purge of the log file is made each time AWStats update is ran.
-# This parameter doesn't work with IIS (This web server doesn't let its log
-# file to be purged).
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-#
-PurgeLogFile=0
-
-
-# When PurgeLogFile is setup to 1, AWStats will clean your log file after
-# processing it. You can however keep an archive file (saved in "DirData") of
-# all processed log records by setting this to 1 (For example if you want to
-# use another log analyzer).
-# This parameter is not used if PurgeLogFile=0
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-#
-ArchiveLogRecords=0
-
-
-# Each time you run the update process, AWStats overwrite the 'historic file'
-# for the month (awstatsMMYYYY[.*].txt) with the updated one.
-# When write errors occurs (IO, disk full,...), this historic file can be
-# corrupted and must be deleted. Because this file contains information of all
-# past processed log files, you will loose old stats if removed. So you can
-# ask AWStats to save last non corrupted file in a .bak file. This file is
-# stored in "DirData" directory with other 'historic files'.
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-#
-KeepBackupOfHistoricFiles=0
-
-
-# Default index page name for your web server.
-# Change : Effective for new updates only
-# Example: "index.php index.html default.html"
-# Default: "index.html"
-#
-DefaultFile="index.html"
-
-
-# Do not include access from clients that match following criteria.
-# If your log file contains IP adresses in host field, you must enter here
-# matching IP adresses criteria.
-# If DNS lookup is already done in your log file, you must enter here hostname
-# criteria, else enter ip address criteria.
-# The opposite parameter of "SkipHosts" is "OnlyHosts".
-# Note: Use space between each value. This parameter is not case sensitive.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Change : Effective for new updates only
-# Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.]"
-# Example: "localhost REGEX[^.*\.localdomain$]"
-# Default: ""
-#
-SkipHosts=""
-
-
-# Do not include access from clients with a user agent that match following
-# criteria. If you want to exclude a robot, you should update the robots.pm
-# file instead of this parameter.
-# The opposite parameter of "SkipUserAgents" is "OnlyUserAgents".
-# Note: Use space between each value. This parameter is not case sensitive.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Change : Effective for new updates only
-# Example: "konqueror REGEX[ua_test_v\d\.\d]"
-# Default: ""
-#
-SkipUserAgents=""
-
-
-# Use SkipFiles to ignore access to URLs that match one of following entries.
-# You can enter a list of not important URLs (like framed menus, hidden pages,
-# etc...) to exclude them from statistics. You must enter here exact relative
-# URL as found in log file, or a matching REGEX value.
-# For example, to ignore /badpage.html, just add "/badpage.html". To ignore
-# all pages in a particular directory, add "REGEX[^\/directorytoexclude]".
-# The opposite parameter of "SkipFiles" is "OnlyFiles".
-# Note: Use space between each value. This parameter is or not case sensitive
-# depending on URLNotCaseSensitive parameter.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Change : Effective for new updates only
-# Example: "/badpage.html REGEX[^\/excludedirectory]"
-# Default: ""
-#
-SkipFiles=""
-
-
-# Include in stats, only accesses from hosts that match one of following
-# entries. For example, if you want AWStats to filter access to keep only
-# stats for visits from particular hosts, you can add those hosts names in
-# this parameter.
-# If DNS lookup is already done in your log file, you must enter here hostname
-# criteria, else enter ip address criteria.
-# The opposite parameter of "OnlyHosts" is "SkipHosts".
-# Note: Use space between each value. This parameter is not case sensitive.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Change : Effective for new updates only
-# Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.]"
-# Default: ""
-#
-OnlyHosts=""
-
-
-# Include in stats, only accesses from user agent that match one of following
-# entries. For example, if you want AWStats to filter access to keep only
-# stats for visits from particular browsers, you can add their user agents
-# string in this parameter.
-# The opposite parameter of "OnlyUserAgents" is "SkipUserAgents".
-# Note: Use space between each value. This parameter is not case sensitive.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Change : Effective for new updates only
-# Example: "msie"
-# Default: ""
-#
-OnlyUserAgents=""
-
-
-# Include in stats, only accesses to URLs that match one of following entries.
-# For example, if you want AWStats to filter access to keep only stats that
-# match a particular string, like a particular directory, you can add this
-# directory name in this parameter.
-# The opposite parameter of "OnlyFiles" is "SkipFiles".
-# Note: Use space between each value. This parameter is or not case sensitive
-# depending on URLNotCaseSensitive parameter.
-# Note: You can use regular expression values writing value with REGEX[value].
-# Change : Effective for new updates only
-# Example: "REGEX[marketing_directory] REGEX[office\/.*\.(csv|sxw)$]"
-# Default: ""
-#
-OnlyFiles=""
-
-
-# Add here a list of kind of url (file extension) that must be counted as
-# "Hit only" and not as a "Hit" and "Page/Download". You can set here all
-# images extensions as they are hit downloaded that must be counted but they
-# are not viewed pages. URLs with such extensions are not included in the TOP
-# Pages/URL report.
-# Note: If you want to exclude particular URLs from stats (No Pages and no
-# Hits reported), you must use SkipFiles parameter.
-# Change : Effective for new updates only
-# Example: "css js class gif jpg jpeg png bmp ico zip arj gz z wav mp3 wma mpg"
-# Example: ""
-# Default: "css js class gif jpg jpeg png bmp ico"
-#
-NotPageList="css js class gif jpg jpeg png bmp ico swf"
-
-
-# By default, AWStats considers that records found in web log file are
-# successful hits if HTTP code returned by server is a valid HTTP code (200
-# and 304). Any other code are reported in HTTP status chart.
-# Note that HTTP 'control codes', like redirection (302, 305) are not added by
-# default in this list as they are not pages seen by a visitor but are
-# protocol exchange codes to tell the browser to ask another page. Because
-# this other page will be counted and seen with a 200 or 304 code, if you 
-# add such codes, you will have 2 pages viewed reported for only one in facts.
-# Change : Effective for new updates only
-# Example: "200 304 302 305"
-# Default: "200 304"
-#
-ValidHTTPCodes="200 304"
-
-
-# By default, AWStats considers that records found in mail log file are
-# successful mail transfers if field that represent return code in analyzed
-# log file match values defined by this parameter.
-# Change : Effective for new updates only
-# Example: "1 250 200"
-# Default: "1 250"
-#
-ValidSMTPCodes="1 250"
-
-
-# Some web servers on some Operating systems (IIS-Windows) considers that a
-# login with same value but different case are the same login. To tell AWStats
-# to also considers them as one, set this parameter to 1.
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-# 
-AuthenticatedUsersNotCaseSensitive=0
-
-
-# Some web servers on some Operating systems (IIS-Windows) considers that two
-# URLs with same value but different case are the same URL. To tell AWStats to
-# also considers them as one, set this parameter to 1.
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-# 
-URLNotCaseSensitive=0
-
-
-# Keep or remove the anchor string you can find in some URLs.
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-#
-URLWithAnchor=0
-
-
-# In URL links, "?" char is used to add parameter's list in URLs. Syntax is:
-# /mypage.html?param1=value1&param2=value2
-# However, some servers/sites use also others chars to isolate dynamic part of
-# their URLs. You can complete this list with all such characters.
-# Change : Effective for new updates only
-# Example: "?;,"
-# Default: "?;"
-#
-URLQuerySeparators="?;"
-
-
-# Keep or remove the query string to the URL in the statistics for individual
-# pages. This is primarily used to differentiate between the URLs of dynamic
-# pages. If set to 1, mypage.html?id=x and mypage.html?id=y are counted as two
-# different pages.
-# Warning, when set to 1, memory required to run AWStats is dramatically
-# increased if you have a lot of changing URLs (for example URLs with a random
-# id inside). Such web sites should not set this option to 1 or use seriously
-# the next parameter URLWithQueryWithOnlyFollowingParameters (or eventually 
-# URLWithQueryWithoutFollowingParameters).
-# Change : Effective for new updates only
-# Possible values:
-# 0 - URLs are cleaned from the query string (ie: "/mypage.html")
-# 1 - Full URL with query string is used     (ie: "/mypage.html?p=x&q=y")
-# Default: 0
-# 
-URLWithQuery=0
-
-
-# When URLWithQuery is on, you will get the full URL with all parameters in
-# URL reports. But among thoose parameters, sometimes you don't need a
-# particular parameter because it does not identify the page or because it's
-# a random ID changing for each access even if URL points to same page. In
-# such cases, it is higly recommanded to ask AWStats to keep only parameters
-# you need (if you know them) before counting, manipulating and storing URL.
-# Enter here list of wanted parameters. For example, with "param", one hit on
-# /mypage.cgi?param=abc&id=Yo4UomP9d  and  /mypage.cgi?param=abc&id=Mu8fdxl3r
-# will be reported as 2 hits on /mypage.cgi?param=abc
-# This parameter is not used when URLWithQuery is 0 and can't be used with
-# URLWithQueryWithoutFollowingParameters.
-# Change : Effective for new updates only
-# Example: "param"
-# Default: ""
-# 
-URLWithQueryWithOnlyFollowingParameters=""
-
-
-# When URLWithQuery is on, you will get the full URL with all parameters in
-# URL reports. But among thoose parameters, sometimes you don't need a
-# particular parameter because it does not identify the page or because it's
-# a random ID changing for each access even if URL points to same page. In
-# such cases, it is higly recommanded to ask AWStats to remove such parameters
-# from the URL before counting, manipulating and storing URL. Enter here list
-# of all non wanted parameters. For example if you enter "id", one hit on
-# /mypage.cgi?param=abc&id=Yo4UomP9d  and  /mypage.cgi?param=abc&id=Mu8fdxl3r
-# will be reported as 2 hits on /mypage.cgi?param=abc
-# This parameter is not used when URLWithQuery is 0 and can't be used with
-# URLWithQueryWithOnlyFollowingParameters.
-# Change : Effective for new updates only
-# Example: "PHPSESSID jsessionid"
-# Default: ""
-# 
-URLWithQueryWithoutFollowingParameters=""
-
-
-# Keep or remove the query string to the referrer URL in the statistics for
-# external referrer pages. This is used to differentiate between the URLs of
-# dynamic referrer pages. If set to 1, mypage.html?id=x and mypage.html?id=y
-# are counted as two different referrer pages.
-# Change : Effective for new updates only
-# Possible values:
-# 0 - Referrer URLs are cleaned from the query string (ie: "/mypage.html")
-# 1 - Full URL with query string is used      (ie: "/mypage.html?p=x&q=y")
-# Default: 0
-# 
-URLReferrerWithQuery=0
-
-
-# AWStats can detect setup problems or show you important informations to have
-# a better use. Keep this to 1, except if AWStats says you can change it.
-# Change : Effective immediatly
-# Possible values: 0 or 1
-# Default: 1
-#
-WarningMessages=1
-
-
-# When an error occurs, AWStats output a message related to errors. If you
-# want (in most cases for security reasons) to have no error messages, you
-# can set this parameter to your personalized generic message.
-# Change : Effective immediatly
-# Example: "An error occured. Contact your Administrator"
-# Default: ""
-#
-ErrorMessages=""
-
-
-# AWStat can be run with debug=x parameter to output various informations
-# to help in debugging or solving troubles. If you want to allow this (not
-# enabled by default for security reasons), set this parameter to 0.
-# Change : Effective immediatly
-# Possible values: 0 or 1
-# Default: 0
-#
-DebugMessages=0
-
-
-# To help you to detect if your log format is good, AWStats report an error
-# if all the first NbOfLinesForCorruptedLog lines have a format that does not
-# match the LogFormat parameter.
-# However, some worm virus attack on your web server can result in a very high
-# number of corrupted lines in your log. So if you experience awstats stop
-# because of bad virus records at the beginning of your log file, you can
-# increase this parameter (very rare).
-# Change : Effective for new updates only
-# Default: 50
-#
-NbOfLinesForCorruptedLog=50
-
-
-# For some particular integration needs, you may want to have CGI links to
-# point to another script than awstats.pl.
-# Use the name of this script in WrapperScript parameter.
-# Change : Effective immediatly
-# Example: "awstatslauncher.pl"
-# Default: ""
-#
-WrapperScript=""
-
-
-# DecodeUA must be set to 1 if you use Roxen web server. This server converts
-# all spaces in user agent field into %20. This make the AWStats robots, os
-# and browsers detection fail in some cases. Just change it to 1 if and only
-# if your web server is Roxen.
-# Change : Effective for new updates only
-# Possible values: 0 or 1
-# Default: 0
-#
-DecodeUA=0
-
-
-# MiscTrackerUrl can be used to make AWStats able to detect some miscellanous
-# things, that can not be tracked on other way, like:
-# - Javascript disabled
-# - Java enabled
-# - Screen size
-# - Color depth
-# - Macromedia Director plugin
-# - Macromedia Shockwave plugin
-# - Realplayer G2 plugin
-# - QuickTime plugin
-# - Mediaplayer plugin
-# - Acrobat PDF plugin
-# To enable all this features, you must copy the awstats_misc_tracker.js file
-# into a /js/ directory stored in your web document root and add the following
-# HTML code at the end of your index page (but before </BODY>) :
-#
-# <script language=javascript src="/js/awstats_misc_tracker.js"></script>
-# <noscript><img src="/js/awstats_misc_tracker.js?nojs=y" height=0 width=0 border=0 style="display: none"></noscript>
-#
-# If code is not added in index page, all those detection capabilities will be
-# disabled. You must also check that ShowScreenSizeStats and ShowMiscStats
-# parameters are set to 1 to make results appear in AWStats report page.
-# If you want to use another directory than /js/, you must also change the
-# awstatsmisctrackerurl variable into the awstats_misc_tracker.js file.
-# Change : Effective for new updates only.
-# Possible value: URL of javascript tracker file added in your HTML code.
-# Default: "/js/awstats_misc_tracker.js"
-#
-MiscTrackerUrl="/js/awstats_misc_tracker.js"
-
-
-
-#-----------------------------------------------------------------------------
-# OPTIONAL ACCURACY SETUP SECTION (Not required but increase AWStats features)
-#-----------------------------------------------------------------------------
-
-# Following values allows you to define accuracy of AWStats entities (robots,
-# browsers, os, referers, file types) detection.
-# It might be a good idea for large web sites or ISP that provides AWStats to
-# high number of customers, to set this parameter to 1 (or 0), instead of 2.
-# Possible values:
-#  0 = No detection,
-#  1 = Medium/Standard detection
-#  2 = Full detection
-# Change : Effective for new updates only
-# Default: 2 (0 for LevelForWormsDetection)
-#
-LevelForBrowsersDetection=2         # 0 disables Browsers detection.
-                                    # 2 reduces AWStats speed by 2%
-LevelForOSDetection=2               # 0 disables OS detection.
-                                    # 2 reduces AWStats speed by 3%
-LevelForRefererAnalyze=2            # 0 disables Origin detection.
-                                    # 2 reduces AWStats speed by 14%
-LevelForRobotsDetection=2           # 0 disables Robots detection.
-                                    # 2 reduces AWStats speed by 2.5%
-LevelForSearchEnginesDetection=2    # 0 disables Search engines detection.
-                                    # 2 reduces AWStats speed by 9%
-LevelForKeywordsDetection=2         # 0 disables Keyphrases/Keywords detection.
-                                    # 2 reduces AWStats speed by 1%
-LevelForFileTypesDetection=2        # 0 disables File types detection.
-                                    # 2 reduces AWStats speed by 1%
-LevelForWormsDetection=0            # 0 disables Worms detection.
-                                    # 2 reduces AWStats speed by 15%
-
-
-
-#-----------------------------------------------------------------------------
-# OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features)
-#-----------------------------------------------------------------------------
-
-# When you use AWStats as a CGI, you can have the reports shown in HTML frames.
-# Frames are only available for report viewed dynamically. When you build
-# pages from command line, this option is not used and no frames are built.
-# Possible values: 0 or 1
-# Default: 1
-#
-UseFramesWhenCGI=1
-
-
-# This parameter ask your browser to open detailed reports into a different
-# window than the main page.
-# Possible values:
-# 0 - Open all in same browser window
-# 1 - Open detailed reports in another window except if using frames
-# 2 - Open always in a different window even if reports are framed
-# Default: 1
-#
-DetailedReportsOnNewWindows=1
-
-
-# You can add, in the HTML report page, a cache lifetime (in seconds) that
-# will be returned to browser in HTTP header answer by server.
-# This parameter is not used when report are built with -staticlinks option.
-# Example: 3600
-# Default: 0
-#
-Expires=0
-
-
-# To avoid too large web pages, you can ask AWStats to limit number of rows of
-# all reported charts to this number when no other limit apply.
-# Default: 1000
-#
-MaxRowsInHTMLOutput=1000
-
-
-# Set your primary language (ISO-639-1 language codes).
-# Possible value:
-#  Albanian=al, Bosnian=ba, Bulgarian=bg, Catalan=ca,
-#  Chinese (Taiwan)=tw, Chinese (Simpliefied)=cn, Czech=cz, Danish=dk,
-#  Dutch=nl, English=en, Estonian=et, Euskara=eu, Finnish=fi,
-#  French=fr, Galician=gl, German=de, Greek=gr, Hebrew=he, Hungarian=hu,
-#  Icelandic=is, Indonesian=id, Italian=it, Japanese=jp, Korean=kr,
-#  Latvian=lv, Norwegian (Nynorsk)=nn, Norwegian (Bokmal)=nb, Polish=pl,
-#  Portuguese=pt, Portuguese (Brazilian)=br, Romanian=ro, Russian=ru,
-#  Serbian=sr, Slovak=sk, Slovenian=si, Spanish=es, Swedish=se, Turkish=tr,
-#  Ukrainian=ua, Welsh=cy.
-#  First available language accepted by browser=auto
-# Default: "auto"
-#
-Lang="auto"
-
-
-# Set the location of language files.
-# Example: "/usr/share/awstats/lang"
-# Default: "./lang" (means lang directory is in same location than awstats.pl)
-#
-DirLang="/usr/share/awstats/lang"
-
-
-# Show menu header with reports' links
-# Possible values: 0 or 1
-# Default: 1
-#
-ShowMenu=1					
-
-
-# You choose here which reports you want to see in the main page and what you
-# want to see in those reports.
-# Possible values:
-#  0  - Report is not shown at all
-#  1  - Report is shown in main page with an entry in menu and default columns
-# XYZ - Report shows column informations defined by code X,Y,Z...
-#       X,Y,Z... are code letters among the following:
-#        U = Unique visitors
-#        V = Visits
-#        P = Number of pages
-#        H = Number of hits (or mails)
-#        B = Bandwith (or total mail size for mail logs)
-#        L = Last access date
-#        E = Entry pages
-#        X = Exit pages
-#        C = Web compression (mod_gzip,mod_deflate)
-#        M = Average mail size (mail logs)
-#
-
-# Show monthly summary
-# Context: Web, Streaming, Mail, Ftp
-# Default: UVPHB, Possible column codes: UVPHB
-ShowSummary=UVPHB
-
-# Show monthly chart
-# Context: Web, Streaming, Mail, Ftp
-# Default: UVPHB, Possible column codes: UVPHB
-ShowMonthStats=UVPHB
-
-# Show days of month chart
-# Context: Web, Streaming, Mail, Ftp
-# Default: VPHB, Possible column codes: VPHB
-ShowDaysOfMonthStats=VPHB
-
-# Show days of week chart
-# Context: Web, Streaming, Mail, Ftp
-# Default: PHB, Possible column codes: PHB
-ShowDaysOfWeekStats=PHB
-
-# Show hourly chart
-# Context: Web, Streaming, Mail, Ftp
-# Default: PHB, Possible column codes: PHB
-ShowHoursStats=PHB
-
-# Show domains/country chart
-# Context: Web, Streaming, Mail, Ftp
-# Default: PHB, Possible column codes: PHB
-ShowDomainsStats=PHB
-
-# Show hosts chart
-# Context: Web, Streaming, Mail, Ftp
-# Default: PHBL, Possible column codes: PHBL
-ShowHostsStats=PHBL
-
-# Show authenticated users chart
-# Context: Web, Streaming, Ftp
-# Default: 0, Possible column codes: PHBL
-ShowAuthenticatedUsers=0
-
-# Show robots chart
-# Context: Web, Streaming
-# Default: HBL, Possible column codes: HBL
-ShowRobotsStats=HBL
-
-# Show worms chart
-# Context: Web, Streaming
-# Default: 0 (If set to other than 0, see also LevelForWormsDetection), Possible column codes: HBL
-ShowWormsStats=0
-
-# Show email senders chart (For use when analyzing mail log files)
-# Context: Mail
-# Default: 0, Possible column codes: HBML
-ShowEMailSenders=0
-
-# Show email receivers chart (For use when analyzing mail log files)
-# Context: Mail
-# Default: 0, Possible column codes: HBML
-ShowEMailReceivers=0
-
-# Show session chart
-# Context: Web, Streaming, Ftp
-# Default: 1, Possible column codes: None
-ShowSessionsStats=1
-
-# Show pages-url chart.
-# Context: Web, Streaming, Ftp
-# Default: PBEX, Possible column codes: PBEX
-ShowPagesStats=PBEX
-
-# Show file types chart.
-# Context: Web, Streaming, Ftp
-# Default: HB, Possible column codes: HBC
-ShowFileTypesStats=HB
-
-# Show file size chart (Not yet available)
-# Context: Web, Streaming, Mail, Ftp
-# Default: 1, Possible column codes: None
-ShowFileSizesStats=0		
-
-# Show operating systems chart
-# Context: Web, Streaming, Ftp
-# Default: 1, Possible column codes: None
-ShowOSStats=1
-
-# Show browsers chart
-# Context: Web, Streaming
-# Default: 1, Possible column codes: None
-ShowBrowsersStats=1
-
-# Show screen size chart
-# Context: Web, Streaming
-# Default: 0 (If set to 1, see also MiscTrackerUrl), Possible column codes: None
-ShowScreenSizeStats=0
-
-# Show origin chart
-# Context: Web, Streaming
-# Default: PH, Possible column codes: PH
-ShowOriginStats=PH
-
-# Show keyphrases chart
-# Context: Web, Streaming
-# Default: 1, Possible column codes: None
-ShowKeyphrasesStats=1
-
-# Show keywords chart
-# Context: Web, Streaming
-# Default: 1, Possible column codes: None
-ShowKeywordsStats=1
-
-# Show misc chart
-# Context: Web, Streaming
-# Default: a (See also MiscTrackerUrl parameter), Possible column codes: anjdfrqwp
-ShowMiscStats=a
-
-# Show http errors chart
-# Context: Web, Streaming
-# Default: 1, Possible column codes: None
-ShowHTTPErrorsStats=1
-
-# Show smtp errors chart (For use when analyzing mail log files)
-# Context: Mail
-# Default: 0, Possible column codes: None
-ShowSMTPErrorsStats=0
-
-# Show the cluster report (Your LogFormat must contains the %cluster tag)
-# Context: Web, Streaming, Ftp
-# Default: 0, Possible column codes: PHB
-ShowClusterStats=0
-
-
-# Some graphical reports are followed by the data array of values.
-# If you don't want this array (to reduce report size for example), you can
-# set thoose options to 0.
-# Possible values: 0 or 1
-# Default: 1
-#
-# Data array values for the ShowMonthStats report
-AddDataArrayMonthStats=1
-# Data array values for the ShowDaysOfMonthStats report
-AddDataArrayShowDaysOfMonthStats=1
-# Data array values for the ShowDaysOfWeekStats report
-AddDataArrayShowDaysOfWeekStats=1
-# Data array values for the ShowHoursStats report
-AddDataArrayShowHoursStats=1
-
-
-# In the Origin chart, you have stats on where your hits came from. You can
-# includes hits on pages that comes from pages of same sites in this chart.
-# Possible values: 0 or 1
-# Default: 0
-#
-IncludeInternalLinksInOriginSection=0
-
-
-# Following parameter can be used to choose maximum number of lines shown for
-# the particular following report.
-#
-# Stats by countries/domains
-MaxNbOfDomain = 10
-MinHitDomain  = 1
-# Stats by hosts
-MaxNbOfHostsShown = 10
-MinHitHost    = 1
-# Stats by authenticated users
-MaxNbOfLoginShown = 10
-MinHitLogin   = 1
-# Stats by robots
-MaxNbOfRobotShown = 10
-MinHitRobot   = 1
-# Stats by pages
-MaxNbOfPageShown = 10
-MinHitFile    = 1
-# Stats by OS
-MaxNbOfOsShown = 10
-MinHitOs      = 1
-# Stats by browsers
-MaxNbOfBrowsersShown = 10
-MinHitBrowser = 1
-# Stats by screen size
-MaxNbOfScreenSizesShown = 5
-MinHitScreenSize = 1
-# Stats by window size (following 2 parameters are not yet used)
-MaxNbOfWindowSizesShown = 5
-MinHitWindowSize = 1
-# Stats by referers
-MaxNbOfRefererShown = 10
-MinHitRefer   = 1
-# Stats for keyphrases
-MaxNbOfKeyphrasesShown = 10
-MinHitKeyphrase = 1
-# Stats for keywords
-MaxNbOfKeywordsShown = 10
-MinHitKeyword = 1
-# Stats for sender or receiver emails
-MaxNbOfEMailsShown = 20
-MinHitEMail   = 1
-
-
-# Choose if you want the week report to start on sunday or monday
-# Possible values:
-# 0 - Week start on sunday
-# 1 - Week start on monday
-# Default: 1
-#
-FirstDayOfWeek=1
-
-
-# List of visible flags that links to other language translations.
-# See Lang parameter for list of allowed flag/language codes.
-# If you don't want any flag link, set ShowFlagLinks to "".
-# This parameter is used only if ShowMenu parameter is set to 1.
-# Possible values: "" or "language_codes_separated_by_space"
-# Example: "en es fr nl de"
-# Default: ""
-#
-ShowFlagLinks=""
-
-
-# Each URL, shown in stats report views, are links you can click.
-# Possible values: 0 or 1
-# Default: 1
-#
-ShowLinksOnUrl=1
-
-
-# When AWStats build HTML links in its report pages, it starts thoose link
-# with "http://";. However some links might be HTTPS links, so you can enter
-# here the root of all your HTTPS links. If all your site is a SSL web site,
-# just enter "/".
-# This parameter is not used if ShowLinksOnUrl is 0.
-# Example: "/shopping"
-# Example: "/"
-# Default: ""
-#
-UseHTTPSLinkForUrl=""
-
-
-# Maximum length of URL part shown on stats page (number of characters).
-# This affects only URL visible text, link still work.
-# Default: 64
-#
-MaxLengthOfShownURL=64
-
-
-# You can enter HTML code that will be added at the top of AWStats reports.
-# Default: ""
-#
-HTMLHeadSection=""
-
-
-# You can enter HTML code that will be added at the end of AWStats reports.
-# Great to add advert ban.
-# Default: ""
-#
-HTMLEndSection=""
-
-
-# You can set Logo and LogoLink to use your own logo.
-# Logo must be the name of image file (must be in $DirIcons/other directory).
-# LogoLink is the expected URL when clicking on Logo.
-# Default: "awstats_logo6.png"
-#
-Logo="awstats_logo6.png"
-LogoLink="http://awstats.sourceforge.net";
-
-
-# Value of maximum bar width/height for horizontal/vertical HTML graphics bar.
-# Default: 260/90
-#
-BarWidth   = 260
-BarHeight  = 90
-
-
-# You can ask AWStats to use a particular CSS (Cascading Style Sheet) to
-# change its look. To create a style sheet, you can use samples provided with
-# AWStats in wwwroot/css directory.
-# Example: "/awstatscss/awstats_bw.css"
-# Example: "/css/awstats_bw.css"
-# Default: ""
-#
-StyleSheet=""
-
-
-# Those colors parameters can be used (if StyleSheet parameter is not used)
-# to change AWStats look.
-# Example: color_name="RRGGBB"	# RRGGBB is Red Green Blue components in Hex
-#
-color_Background="FFFFFF"		# Background color for main page (Default = "FFFFFF")
-color_TableBGTitle="CCCCDD"		# Background color for table title (Default = "CCCCDD")
-color_TableTitle="000000"		# Table title font color (Default = "000000")
-color_TableBG="CCCCDD"			# Background color for table (Default = "CCCCDD")
-color_TableRowTitle="FFFFFF"	# Table row title font color (Default = "FFFFFF")
-color_TableBGRowTitle="ECECEC"	# Background color for row title (Default = "ECECEC")
-color_TableBorder="ECECEC"		# Table border color (Default = "ECECEC")
-color_text="000000"				# Color of text (Default = "000000")
-color_textpercent="606060"		# Color of text for percent values (Default = "606060")
-color_titletext="000000"		# Color of text title within colored Title Rows (Default = "000000")
-color_weekend="EAEAEA"			# Color for week-end days (Default = "EAEAEA")
-color_link="0011BB"				# Color of HTML links (Default = "0011BB")
-color_hover="605040"			# Color of HTML on-mouseover links (Default = "605040") 
-color_u="FFAA66"				# Background color for number of unique visitors (Default = "FFAA66")
-color_v="F4F090"				# Background color for number of visites (Default = "F4F090")
-color_p="4477DD"				# Background color for number of pages (Default = "4477DD")
-color_h="66DDEE"				# Background color for number of hits (Default = "66DDEE")
-color_k="2EA495"				# Background color for number of bytes (Default = "2EA495")
-color_s="8888DD"				# Background color for number of search (Default = "8888DD")
-color_e="CEC2E8"				# Background color for number of entry pages (Default = "CEC2E8")
-color_x="C1B2E2"				# Background color for number of exit pages (Default = "C1B2E2")
-
-
-
-#-----------------------------------------------------------------------------
-# PLUGINS
-#-----------------------------------------------------------------------------
-
-# Add here all plugins file you want to load.
-# Plugin files must be .pm files stored in 'plugins' directory.
-# Uncomment LoadPlugin lines to enable a plugin after checking that perl
-# modules required by the plugin are installed.
-
-# Plugin: Tooltips
-# Perl modules required: None
-# Add some tooltips help on HTML report pages.
-# Note that enabled this kind of help will increased HTML report pages size,
-# so server load and bandwidth.
-#
-#LoadPlugin="tooltips"
-
-# Plugin: DecodeUTFKeys
-# Perl modules required: Encode and URI::Escape
-# Allow AWStats to show correctly (in language charset) keywords/keyphrases
-# strings even if they were UTF8 coded by the referer search engine.
-#
-#LoadPlugin="decodeutfkeys"
-
-# Plugin: IPv6
-# Perl modules required: Net::IP and Net::DNS
-# This plugin gives AWStats capability to make reverse DNS lookup on IPv6
-# addresses.
-# Note: If you are interesting in having country report, you should use the
-# geoipfree or geoip plugin instead of enabled reverse DNS lookup.
-#
-#LoadPlugin="ipv6"
-
-# Plugin: HashFiles
-# Perl modules required: Storable
-# AWStats DNS cache files are read/saved as native hash files. This increase
-# DNS cache files loading speed, above all for very large web sites.
-#
-LoadPlugin="hashfiles"
-
-# Plugin: GeoIP
-# Perl modules required: Geo::IP or Geo::IP::PurePerl (from Maxmind)
-# Country chart is built from an Internet IP-Country database.
-# This plugin is useless for intranet only log files.
-# Note: You must choose between using this plugin (need Perl Geo::IP module 
-# from Maxmind, database more up to date) or the GeoIPfree plugin (need
-# Perl Geo::IPfree module, database less up to date).
-# This plugin reduces AWStats speed of 8% !
-#
-#LoadPlugin="geoip GEOIP_STANDARD"
-
-# Plugin: GeoIPfree
-# Perl modules required: Geo::IPfree version 0.2+ (from Graciliano M.P.)
-# Country chart is built from an Internet IP-Country database.
-# This plugin is useless for intranet only log files.
-# Note: You must choose between using this plugin (need Perl Geo::IPfree
-# module, database less up to date) or the GeoIP plugin (need Perl Geo::IP
-# module from Maxmind, database more up to date).
-# Note: Activestate provide a corrupted version of Geo::IPfree 0.2 Perl
-# module, so install it from elsewhere (from www.cpan.org for example).
-# This plugin reduces AWStats speed of 10% !
-#
-#LoadPlugin="geoipfree"
-
-# Plugin: GeoIP_Region_Maxmind
-# Perl modules required: Geo::IP (from Maxmind)
-# This plugin add a chart of hits by regions. Only regions for US and 
-# Canada can be detected.
-# Note: This plugin need Maxmind GeoIP Perl module AND the region database.
-# Note: I get some problem with Maxmind Geo::IP Perl module with ActiveState
-# on Windows but it works great on Linux with default Perl.
-# You need to purchase a license from Maxmind to get/use the Region database.
-# This plugin reduces AWStats speed.
-#
-#LoadPlugin="geoip_region_maxmind GEOIP_STANDARD /pathto/GeoIPRegion.dat"
-
-# Plugin: GeoIP_City_Maxmind
-# Perl modules required: Geo::IP (from Maxmind)
-# This plugin add a chart of hits by cities.
-# Note: This plugin need Maxmind GeoIP Perl module AND the city database.
-# Note: I get some problem with Maxmind Geo::IP Perl module with ActiveState
-# on Windows but it works great on Linux with default Perl.
-# You need to purchase a license from Maxmind to get/use the City database.
-# This plugin reduces AWStats speed.
-#
-#LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /pathto/GeoIPCity.dat"
-
-# Plugin: GeoIP_ISP_Maxmind
-# Perl modules required: Geo::IP (from Maxmind)
-# This plugin add a chart of hits by ISP.
-# Note: This plugin need Maxmind GeoIP Perl module AND the ISP database.
-# Note: I get some problem with Maxmind Geo::IP Perl module with ActiveState
-# on Windows but it works great on Linux with default Perl.
-# You need to purchase a license from Maxmind to get/use the ISP database.
-# This plugin reduces AWStats speed.
-#
-#LoadPlugin="geoip_isp_maxmind GEOIP_STANDARD /pathto/GeoIPISP.dat"
-
-# Plugin: GeoIP_Org_Maxmind
-# Perl modules required: Geo::IP (from Maxmind)
-# This plugin add a chart of hits by Organization name
-# Note: This plugin need Maxmind GeoIP Perl module AND the Org database.
-# Note: I get some problem with Maxmind Geo::IP Perl module with ActiveState
-# on Windows but it works great on Linux with default Perl.
-# You need to purchase a license from Maxmind to get/use the Org database.
-# This plugin reduces AWStats speed.
-#
-#LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /pathto/GeoIPOrg.dat"
-
-# Plugin: UserInfo
-# Perl modules required: None
-# Add a text (Firtname, Lastname, Office Department, ...) in authenticated user
-# reports for each login value.
-# A text file called userinfo.myconfig.txt, with two fields (first is login,
-# second is text to show, separated by a tab char) must be created in DirData
-# directory.
-#
-#LoadPlugin="userinfo"
-
-# Plugin: HostInfo
-# Perl modules required: Net::XWhois
-# Add a column into host chart with a link to open a popup window that shows
-# info on host (like whois records).
-#
-#LoadPlugin="hostinfo"
-
-# Plugin: ClusterInfo
-# Perl modules required: None
-# Add a text (for example a full hostname) in cluster reports for each cluster
-# number.
-# A text file called clusterinfo.myconfig.txt, with two fields (first is
-# cluster number, second is text to show) separated by a tab char. must be
-# created into DirData directory.
-# Note this plugin is useless if ShowClusterStats is set to 0 or if you don't
-# use a personalized log format that contains %cluster tag.
-#
-#LoadPlugin="clusterinfo"
-
-# Plugin: UrlAliases
-# Perl modules required: None
-# Add a text (Page title, description...) in URL reports before URL value.
-# A text file called urlalias.myconfig.txt, with two fields (first is URL,
-# second is text to show, separated by a tab char) must be created into
-# DirData directory.
-#
-#LoadPlugin="urlalias"
-
-# Plugin: TimeHiRes
-# Perl modules required: Time::HiRes (if Perl < 5.8)
-# Time reported by -showsteps option is in millisecond. For debug purpose.
-#
-#LoadPlugin="timehires"		
-
-# Plugin: TimeZone
-# Perl modules required: Time::Local
-# Allow AWStats to correct a bad timezone for user of some IIS that use
-# GMT date in its log instead of local server time.
-# This module is useless for Apache and most IIS version.
-# This plugin reduces AWStats speed of 40% !!!!!!!
-#
-#LoadPlugin="timezone +2"
-
-# Plugin: Rawlog
-# Perl modules required: None
-# This plugin adds a form in AWStats main page to allow users to see raw
-# content of current log files. A filter is also available.
-#
-#LoadPlugin="rawlog"
-
-# Plugin: GraphApplet
-# Perl modules required: None
-# Supported charts are built by a 3D graphic applet.
-#
-#LoadPlugin="graphapplet /awstatsclasses"				# EXPERIMENTAL FEATURE
-
-
-
-#-----------------------------------------------------------------------------
-# EXTRA SECTIONS
-#-----------------------------------------------------------------------------
-
-# You can define your own charts, you choose here what are rows and columns
-# keys. This feature is particularly usefull for marketing purpose, tracking
-# products orders for example.
-# For this, edit all parameters of Extra section. Each set of parameter is a
-# different chart. For several charts, duplicate section changing the number.
-# Note: Each Extra section reduces AWStats speed by 8%.
-#
-# WARNING: A wrong setup of Extra section might result in too large arrays
-# that will consume all your memory, making AWStats unusable after several
-# updates, so be sure to setup it correctly.
-# In most cases, you don't need this feature.
-#
-# ExtraSectionNameX is title of your personalized chart.
-# ExtraSectionCodeFilterX is list of codes the record code field must match.
-#   Put an empty string for no test on code.
-# ExtraSectionConditionX are conditions you can use to count or not the hit,
-#   Use one of the field condition (URL,QUERY_STRING,REFERER,UA,HOST,extraX)
-#   and a regex to match, after a coma. Use "||" for "OR".
-# ExtraSectionFirstColumnTitleX is the first column title of the chart.
-# ExtraSectionFirstColumnValuesX is a string to tell AWStats which field to
-#   extract value from (URL,QUERY_STRING,REFERER,UA,HOST,extraX)
-#   and how to extract the value (using regex syntax). Each different value
-#   found will appear in first column of report on a different row. Be sure
-#   that list of different possible values will not grow indefinitely.
-# ExtraSectionFirstColumnFormatX is the string used to write value.
-# ExtraSectionStatTypesX are things you want to count. You can use standard
-#   code letters (P for pages,H for hits,B for bandwidth,L for last access).
-# ExtraSectionAddAverageRowX add a row at bottom of chart with average values.
-# ExtraSectionAddSumRowX add a row at bottom of chart with sum values.
-# MaxNbOfExtraX is maximum number of rows shown in chart.
-# MinHitExtraX is minimum number of hits required to be shown in chart.
-#
-
-# Example to report the 20 products the most ordered by "order.cgi" script
-#ExtraSectionName1="Product orders"
-#ExtraSectionCodeFilter1="200 304"
-#ExtraSectionCondition1="URL,\/cgi\-bin\/order\.cgi||URL,\/cgi\-bin\/order2\.cgi"
-#ExtraSectionFirstColumnTitle1="Product ID"
-#ExtraSectionFirstColumnValues1="QUERY_STRING,productid=([^&]+)"
-#ExtraSectionFirstColumnFormat1="%s"
-#ExtraSectionStatTypes1=PL
-#ExtraSectionAddAverageRow1=0
-#ExtraSectionAddSumRow1=1
-#MaxNbOfExtra1=20
-#MinHitExtra1=1
-
-
-# There is also a global parameter ExtraTrackedRowsLimit that limit the
-# number of possible rows an ExtraSection can report. This parameter is
-# here to protect too much memory use when you make a bad setup in your
-# ExtraSection. It applies to all ExtraSection independently meaning that
-# none ExtraSection can report more rows than value defined by ExtraTrackedRowsLimit.
-# If you know an ExtraSection will report more rows than its value, you should
-# increase this parameter or AWStats will stop with an error.
-# Example: 2000
-# Default: 500
-#
-ExtraTrackedRowsLimit=500
-
-
-#-----------------------------------------------------------------------------
-# INCLUDES
-#-----------------------------------------------------------------------------
-
-# You can include other config files using the directive with the name of the
-# config file.
-# This is particularly usefull for users who have a lot of virtual servers, so
-# a lot of config files and want to maintain common values in only one file.
-# Note that when a variable is defined both in a config file and in an
-# included file, AWStats will use the last value read for parameters that
-# contains one value and AWStats will concat all values from both files for
-# parameters that are lists of value.
-#
-
-Include "/etc/awstats/awstats.conf.local"
-

Modified: branches/vhffs_4.1/vhffs-robots/misc/awstats.sample
===================================================================
--- branches/vhffs_4.1/vhffs-robots/misc/awstats.sample	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/misc/awstats.sample	2007-01-21 21:22:48 UTC (rev 421)
@@ -1,102 +1,8 @@
-LogFile="/var/log/apache/access.log"
+LogFormat=1
+LogFile="MY_LOGPATH"
+SiteDomain="MY_DOMAINNAME"
 
 
-# Enter the log file type you want to analyze.
-# Possible values:
-#  W - For a web log file
-#  S - For a streaming log file
-#  M - For a mail log file
-#  F - For a ftp log file
-# Example: W
-# Default: W
-#
-LogType=W
-
-
-# Enter here your log format (Must match your web server config. See setup
-# instructions in documentation to know how to configure your web server to
-# have the required log format).
-# Possible values: 1,2,3,4 or "your_own_personalized_log_format"
-# 1 - Apache or Lotus Notes/Domino native combined log format (NCSA combined/XLF/ELF log format)
-# 2 - Old IIS log format (IIS W3C log format). See FAQ for IIS 6.x.
-# 3 - Webstar native log format.
-# 4 - Apache or Squid native common log format (NCSA common/CLF log format)
-#     With LogFormat=4, some features (browsers, os, keywords...) can't work.
-# "your_own_personalized_log_format" = If your log is ftp, mail or other format,
-#     you must use following keys to define the log format string (See FAQ
-#     for ftp, mail or exotic web log format examples):
-#   %host             Host client name or IP address
-#   %lognamequot      Authenticated login/user with format: "john"
-#   %logname          Authenticated login/user with format: john
-#   %time1            Date and time with format: [dd/mon/yyyy:hh:mm:ss +0000] or [dd/mon/yyyy:hh:mm:ss]
-#   %time2            Date and time with format: yyyy-mm-dd hh:mm:ss
-#   %time3            Date and time with format: Mon dd hh:mm:ss or Mon dd hh:mm:ss yyyy
-#   %time4            Date and time with unix timestamp format: dddddddddd
-#   %methodurl        Method and URL with format: "GET /index.html HTTP/x.x"
-#   %methodurlnoprot  Method and URL with format: "GET /index.html"
-#   %method           Method with format: GET
-#   %url              URL only with format: /index.html
-#   %query            Query string (used by URLWithQuery option)
-#   %code             Return code status (with format for web log: 999)
-#   %bytesd           Size of document in bytes
-#   %refererquot      Referer page with format: "http://from.com/from.htm";
-#   %referer          Referer page with format: http://from.com/from.htm
-#   %uaquot           User agent with format: "Mozilla/4.0 (compatible, ...)"
-#   %ua               User agent with format: Mozilla/4.0_(compatible...)
-#   %gzipin           mod_gzip compression input bytes: In:XXX
-#   %gzipout          mod_gzip compression output bytes & ratio: Out:YYY:ZZpct.
-#   %gzipratio        mod_gzip compression ratio: ZZpct.
-#   %deflateratio     mod_deflate compression ratio with format: (ZZ)
-#   %email            EMail sender (for mail log)
-#   %email_r          EMail receiver (for mail log)
-#   %virtualname      Web sever virtual hostname. Use this tag when same log
-#                     contains data of several virtual web servers. AWStats
-#                     will discard records not in SiteDomain nor HostAliases
-#   %cluster          If log file is provided from several computers (merged by
-#                     logresolvemerge.pl), use this to define cluster id field.
-#   %extraX           Another field that you plan to use for building a
-#                     personalized report with ExtraSection feature (See later).
-#   If your log format has some fields not included in this list, use:
-#   %other            Means another not used field
-#   %otherquot        Means another not used double quoted field
-#
-# Examples for Apache combined logs (following two examples are equivalent):
-# LogFormat = 1
-# LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
-#
-LogFormat=4
-
-
-# If your log field's separator is not a space, you can change this parameter.
-# This parameter is not used if LogFormat is a predefined value (1,2,3,4)
-# Backslash can be used as escape character.
-# Example: " "
-# Example: "\t"
-# Example: "\|"
-# Default: " "
-#
-LogSeparator=" "
-
-
-# "SiteDomain" must contain the main domain name, or the main intranet web
-# server name, used to reach the web site.
-# If you share the same log file for several virtual web servers, this
-# parameter is used to tell AWStats to filter record that contains records for
-# this virtual host name only (So check that this virtual hostname can be
-# found in your log file and use a personalized log format that include the
-# %virtualname tag).
-# But for multi hosting a better solution is to have one log file for each
-# virtual web server. In this case, this parameter is only used to generate
-# full URL's links when ShowLinksOnUrl option is set to 1.
-# If analysing mail log, enter here the domain name of mail server.
-# Example: "myintranetserver"
-# Example: "www.domain.com"
-# Example: "ftp.domain.com"
-# Example: "domain.com"
-#
-SiteDomain="MY_DOMAIN_SITE"
-
-
 # Enter here all other possible domain names, addresses or virtual host
 # aliases someone can use to access your site. Try to keep only the minimum
 # number of possible names/addresses to have the best performances.
@@ -144,7 +50,7 @@
 # Example: "C:/awstats_data_dir"
 # Default: "."          (means same directory as awstats.pl)
 #
-DirData="/var/lib/awstats"
+DirData="MY_DATADIR"
 
 
 # Relative or absolute web URL of your awstats cgi-bin directory.
@@ -153,7 +59,7 @@
 # Example: "/awstats"
 # Default: "/cgi-bin"   (means awstats.pl is in "/yourwwwroot/cgi-bin")
 #
-DirCgi="/cgi-bin"
+DirCgi="/"
 
 
 # Relative or absolute web URL of your awstats icon directory.

Added: branches/vhffs_4.1/vhffs-robots/misc/awstats_6.4_vhffs.patch
===================================================================
--- branches/vhffs_4.1/vhffs-robots/misc/awstats_6.4_vhffs.patch	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/misc/awstats_6.4_vhffs.patch	2007-01-21 21:22:48 UTC (rev 421)
@@ -0,0 +1,34 @@
+--- /usr/lib/cgi-bin/awstats.pl	2006-05-26 09:38:54.000000000 +0200
++++ awstats.pl	2007-01-21 10:24:18.000000000 +0100
+@@ -1091,10 +1091,18 @@
+ 	my $configdir=shift;
+ 	my @PossibleConfigDir=();
+ 
+-	if ($configdir && $ENV{"AWSTATS_ENABLE_CONFIG_DIR"}) {
+-	    @PossibleConfigDir=("$configdir");
+-	}
+-	else { @PossibleConfigDir=("$DIR","/etc/awstats","/usr/local/etc/awstats","/etc","/etc/opt/awstats"); }
++	use Vhffs::Main;
++	use Vhffs::Conf;
++	use Vhffs::Functions;
++	my $vhffs = init Vhffs::Main;
++	my $vhffsconfigdir = Vhffs::Conf::get_web_config()->{"log_parsed_root"}."/".Vhffs::Functions::hash_webdir( $SiteConfig )."/awstats";
++
++	@PossibleConfigDir=("$vhffsconfigdir");
++
++#	if ($configdir && $ENV{"AWSTATS_ENABLE_CONFIG_DIR"}) {
++#	    @PossibleConfigDir=("$configdir");
++#	}
++#	else { @PossibleConfigDir=("$DIR","/etc/awstats","/usr/local/etc/awstats","/etc","/etc/opt/awstats"); }
+ 
+ 	# Open config file
+ 	$FileConfig=$FileSuffix='';
+@@ -5740,7 +5748,7 @@
+ else { @DOWIndex = (0,1,2,3,4,5,6); }
+ 
+ # Should we link to ourselves or to a wrapper script
+-$AWScript=($WrapperScript?"$WrapperScript":"$DirCgi$PROG.$Extension");
++$AWScript=($WrapperScript?"$WrapperScript":"/$DirCgi$PROG.$Extension");
+ 
+ # Print html header (Need HTMLOutput,Expires,Lang,StyleSheet,HTMLHeadSectionExpires defined by Read_Config, PageCode defined by Read_Language_Data)
+ if (! $HeaderHTMLSent) { &html_head; }

Deleted: branches/vhffs_4.1/vhffs-robots/src/create_stats.pl
===================================================================
--- branches/vhffs_4.1/vhffs-robots/src/create_stats.pl	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/src/create_stats.pl	2007-01-21 21:22:48 UTC (rev 421)
@@ -1,73 +0,0 @@
-#!/usr/bin/perl
-# Copyright (c) vhffs project and its contributors
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without 
-# modification, are permitted provided that the following conditions 
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright 
-#   notice, this list of conditions and the following disclaimer.
-#2. Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in 
-#   the documentation and/or other materials provided with the 
-#   distribution.
-#3. Neither the name of vhffs nor the names of its contributors 
-#   may be used to endorse or promote products derived from this 
-#   software without specific prior written permission.
-#
-#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-#"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
-#LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
-#FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-#COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-#INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-#BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-#LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-# POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use Vhffs::Main;
-use Vhffs::Services::Httpd;
-
-
-my $vhffs = init Vhffs::Main;
-my $webs  = Vhffs::Services::Httpd::getall( $vhffs , Vhffs::Constants::ACTIVATED );
-my $web;
-my $outputdir;
-my $confdir;
-my $filename;
-my $conffile;
-my $line;
-my $svname;
-my $AWSTATS_BIN = "/usr/lib/cgi-bin/awstats.pl";
-my $cmd;
-
-my $output;
-my $outputdir = $vhffs->get_config->get_datadir . "/web/stats/output";
-my $temp;
-
-foreach $web ( @{$webs} )
-{
-    $svname = $web->get_servername;
-    $output = $outputdir."/$svname/";
-    
-    mkdir( $output ) if( ! -d $output );
-    
-    $cmd = "$AWSTATS_BIN -config=$svname -update 2>/dev/null 1>/dev/null";
-    system( $cmd );
-
-    $cmd = "$AWSTATS_BIN -config=$svname -output -staticlinks > $output/index.html";
-    system( $cmd );
-
-    for $temp ( qw( alldomains allhosts lasthosts unknownip alllogins lastlogins allrobots lastrobots urldetail urlentry urlexit browserdetail osdetail unknownbrowser unknownos refererse refererpages keyphrases keywords errors404) )
-    {
-	$cmd = "$AWSTATS_BIN -config=$svname -output=$temp -staticlinks > $output/awstats.$svname.$temp.html";
-	system( $cmd );
-    }
- 
-
-}

Deleted: branches/vhffs_4.1/vhffs-robots/src/create_statsconf.pl
===================================================================
--- branches/vhffs_4.1/vhffs-robots/src/create_statsconf.pl	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/src/create_statsconf.pl	2007-01-21 21:22:48 UTC (rev 421)
@@ -1,75 +0,0 @@
-#!/usr/bin/perl
-# Copyright (c) vhffs project and its contributors
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without 
-# modification, are permitted provided that the following conditions 
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright 
-#   notice, this list of conditions and the following disclaimer.
-#2. Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in 
-#   the documentation and/or other materials provided with the 
-#   distribution.
-#3. Neither the name of vhffs nor the names of its contributors 
-#   may be used to endorse or promote products derived from this 
-#   software without specific prior written permission.
-#
-#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-#"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
-#LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
-#FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-#COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-#INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-#BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-#LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-# POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use Vhffs::Main;
-use Vhffs::Services::Httpd;
-
-
-my $vhffs = init Vhffs::Main;
-my $webs  = Vhffs::Services::Httpd::getall( $vhffs , Vhffs::Constants::ACTIVATED );
-my $web;
-my $outputdir;
-my $confdir;
-my $filename;
-my $conffile;
-my $line;
-my $svname;
-my $SAMPLE_FILE = "/usr/lib/vhffs/bots/misc/awstats.sample";
-
-my $confdir = $vhffs->get_config->get_datadir . "/web/stats/conf";
-my $outputdir = $vhffs->get_config->get_datadir . "/web/stats/output";
-
-if( ! -f $SAMPLE_FILE )
-{
-    print "Error, sample file is not readable !\n";
-    exit( -1 );
-}
-
-foreach $web ( @{$webs} )
-{
-    $svname = $web->get_servername;
-    $conffile = $confdir."/awstats.".$svname.".conf";
-    
-    next if( -f $conffile );
-    
-    open( FILEIN , $SAMPLE_FILE );
-    open( FILEOUT , ">$conffile" );
-    
-    while( $line = <FILEIN> )
-    {
-	$line =~ s/MY_DOMAIN_SITE/$svname/g;
-	print FILEOUT $line;
-    }
-    
-    close( FILEOUT );
-    close( FILEIN );
-}

Added: branches/vhffs_4.1/vhffs-robots/src/generate_webstats.pl
===================================================================
--- branches/vhffs_4.1/vhffs-robots/src/generate_webstats.pl	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/src/generate_webstats.pl	2007-01-21 21:22:48 UTC (rev 421)
@@ -0,0 +1,212 @@
+#!/usr/bin/perl -w
+# Copyright (c) vhffs project and its contributors
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without 
+# modification, are permitted provided that the following conditions 
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright 
+#   notice, this list of conditions and the following disclaimer.
+#2. Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in 
+#   the documentation and/or other materials provided with the 
+#   distribution.
+#3. Neither the name of vhffs nor the names of its contributors 
+#   may be used to endorse or promote products derived from this 
+#   software without specific prior written permission.
+#
+#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+#"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+#LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
+#FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+#COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+#INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+#BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+#LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+# POSSIBILITY OF SUCH DAMAGE.
+
+
+#Your logs must be in format : "%V %h %l %u %t \"%r\" %>s %b"
+#So, add in your httpd.conf following lines :
+#LogFormat "%V %h %l %u %t \"%r\" %>s %b" vhffs
+#CustomLog /var/log/apache2/vhffs.log vhffs
+
+use strict;
+use Vhffs::Main;
+use Vhffs::Conf;
+use Vhffs::Functions;
+use Vhffs::Services::Httpd;
+
+
+my $vhffs = init Vhffs::Main;
+die "ERROR: Cannot init VHFFS !!!" if( ! defined $vhffs );
+
+my $webs = Vhffs::Services::Httpd::getall( $vhffs , Vhffs::Constants::ACTIVATED );
+die "ERROR: Cannot fetch the list of websites\n" if( ! defined $webs );
+
+my $webconf = Vhffs::Conf::get_web_config();
+die "ERROR: A full web configuration is needed to generate stats\n" if ( ! defined $webconf );
+
+my $log_incoming_root = $webconf->{"log_incoming_root"};
+my $log_incoming_rotations = $webconf->{"log_incoming_rotations"};
+my $log_incoming_compress = ( $webconf->{"log_incoming_compress"} eq 'yes' ) ? 1 : 0;
+my $log_parsed_root = $webconf->{"log_parsed_root"};
+my $log_parsed_rotation = $webconf->{"log_parsed_rotation"};
+my $log_parsed_compress = ( $webconf->{"log_parsed_compress"} eq 'yes' ) ? 1 : 0;
+my $log_awstats = $webconf->{"log_awstats"};
+my $awstats_sample = $webconf->{"log_awstats_sample"};
+my $log_apachelocal = ( $webconf->{"log_apachelocal"} eq 'yes' ) ? 1 : 0;
+my $log_apachectl = $webconf->{"log_apachectl"};
+
+die "ERROR: ".$log_incoming_root." is not a directory" if( ! -d $log_incoming_root );
+die "ERROR: ".$log_parsed_root." is not a directory" if( ! -d $log_parsed_root );
+die "ERROR: ".$log_awstats." does no exist" if( ! -f $log_awstats );
+die "ERROR: cannot find the awstat sample at ".$awstats_sample if( ! -f $awstats_sample );
+die "ERROR: cannot find the apache2ctl binary at ".$log_apachectl if( $log_apachelocal  &&  ! -f $log_apachectl );
+
+my %websites;
+foreach ( @{$webs} )  {
+	$websites{$_->get_servername} = 1;
+}
+
+my @webservers;
+my $webserver;
+my @files;
+
+# -- Rotate web servers logs (all *.log files, I know that the suffix is hardcoded but I don't
+#    bother to add a configuration entry for that, it's already too complicated, and, who would
+#    like anything other than .log ? ).
+
+opendir( DIR , $log_incoming_root );
+@files = readdir( DIR );
+
+foreach( @files )  {
+	next if( /\./ );
+	if( -d $log_incoming_root."/".$_ )  {
+		push @webservers, $_;
+	}
+}
+closedir( DIR );
+
+
+foreach $webserver ( @webservers )  {
+	opendir ( DIR , $log_incoming_root."/".$webserver );
+	@files = readdir( DIR );
+
+	foreach ( @files )  {
+		if( /.*\.log$/ )  {
+			Vhffs::Functions::rotate_log( $log_incoming_root."/".$webserver."/".$_ , $log_incoming_rotations , $log_incoming_compress );
+		}
+	}
+
+	# put a file to tell webserver to restart (ugly signaling over nfs, I know I know... but IT WORKS, it is secure, and doesn't consume too much CPU !)
+	open( FILECYCLE , "> ".$log_incoming_root."/".$webserver."/cycleok" );
+	print FILECYCLE "";
+	close( FILECYCLE );
+}
+
+# Restart locally or wait 180 seconds to be sure all apache are restarted (welcome to the land of pigs)
+if( $log_apachelocal )  {
+	my $cmd = $log_apachectl." graceful";
+	system ( $cmd );
+} else {
+	sleep ( 180 );
+}
+
+# Deleting previous logs
+unlink $log_incoming_root."/mergedlog" if( -f $log_incoming_root."/mergedlog" );
+unlink $log_incoming_root."/rejectlog" if( -f $log_incoming_root."/rejectlog" );
+
+# Merge all logs
+my $cmd = "mergelog ".$log_incoming_root."/*/vhffs.log.0 > ".$log_incoming_root."/mergedlog";
+system ( $cmd );
+
+
+# Parse http logs
+my %logs;
+my $line;
+my $svname;
+my $log;
+my $prev = "";
+
+open( MERGEDIN , "< ".$log_incoming_root."/mergedlog" );
+open( REJECTOUT, "> ".$log_incoming_root."/rejectlog" );
+
+while( $line = <MERGEDIN> )  {
+	if( ( $svname , $log ) = ( $line =~ /([a-zA-Z0-9\.\-]+)\s(.+)/g) )  {
+
+		# Discard www
+		$svname =~ s/^www\.//;
+
+		# We are _NOT_ hosting this website
+		if( ! exists $websites{$svname} )  {
+
+			print REJECTOUT $svname." ".$log."\n";
+		}
+
+		# We host this website
+		else  {
+			# the website changed
+			if ( $prev ne $svname )  {
+				my $dir = $log_parsed_root."/".Vhffs::Functions::hash_webdir( $svname )."/logs";
+				Vhffs::Functions::create_dir($dir) if ( ! -d $dir );
+
+				my $lff = $dir."/access.log";
+				close(FILEOUT);
+				open( FILEOUT , ">> ".$lff );
+
+				$prev = $svname;
+			}
+
+			print FILEOUT $log."\n";
+		}
+	}
+}
+
+close(MERGEDIN);
+close(REJECTOUT);
+close(FILEOUT);
+
+
+# Create a configuration file and generate statistic for each website
+foreach ( @{$webs} )
+{
+	my $svname = $_->get_servername;
+
+	my $weblogdir = $log_parsed_root."/".Vhffs::Functions::hash_webdir( $svname );
+	my $logpath = $weblogdir."/logs/access.log";
+	my $datadir = $weblogdir."/awstats";
+	my $conffile = $datadir."/awstats.".$svname.".conf";
+
+	#next if( -f $conffile );
+
+	next if ( ! -f $logpath );
+	Vhffs::Functions::create_dir($datadir) if ( ! -d $datadir );
+
+	# Create the config file
+	open( AWFILEIN , "< ".$awstats_sample );
+	open( AWFILEOUT , "> ".$conffile );
+
+	while( $line = <AWFILEIN> )
+	{
+		$line =~ s/MY_DOMAINNAME/$svname/g;
+		$line =~ s/MY_LOGPATH/$logpath/g;
+		$line =~ s/MY_DATADIR/$datadir/g;
+		
+		print AWFILEOUT $line;
+	}
+
+	close( AWFILEOUT );
+	close( AWFILEIN );
+
+	# Generate statistics
+	$cmd = $log_awstats." -config=".$svname." -update 2>/dev/null 1>/dev/null";
+	system( $cmd );
+
+	# Rotate logs for this website
+	Vhffs::Functions::rotate_log( $logpath , $log_parsed_rotation , $log_parsed_compress );
+}


Property changes on: branches/vhffs_4.1/vhffs-robots/src/generate_webstats.pl
___________________________________________________________________
Name: svn:executable
   + *

Deleted: branches/vhffs_4.1/vhffs-robots/src/generate_webstats.sh
===================================================================
--- branches/vhffs_4.1/vhffs-robots/src/generate_webstats.sh	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/src/generate_webstats.sh	2007-01-21 21:22:48 UTC (rev 421)
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-INCOMINGDIR="/data/logs/web/incoming"
-
-
-
-for dirserv in $INCOMINGDIR/* ; do
-	if [ -d $dirserv ]; then
-		echo "Rotate log files for $dirserv"
-		for logfile in $dirserv/*.log; do
-			echo "Found $logfile"
-			# -- this is gruiikkkkk but it works ;)
-			if [ -f $logfile.7.gz ]; then rm $logfile.7.gz; fi
-			if [ -f $logfile.6.gz ]; then mv $logfile.6.gz $logfile.7.gz; fi
-			if [ -f $logfile.5.gz ]; then mv $logfile.5.gz $logfile.6.gz; fi
-			if [ -f $logfile.4.gz ]; then mv $logfile.4.gz $logfile.5.gz; fi
-			if [ -f $logfile.3.gz ]; then mv $logfile.3.gz $logfile.4.gz; fi
-			if [ -f $logfile.2.gz ]; then mv $logfile.2.gz $logfile.3.gz; fi
-			if [ -f $logfile.1.gz ]; then mv $logfile.1.gz $logfile.2.gz; fi
-			if [ -f $logfile.0 ]; then gzip $logfile.0; mv $logfile.0.gz $logfile.1.gz; fi
-			if [ -f $logfile ]; then mv $logfile $logfile.0; fi
-			> $logfile
-
-			# -- ask apache to restart
-			> $dirserv/cycleok
-		done
-	fi
-done
-
-echo "Wait 180 seconds to be sure all apache are restarted"
-sleep 180
-
-echo "Removing previous log"
-rm $INCOMINGDIR/logfile
-
-#for dirserv in $INCOMINGDIR/* ; do
-#	if [ -d $dirserv ]; then
-#		echo "Merge log from $dirserv/vhffs.log.0 to $INCOMINGDIR/logfile"
-#		cat $dirserv/vhffs.log.0 >> $INCOMINGDIR/logfile
-#	fi
-#done
-echo "Merge all logs"
-mergelog $INCOMINGDIR/*/vhffs.log.0 > $INCOMINGDIR/logfile
-
-echo "Parse http logs"
-/usr/lib/vhffs/bots/parse_httplog.pl
-
-echo "Create awstats config files for each website"
-/usr/lib/vhffs/bots/create_statsconf.pl
-
-echo "Run awstats for each website"
-/usr/lib/vhffs/bots/create_stats.pl
-
-for site in /data/logs/web/sites/* ; do
-	if [ -d $site ]; then
-		logfile="$site/logfile"
-		echo "Rotate $site"
-		# -- this is gruiikkkkk but it works ;)
-		if [ -f $logfile.7.gz ]; then rm $logfile.7.gz; fi
-		if [ -f $logfile.6.gz ]; then mv $logfile.6.gz $logfile.7.gz; fi
-		if [ -f $logfile.5.gz ]; then mv $logfile.5.gz $logfile.6.gz; fi
-		if [ -f $logfile.4.gz ]; then mv $logfile.4.gz $logfile.5.gz; fi
-		if [ -f $logfile.3.gz ]; then mv $logfile.3.gz $logfile.4.gz; fi
-		if [ -f $logfile.2.gz ]; then mv $logfile.2.gz $logfile.3.gz; fi
-		if [ -f $logfile.1.gz ]; then mv $logfile.1.gz $logfile.2.gz; fi
-		if [ -f $logfile.0 ]; then gzip $logfile.0; mv $logfile.0.gz $logfile.1.gz; fi
-		if [ -f $logfile ]; then mv $logfile $logfile.0; fi
-		> $logfile
-	fi
-done

Deleted: branches/vhffs_4.1/vhffs-robots/src/parse_httplog.pl
===================================================================
--- branches/vhffs_4.1/vhffs-robots/src/parse_httplog.pl	2007-01-21 12:56:51 UTC (rev 420)
+++ branches/vhffs_4.1/vhffs-robots/src/parse_httplog.pl	2007-01-21 21:22:48 UTC (rev 421)
@@ -1,94 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright (c) vhffs project and its contributors
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without 
-# modification, are permitted provided that the following conditions 
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright 
-#   notice, this list of conditions and the following disclaimer.
-#2. Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in 
-#   the documentation and/or other materials provided with the 
-#   distribution.
-#3. Neither the name of vhffs nor the names of its contributors 
-#   may be used to endorse or promote products derived from this 
-#   software without specific prior written permission.
-#
-#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-#"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
-#LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
-#FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-#COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-#INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-#BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-#LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-# POSSIBILITY OF SUCH DAMAGE.
-
-#Parse logs and put it in 
-#$OUTPUTDIR/$SERVERNAME
-
-#Your logs must be in format : "%V %h %l %u %t \"%r\" %>s %b"
-#So, add in your httpd.conf following lines :
-#LogFormat "%V %h %l %u %t \"%r\" %>s %b" vhffs
-#CustomLog /var/log/apache2/Vhffs::Robots::vhffs_log vhffs
-
-use strict;
-
-my $LOGFILE   = "/data/logs/web/incoming/logfile";
-my $OUTPUTDIR = "/data/logs/web/sites";
-my $LOGNAME   = "logfile";
-
-if( ! -f $LOGFILE )
-{
-	print "Error, $LOGFILE is not readable\n";
-	exit( -1 );
-}
-
-if( ! -d $OUTPUTDIR )
-{
-	print "Error, $OUTPUTDIR is not a directory ";
-	exit( -1 );
-}
-
-my %logs;
-my $line;
-my $svname;
-my $log;
-my @temp;
-my $dir;
-
-open( FILEIN , $LOGFILE );
-
-while( $line = <FILEIN> )
-{
-	if( ( $svname , $log ) = ( $line =~ /([a-zA-Z0-9\.\-]+)\s(.+)/g) )
-	{
-		$svname =~ s/^www\.//;
-		push( @{$logs{$svname}} , $log );
-	}
-}
-
-foreach $svname ( keys %logs )
-{
-	$dir = $OUTPUTDIR . "/" . $svname;
-	mkdir $dir if( ! -d $dir );
-	my $logfile = $dir ."/" . $LOGNAME;
-
-	open( FILEOUT , ">$logfile" );
-	@temp = @{$logs{$svname}};
-
-	foreach $log ( @temp )
-	{
-		print FILEOUT  $log."\n";
-	}
-
-	close( FILEOUT );
-}
-
-close(FILEIN);
-


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/