Version Description
- Feature: Adding file exclusion patterns to avoid backing up cache and backup directories.
Download this release
Release Info
| Developer | briancolinger |
| Plugin | |
| Version | 1.5.1 |
| Comparing to | |
| See all releases | |
Code changes from version 1.5 to 1.5.1
- class.vaultpress-filesystem.php +17 -1
- readme.txt +4 -1
- vaultpress.php +53 -3
class.vaultpress-filesystem.php
CHANGED
|
@@ -93,7 +93,7 @@ class VaultPress_Filesystem {
|
|
| 93 |
return $rval;
|
| 94 |
}
|
| 95 |
|
| 96 |
-
function ls( $what, $md5=false, $sha1=false, $limit=null, $offset=null ) {
|
| 97 |
clearstatcache();
|
| 98 |
$path = realpath($this->dir . $what);
|
| 99 |
$dir = $this->dir;
|
|
@@ -113,6 +113,8 @@ class VaultPress_Filesystem {
|
|
| 113 |
$limit = $offset + (int)$limit;
|
| 114 |
foreach ( (array)$this->scan_dir( $path ) as $i ) {
|
| 115 |
$current++;
|
|
|
|
|
|
|
| 116 |
if ( $offset >= $current )
|
| 117 |
continue;
|
| 118 |
if ( $limit && $limit < $current )
|
|
@@ -128,6 +130,20 @@ class VaultPress_Filesystem {
|
|
| 128 |
}
|
| 129 |
}
|
| 130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 131 |
function validate( $file ) {
|
| 132 |
$rpath = realpath( $this->dir.$file );
|
| 133 |
$dir = $this->dir;
|
| 93 |
return $rval;
|
| 94 |
}
|
| 95 |
|
| 96 |
+
function ls( $what, $md5=false, $sha1=false, $limit=null, $offset=null, $full_list=false ) {
|
| 97 |
clearstatcache();
|
| 98 |
$path = realpath($this->dir . $what);
|
| 99 |
$dir = $this->dir;
|
| 113 |
$limit = $offset + (int)$limit;
|
| 114 |
foreach ( (array)$this->scan_dir( $path ) as $i ) {
|
| 115 |
$current++;
|
| 116 |
+
if ( !$full_list && !$this->should_backup_file( $i ) )
|
| 117 |
+
continue;
|
| 118 |
if ( $offset >= $current )
|
| 119 |
continue;
|
| 120 |
if ( $limit && $limit < $current )
|
| 130 |
}
|
| 131 |
}
|
| 132 |
|
| 133 |
+
function should_backup_file( $filepath ) {
|
| 134 |
+
$vp = VaultPress::init();
|
| 135 |
+
if ( is_dir( $filepath ) )
|
| 136 |
+
$filepath = trailingslashit( $filepath );
|
| 137 |
+
$regex_patterns = $vp->get_should_ignore_files();
|
| 138 |
+
foreach ( $regex_patterns as $pattern ) {
|
| 139 |
+
$matches = array();
|
| 140 |
+
if ( preg_match( $pattern, $filepath, $matches ) ) {
|
| 141 |
+
return false;
|
| 142 |
+
}
|
| 143 |
+
}
|
| 144 |
+
return true;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
function validate( $file ) {
|
| 148 |
$rpath = realpath( $this->dir.$file );
|
| 149 |
$dir = $this->dir;
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: automattic, apokalyptik, briancolinger, josephscott, shaunandrews,
|
|
| 3 |
Tags: security, malware, virus, backups, scanning
|
| 4 |
Requires at least: 2.9.2
|
| 5 |
Tested up to: 3.8
|
| 6 |
-
Stable tag: 1.5
|
| 7 |
License: GPLv2
|
| 8 |
|
| 9 |
VaultPress is a subscription service offering realtime backup, automated security scanning, and support from WordPress experts.
|
|
@@ -51,6 +51,9 @@ A VaultPress subscription is for a single WordPress site. You can purchase addit
|
|
| 51 |
Yes, VaultPress supports Multisite installs. Each site will require its own subscription.
|
| 52 |
|
| 53 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
| 54 |
= 1.5 =
|
| 55 |
* Bugfix: Don't show admin notices on the about page.
|
| 56 |
|
| 3 |
Tags: security, malware, virus, backups, scanning
|
| 4 |
Requires at least: 2.9.2
|
| 5 |
Tested up to: 3.8
|
| 6 |
+
Stable tag: 1.5.1
|
| 7 |
License: GPLv2
|
| 8 |
|
| 9 |
VaultPress is a subscription service offering realtime backup, automated security scanning, and support from WordPress experts.
|
| 51 |
Yes, VaultPress supports Multisite installs. Each site will require its own subscription.
|
| 52 |
|
| 53 |
== Changelog ==
|
| 54 |
+
= 1.5.1 =
|
| 55 |
+
* Feature: Adding file exclusion patterns to avoid backing up cache and backup directories.
|
| 56 |
+
|
| 57 |
= 1.5 =
|
| 58 |
* Bugfix: Don't show admin notices on the about page.
|
| 59 |
|
vaultpress.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
* Plugin Name: VaultPress
|
| 4 |
* Plugin URI: http://vaultpress.com/?utm_source=plugin-uri&utm_medium=plugin-description&utm_campaign=1.0
|
| 5 |
* Description: Protect your content, themes, plugins, and settings with <strong>realtime backup</strong> and <strong>automated security scanning</strong> from <a href="http://vaultpress.com/?utm_source=wp-admin&utm_medium=plugin-description&utm_campaign=1.0" rel="nofollow">VaultPress</a>. Activate, enter your registration key, and never worry again. <a href="http://vaultpress.com/help/?utm_source=wp-admin&utm_medium=plugin-description&utm_campaign=1.0" rel="nofollow">Need some help?</a>
|
| 6 |
-
* Version: 1.5
|
| 7 |
* Author: Automattic
|
| 8 |
* Author URI: http://vaultpress.com/?utm_source=author-uri&utm_medium=plugin-description&utm_campaign=1.0
|
| 9 |
* License: GPL2+
|
|
@@ -18,7 +18,7 @@ if ( !defined( 'ABSPATH' ) )
|
|
| 18 |
class VaultPress {
|
| 19 |
var $option_name = 'vaultpress';
|
| 20 |
var $db_version = 3;
|
| 21 |
-
var $plugin_version = '1.5';
|
| 22 |
|
| 23 |
function __construct() {
|
| 24 |
register_activation_hook( __FILE__, array( $this, 'activate' ) );
|
|
@@ -517,6 +517,10 @@ class VaultPress {
|
|
| 517 |
$val = $this->get_post_meta_name_ignore( true );
|
| 518 |
update_option( '_vp_config_post_meta_name_ignore', $val );
|
| 519 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 520 |
}
|
| 521 |
return $val;
|
| 522 |
}
|
|
@@ -549,6 +553,47 @@ class VaultPress {
|
|
| 549 |
return array_unique( array_merge( $defaults, $ignore_names ) );
|
| 550 |
}
|
| 551 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 552 |
###
|
| 553 |
### Section: Backup Notification Hooks
|
| 554 |
###
|
|
@@ -1534,6 +1579,11 @@ JS;
|
|
| 1534 |
else
|
| 1535 |
$recursive = false;
|
| 1536 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1537 |
switch ( array_pop( explode( ':', $_GET['action'] ) ) ) {
|
| 1538 |
default:
|
| 1539 |
die( "naughty naughty" );
|
|
@@ -1547,7 +1597,7 @@ JS;
|
|
| 1547 |
case 'get':
|
| 1548 |
$bfs->fdump( $bfs->dir.$path );
|
| 1549 |
case 'ls':
|
| 1550 |
-
$this->response( $bfs->ls( $path, $md5, $sha1, $limit, $offset ) );
|
| 1551 |
}
|
| 1552 |
break;
|
| 1553 |
case 'config:get':
|
| 3 |
* Plugin Name: VaultPress
|
| 4 |
* Plugin URI: http://vaultpress.com/?utm_source=plugin-uri&utm_medium=plugin-description&utm_campaign=1.0
|
| 5 |
* Description: Protect your content, themes, plugins, and settings with <strong>realtime backup</strong> and <strong>automated security scanning</strong> from <a href="http://vaultpress.com/?utm_source=wp-admin&utm_medium=plugin-description&utm_campaign=1.0" rel="nofollow">VaultPress</a>. Activate, enter your registration key, and never worry again. <a href="http://vaultpress.com/help/?utm_source=wp-admin&utm_medium=plugin-description&utm_campaign=1.0" rel="nofollow">Need some help?</a>
|
| 6 |
+
* Version: 1.5.1
|
| 7 |
* Author: Automattic
|
| 8 |
* Author URI: http://vaultpress.com/?utm_source=author-uri&utm_medium=plugin-description&utm_campaign=1.0
|
| 9 |
* License: GPL2+
|
| 18 |
class VaultPress {
|
| 19 |
var $option_name = 'vaultpress';
|
| 20 |
var $db_version = 3;
|
| 21 |
+
var $plugin_version = '1.5.1';
|
| 22 |
|
| 23 |
function __construct() {
|
| 24 |
register_activation_hook( __FILE__, array( $this, 'activate' ) );
|
| 517 |
$val = $this->get_post_meta_name_ignore( true );
|
| 518 |
update_option( '_vp_config_post_meta_name_ignore', $val );
|
| 519 |
break;
|
| 520 |
+
case '_vp_config_should_ignore_files':
|
| 521 |
+
$val = $this->get_should_ignore_files( true );
|
| 522 |
+
update_option( '_vp_config_should_ignore_files', $val );
|
| 523 |
+
break;
|
| 524 |
}
|
| 525 |
return $val;
|
| 526 |
}
|
| 553 |
return array_unique( array_merge( $defaults, $ignore_names ) );
|
| 554 |
}
|
| 555 |
|
| 556 |
+
// file name patterns to ignore
|
| 557 |
+
function get_should_ignore_files( $return_defaults = false ) {
|
| 558 |
+
$defaults = array(
|
| 559 |
+
'@.*/404\.log\.txt$@',
|
| 560 |
+
'@.*/\.DS_Store$@',
|
| 561 |
+
'@.*/debug\.log$@',
|
| 562 |
+
'@.*\.timthumb\.txt$@',
|
| 563 |
+
'@.*timthumb[A-Za-z0-9]*$@',
|
| 564 |
+
'@.*wp-content/contents/cache/@',
|
| 565 |
+
'@.*wp-content/content/cache/@',
|
| 566 |
+
'@.*wp-content/cache/@',
|
| 567 |
+
'@.*wp-content/old-cache/@',
|
| 568 |
+
'@.*cache/@',
|
| 569 |
+
'@.*wp-content/w3tc/@',
|
| 570 |
+
'@.*owa/owa-data/caches/@',
|
| 571 |
+
'@.*gt-cache@',
|
| 572 |
+
'@.*/wpclicks/tracker/cache/@',
|
| 573 |
+
'@.*amember/data/new_rewrite@',
|
| 574 |
+
'@.*sucuri/blocks/@',
|
| 575 |
+
'@.*/_sucuribackup.*@',
|
| 576 |
+
'@.*sess_[0-9a-zA-Z]{32,}@',
|
| 577 |
+
'@.*wp-content/backups.*@',
|
| 578 |
+
'@.*wp-content/backupwordpress@',
|
| 579 |
+
'@.*wp-content/backup-[0-9a-zA-Z]+@',
|
| 580 |
+
'@.*wp-content/[0-9a-zA-Z]+-backups@',
|
| 581 |
+
'@.*mwp_backups/@',
|
| 582 |
+
'@.*managewp/backups/@',
|
| 583 |
+
'@.*wp-snapshots/@',
|
| 584 |
+
'@.*error_log.*@',
|
| 585 |
+
'@.*/error-log.*@',
|
| 586 |
+
'@.*/error\.log$@',
|
| 587 |
+
'@.*/captcha/tmp.*@',
|
| 588 |
+
'@.*\.mt_backup_[0-9a-z:_]*$@i',
|
| 589 |
+
'@.*vp-uploaded-restore-.*@',
|
| 590 |
+
);
|
| 591 |
+
if ( $return_defaults )
|
| 592 |
+
return $defaults;
|
| 593 |
+
$ignore_names = (array) $this->get_config( '_vp_config_should_ignore_files' );
|
| 594 |
+
return array_unique( array_merge( $defaults, $ignore_names ) );
|
| 595 |
+
}
|
| 596 |
+
|
| 597 |
###
|
| 598 |
### Section: Backup Notification Hooks
|
| 599 |
###
|
| 1579 |
else
|
| 1580 |
$recursive = false;
|
| 1581 |
|
| 1582 |
+
if ( isset( $_POST['full_list'] ) )
|
| 1583 |
+
$full_list = (bool)$_POST['full_list'];
|
| 1584 |
+
else
|
| 1585 |
+
$full_list = false;
|
| 1586 |
+
|
| 1587 |
switch ( array_pop( explode( ':', $_GET['action'] ) ) ) {
|
| 1588 |
default:
|
| 1589 |
die( "naughty naughty" );
|
| 1597 |
case 'get':
|
| 1598 |
$bfs->fdump( $bfs->dir.$path );
|
| 1599 |
case 'ls':
|
| 1600 |
+
$this->response( $bfs->ls( $path, $md5, $sha1, $limit, $offset, $full_list ) );
|
| 1601 |
}
|
| 1602 |
break;
|
| 1603 |
case 'config:get':
|
