X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fbackup.cgi;h=e526fc30e9c06d00f15ffa11afe63a3abd177ffc;hb=26906d98239bf79d9344e8f0796d5ca40d02ee73;hp=fbc96271b984db3b5c0d18b10dbd647d719bbc03;hpb=8e8bbd9da3bd20ce3871b92b8aab88ac7b880457;p=people%2Fpmueller%2Fipfire-2.x.git
diff --git a/html/cgi-bin/backup.cgi b/html/cgi-bin/backup.cgi
index fbc96271b9..e526fc30e9 100644
--- a/html/cgi-bin/backup.cgi
+++ b/html/cgi-bin/backup.cgi
@@ -1,15 +1,28 @@
#!/usr/bin/perl
-#
-# IPFire CGIs
-#
-# This code is distributed under the terms of the GPL
-#
-# (c) The IPFire Team
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2005-2010 IPFire Team #
+# #
+# 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 3 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, see . #
+# #
+###############################################################################
use strict;
# enable only the following on debugging purpose
-use warnings;
-use CGI::Carp 'fatalsToBrowser';
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
use File::Copy;
require '/var/ipfire/general-functions.pl';
@@ -22,7 +35,8 @@ my %cgiparams=();
my %checked = ();
my $message = "";
my $errormessage = "";
-my @backups = `cd /srv/web/ipfire/html/backup && ls *.ipf`;
+my @backups = "";
+my @backupisos = "";
$a = new CGI;
@@ -33,65 +47,145 @@ $cgiparams{'ACTION'} = '';
$cgiparams{'FILE'} = '';
$cgiparams{'UPLOAD'} = '';
$cgiparams{'BACKUPLOGS'} = '';
+
&Header::getcgihash(\%cgiparams);
############################################################################################################################
-######################################## Scanne Verzeichnisse nach Mp3 Dateien #############################################
+################################################ Workaround for Directories ################################################
-if ( $cgiparams{'ACTION'} eq "backup" )
+system("/usr/local/bin/backupctrl makedirs >/dev/null 2>&1 ") unless ( -e '/var/ipfire/backup/addons/backup') ;
+
+############################################################################################################################
+############################################## System calls ohne Http Header ###############################################
+
+# Replace slashes from filename
+$cgiparams{'FILE'} =~ s/\///;
+
+if ( $cgiparams{'ACTION'} eq "download" )
+{
+ open(DLFILE, ";
+ print "Content-Type:application/x-download\n";
+ print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n";
+ print @fileholder;
+ exit (0);
+}
+if ( $cgiparams{'ACTION'} eq "downloadiso" )
{
- if ( $cgiparams{'BACKUPLOGS'} eq "include" ){system("/usr/local/bin/backupctrl include");}
- else {system("/usr/local/bin/backupctrl exclude");}
+ open(DLFILE, ";
+ print "Content-Type:application/x-download\n";
+ print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n";
+ print @fileholder;
+ exit (0);
}
-elsif ( $cgiparams{'ACTION'} eq "download" )
+if ( $cgiparams{'ACTION'} eq "downloadaddon" )
{
- open(DLFILE, ";
- print "Content-Type:application/x-download\n";
- print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n";
- print @fileholder;
- exit (0);
+ open(DLFILE, ";
+ print "Content-Type:application/x-download\n";
+ print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n";
+ print @fileholder;
+ exit (0);
}
elsif ( $cgiparams{'ACTION'} eq "restore" )
{
- my $upload = $a->param("UPLOAD");
- open UPLOADFILE, ">/tmp/restore.ipf";
- binmode $upload;
- while ( <$upload> ) {
- print UPLOADFILE;
- }
- close UPLOADFILE;
- system("/usr/local/bin/backupctrl restore");
+ my $upload = $a->param("UPLOAD");
+ open UPLOADFILE, ">/tmp/restore.ipf";
+ binmode $upload;
+ while ( <$upload> ) {
+ print UPLOADFILE;
+ }
+ close UPLOADFILE;
+ system("/usr/local/bin/backupctrl restore >/dev/null 2>&1");
+}
+elsif ( $cgiparams{'ACTION'} eq "restoreaddon" )
+{
+ chomp($cgiparams{'UPLOAD'});
+ # we need to fix cause IE7 gives the full path and FF only the filename
+ my @temp = split(/\\/,$cgiparams{'UPLOAD'});
+ my $upload = $a->param("UPLOAD");
+ open UPLOADFILE, ">/tmp/".$temp[$#temp];
+ binmode $upload;
+ while ( <$upload> ) {
+ print UPLOADFILE;
+ }
+ close UPLOADFILE;
+ system("/usr/local/bin/backupctrl restoreaddon ".$temp[$#temp]." >/dev/null 2>&1");
}
-
-############################################################################################################################
-########################################### rekursiv nach neuen Mp3s Scannen ##############################################ä
&Header::showhttpheaders();
+
+sub refreshpage{&Header::openbox( 'Waiting', 1, "" );print "