#!/usr/bin/perl # # Perl frontend to SquidAnalyzer.pm. # use strict; use SquidAnalyzer; use Getopt::Long; $| = 1; my $DEFAULT_CONFFILE = '/etc/squidanalyzer/squidanalyzer.conf'; my $logfile = ''; my $configfile = ''; my $help = ''; my $rebuild = ''; my $preserve = ''; my $debug = 0; my $version = 0; my $build_date = ''; my $no_year_stat = 0; # get the command line parameters my $result = GetOptions ( "c|configfile=s" => \$configfile, "b|build_date=s" => \$build_date, "d|debug!" => \$debug, "h|help" => \$help, "l|logfile=s" => \$logfile, "r|rebuild!" => \$rebuild, "p|preserve=i" => \$preserve, "v|version!" => \$version, "no-year-stat!" => \$no_year_stat, ); # Show version and exit if ($version) { print "SquidAnalyzer version $SquidAnalyzer::VERSION\n"; exit 0; } if ($build_date) { $rebuild = 1; if ( ($build_date !~ /^\d{4}-\d{2}-\d{2}$/) && ($build_date !~ /^\d{4}-\d{2}$/) && ($build_date !~ /^\d{4}$/) ) { die("FATAL: bad syntax for build_date, expecting format: yyyy-mm-dd, yyyy-mm or yyyy\n"); exit 0; } } # Look at configuration file if (!$configfile) { # Backward compatibility with release < 4.0 with configuration # file as single argument. $configfile = $ARGV[0] if (($#ARGV == 0) && $ARGV[0]); # Set default configuration file $configfile ||= $DEFAULT_CONFFILE; } if ($help) { &usage; exit; } # Instanciate SquidAnalyzer.pm perl module my $sa = new SquidAnalyzer($configfile, $logfile, $debug, $rebuild); $sa->{no_year_stat} = $no_year_stat; # Run parsing only if we have a log file or that we are not in rebuild mode $sa->parseFile() if (!$rebuild || $logfile); # Remove old statistics if ($preserve) { $sa->{preserve} = $preserve; } # In rebuild mode history time is not use and we must store the # specific rebuild date if any is provided at command line. if ($rebuild) { $sa->{history_time} = ''; $sa->{build_date} = $build_date; } # Generate graphics and html $sa->buildHTML(); exit(0); sub usage { print qq{ Usage: squid-analyzer [ -c squidanalyzer.conf ] [-l logfile] -c | --configfile filename : path to the SquidAnalyzer configuration file. By default: /etc/squidanalyzer.conf -b | --build_date date : set the date to be rebuilt, format: yyyy-mm-dd or yyyy-mm or yyyy. Used with -r or --rebuild. -d | --debug : show debug informations. -h | --help : show this message and exit. -l | --logfile filename : path to the Squid logfile to parse. By default: /var/log/squid/access.log -p | --preserve number : used to set the statistic obsolescence in number of month. Older stats will be removed. -r | --rebuild : use this option to rebuild all html and graphs output from all data files. -v | version : show version and exit. --no-year-stat : disable years statistics, reports will start from month level only. }; exit 0; }