InfiniteWP Client - Version 1.8.6

Version Description

  • Feb 11th 2019 =
  • Fix: Duo security plugin on WordPress site breaks the IWP client plugin connection while performing open admin action.
  • Fix: Backup is retried when it failed with error "Failed to connect to content.dropboxapi.com port 443: Connection timed out. and Could not resolve host: api.dropboxapi.com.".
  • Fix: Plugin updates count showing in plugin menu on WP admin page while hide plugin updates setting is enabled on InfiniteWP admin panel via Client Plugin Branding.
  • Fix: Phoenix backup SFTP or FTP not using the custom port.
  • Fix: FTP SSL not working on Phoenix backup.
  • Fix: Ithemes security data is not included in the client reports.
  • Fix: Backups failed with error "Database backup failed. Try to enable MySQL dump on your server.".
Download this release

Release Info

Developer infinitewp
Plugin Icon 128x128 InfiniteWP Client
Version 1.8.6
Comparing to
See all releases

Code changes from version 1.8.5 to 1.8.6

addons/itheme_security/class-iwp-client-ithemes-security-class.php CHANGED
@@ -193,10 +193,10 @@ final class IWP_MMB_IThemes_Security extends IWP_MMB_Core {
193
  $range_search = '';
194
  if (isset($datefrom) || isset($dateto)) {
195
  if (isset($datefrom)) {
196
- $range_search .= $and . "`init_timestamp`>='" . esc_sql($datefrom) . "'";
197
  }
198
  if (isset($dateto)) {
199
- $range_search .= $and . "`init_timestamp`<='" . esc_sql($dateto) . "'";
200
  }
201
  }
202
 
193
  $range_search = '';
194
  if (isset($datefrom) || isset($dateto)) {
195
  if (isset($datefrom)) {
196
+ $range_search .= $and . " `init_timestamp` between '" . esc_sql($datefrom) . "'";
197
  }
198
  if (isset($dateto)) {
199
+ $range_search .= $and . " '" . esc_sql($dateto) . "'";
200
  }
201
  }
202
 
backup.class.multicall.php CHANGED
@@ -448,6 +448,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
448
  $backupStage = 'backupDBMultiCall';
449
  $this->statusLog($historyID, array('stage' => $backupStage, 'status' => 'completed', 'statusMsg' => 'backupDBCompleted','nextFunc' => 'backupDBZip', 'responseParams' => $db_final_response['success']));
450
  unset($db_final_response['success']['response_data']);
 
451
  //to continue in the same call
452
  if(($db_loop_break_time - $total_time_part) > 5)
453
  {
@@ -455,6 +456,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
455
  }
456
  else
457
  {
 
458
  $db_res_array = array();
459
  $db_res_array['status'] = $db_final_response['success']['status'];
460
  $db_res_array['backupParentHID'] = $db_final_response['success']['backupParentHID'];
@@ -625,7 +627,10 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
625
  $this->unlinkBackupFiles($backup_file);
626
  }
627
 
628
- if (is_array($dropbox_result) && isset($dropbox_result['error'])) {
 
 
 
629
  $this->unlinkBackupFiles($backup_file);
630
  }
631
  if($dropbox_result['status'] == 'partiallyCompleted')
448
  $backupStage = 'backupDBMultiCall';
449
  $this->statusLog($historyID, array('stage' => $backupStage, 'status' => 'completed', 'statusMsg' => 'backupDBCompleted','nextFunc' => 'backupDBZip', 'responseParams' => $db_final_response['success']));
450
  unset($db_final_response['success']['response_data']);
451
+ delete_option('iwp_multical_db_dump_flag');
452
  //to continue in the same call
453
  if(($db_loop_break_time - $total_time_part) > 5)
454
  {
456
  }
457
  else
458
  {
459
+ delete_option('iwp_multical_db_dump_flag');
460
  $db_res_array = array();
461
  $db_res_array['status'] = $db_final_response['success']['status'];
462
  $db_res_array['backupParentHID'] = $db_final_response['success']['backupParentHID'];
627
  $this->unlinkBackupFiles($backup_file);
628
  }
629
 
630
+ $dropbox_skip_errors = array('Failed to connect to content.dropboxapi.com port 443: Connection timed out',
631
+ 'Could not resolve host: api.dropboxapi.com'
632
+ );
633
+ if (is_array($dropbox_result) && isset($dropbox_result['error']) && !in_array($dropbox_result['error'], $dropbox_skip_errors)) {
634
  $this->unlinkBackupFiles($backup_file);
635
  }
636
  if($dropbox_result['status'] == 'partiallyCompleted')
backup/backup.core.class.php CHANGED
@@ -3888,6 +3888,7 @@ CREATE TABLE $wpdb->signups (
3888
  'pass' => $ftp_details['ftp_password'],
3889
  'host' => $ftp_details['ftp_hostname'],
3890
  'path' => $ftp_details['ftp_remote_folder'],
 
3891
  'ftp_site_folder' => $ftp_details['ftp_site_folder'],
3892
  'passive' => $ftp_details['ftp_passive']?true:false
3893
  );
@@ -3896,6 +3897,13 @@ CREATE TABLE $wpdb->signups (
3896
  IWP_MMB_Backup_Options::update_iwp_backup_option('IWP_sftp', $opts);
3897
  }else{
3898
  update_option('IWP_service', 'ftp');
 
 
 
 
 
 
 
3899
  IWP_MMB_Backup_Options::update_iwp_backup_option('IWP_ftp', $opts);
3900
  }
3901
  }elseif (!empty($params['account_info']['iwp_amazon_s3'])) {
3888
  'pass' => $ftp_details['ftp_password'],
3889
  'host' => $ftp_details['ftp_hostname'],
3890
  'path' => $ftp_details['ftp_remote_folder'],
3891
+ 'port' => $ftp_details['ftp_port'],
3892
  'ftp_site_folder' => $ftp_details['ftp_site_folder'],
3893
  'passive' => $ftp_details['ftp_passive']?true:false
3894
  );
3897
  IWP_MMB_Backup_Options::update_iwp_backup_option('IWP_sftp', $opts);
3898
  }else{
3899
  update_option('IWP_service', 'ftp');
3900
+ if(!empty($ftp_details['ftp_ssl'])){
3901
+ $opts['host'] = $opts['host'].':'.$opts['port'];
3902
+ unset($opts['port']);
3903
+ IWP_MMB_Backup_Options::delete_iwp_backup_option('IWP_ssl_nossl');
3904
+ }else{
3905
+ IWP_MMB_Backup_Options::update_iwp_backup_option('IWP_ssl_nossl', 1);
3906
+ }
3907
  IWP_MMB_Backup_Options::update_iwp_backup_option('IWP_ftp', $opts);
3908
  }
3909
  }elseif (!empty($params['account_info']['iwp_amazon_s3'])) {
core.class.php CHANGED
@@ -203,8 +203,13 @@ class IWP_MMB_Core extends IWP_MMB_Helper
203
  'backup_downlaod' => 'iwp_mmb_backup_downlaod'
204
  );
205
 
206
- add_action('rightnow_end', array( &$this, 'add_right_now_info' ));
207
- add_action('admin_menu', array($this,'iwp_admin_menu_actions'), 999, 1);
 
 
 
 
 
208
  add_action('admin_init', array(&$this,'admin_actions'));
209
  add_filter('deprecated_function_trigger_error', '__return_false');
210
  // add_action('wp_loaded', array( &$this, 'iwp_mmb_remote_action'), 2147483650);
@@ -1021,22 +1026,40 @@ class IWP_MMB_Core extends IWP_MMB_Helper
1021
 
1022
  function iwp_admin_menu_actions($args){
1023
  //to hide all updates
 
1024
  $replace = get_option("iwp_client_brand");
1025
- if(!empty($replace)){
1026
  if(!empty($replace['hideUpdatesCPB'])){
1027
  //add_filter('wp_get_update_data', array($this, 'iwp_wp_get_update_data'), 10, 2);
1028
  $page = remove_submenu_page( 'index.php', 'update-core.php' );
1029
- add_filter('site_transient_update_core', array($this, 'iwp_remove_core_updates'), 10, 1);
1030
- add_filter('site_transient_update_plugins', array($this, 'iwp_remove_core_updates'), 10, 1);
1031
- add_filter('site_transient_update_themes', array($this, 'iwp_remove_core_updates'), 10, 1);
 
1032
  }
1033
  if(!empty($replace['hideFWPCPB'])){
1034
- remove_submenu_page('themes.php','theme-editor.php');
1035
- remove_submenu_page('plugins.php','plugin-editor.php');
 
 
 
1036
  add_filter('plugin_action_links', array($this, 'iwp_client_replace_action_links'), 10, 2);
1037
  }
1038
  }
1039
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
1040
 
1041
  function iwp_user_admin_url($args, $args2){
1042
  //for modifying the link available in plugin's view version details link.
203
  'backup_downlaod' => 'iwp_mmb_backup_downlaod'
204
  );
205
 
206
+ add_action('rightnow_end', array( &$this, 'add_right_now_info' ));
207
+ if( $this->iwp_mmb_multisite ){
208
+ add_action('network_admin_menu', array($this,'iwp_admin_menu_actions'), 10, 1);
209
+ }else{
210
+ add_action('admin_menu', array($this,'iwp_admin_menu_actions'), 10, 1);
211
+ }
212
+ add_action('init', array($this,'iwp_cpb_hide_updates'), 10, 1);
213
  add_action('admin_init', array(&$this,'admin_actions'));
214
  add_filter('deprecated_function_trigger_error', '__return_false');
215
  // add_action('wp_loaded', array( &$this, 'iwp_mmb_remote_action'), 2147483650);
1026
 
1027
  function iwp_admin_menu_actions($args){
1028
  //to hide all updates
1029
+ global $iwp_mmb_core;
1030
  $replace = get_option("iwp_client_brand");
1031
+ if(empty($iwp_mmb_core->request_params) && !empty($replace)){
1032
  if(!empty($replace['hideUpdatesCPB'])){
1033
  //add_filter('wp_get_update_data', array($this, 'iwp_wp_get_update_data'), 10, 2);
1034
  $page = remove_submenu_page( 'index.php', 'update-core.php' );
1035
+ add_filter('transient_update_plugins', array($this, 'iwp_remove_core_updates'), 999999, 1);
1036
+ add_filter('site_transient_update_core', array($this, 'iwp_remove_core_updates'), 999999, 1);
1037
+ add_filter('site_transient_update_plugins', array($this, 'iwp_remove_core_updates'), 999999, 1);
1038
+ add_filter('site_transient_update_themes', array($this, 'iwp_remove_core_updates'), 999999, 1);
1039
  }
1040
  if(!empty($replace['hideFWPCPB'])){
1041
+ // remove_submenu_page('themes.php','theme-editor.php');
1042
+ // remove_submenu_page('plugins.php','plugin-editor.php'); // this is old method this allows editor in direct URL
1043
+ if (!defined('DISALLOW_FILE_EDIT')) {
1044
+ define('DISALLOW_FILE_EDIT', true);
1045
+ }
1046
  add_filter('plugin_action_links', array($this, 'iwp_client_replace_action_links'), 10, 2);
1047
  }
1048
  }
1049
  }
1050
+
1051
+ function iwp_cpb_hide_updates($args){
1052
+ global $iwp_mmb_core;
1053
+ $replace = get_option("iwp_client_brand");
1054
+ if(empty($iwp_mmb_core->request_params) && !empty($replace)){
1055
+ if(!empty($replace['hideUpdatesCPB'])){
1056
+ add_filter('transient_update_plugins', array($this, 'iwp_remove_core_updates'), 999999, 1);
1057
+ add_filter('site_transient_update_core', array($this, 'iwp_remove_core_updates'), 999999, 1);
1058
+ add_filter('site_transient_update_plugins', array($this, 'iwp_remove_core_updates'), 999999, 1);
1059
+ add_filter('site_transient_update_themes', array($this, 'iwp_remove_core_updates'), 999999, 1);
1060
+ }
1061
+ }
1062
+ }
1063
 
1064
  function iwp_user_admin_url($args, $args2){
1065
  //for modifying the link available in plugin's view version details link.
init.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: InfiniteWP - Client
4
  Plugin URI: http://infinitewp.com/
5
  Description: This is the client plugin of InfiniteWP that communicates with the InfiniteWP Admin panel.
6
  Author: Revmakx
7
- Version: 1.8.5
8
  Author URI: http://www.revmakx.com
9
  */
10
  /************************************************************
@@ -28,7 +28,7 @@ if(basename($_SERVER['SCRIPT_FILENAME']) == "init.php"):
28
  exit;
29
  endif;
30
  if(!defined('IWP_MMB_CLIENT_VERSION'))
31
- define('IWP_MMB_CLIENT_VERSION', '1.8.5');
32
 
33
 
34
 
@@ -236,6 +236,9 @@ if (!function_exists ('iwp_mmb_add_readd_request')) {
236
  if (!function_exists ('iwp_mmb_set_request')) {
237
  function iwp_mmb_set_request(){
238
  global $current_user, $iwp_mmb_core, $new_actions, $wp_db_version, $wpmu_version, $_wp_using_ext_object_cache, $iwp_mmb_activities_log;
 
 
 
239
  if (empty($iwp_mmb_core->request_params)) {
240
  return false;
241
  }
4
  Plugin URI: http://infinitewp.com/
5
  Description: This is the client plugin of InfiniteWP that communicates with the InfiniteWP Admin panel.
6
  Author: Revmakx
7
+ Version: 1.8.6
8
  Author URI: http://www.revmakx.com
9
  */
10
  /************************************************************
28
  exit;
29
  endif;
30
  if(!defined('IWP_MMB_CLIENT_VERSION'))
31
+ define('IWP_MMB_CLIENT_VERSION', '1.8.6');
32
 
33
 
34
 
236
  if (!function_exists ('iwp_mmb_set_request')) {
237
  function iwp_mmb_set_request(){
238
  global $current_user, $iwp_mmb_core, $new_actions, $wp_db_version, $wpmu_version, $_wp_using_ext_object_cache, $iwp_mmb_activities_log;
239
+ if (is_user_logged_in()) {
240
+ iwp_plugin_compatibility_fix();
241
+ }
242
  if (empty($iwp_mmb_core->request_params)) {
243
  return false;
244
  }
lib/ftp.class.php CHANGED
@@ -13,7 +13,7 @@ class IWP_MMB_ftp_wrapper {
13
  public $timeout = 60;
14
  public $passive = true;
15
  public $system_type = '';
16
- public $ssl = false;
17
  public $use_server_certs = false;
18
  public $disable_verify = true;
19
  public $login_type = 'non-encrypted';
@@ -28,7 +28,17 @@ class IWP_MMB_ftp_wrapper {
28
  public function connect() {
29
 
30
  $time_start = time();
31
- $this->conn_id = ftp_connect($this->host, $this->port, 20);
 
 
 
 
 
 
 
 
 
 
32
 
33
  if ($this->conn_id) $result = ftp_login($this->conn_id, $this->username, $this->password);
34
 
@@ -37,8 +47,24 @@ class IWP_MMB_ftp_wrapper {
37
  ftp_pasv($this->conn_id, $this->passive);
38
  $this->system_type = ftp_systype($this->conn_id);
39
  return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
 
 
42
  if (time() - $time_start > 19) {
43
  global $iwp_backup_core;
44
  $iwp_backup_core->log(sprintf(__('The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company.', 'InfiniteWP'), 'FTP'), 'error');
13
  public $timeout = 60;
14
  public $passive = true;
15
  public $system_type = '';
16
+ public $ssl = true;
17
  public $use_server_certs = false;
18
  public $disable_verify = true;
19
  public $login_type = 'non-encrypted';
28
  public function connect() {
29
 
30
  $time_start = time();
31
+ if (function_exists('ftp_ssl_connect') && false !== $this->ssl) {
32
+ $this->conn_id = ftp_ssl_connect($this->host, $this->port, 15);
33
+ $attempting_ssl = true;
34
+ }
35
+
36
+ if ($this->conn_id) {
37
+ $this->login_type = 'encrypted';
38
+ $this->ssl = true;
39
+ } else {
40
+ $this->conn_id = ftp_connect($this->host, $this->port, 15);
41
+ }
42
 
43
  if ($this->conn_id) $result = ftp_login($this->conn_id, $this->username, $this->password);
44
 
47
  ftp_pasv($this->conn_id, $this->passive);
48
  $this->system_type = ftp_systype($this->conn_id);
49
  return true;
50
+ } elseif (!empty($attempting_ssl)) {
51
+ $this->ssl = false;
52
+ $this->login_type = 'non-encrypted';
53
+ $time_start = time();
54
+ $this->conn_id = ftp_connect($this->host, $this->port, 15);
55
+ if ($this->conn_id) $result = ftp_login($this->conn_id, $this->username, $this->password);
56
+ if (!empty($result)) {
57
+ ftp_set_option($this->conn_id, FTP_TIMEOUT_SEC, $this->timeout);
58
+ ftp_pasv($this->conn_id, $this->passive);
59
+ $this->system_type = ftp_systype($this->conn_id);
60
+ return true;
61
+ } else {
62
+ // Add back the previous PHP messages
63
+
64
+ }
65
  }
66
 
67
+ // If we got here, then we failed
68
  if (time() - $time_start > 19) {
69
  global $iwp_backup_core;
70
  $iwp_backup_core->log(sprintf(__('The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company.', 'InfiniteWP'), 'FTP'), 'error');
pclzip.class.php CHANGED
@@ -5308,10 +5308,10 @@ endif;
5308
 
5309
  // ----- Go to the end of the zip file
5310
  $v_size = iwp_mmb_get_file_size($this->zipname);
5311
- $disk_space = iwp_mmb_check_disk_space();
5312
- if ($disk_space != false) {
5313
- return array('error' => 'Your disk space is very low available space: '.$disk_space.'MB');
5314
- }
5315
 
5316
  if($v_size === false)
5317
  {
5308
 
5309
  // ----- Go to the end of the zip file
5310
  $v_size = iwp_mmb_get_file_size($this->zipname);
5311
+ // $disk_space = iwp_mmb_check_disk_space();
5312
+ // if ($disk_space != false) {
5313
+ // return array('error' => 'Your disk space is very low available space: '.$disk_space.'MB');
5314
+ // }
5315
 
5316
  if($v_size === false)
5317
  {
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: infinitewp
3
  Tags: admin, administration, amazon, api, authentication, automatic, dashboard, dropbox, events, integration, manage, multisite, multiple, notification, performance, s3, security, seo, stats, tracking, infinitewp, updates, backup, restore, iwp, infinite
4
  Requires at least: 3.1
5
- Tested up to: 4.9.8
6
  Stable tag: trunk
7
 
8
  Install this plugin on unlimited sites and manage them all from a central dashboard.
@@ -47,6 +47,15 @@ Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin
47
  5. One-click updates
48
 
49
  == Changelog ==
 
 
 
 
 
 
 
 
 
50
  = 1.8.5 - Sep 4th 2018 =
51
  * Improvement: Multisite support for broken link checker plugin.
52
  * Improvement: MySQL DB dump process is improved in multicall and single call backup.
2
  Contributors: infinitewp
3
  Tags: admin, administration, amazon, api, authentication, automatic, dashboard, dropbox, events, integration, manage, multisite, multiple, notification, performance, s3, security, seo, stats, tracking, infinitewp, updates, backup, restore, iwp, infinite
4
  Requires at least: 3.1
5
+ Tested up to: 5.0.3
6
  Stable tag: trunk
7
 
8
  Install this plugin on unlimited sites and manage them all from a central dashboard.
47
  5. One-click updates
48
 
49
  == Changelog ==
50
+ = 1.8.6 - Feb 11th 2019 =
51
+ * Fix: Duo security plugin on WordPress site breaks the IWP client plugin connection while performing open admin action.
52
+ * Fix: Backup is retried when it failed with error "Failed to connect to content.dropboxapi.com port 443: Connection timed out. and Could not resolve host: api.dropboxapi.com.".
53
+ * Fix: Plugin updates count showing in plugin menu on WP admin page while hide plugin updates setting is enabled on InfiniteWP admin panel via Client Plugin Branding.
54
+ * Fix: Phoenix backup SFTP or FTP not using the custom port.
55
+ * Fix: FTP SSL not working on Phoenix backup.
56
+ * Fix: Ithemes security data is not included in the client reports.
57
+ * Fix: Backups failed with error "Database backup failed. Try to enable MySQL dump on your server.".
58
+
59
  = 1.8.5 - Sep 4th 2018 =
60
  * Improvement: Multisite support for broken link checker plugin.
61
  * Improvement: MySQL DB dump process is improved in multicall and single call backup.