fix
[BackupPC.git] / cgi-bin / BackupPC_Admin
1 #!/usr/bin/perl
2 #============================================================= -*-perl-*-w
3 #
4 # BackupPC_Admin: Apache/CGI interface for BackupPC.
5 #
6 # DESCRIPTION
7 #   BackupPC_Admin provides a flexible web interface for BackupPC.
8 #   It is a CGI script that runs under Apache.
9 #
10 #   It requires that Apache pass in $ENV{SCRIPT_NAME} and
11 #   $ENV{REMOTE_USER}. The latter requires .ht_access style
12 #   authentication. Replace the code below if you are using some other
13 #   type of authentication, and have a different way of getting the
14 #   user name.
15 #
16 #   Also, this script needs to run as the BackupPC user.  To accomplish
17 #   this the script is typically installed as setuid to the BackupPC user,
18 #   or it can run under mod_perl with httpd running as the BackupPC user.
19 #
20 # AUTHOR
21 #   Craig Barratt  <cbarratt@users.sourceforge.net>
22 #
23 # COPYRIGHT
24 #   Copyright (C) 2001-2009  Craig Barratt
25 #
26 #   This program is free software; you can redistribute it and/or modify
27 #   it under the terms of the GNU General Public License as published by
28 #   the Free Software Foundation; either version 2 of the License, or
29 #   (at your option) any later version.
30 #
31 #   This program is distributed in the hope that it will be useful,
32 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
33 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
34 #   GNU General Public License for more details.
35 #
36 #   You should have received a copy of the GNU General Public License
37 #   along with this program; if not, write to the Free Software
38 #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
39 #
40 #========================================================================
41 #
42 # Version 3.2.0, released 31 Jul 2010.
43 #
44 # See http://backuppc.sourceforge.net.
45 #
46 #========================================================================
47
48 use strict;
49 no  utf8;
50 use CGI;
51 use CGI::Carp qw(fatalsToBrowser);
52 use lib "/usr/local/BackupPC/lib";
53
54 use BackupPC::Lib;
55 use BackupPC::CGI::Lib qw(:all);
56
57 BackupPC::CGI::Lib::NewRequest;
58
59 my %ActionDispatch = (
60     "summary"                    => "Summary",
61     "search"                     => "SearchArchives",
62     "burn"                       => "BurnMedia",    
63     "Start_Incr_Backup"          => "StartStopBackup",
64     "Start_Full_Backup"          => "StartStopBackup",
65     "Stop_Dequeue_Backup"        => "StartStopBackup",
66     "Stop_Dequeue_Archive"       => "StartStopBackup",
67     "queue"                      => "Queue",
68     "view"                       => "View",
69     "LOGlist"                    => "LOGlist",
70     "emailSummary"               => "EmailSummary",
71     "browse"                     => "Browse",
72     "dirHistory"                 => "DirHistory",
73     "Restore"                    => "Restore",
74     "RestoreFile"                => "RestoreFile",
75     "hostInfo"                   => "HostInfo",
76     "generalInfo"                => "GeneralInfo",
77     "restoreInfo"                => "RestoreInfo",
78     "archiveInfo"                => "ArchiveInfo",
79     "Start_Archive"              => "Archive",
80     "Archive"                    => "Archive",
81     "Reload"                     => "ReloadServer",
82     "startServer"                => "StartServer",
83     "Stop"                       => "StopServer",
84     "adminOpts"                  => "AdminOptions",
85     "editConfig"                 => "EditConfig",
86     "rss"                        => "RSS",
87 );
88
89 #
90 # Set default actions, then call sub handler
91 #
92 if ( !defined($ActionDispatch{$In{action}}) ) {
93     $In{action} = defined($In{host}) ? "hostInfo" : "generalInfo";
94 }
95 my $action = $ActionDispatch{$In{action}};
96
97 #
98 # For some reason under mod_perl, the use lib above is unreliable,
99 # and sometimes the module below cannot be found.  Explicitly push
100 # the directory onto INC if it is missing.  This is an ugly hack;
101 # need to figure out what's really going on...
102 #
103 my $installDir = '/usr/local/BackupPC/lib';
104 push(@INC, $installDir) if ( !grep($_ eq $installDir, @INC) );
105
106 #
107 # Load the relevant action script and run it
108 #
109 require "BackupPC/CGI/$action.pm"
110             if ( !defined($BackupPC::CGI::{"${action}::"}) );
111 $BackupPC::CGI::{"${action}::"}{action}();