#!/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;
}

