X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=torrus%2Fbin%2Fgenreport.in;fp=torrus%2Fbin%2Fgenreport.in;h=6d21b4878b0a26e8b82c0eea48dcdf5616f3b2ad;hb=74e058c8a010ef6feb539248a550d0bb169c1e94;hp=0000000000000000000000000000000000000000;hpb=35359a73152b3d7a9ad5e3d37faf81f6fedb76e8;p=freeside.git diff --git a/torrus/bin/genreport.in b/torrus/bin/genreport.in new file mode 100644 index 000000000..6d21b4878 --- /dev/null +++ b/torrus/bin/genreport.in @@ -0,0 +1,181 @@ +#!@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.1 2010-12-27 00:04:01 ivan 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; + +my $report; +my $date; +my $time = '00:00'; +my $genhtml; +my @trees; +my $all2tree; + +my $debug = 0; +my $verbose = 0; + +my $ok = GetOptions( + 'report=s' => \$report, + 'date=s' => \$date, + 'time=s' => \$time, + 'genhtml' => \$genhtml, + 'tree=s' => \@trees, + 'all2tree=s' => \$all2tree, + '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 + ($genhtml and scalar(@trees) > 0 and $all2tree) 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=hh:mm Report start time. Ignored for monthly reports\n", + " --genhtml Generate HTML output from the database\n", + " --tree=TREE Generate HTML for a given tree only\n", + " --all2tree=TREE Generate reports for all service IDs and place\n", + " into the given tree (excludes the option --tree)\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'); +} + +&Torrus::DB::setSafeSignalHandlers(); + +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( $all2tree ) + { + push( @trees, $all2tree ); + } + + 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 ) + { + &Torrus::DB::checkInterrupted(); + + Verbose('Generating HTML report for tree ' . $tree); + + my $options = {'Tree' => $tree}; + + if( length( $all2tree ) > 0 ) + { + $options->{'All_Service_IDs'} = 1; + } + + my $out = new Torrus::ReportOutput::HTML( $options ); + + 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: