InfiniteWP Client - Version 1.6.4

Version Description

  • May 2nd 2017 =
  • Improvement: JSON communication implementation between Admin Panel and Client plugin has been completed.
  • Improvement: Unwanted files and folders will be automatically excluded from backups.
  • Improvement: Few unwanted folders have been excluded from the list of folders to be backed up.
  • Fix: When cloud upload fails during backup, the copy is retained on the server instead of being deleted.
  • Fix: The backup process would generate the warning "PHP Warning: fclose(): supplied resource is not a valid stream resource in /home/heidihic/public_html/wp-content/plugins/iwp-client/lib/amazon/s3IWPBackup.php on line 310" during multi-call backups.
Download this release

Release Info

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

Code changes from version 1.6.3.2 to 1.6.4

backup.class.multicall.php CHANGED
@@ -191,7 +191,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
191
  if(!empty($params))
192
  {
193
  initialize_manual_debug();
194
-
195
  $initialize_result = refresh_iwp_files_db();
196
  if(is_array($initialize_result) && isset($initialize_result['error'])){
197
  return $initialize_result;
@@ -994,10 +994,28 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
994
 
995
 
996
  //Always remove backup folders
997
- $remove = array(
998
  trim(basename(WP_CONTENT_DIR)) . "/infinitewp/backups",
999
  trim(basename(WP_CONTENT_DIR)) . "/" . md5('iwp_mmb-client') . "/iwp_backups",
1000
  trim(basename(WP_CONTENT_DIR)) . "/cache",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1001
  trim(basename(WP_CONTENT_DIR)) . "/w3tc",
1002
  trim(basename(WP_CONTENT_DIR)) . "/logs",
1003
  trim(basename(WP_CONTENT_DIR)) . "/widget_cache",
@@ -1006,8 +1024,39 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
1006
  trim(basename(WP_CONTENT_DIR)) . "/updraftplus",
1007
  trim(basename(WP_CONTENT_DIR)) . "/backups",
1008
  trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-clone",
1009
- trim(basename(WP_CONTENT_DIR)) . "/uploads/db-backup",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1010
  trim(basename(WP_PLUGIN_DIR)) . "/cache",
 
 
 
 
 
 
 
 
 
 
 
 
1011
  );
1012
  manual_debug('', 'beforeExclude', 0);
1013
  if((!empty($exclude_file_size))||(!empty($exclude_extensions)))
@@ -2308,7 +2357,7 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
2308
  return $fieldParams;
2309
  }
2310
 
2311
- function get_all_tasks(){
2312
  /*global $wpdb;
2313
 
2314
  $stats = array();
@@ -2331,16 +2380,20 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
2331
  $stats = array();
2332
  $table_name = $wpdb->base_prefix . "iwp_backup_status";
2333
 
2334
- $rows = $wpdb->get_results("SELECT ID, taskName, taskResults FROM ".$table_name." ORDER BY ID DESC", ARRAY_A);
2335
  $this->cleanup_failed_backups($rows);
2336
  $task_res = array();
2337
  foreach($rows as $key => $value){
2338
  $task_results = unserialize($value['taskResults']);
2339
-
2340
- if(!empty($task_results['task_results']))
2341
- foreach($task_results['task_results'] as $key => $data){
2342
-
2343
- $task_res[$value['taskName']]['task_results'][$key] = $data;
 
 
 
 
2344
  }
2345
  }
2346
 
@@ -2372,6 +2425,13 @@ class IWP_MMB_Backup_Multicall extends IWP_MMB_Core
2372
  $deleteRes = $wpdb->query($delete_query);
2373
  }
2374
 
 
 
 
 
 
 
 
2375
  function get_this_tasks(){
2376
  $this->wpdb_reconnect();
2377
 
@@ -4341,7 +4401,6 @@ function ftp_backup($historyID,$args = '')
4341
  $result_arr['nextFunc'] = 'dropbox_backup';
4342
  $result_arr['dropboxArgs'] = $tempArgs;
4343
  $result_arr['current_file_num'] = $current_file_num;
4344
-
4345
  //updating offset and uploadid values for relooping.
4346
  $offset = isset($chunkResult['offset']) ? $chunkResult['offset'] : 0;
4347
  $uploadid = isset($chunkResult['upload_id']) ? $chunkResult['upload_id'] : 0;
@@ -4362,6 +4421,7 @@ function ftp_backup($historyID,$args = '')
4362
  }
4363
  else
4364
  {
 
4365
  $reloop = true;
4366
  $chunkCount++;
4367
  }
@@ -4410,6 +4470,26 @@ function ftp_backup($historyID,$args = '')
4410
 
4411
  }
4412
  catch (Exception $e) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4413
  $this->_log($e->getMessage());
4414
  return array(
4415
  'error' => $e->getMessage(),
@@ -5722,7 +5802,8 @@ function ftp_backup($historyID,$args = '')
5722
  function cleanup()
5723
  {
5724
  $tasks = $this->get_all_tasks(); //all backups task results array.
5725
-
 
5726
  $backup_folder = WP_CONTENT_DIR . '/' . md5('iwp_mmb-client') . '/iwp_backups/';
5727
  $backup_folder_new = IWP_BACKUP_DIR . '/';
5728
  $backup_temp_folder = IWP_PCLZIP_TEMPORARY_DIR;
@@ -5765,23 +5846,32 @@ function ftp_backup($historyID,$args = '')
5765
 
5766
  if (is_array($files) && count($files)) {
5767
  $results = array();
 
 
5768
  if (!empty($tasks)) {
5769
- foreach ((array) $tasks as $task) {
5770
  //if (isset($task) && count($task)) {
5771
  // foreach ($task as $backup) {
5772
  if (isset($task['task_results']) && count($task['task_results'])) {
5773
- foreach ($task['task_results'] as $backup) {
5774
  if (isset($backup['server'])) {
5775
  $this_backup_file = $backup['server']['file_path'];
5776
  if(is_array($this_backup_file))
5777
  {
5778
  foreach($this_backup_file as $single_backup_file)
5779
- {
 
 
 
5780
  $results[] = $single_backup_file;
5781
  }
5782
  }
5783
  else
5784
  {
 
 
 
 
5785
  $results[] = $this_backup_file;
5786
  }
5787
  }
@@ -5790,15 +5880,18 @@ function ftp_backup($historyID,$args = '')
5790
  }
5791
  }
5792
  $num_deleted = 0;
5793
-
5794
  foreach ($files as $file) {
5795
- if (!in_array($file, $results) && basename($file) != 'index.php') {
5796
  @unlink($file);
5797
  //$deleted[] = basename($file);
5798
  $deleted[] = $file;
5799
  $num_deleted++;
5800
  }
5801
  }
 
 
 
 
5802
  }
5803
  return $deleted;
5804
  }
191
  if(!empty($params))
192
  {
193
  initialize_manual_debug();
194
+ $this->cleanup();
195
  $initialize_result = refresh_iwp_files_db();
196
  if(is_array($initialize_result) && isset($initialize_result['error'])){
197
  return $initialize_result;
994
 
995
 
996
  //Always remove backup folders
997
+ $remove = array(
998
  trim(basename(WP_CONTENT_DIR)) . "/infinitewp/backups",
999
  trim(basename(WP_CONTENT_DIR)) . "/" . md5('iwp_mmb-client') . "/iwp_backups",
1000
  trim(basename(WP_CONTENT_DIR)) . "/cache",
1001
+ trim(basename(WP_CONTENT_DIR)) . "/managewp/backups",
1002
+ trim(basename(WP_CONTENT_DIR)) . "/backupwordpress",
1003
+ trim(basename(WP_CONTENT_DIR)) . "/contents/cache",
1004
+ trim(basename(WP_CONTENT_DIR)) . "/content/cache",
1005
+ trim(basename(WP_CONTENT_DIR)) . "/old-cache",
1006
+ trim(basename(WP_CONTENT_DIR)) . "/cmscommander/backups",
1007
+ trim(basename(WP_CONTENT_DIR)) . "/gt-cache",
1008
+ trim(basename(WP_CONTENT_DIR)) . "/wfcache",
1009
+ trim(basename(WP_CONTENT_DIR)) . "/bps-backup",
1010
+ trim(basename(WP_CONTENT_DIR)) . "/old-cache",
1011
+ trim(basename(WP_CONTENT_DIR)) . "/nfwlog",
1012
+ trim(basename(WP_CONTENT_DIR)) . "/upgrade",
1013
+ trim(basename(WP_CONTENT_DIR)) . "/nfwlog",
1014
+ trim(basename(WP_CONTENT_DIR)) . "/wflogs",
1015
+ trim(basename(WP_CONTENT_DIR)) . "/debug.log",
1016
+ trim(basename(WP_CONTENT_DIR)) . "/wptouch-data/infinity-cache/",
1017
+ trim(basename(WP_CONTENT_DIR)) . "/mysql.sql",
1018
+ trim(basename(WP_CONTENT_DIR)) . "/wishlist-backup",
1019
  trim(basename(WP_CONTENT_DIR)) . "/w3tc",
1020
  trim(basename(WP_CONTENT_DIR)) . "/logs",
1021
  trim(basename(WP_CONTENT_DIR)) . "/widget_cache",
1024
  trim(basename(WP_CONTENT_DIR)) . "/updraftplus",
1025
  trim(basename(WP_CONTENT_DIR)) . "/backups",
1026
  trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-clone",
1027
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/uploads/db-backup",
1028
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/ithemes-security/backups",
1029
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/mainwp/backup",
1030
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backupbuddy_backups",
1031
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/vcf",
1032
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/pb_backupbuddy",
1033
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/sucuri",
1034
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/aiowps_backups",
1035
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/mainwp",
1036
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/snapshots",
1037
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wp_system",
1038
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wpcf7_captcha",
1039
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wc-logs",
1040
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/siteorigin-widgets",
1041
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-hummingbird-cache",
1042
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-security-audit-log",
1043
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backwpup-12b462-backups",
1044
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backwpup-12b462-logs",
1045
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backwpup-12b462-temp",
1046
+ trim(basename(WP_CONTENT_DIR)) . "/Dropbox_Backup",
1047
  trim(basename(WP_PLUGIN_DIR)) . "/cache",
1048
+ "wp-admin/error_log",
1049
+ "wp-admin/php_errorlog",
1050
+ "error_log",
1051
+ "error.log",
1052
+ "debug.log",
1053
+ "WS_FTP.LOG",
1054
+ "security.log",
1055
+ "wp-tcapsule-bridge.zip",
1056
+ "dbcache",
1057
+ "pgcache",
1058
+ "objectcache",
1059
+ "wp-snapshots",
1060
  );
1061
  manual_debug('', 'beforeExclude', 0);
1062
  if((!empty($exclude_file_size))||(!empty($exclude_extensions)))
2357
  return $fieldParams;
2358
  }
2359
 
2360
+ function get_all_tasks($isNeedRequestParams =false){
2361
  /*global $wpdb;
2362
 
2363
  $stats = array();
2380
  $stats = array();
2381
  $table_name = $wpdb->base_prefix . "iwp_backup_status";
2382
 
2383
+ $rows = $wpdb->get_results("SELECT ID, taskName, taskResults, requestParams FROM ".$table_name." ORDER BY ID DESC", ARRAY_A);
2384
  $this->cleanup_failed_backups($rows);
2385
  $task_res = array();
2386
  foreach($rows as $key => $value){
2387
  $task_results = unserialize($value['taskResults']);
2388
+ $requestParams = unserialize($value['requestParams']);
2389
+ if(!empty($task_results['task_results'])){
2390
+ foreach($task_results['task_results'] as $key => $data){
2391
+ if ($isNeedRequestParams===true && !empty($requestParams)) {
2392
+ $task_res[$value['taskName']]['requestParams'][$key] = $requestParams;
2393
+ }else{
2394
+ $task_res[$value['taskName']]['task_results'][$key] = $data;
2395
+ }
2396
+ }
2397
  }
2398
  }
2399
 
2425
  $deleteRes = $wpdb->query($delete_query);
2426
  }
2427
 
2428
+ function remove_failed_backups_by_hisID($ID){
2429
+ global $wpdb;
2430
+ $table_name = $wpdb->base_prefix . "iwp_backup_status";
2431
+ $delete_query = "DELETE FROM ".$table_name." WHERE historyID IN (".implode(', ', $ID).") ";
2432
+ $deleteRes = $wpdb->query($delete_query);
2433
+ }
2434
+
2435
  function get_this_tasks(){
2436
  $this->wpdb_reconnect();
2437
 
4401
  $result_arr['nextFunc'] = 'dropbox_backup';
4402
  $result_arr['dropboxArgs'] = $tempArgs;
4403
  $result_arr['current_file_num'] = $current_file_num;
 
4404
  //updating offset and uploadid values for relooping.
4405
  $offset = isset($chunkResult['offset']) ? $chunkResult['offset'] : 0;
4406
  $uploadid = isset($chunkResult['upload_id']) ? $chunkResult['upload_id'] : 0;
4421
  }
4422
  else
4423
  {
4424
+
4425
  $reloop = true;
4426
  $chunkCount++;
4427
  }
4470
 
4471
  }
4472
  catch (Exception $e) {
4473
+ if (preg_match("/Submitted input out of alignment: got \[(\d+)\] expected \[(\d+)\]/i", $e->getMessage(), $matches)) {
4474
+ // Try the indicated offset
4475
+ $we_tried = $matches[1];
4476
+ $offset = $matches[2];
4477
+ $chunkResult = $dropbox->chunked_upload($backup_file, $dropbox_destination, true, $uploadid, $offset, $readsize, $isCommit);
4478
+ $result_arr = array();
4479
+ $result_arr['response_data'] = $chunkResult;
4480
+ $result_arr['nextFunc'] = 'dropbox_backup';
4481
+ $result_arr['dropboxArgs'] = $tempArgs;
4482
+ $offset = isset($chunkResult['offset']) ? $chunkResult['offset'] : 0;
4483
+ $uploadid = isset($chunkResult['upload_id']) ? $chunkResult['upload_id'] : 0;
4484
+ $resArray = array (
4485
+ 'backupParentHID' => $historyID,
4486
+ );
4487
+ $result_arr['nextFunc'] = 'dropbox_backup';
4488
+ $result_arr['current_file_num'] = $current_file_num;
4489
+ $result_arr['status'] = 'partiallyCompleted';
4490
+ $this->statusLog($historyID, array('stage' => 'dropboxMultiCall', 'status' => 'completed', 'statusMsg' => 'nextCall','nextFunc' => 'dropbox_backup', 'task_result' => $task_result, 'responseParams' => $result_arr));
4491
+ return $resArray;
4492
+ }
4493
  $this->_log($e->getMessage());
4494
  return array(
4495
  'error' => $e->getMessage(),
5802
  function cleanup()
5803
  {
5804
  $tasks = $this->get_all_tasks(); //all backups task results array.
5805
+ $requestParams = $this->get_all_tasks(true);
5806
+ $thisTask = $this->get_this_tasks();
5807
  $backup_folder = WP_CONTENT_DIR . '/' . md5('iwp_mmb-client') . '/iwp_backups/';
5808
  $backup_folder_new = IWP_BACKUP_DIR . '/';
5809
  $backup_temp_folder = IWP_PCLZIP_TEMPORARY_DIR;
5846
 
5847
  if (is_array($files) && count($files)) {
5848
  $results = array();
5849
+ $cloudFailedBackup = array();
5850
+ $failedBackupHisID = array();
5851
  if (!empty($tasks)) {
5852
+ foreach ((array) $tasks as $taskName => $task) {
5853
  //if (isset($task) && count($task)) {
5854
  // foreach ($task as $backup) {
5855
  if (isset($task['task_results']) && count($task['task_results'])) {
5856
+ foreach ($task['task_results'] as $historyID => $backup) {
5857
  if (isset($backup['server'])) {
5858
  $this_backup_file = $backup['server']['file_path'];
5859
  if(is_array($this_backup_file))
5860
  {
5861
  foreach($this_backup_file as $single_backup_file)
5862
+ { if (!empty($requestParams[$taskName]['requestParams'][$historyID]['account_info']) && $thisTask['historyID'] != $historyID) {
5863
+ $cloudFailedBackup[]= $single_backup_file;
5864
+ $failedBackupHisID[$historyID]=$historyID;
5865
+ }
5866
  $results[] = $single_backup_file;
5867
  }
5868
  }
5869
  else
5870
  {
5871
+ if (!empty($requestParams[$taskName]['requestParams'][$historyID]['account_info']) && $thisTask['historyID'] != $historyID) {
5872
+ $cloudFailedBackup[]= $this_backup_file;
5873
+ $failedBackupHisID[$historyID]=$historyID;
5874
+ }
5875
  $results[] = $this_backup_file;
5876
  }
5877
  }
5880
  }
5881
  }
5882
  $num_deleted = 0;
 
5883
  foreach ($files as $file) {
5884
+ if ((!in_array($file, $results) || in_array($file, $failedBackupHisID)) && basename($file) != 'index.php') {
5885
  @unlink($file);
5886
  //$deleted[] = basename($file);
5887
  $deleted[] = $file;
5888
  $num_deleted++;
5889
  }
5890
  }
5891
+
5892
+ if (!empty($failedBackupHisID)) {
5893
+ $this->remove_failed_backups_by_hisID($failedBackupHisID);
5894
+ }
5895
  }
5896
  return $deleted;
5897
  }
backup.class.singlecall.php CHANGED
@@ -544,17 +544,66 @@ function delete_task_now($task_name){
544
  $remove = array(
545
  trim(basename(WP_CONTENT_DIR)) . "/infinitewp/backups",
546
  trim(basename(WP_CONTENT_DIR)) . "/" . md5('iwp_mmb-client') . "/iwp_backups",
547
- trim(basename(WP_CONTENT_DIR)) . "/cache",
548
- trim(basename(WP_CONTENT_DIR)) . "/w3tc",
549
- trim(basename(WP_CONTENT_DIR)) . "/logs",
550
- trim(basename(WP_CONTENT_DIR)) . "/widget_cache",
551
- trim(basename(WP_CONTENT_DIR)) . "/tmp",
552
- trim(basename(WP_CONTENT_DIR)) . "/updraft",
553
- trim(basename(WP_CONTENT_DIR)) . "/updraftplus",
554
- trim(basename(WP_CONTENT_DIR)) . "/backups",
555
- trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-clone",
556
- trim(basename(WP_CONTENT_DIR)) . "/uploads/db-backup",
557
- trim(basename(WP_PLUGIN_DIR)) . "/cache",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
558
  );
559
 
560
  //removing files which are larger than the specified size
544
  $remove = array(
545
  trim(basename(WP_CONTENT_DIR)) . "/infinitewp/backups",
546
  trim(basename(WP_CONTENT_DIR)) . "/" . md5('iwp_mmb-client') . "/iwp_backups",
547
+ trim(basename(WP_CONTENT_DIR)) . "/cache",
548
+ trim(basename(WP_CONTENT_DIR)) . "/managewp/backups",
549
+ trim(basename(WP_CONTENT_DIR)) . "/backupwordpress",
550
+ trim(basename(WP_CONTENT_DIR)) . "/contents/cache",
551
+ trim(basename(WP_CONTENT_DIR)) . "/content/cache",
552
+ trim(basename(WP_CONTENT_DIR)) . "/old-cache",
553
+ trim(basename(WP_CONTENT_DIR)) . "/cmscommander/backups",
554
+ trim(basename(WP_CONTENT_DIR)) . "/gt-cache",
555
+ trim(basename(WP_CONTENT_DIR)) . "/wfcache",
556
+ trim(basename(WP_CONTENT_DIR)) . "/bps-backup",
557
+ trim(basename(WP_CONTENT_DIR)) . "/old-cache",
558
+ trim(basename(WP_CONTENT_DIR)) . "/nfwlog",
559
+ trim(basename(WP_CONTENT_DIR)) . "/upgrade",
560
+ trim(basename(WP_CONTENT_DIR)) . "/nfwlog",
561
+ trim(basename(WP_CONTENT_DIR)) . "/wflogs",
562
+ trim(basename(WP_CONTENT_DIR)) . "/debug.log",
563
+ trim(basename(WP_CONTENT_DIR)) . "/wptouch-data/infinity-cache/",
564
+ trim(basename(WP_CONTENT_DIR)) . "/mysql.sql",
565
+ trim(basename(WP_CONTENT_DIR)) . "/wishlist-backup",
566
+ trim(basename(WP_CONTENT_DIR)) . "/w3tc",
567
+ trim(basename(WP_CONTENT_DIR)) . "/logs",
568
+ trim(basename(WP_CONTENT_DIR)) . "/widget_cache",
569
+ trim(basename(WP_CONTENT_DIR)) . "/tmp",
570
+ trim(basename(WP_CONTENT_DIR)) . "/updraft",
571
+ trim(basename(WP_CONTENT_DIR)) . "/updraftplus",
572
+ trim(basename(WP_CONTENT_DIR)) . "/backups",
573
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-clone",
574
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/uploads/db-backup",
575
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/ithemes-security/backups",
576
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/mainwp/backup",
577
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backupbuddy_backups",
578
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/vcf",
579
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/pb_backupbuddy",
580
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/sucuri",
581
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/aiowps_backups",
582
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/mainwp",
583
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/snapshots",
584
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wp_system",
585
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wpcf7_captcha",
586
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wc-logs",
587
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/siteorigin-widgets",
588
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-hummingbird-cache",
589
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/wp-security-audit-log",
590
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backwpup-12b462-backups",
591
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backwpup-12b462-logs",
592
+ trim(basename(WP_CONTENT_DIR)) . "/uploads/backwpup-12b462-temp",
593
+ trim(basename(WP_CONTENT_DIR)) . "/Dropbox_Backup",
594
+ trim(basename(WP_PLUGIN_DIR)) . "/cache",
595
+ "wp-admin/error_log",
596
+ "wp-admin/php_errorlog",
597
+ "error_log",
598
+ "error.log",
599
+ "debug.log",
600
+ "WS_FTP.LOG",
601
+ "security.log",
602
+ "wp-tcapsule-bridge.zip",
603
+ "dbcache",
604
+ "pgcache",
605
+ "objectcache",
606
+ "wp-snapshots",
607
  );
608
 
609
  //removing files which are larger than the specified size
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.6.3.2
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.6.3.2');
32
 
33
 
34
 
@@ -108,28 +108,22 @@ if( !function_exists ('iwp_mmb_parse_request')) {
108
  $request_data_array = explode('_IWP_JSON_PREFIX_', $HTTP_RAW_POST_DATA_LOCAL);
109
  $request_raw_data = $request_data_array[1];
110
  $data = trim(base64_decode($request_raw_data));
111
- $request_data = NULL;
112
  $GLOBALS['IWP_JSON_COMMUNICATION'] = 1;
113
- } else{
114
  $request_raw_data = $HTTP_RAW_POST_DATA_LOCAL;
115
  $data = trim(base64_decode($request_raw_data));
116
  if (is_serialized($data)) {
117
- if ((strpos($data, 'get_stats') || strpos($data, 'add_site') || strpos($data, 'remove_site')) && (strpos($data,'2.10.1') || strpos($data,'2.10.0') || strpos($data,'2.10.0.1'))) {
118
- $request_data = iwp_mmb_safe_unserialize($data);
119
- }else{
120
- iwp_mmb_response(array('error' => 'Please update your IWP Admin Panel to version 2.10.1', 'error_code' => 'update_panel'), false, true);
121
- }
122
  }else{
123
  return false;
124
  }
125
  }
 
126
  if ($data){
127
 
128
  //$num = @extract(unserialize($data));
129
- if (!isset($request_data) && $request_data['iwp_action'] != 'add_site' && $request_data['iwp_action'] != 'get_stats' && $request_data['iwp_action'] != 'remove_site') {
130
- $request_data = json_decode($data, true);
131
- }
132
-
133
  if(isset($request_data['params'])){
134
  $request_data['params'] = iwp_mmb_filter_params($request_data['params']);
135
  }
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.6.4
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.6.4');
32
 
33
 
34
 
108
  $request_data_array = explode('_IWP_JSON_PREFIX_', $HTTP_RAW_POST_DATA_LOCAL);
109
  $request_raw_data = $request_data_array[1];
110
  $data = trim(base64_decode($request_raw_data));
 
111
  $GLOBALS['IWP_JSON_COMMUNICATION'] = 1;
112
+ }else{
113
  $request_raw_data = $HTTP_RAW_POST_DATA_LOCAL;
114
  $data = trim(base64_decode($request_raw_data));
115
  if (is_serialized($data)) {
116
+ iwp_mmb_response(array('error' => 'Please update your IWP Admin Panel to latest version', 'error_code' => 'update_panel'), false, true);
 
 
 
 
117
  }else{
118
  return false;
119
  }
120
  }
121
+
122
  if ($data){
123
 
124
  //$num = @extract(unserialize($data));
125
+ $request_data = json_decode($data, true);
126
+
 
 
127
  if(isset($request_data['params'])){
128
  $request_data['params'] = iwp_mmb_filter_params($request_data['params']);
129
  }
lib/amazon/s3IWPBackup.php CHANGED
@@ -307,7 +307,7 @@ class IWP_MMB_S3_MULTICALL extends IWP_MMB_Backup_Multicall
307
  $partNumber++;
308
  }
309
  }
310
- fclose($file);
311
  }
312
  catch (S3Exception $e) {
313
  $this->statusLog($this -> hisID, array('stage' => 's3MultiCall', 'status' => 'partiallyCompleted', 'statusMsg' => 'retracingValues','nextFunc' => 'amazons3_backup', 'task_result' => $task_result, 'responseParams' => $result_arr));
307
  $partNumber++;
308
  }
309
  }
310
+ @fclose($file);
311
  }
312
  catch (S3Exception $e) {
313
  $this->statusLog($this -> hisID, array('stage' => 's3MultiCall', 'status' => 'partiallyCompleted', 'statusMsg' => 'retracingValues','nextFunc' => 'amazons3_backup', 'task_result' => $task_result, 'responseParams' => $result_arr));
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.7
6
  Stable tag: trunk
7
 
8
  Install this plugin on unlimited sites and manage them all from a central dashboard.
@@ -47,6 +47,13 @@ Credits: [Vladimir Prelovac](http://prelovac.com/vladimir) for his worker plugin
47
  5. One-click updates
48
 
49
  == Changelog ==
 
 
 
 
 
 
 
50
  = 1.6.3.2 - Jan 4th 2017 =
51
  * Improvement: JSON communication between Admin Panel and Client plugin has been implemented.
52
  * Improvement: If the PHP version of WordPress site is less than 5.4.0 then the single call backups will fail with "Fatal error: Cannot use string offset as an array in /home/asogerb6/public_html/wp-content/plugins/iwp-client/backup.class.singlecall.php on line 340".
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.7.4
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.6.4 - May 2nd 2017 =
51
+ * Improvement: JSON communication implementation between Admin Panel and Client plugin has been completed.
52
+ * Improvement: Unwanted files and folders will be automatically excluded from backups.
53
+ * Improvement: Few unwanted folders have been excluded from the list of folders to be backed up.
54
+ * Fix: When cloud upload fails during backup, the copy is retained on the server instead of being deleted.
55
+ * Fix: The backup process would generate the warning "PHP Warning: fclose(): supplied resource is not a valid stream resource in /home/heidihic/public_html/wp-content/plugins/iwp-client/lib/amazon/s3IWPBackup.php on line 310" during multi-call backups.
56
+
57
  = 1.6.3.2 - Jan 4th 2017 =
58
  * Improvement: JSON communication between Admin Panel and Client plugin has been implemented.
59
  * Improvement: If the PHP version of WordPress site is less than 5.4.0 then the single call backups will fail with "Fatal error: Cannot use string offset as an array in /home/asogerb6/public_html/wp-content/plugins/iwp-client/backup.class.singlecall.php on line 340".