X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fbackup.cgi;h=8c938149642380152562767a4752bf0309fc3529;hb=01b5bc917008f92d20016c1e5280b2cb5d2b8d97;hp=a0b2dcf1641d56415e1a7e8dfba4946c9df22e7d;hpb=5ad5a6bcd654f9db982135f6c3ccc8352a2afa87;p=people%2Fteissler%2Fipfire-2.x.git diff --git a/html/cgi-bin/backup.cgi b/html/cgi-bin/backup.cgi index a0b2dcf16..8c9381496 100644 --- a/html/cgi-bin/backup.cgi +++ b/html/cgi-bin/backup.cgi @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# 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 # @@ -35,6 +35,8 @@ my %cgiparams=(); my %checked = (); my $message = ""; my $errormessage = ""; +my @backups = ""; +my @backupisos = ""; $a = new CGI; @@ -48,15 +50,35 @@ $cgiparams{'BACKUPLOGS'} = ''; &Header::getcgihash(\%cgiparams); +############################################################################################################################ +################################################ Workaround for Directories ################################################ + +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"; + my @fileinfo = stat("/var/ipfire/backup/$cgiparams{'FILE'}"); + print "Content-Length:$fileinfo[7]\n"; + print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n"; + print @fileholder; + exit (0); +} +if ( $cgiparams{'ACTION'} eq "downloadiso" ) +{ + open(DLFILE, "; + print "Content-Type:application/x-download\n"; + my @fileinfo = stat("/var/tmp/backupiso/$cgiparams{'FILE'}"); + print "Content-Length:$fileinfo[7]\n"; print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n"; print @fileholder; exit (0); @@ -66,6 +88,8 @@ if ( $cgiparams{'ACTION'} eq "downloadaddon" ) open(DLFILE, "; print "Content-Type:application/x-download\n"; + my @fileinfo = stat("/var/ipfire/backup/addons/backup/$cgiparams{'FILE'}"); + print "Content-Length:$fileinfo[7]\n"; print "Content-Disposition:attachment;filename=$cgiparams{'FILE'}\n\n"; print @fileholder; exit (0); @@ -83,15 +107,17 @@ elsif ( $cgiparams{'ACTION'} eq "restore" ) } 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, ">/var/$cgiparams{'UPLOAD'}"; + open UPLOADFILE, ">/tmp/".$temp[$#temp]; binmode $upload; while ( <$upload> ) { print UPLOADFILE; } close UPLOADFILE; - system("cp /var/ipfire/backup/addons/backup/$cgiparams{'UPLOAD'} /tmp/restore.ipf >/dev/null 2>&1"); - system("/usr/local/bin/backupctrl restore >/dev/null 2>&1"); + system("/usr/local/bin/backupctrl restoreaddon ".$temp[$#temp]." >/dev/null 2>&1"); } &Header::showhttpheaders(); @@ -106,8 +132,13 @@ sub refreshpage{&Header::openbox( 'Waiting', 1, "/dev/null 2>&1");} - else {system("/usr/local/bin/backupctrl exclude >/dev/null 2>&1");} + if ( $cgiparams{'BACKUPLOGS'} eq "include" ) { + system("/usr/local/bin/backupctrl include >/dev/null 2>&1"); + } elsif ( $cgiparams{'BACKUPLOGS'} eq "exclude" ) { + system("/usr/local/bin/backupctrl exclude >/dev/null 2>&1"); + } elsif ( $cgiparams{'BACKUPLOGS'} eq "iso" ) { + system("/usr/local/bin/backupctrl iso >/dev/null 2>&1"); + } } if ( $cgiparams{'ACTION'} eq "addonbackup" ) { @@ -127,17 +158,27 @@ if ( $message ne "" ){ &Header::closebox(); } -my @backups = `cd /var/ipfire/backup/ && ls *.ipf 2>/dev/null`; +if ( -e "/var/ipfire/backup/" ){ + @backups = `cd /var/ipfire/backup/ && ls *.ipf 2>/dev/null`; +} + +if ( -e "/var/tmp/backupiso/" ){ + @backupisos = `cd /var/tmp/backupiso/ && ls *.iso 2>/dev/null`; +} &Header::openbox('100%', 'center', $Lang::tr{'backup'}); print < - + + + +"; +my $Size = $Info[7] / 1024 / 1024; +$Size = sprintf("%0.2f", $Size); +print ""; +print ""; +} +foreach (@backupisos){ +if ( $_ !~ /iso$/){next;} +chomp($_); +my $Datei = "/var/tmp/backupiso/".$_; +my @Info = stat($Datei); +my $Size = $Info[7] / 1024 / 1024; +$Size = sprintf("%0.2f", $Size); +print ""; print ""; } print </dev/null`; +my @addons = `ls /var/ipfire/backup/addons/backup/ 2>/dev/null`; +my %addons; + +foreach (@addons){ + my $addon=substr($_,0,length($_)-5); + $addons{$addon}=''; +} print "
$Lang::tr{'logs'}include Logfiles - / - exclude Logfiles -
$Lang::tr{'logs'} + $Lang::tr{'include logfiles'}
+ $Lang::tr{'exclude logfiles'}
+ $Lang::tr{'generate iso'} +
@@ -158,12 +199,23 @@ print <$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size MB
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size MB
"; foreach (@addonincluds){ chomp($_); +delete $addons{$_}; my $Datei = "/var/ipfire/backup/addons/backup/".$_.".ipf"; my @Info = stat($Datei); my $Size = $Info[7] / 1024; -$Size = sprintf("%2d", $Size); + if ( -e $Datei ){ -print ""; + if ($Size < 1) { + $Size = sprintf("%.2f", $Size); + print ""; + } else { + $Size = sprintf("%2d", $Size); + print ""; + + } + print <
@@ -199,7 +267,7 @@ print < - + @@ -207,7 +275,7 @@ END ; } else{ - print "
"; + print ""; } print < @@ -220,6 +288,33 @@ print <"; +print < +
+ + + + + +
+ +END +; +} + print "
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."
$Lang::tr{'backup from'} $_
$Lang::tr{'backup from'} $_ $Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])." +
+ + + +
+
"; &Header::closebox(); @@ -231,11 +326,11 @@ print ""; print <
$Lang::tr{'backupwarning'}


-$Lang::tr{'backup'}
-$Lang::tr{'backupaddon'}
+$Lang::tr{'backup'}
+$Lang::tr{'backupaddon'}
END ; &Header::closebox(); &Header::closebigbox(); -&Header::closepage(); +&Header::closepage(); \ No newline at end of file