예제 #1
0
 /**
  * create manifest file
  * @return bool
  */
 public function create_manifest()
 {
     $this->substeps_todo = 3;
     $this->log(sprintf(__('%d. Trying to generate a manifest file …', 'backwpup'), $this->steps_data[$this->step_working]['STEP_TRY']));
     //build manifest
     $manifest = array();
     // add blog information
     $manifest['blog_info']['url'] = home_url();
     $manifest['blog_info']['wpurl'] = site_url();
     $manifest['blog_info']['prefix'] = $GLOBALS['wpdb']->prefix;
     $manifest['blog_info']['description'] = get_option('blogdescription');
     $manifest['blog_info']['stylesheet_directory'] = get_template_directory_uri();
     $manifest['blog_info']['activate_plugins'] = wp_get_active_and_valid_plugins();
     $manifest['blog_info']['activate_theme'] = wp_get_theme()->get('Name');
     $manifest['blog_info']['admin_email'] = get_option('admin_email');
     $manifest['blog_info']['charset'] = get_bloginfo('charset');
     $manifest['blog_info']['version'] = BackWPup::get_plugin_data('wp_version');
     $manifest['blog_info']['backwpup_version'] = BackWPup::get_plugin_data('version');
     $manifest['blog_info']['language'] = get_bloginfo('language');
     $manifest['blog_info']['name'] = get_bloginfo('name');
     $manifest['blog_info']['abspath'] = ABSPATH;
     $manifest['blog_info']['uploads'] = wp_upload_dir(null, false, true);
     $manifest['blog_info']['contents']['basedir'] = WP_CONTENT_DIR;
     $manifest['blog_info']['contents']['baseurl'] = WP_CONTENT_URL;
     $manifest['blog_info']['plugins']['basedir'] = WP_PLUGIN_DIR;
     $manifest['blog_info']['plugins']['baseurl'] = WP_PLUGIN_URL;
     $manifest['blog_info']['themes']['basedir'] = get_theme_root();
     $manifest['blog_info']['themes']['baseurl'] = get_theme_root_uri();
     // add job settings
     $manifest['job_settings'] = $this->job;
     // add archive info
     foreach ($this->additional_files_to_backup as $file) {
         $manifest['archive']['extra_files'][] = basename($file);
     }
     if (isset($this->steps_data['JOB_FILE'])) {
         if ($this->job['backuproot']) {
             $manifest['archive']['abspath'] = trailingslashit($this->get_destination_path_replacement(ABSPATH));
         }
         if ($this->job['backupuploads']) {
             $manifest['archive']['uploads'] = trailingslashit($this->get_destination_path_replacement(BackWPup_File::get_upload_dir()));
         }
         if ($this->job['backupcontent']) {
             $manifest['archive']['contents'] = trailingslashit($this->get_destination_path_replacement(WP_CONTENT_DIR));
         }
         if ($this->job['backupplugins']) {
             $manifest['archive']['plugins'] = trailingslashit($this->get_destination_path_replacement(WP_PLUGIN_DIR));
         }
         if ($this->job['backupthemes']) {
             $manifest['archive']['themes'] = trailingslashit($this->get_destination_path_replacement(get_theme_root()));
         }
     }
     if (!file_put_contents(BackWPup::get_plugin_data('TEMP') . 'manifest.json', json_encode($manifest))) {
         return false;
     }
     $this->substeps_done = 1;
     //Create backwpup_readme.txt
     $readme_text = __('You may have noticed the manifest.json file in this archive.', 'backwpup') . PHP_EOL;
     $readme_text .= __('manifest.json might be needed for later restoring a backup from this archive.', 'backwpup') . PHP_EOL;
     $readme_text .= __('Please leave manifest.json untouched and in place. Otherwise it is safe to be ignored.', 'backwpup') . PHP_EOL;
     if (!file_put_contents(BackWPup::get_plugin_data('TEMP') . 'backwpup_readme.txt', $readme_text)) {
         return false;
     }
     $this->substeps_done = 2;
     //add file to backup files
     if (is_readable(BackWPup::get_plugin_data('TEMP') . 'manifest.json')) {
         $this->additional_files_to_backup[] = BackWPup::get_plugin_data('TEMP') . 'manifest.json';
         $this->additional_files_to_backup[] = BackWPup::get_plugin_data('TEMP') . 'backwpup_readme.txt';
         $this->log(sprintf(__('Added manifest.json file with %1$s to backup file list.', 'backwpup'), size_format(filesize(BackWPup::get_plugin_data('TEMP') . 'manifest.json'), 2)));
     }
     $this->substeps_done = 3;
     return true;
 }
예제 #2
0
 /**
  *
  * Check is folder readable and exists create it if not
  * add .htaccess or index.html file in folder to prevent directory listing
  *
  * @param string $folder the folder to check
  * @param bool   $donotbackup Create a file that the folder will not backuped
  *
  * @return string with error message if one
  */
 public static function check_folder($folder, $donotbackup = FALSE)
 {
     $folder = BackWPup_File::get_absolute_path($folder);
     $folder = untrailingslashit($folder);
     //check that is not home of WP
     $uploads = BackWPup_File::get_upload_dir();
     if ($folder === untrailingslashit(str_replace('\\', '/', ABSPATH)) || $folder === untrailingslashit(str_replace('\\', '/', dirname(ABSPATH))) || $folder === untrailingslashit(str_replace('\\', '/', WP_PLUGIN_DIR)) || $folder === untrailingslashit(str_replace('\\', '/', WP_CONTENT_DIR)) || $folder === untrailingslashit($uploads) || $folder === '/') {
         return sprintf(__('Folder %1$s not allowed, please use another folder.', 'backwpup'), $folder);
     }
     //open base dir check
     if (!BackWPup_File::is_in_open_basedir($folder)) {
         return sprintf(__('Folder %1$s is not in open basedir, please use another folder.', 'backwpup'), $folder);
     }
     //create folder if it not exists
     if (!is_dir($folder)) {
         if (!wp_mkdir_p($folder)) {
             return sprintf(__('Cannot create folder: %1$s', 'backwpup'), $folder);
         }
     }
     //check is writable dir
     if (!is_writable($folder)) {
         return sprintf(__('Folder "%1$s" is not writable', 'backwpup'), $folder);
     }
     //create files for securing folder
     if (get_site_option('backwpup_cfg_protectfolders')) {
         $server_software = strtolower($_SERVER['SERVER_SOFTWARE']);
         //IIS
         if (strstr($server_software, 'microsoft-iis')) {
             if (!file_exists($folder . '/web.config')) {
                 file_put_contents($folder . '/web.config', "<configuration>" . PHP_EOL . "\t<system.webServer>" . PHP_EOL . "\t\t<authorization>" . PHP_EOL . "\t\t\t<deny users=" * " />" . PHP_EOL . "\t\t</authorization>" . PHP_EOL . "\t</system.webServer>" . PHP_EOL . "</configuration>");
             }
         } elseif (strstr($server_software, 'nginx')) {
             if (!file_exists($folder . '/index.php')) {
                 file_put_contents($folder . '/index.php', "<?php" . PHP_EOL . "header( \$_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found' );" . PHP_EOL . "header( 'Status: 404 Not Found' );" . PHP_EOL);
             }
         } else {
             if (!file_exists($folder . '/.htaccess')) {
                 file_put_contents($folder . '/.htaccess', "<Files \"*\">" . PHP_EOL . "<IfModule mod_access.c>" . PHP_EOL . "Deny from all" . PHP_EOL . "</IfModule>" . PHP_EOL . "<IfModule !mod_access_compat>" . PHP_EOL . "<IfModule mod_authz_host.c>" . PHP_EOL . "Deny from all" . PHP_EOL . "</IfModule>" . PHP_EOL . "</IfModule>" . PHP_EOL . "<IfModule mod_access_compat>" . PHP_EOL . "Deny from all" . PHP_EOL . "</IfModule>" . PHP_EOL . "</Files>");
             }
             if (!file_exists($folder . '/index.php')) {
                 file_put_contents($folder . '/index.php', "<?php" . PHP_EOL . "header( \$_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found' );" . PHP_EOL . "header( 'Status: 404 Not Found' );" . PHP_EOL);
             }
         }
     }
     //Create do not backup file for this folder
     if ($donotbackup && !file_exists($folder . '/.donotbackup')) {
         file_put_contents($folder . '/.donotbackup', __('BackWPup will not backup folders and its sub folders when this file is inside.', 'backwpup'));
     }
     return '';
 }
 /**
  *
  * Get folder to exclude from a given folder for file backups
  *
  * @param $folder string folder to check for excludes
  *
  * @return array of folder to exclude
  */
 private function get_exclude_dirs($folder)
 {
     $folder = trailingslashit(str_replace('\\', '/', realpath($folder)));
     $excludedir = array();
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(ABSPATH))), $folder) && trailingslashit(str_replace('\\', '/', realpath(ABSPATH))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(ABSPATH)));
     }
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR))), $folder) && trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR)));
     }
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR))), $folder) && trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR)));
     }
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(get_theme_root()))), $folder) && trailingslashit(str_replace('\\', '/', realpath(get_theme_root()))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(get_theme_root())));
     }
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(BackWPup_File::get_upload_dir()))), $folder) && trailingslashit(str_replace('\\', '/', realpath(BackWPup_File::get_upload_dir()))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(BackWPup_File::get_upload_dir())));
     }
     return array_unique($excludedir);
 }
예제 #4
0
 /**
  *
  * Get folder to exclude from a given folder for file backups
  *
  * @param $folder string folder to check for excludes
  *
  * @return array of folder to exclude
  */
 private function get_exclude_dirs($folder)
 {
     $folder = trailingslashit(str_replace('\\', '/', realpath($folder)));
     $excludedir = array();
     $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(BackWPup::get_plugin_data('TEMP'))));
     //exclude temp
     $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(get_site_option('backwpup_cfg_logfolder'))));
     //exclude log folder
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(ABSPATH))), $folder) && trailingslashit(str_replace('\\', '/', realpath(ABSPATH))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(ABSPATH)));
     }
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR))), $folder) && trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR)));
     }
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR))), $folder) && trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR)));
     }
     if (FALSE !== strpos(trailingslashit(str_replace('\\', '/', realpath(get_theme_root()))), $folder) && trailingslashit(str_replace('\\', '/', realpath(get_theme_root()))) != $folder) {
         $excludedir[] = trailingslashit(str_replace('\\', '/', realpath(get_theme_root())));
     }
     if (FALSE !== strpos(trailingslashit(realpath(BackWPup_File::get_upload_dir())), $folder) && trailingslashit(realpath(BackWPup_File::get_upload_dir())) != $folder) {
         $excludedir[] = trailingslashit(realpath(BackWPup_File::get_upload_dir()));
     }
     //Exclude Backup dirs
     $jobids = BackWPup_Option::get_job_ids();
     foreach ($jobids as $id) {
         $backupdir = realpath(BackWPup_Option::get($id, 'backupdir'));
         if (!empty($backupdir) && $backupdir != '/') {
             $excludedir[] = trailingslashit(str_replace('\\', '/', $backupdir));
         }
     }
     return array_unique($excludedir);
 }
 function mainwp_backwpup_get_exclude_dirs($folder)
 {
     $folder = trailingslashit(str_replace('\\', '/', realpath($folder)));
     $exclude_dir_array = array();
     if (false !== strpos(trailingslashit(str_replace('\\', '/', realpath(ABSPATH))), $folder) && trailingslashit(str_replace('\\', '/', realpath(ABSPATH))) != $folder) {
         $exclude_dir_array[] = trailingslashit(str_replace('\\', '/', realpath(ABSPATH)));
     }
     if (false !== strpos(trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR))), $folder) && trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR))) != $folder) {
         $exclude_dir_array[] = trailingslashit(str_replace('\\', '/', realpath(WP_CONTENT_DIR)));
     }
     if (false !== strpos(trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR))), $folder) && trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR))) != $folder) {
         $exclude_dir_array[] = trailingslashit(str_replace('\\', '/', realpath(WP_PLUGIN_DIR)));
     }
     if (false !== strpos(trailingslashit(str_replace('\\', '/', realpath(get_theme_root()))), $folder) && trailingslashit(str_replace('\\', '/', realpath(get_theme_root()))) != $folder) {
         $exclude_dir_array[] = trailingslashit(str_replace('\\', '/', realpath(get_theme_root())));
     }
     if (false !== strpos(trailingslashit(str_replace('\\', '/', realpath(BackWPup_File::get_upload_dir()))), $folder) && trailingslashit(str_replace('\\', '/', realpath(BackWPup_File::get_upload_dir()))) != $folder) {
         $exclude_dir_array[] = trailingslashit(str_replace('\\', '/', realpath(BackWPup_File::get_upload_dir())));
     }
     return array_unique($exclude_dir_array);
 }