From abc1106ee0e3a926b9c5eb1500f34586566100e8 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Fri, 15 Aug 2014 23:33:20 +0000 Subject: [PATCH] Add a backup feature --- app/backup/app_config.php | 50 +++++++++++++ app/backup/app_languages.php | 73 +++++++++++++++++++ app/backup/index.php | 132 +++++++++++++++++++++++++++++++++++ app/backup/root.php | 50 +++++++++++++ 4 files changed, 305 insertions(+) create mode 100755 app/backup/app_config.php create mode 100755 app/backup/app_languages.php create mode 100644 app/backup/index.php create mode 100755 app/backup/root.php diff --git a/app/backup/app_config.php b/app/backup/app_config.php new file mode 100755 index 0000000000..6ec48ba57e --- /dev/null +++ b/app/backup/app_config.php @@ -0,0 +1,50 @@ + \ No newline at end of file diff --git a/app/backup/app_languages.php b/app/backup/app_languages.php new file mode 100755 index 0000000000..d749521a0f --- /dev/null +++ b/app/backup/app_languages.php @@ -0,0 +1,73 @@ + diff --git a/app/backup/index.php b/app/backup/index.php new file mode 100644 index 0000000000..11e51477e4 --- /dev/null +++ b/app/backup/index.php @@ -0,0 +1,132 @@ + + Portions created by the Initial Developer are Copyright (C) 2008-2012 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ +include "root.php"; +require_once "resources/require.php"; +require_once "resources/check_auth.php"; +if (if_group("backup_download")) { + //access granted +} +else { + echo "access denied"; + exit; +} + +//add multi-lingual support +// require_once "app_languages.php"; + foreach($text as $key => $value) { + $text[$key] = $value[$_SESSION['domain']['language']['code']]; + } + +//download the backup + if ($_GET['a'] == "download" && permission_exists('backup_download')) { + session_cache_limiter('public'); + if ($_GET['type'] = "rec") { + if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.base64_decode($_GET['filename']))) { + $fd = fopen($_SESSION['switch']['recordings']['dir'].'/'.base64_decode($_GET['filename']), "rb"); + header("Content-Type: application/force-download"); + header("Content-Type: application/octet-stream"); + //header("Content-Transfer-Encoding: binary"); + header("Content-Type: application/download"); + header("Content-Description: File Transfer"); + header('Content-Disposition: attachment; filename=backup.tgz'); + header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past + header("Content-Length: " . filesize($_SESSION['switch']['recordings']['dir'].'/'.base64_decode($_GET['filename']))); + header("Pragma: no-cache"); + header("Expires: 0"); + ob_clean(); + fpassthru($fd); + } + } + exit; + } + +//upload the backup + if (permission_exists('backup_upload')) { + if (($_POST['submit'] == "Upload") && is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('recording_upload')) { + if ($_POST['type'] == 'rec') { + move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['switch']['recordings']['dir'].'/'.$_FILES['ulfile']['name']); + $savemsg = $text['message-uploaded']." ".$_SESSION['switch']['recordings']['dir']."/". htmlentities($_FILES['ulfile']['name']); + //system('chmod -R 744 '.$_SESSION['switch']['recordings']['dir'].'*'); + unset($_POST['txtCommand']); + } + } + } + +//add the header + require_once "resources/header.php"; + +//show the content + echo "\n"; + echo "\n"; + echo " \n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + echo "
Backup
\n"; + echo " download \n"; + echo " \n"; + echo "
\n"; + echo "To backup your application click on the download link and then choose \n"; + echo "a safe location on your computer to save the file. You may want to \n"; + echo "save the backup to more than one computer to prevent the backup from being lost. \n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + + echo "Restore Application
\n"; + echo "
\n"; + //Browse to Backup File + echo "Click on 'Browse' then locate and select the application backup file named '.bak'. \n"; + echo "Then click on 'Restore.' \n"; + echo "

"; + + echo "
"; + echo "
"; + echo " "; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
\n"; + echo " "; + echo " "; + echo " "; + echo "
"; + echo " \n"; + echo " \n"; + echo "
"; + echo "
\n"; + echo "
\n"; + echo "
"; + + echo "
"; + + //show the footer + require_once "resources/footer.php"; + +?> \ No newline at end of file diff --git a/app/backup/root.php b/app/backup/root.php new file mode 100755 index 0000000000..7b882438ea --- /dev/null +++ b/app/backup/root.php @@ -0,0 +1,50 @@ + + Portions created by the Initial Developer are Copyright (C) 2008-2012 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +// make sure the PATH_SEPARATOR is defined + if (!defined("PATH_SEPARATOR")) { + if ( strpos( $_ENV[ "OS" ], "Win" ) !== false ) { define("PATH_SEPARATOR", ";"); } else { define("PATH_SEPARATOR", ":"); } + } + +// make sure the document_root is set + $_SERVER["SCRIPT_FILENAME"] = str_replace("\\", "/", $_SERVER["SCRIPT_FILENAME"]); + $_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]); + $_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]); + //echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."
\n"; + //echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."
\n"; + //echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."
\n"; + +// if the project directory exists then add it to the include path otherwise add the document root to the include path + if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){ + if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); } + set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' ); + } + else { + if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); } + set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] ); + } + +?> \ No newline at end of file