-# Replace slashes from filename
-$cgiparams{'FILE'} =~ s/\///;
-
-if ( $cgiparams{'ACTION'} eq "download" )
-{
- open(DLFILE, "</var/ipfire/backup/$cgiparams{'FILE'}") or die "Unable to open $cgiparams{'FILE'}: $!";
- my @fileholder = <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" )
-{
- open(DLFILE, "</var/tmp/backupiso/$cgiparams{'FILE'}") or die "Unable to open $cgiparams{'FILE'}: $!";
- my @fileholder = <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 "downloadaddon" )
-{
- open(DLFILE, "</var/ipfire/backup/addons/backup/$cgiparams{'FILE'}") or die "Unable to open $cgiparams{'FILE'}: $!";
- my @fileholder = <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" )
-{
+if ($cgiparams{'ACTION'} eq "download") {
+ my $file = &sanitise_file($cgiparams{'FILE'});
+ exit(1) unless defined($file);
+
+ &deliver_file($file);
+ exit(0);
+} elsif ($cgiparams{'ACTION'} eq "downloadiso") {
+ my $file = &sanitise_file($cgiparams{'FILE'});
+ exit(1) unless defined($file);
+
+ &deliver_file($file);
+ exit(0);
+} elsif ($cgiparams{'ACTION'} eq "downloadaddon") {
+ my $file = &sanitise_file($cgiparams{'FILE'});
+ exit(1) unless defined($file);
+
+ &deliver_file($file);
+ exit(0);
+} elsif ( $cgiparams{'ACTION'} eq "restore") {