################################################################### # # rdiff-backup-browser # # Dean Cording (dean@cording.id.au) # Based on rdiff-backup-web by: David Evans (goodevans@gmail.com) # # (c) 2007 Dale Stirling (rdiffbackupweb@puredistortion.com) # # Useless without rdiff-backup created by Ben Escoto # # rdiff-backup-browser is a web-based interface for rdiff-backup # designed to greatly simplify backup restoring. # # rdiff-backup-browser is free software and is released under the # GNU General Public Licence. See licence.txt for details. # ################################################################### include("./config.php"); if($_REQUEST['op']){ $op = $_REQUEST['op']; } else { $op = ""; } if($_REQUEST['backup']){ $backup=$_REQUEST['backup']; } else { $backup=""; } if($_REQUEST['increment']){ $increment=$_REQUEST['increment']; } else { $increment=""; } if($_REQUEST['linktofile']){ $linktofile=$_REQUEST['linktofile']; } else { $linktofile=""; } if ($op == "view_log") { $file="$BACKUP_LOCATION$backup/rdiff-backup-data/backup.log"; header('Content-Type: text/plain'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); } /* Force download of file */ if ($linktofile != "" && $increment !="" && $backup != "") { $filename = split("/", $linktofile); $filename_in_array = sizeof($filename); $filename_in_array --; $file=$DOWNLOAD_LOCATION.$filename[$filename_in_array]; if (file_exists($file)) { unlink($file);}; $restore_command = "$RDIFF_BACKUP --restore-as-of '$increment' $BACKUP_LOCATION$backup/".str_replace(" ", "\ ", $linktofile)." $DOWNLOAD_LOCATION".str_replace(" ", "\ ", $filename[$filename_in_array]); exec($restore_command); $ftype = 'application/octet-stream'; $finfo = finfo_open(FILEINFO_MIME); $fres = finfo_file($finfo, $file); if (is_string($fres) && !empty($fres)) { $ftype = $fres; } finfo_close($finfo); header('Content-Description: File Transfer'); header('Content-Type: '.strstr($ftype, " ", true)); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?>