]> git.sur5r.net Git - bacula/bacula/blobdiff - gui/bweb/lib/Bweb.pm
ebl add fileview tool
[bacula/bacula] / gui / bweb / lib / Bweb.pm
index 0d7feaa40b108befc4cbeb3b07390932e98768bd..74b3c69040671d9653d56409e4afb8d038ff0156 100644 (file)
@@ -3,22 +3,34 @@ use strict;
 
 =head1 LICENSE
 
-    Copyright (C) 2006 Eric Bollengier
-        All rights reserved.
+   Bweb - A Bacula web interface
+   Bacula® - The Network Backup Solution
 
-    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
-    any later version.
+   Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
 
-    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.
+   The main author of Bweb is Eric Bollengier.
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
 
-    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
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version two of the GNU General Public
+   License as published by the Free Software Foundation plus additions
+   that are listed in the file LICENSE.
+
+   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., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of John Walker.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zurich,
+   Switzerland, email:ftf@fsfeurope.org.
 
 =head1 VERSION
 
@@ -196,6 +208,7 @@ use CGI;
 our %k_re = ( dbi      => qr/^(dbi:(Pg|mysql):(?:\w+=[\w\d\.-]+;?)+)$/i,
              user     => qr/^([\w\d\.-]+)$/i,
              password => qr/^(.*)$/i,
+             fv_write_path => qr!^([/\w\d\.-]+)$!,
              template_dir => qr!^([/\w\d\.-]+)$!,
              debug    => qr/^(on)?$/,
              email_media => qr/^([\w\d\.-]+@[\d\w\.-]+)$/,
@@ -1389,7 +1402,7 @@ sub get_form
                $ret{$i} = $1;
            }
        } elsif ($i =~ /^j(\w+)s$/) { # quote join args
-           my @value = CGI::param($1) ;
+           my @value = grep { ! /^\s*$/ } CGI::param($1) ;
            if (@value) {
                $ret{$i} = $self->dbh_join(@value) ;
            }
@@ -1402,7 +1415,7 @@ sub get_form
 
        } elsif ($i =~ /^q(\w+)s$/) { #[ 'arg1', 'arg2']
            $ret{$i} = [ map { { name => $self->dbh_quote($_) } } 
-                                 CGI::param($1) ];
+                                          grep { ! /^\s*$/ } CGI::param($1) ];
        } elsif (exists $opt_p{$i}) {
            my $value = CGI::param($i) || '';
            if ($value =~ /^([\w\d\.\/\s:\@\-]+)$/) {
@@ -1424,6 +1437,13 @@ sub get_form
        }
     }
 
+    if ($what{when}) {
+       my $when = CGI::param('when') || '';
+       if ($when =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})$/) {
+           $ret{when} = $1;
+       }
+    }
+
     if ($what{db_clients}) {
        my $query = "
 SELECT Client.Name as clientname
@@ -1757,7 +1777,7 @@ sub get_param
     my $limit = '';
 
     if ($elt{clients}) {
-       my @clients = CGI::param('client');
+       my @clients = grep { ! /^\s*$/ } CGI::param('client');
        if (@clients) {
            $ret{clients} = \@clients;
            my $str = $self->dbh_join(@clients);
@@ -1766,7 +1786,7 @@ sub get_param
     }
 
     if ($elt{filesets}) {
-       my @filesets = CGI::param('fileset');
+       my @filesets = grep { ! /^\s*$/ } CGI::param('fileset');
        if (@filesets) {
            $ret{filesets} = \@filesets;
            my $str = $self->dbh_join(@filesets);
@@ -1775,7 +1795,7 @@ sub get_param
     }
 
     if ($elt{mediatypes}) {
-       my @medias = CGI::param('mediatype');
+       my @medias = grep { ! /^\s*$/ } CGI::param('mediatype');
        if (@medias) {
            $ret{mediatypes} = \@medias;
            my $str = $self->dbh_join(@medias);
@@ -1819,8 +1839,16 @@ sub get_param
        }
     }
 
+    if ($elt{volstatus}) {
+       my $status = CGI::param('volstatus') || '';
+       if ($status =~ /^(\w+)$/) {
+           $ret{status} = $1;
+           $limit .= "AND Media.VolStatus = '$1' ";            
+       }
+    }
+
     if ($elt{locations}) {
-       my @location = CGI::param('location') ;
+       my @location = grep { ! /^\s*$/ } CGI::param('location') ;
        if (@location) {
            $ret{locations} = \@location;           
            my $str = $self->dbh_join(@location);
@@ -1829,7 +1857,7 @@ sub get_param
     }
 
     if ($elt{pools}) {
-       my @pool = CGI::param('pool') ;
+       my @pool = grep { ! /^\s*$/ } CGI::param('pool') ;
        if (@pool) {
            $ret{pools} = \@pool; 
            my $str = $self->dbh_join(@pool);
@@ -1883,6 +1911,7 @@ sub display_job
                                          'level',
                                          'filesets',
                                          'jobtype',
+                                         'pools',
                                          'jobid',
                                          'status');
 
@@ -1978,6 +2007,7 @@ sub display_media
 
     my ($where, %elt) = $self->get_param('pools',
                                         'mediatypes',
+                                        'volstatus',
                                         'locations');
 
     my $arg = $self->get_form('jmedias', 'qre_media');
@@ -3198,7 +3228,7 @@ sub run_job_now
     
     # TODO: check input (don't use pool, level)
 
-    my $arg = $self->get_form('pool', 'level', 'client', 'priority');
+    my $arg = $self->get_form('pool', 'level', 'client', 'priority', 'when');
     my $job = CGI::param('job') || '';
     my $storage = CGI::param('storage') || '';
 
@@ -3208,6 +3238,7 @@ sub run_job_now
                        level => $arg->{level},
                        storage => $storage,
                        pool => $arg->{pool},
+                       when => $arg->{when},
                        );
 
     print $jobid, $b->{error};