#!@PERL@ # Copyright (C) 2002 Stanislav Sinyagin # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. # $Id: genreport.in,v 1.3 2005/10/24 14:27:00 ssinyagin Exp $ # Stanislav Sinyagin # Collect the router information and create the XML file BEGIN { require '@torrus_config_pl@'; } use strict; use Getopt::Long; use Torrus::Log; use Torrus::ReportOutput::HTML; use Torrus::SiteConfig; our $report; our $date; our $time = '00:00'; our $genhtml; our @trees; our $debug = 0; our $verbose = 0; my $ok = GetOptions( 'report=s' => \$report, 'date=s' => \$date, 'time=s' => \$time, 'genhtml' => \$genhtml, 'tree=s' => \@trees, 'verbose' => \$verbose, 'debug' => \$debug ); if( $report and not defined($Torrus::ReportGenerator::modules{$report}) ) { print STDERR "Unknown report name: ", $report, "\n\n"; $ok = 0; } if( not $ok or (not $report and not $genhtml) or ($report and not $date) or scalar( @ARGV ) > 0 ) { print STDERR "Usage: $0 --report=ReportName --date=YYYY-MM-DD | ", "--genhtml options...\n"; print STDERR "Options:\n", " --report=ReportName Report name.\n", " --date=YYYY-MM-DD Report start date. ", "For monthly reports, 1st day in a month.\n", " --time=mm:ss Report start time. Ignored for monthly reports\n", " --genhtml Generate HTML output from the database\n", " --verbose print extra information\n", " --debug print debugging information\n", "\n", "Report names supported:\n"; foreach my $rep ( sort keys %Torrus::ReportGenerator::modules ) { print STDERR " ", $rep, "\n"; } print STDERR "\n"; exit 1; } if( $debug ) { Torrus::Log::setLevel('debug'); } elsif( $verbose ) { Torrus::Log::setLevel('verbose'); } # This will ensure that all databases get closed correctly $SIG{'TERM'} = sub { exit 1; }; $SIG{'INT'} = sub { exit 1; }; if( $report ) { my $class = $Torrus::ReportGenerator::modules{$report}; eval( 'require ' . $class ); die( $@ ) if $@; my $generator = $class->new({ 'Name' => $report, 'Date' => $date, 'Time' => $time}); if( defined( $generator ) ) { $generator->generate(); } else { $ok = 0; } } if( $genhtml ) { if( scalar( @trees ) == 0 ) { @trees = Torrus::SiteConfig::listTreeNames(); } else { foreach my $tree ( @trees ) { if( not Torrus::SiteConfig::treeExists( $tree ) ) { Error('Tree ' . $tree . ' does not exist'); $ok = 0; } } } if( $ok ) { foreach my $tree ( @trees ) { Verbose('Generating HTML report for tree ' . $tree); my $out = new Torrus::ReportOutput::HTML({'Tree' => $tree}); if( $out->init() ) { $ok = $out->generate() ? $ok:0; } else { $ok = 0; } } } } exit($ok ? 0:1); # Local Variables: # mode: perl # indent-tabs-mode: nil # perl-indent-level: 4 # End: