/var/www/(Del)hsihk.com/wp-content/plugins/backupbuddy/controllers/ajax/remote_send.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
if ( ! is_admin() ) { die( 'Access denied.' ); }

/*    remote_send()
*    
*    Send backup archive to a remote destination manually. Optionally sends importbuddy.php with files.
*    Sends are scheduled to run in a cron and are passed to the cron.php remote_send() method.
*    
*    @return        null
*/


$success_output false// Set to true onece a leading 1 has been sent to the javascript to indicate success.
$destination_id pb_backupbuddy::_POST'destination_id' );
if ( 
pb_backupbuddy::_POST'file' ) != 'importbuddy.php' ) {
    
$backup_file backupbuddy_core::getBackupDirectory() . pb_backupbuddy::_POST'file' );
    if ( ! 
file_exists$backup_file ) ) { // Error if file to send did not exist!
        
$error_message 'Unable to find file `' $backup_file '` to send. File does not appear to exist. You can try again in a moment or turn on full error logging and try again to log for support.';
        
pb_backupbuddy::status'error'$error_message );
        echo 
$error_message;
        die();
    }
    if ( 
is_dir$backup_file ) ) { // Error if a directory is trying to be sent.
        
$error_message 'You are attempting to send a directory, `' $backup_file '`. Try again and verify there were no javascript errors.';
        
pb_backupbuddy::status'error'$error_message );
        echo 
$error_message;
        die();
    }
} else {
    
$backup_file '';
}

// Send ImportBuddy along-side?
if ( pb_backupbuddy::_POST'send_importbuddy' ) == '1' ) {
    
$send_importbuddy true;
    
pb_backupbuddy::status'details''Cron send to be scheduled with importbuddy sending.' );
} else {
    
$send_importbuddy false;
    
pb_backupbuddy::status'details''Cron send to be scheduled WITHOUT importbuddy sending.' );
}

// Delete local copy after send completes?
if ( pb_backupbuddy::_POST'delete_after' ) == 'true' ) {
    
$delete_after true;
    
pb_backupbuddy::status'details''Remote send set to delete after successful send.' );
} else {
    
$delete_after false;
    
pb_backupbuddy::status'details''Remote send NOT set to delete after successful send.' );
}

if ( !isset( 
pb_backupbuddy::$options['remote_destinations'][$destination_id] ) ) {
    die( 
'Error #833383: Invalid destination ID `' htmlentities$destination_id ) . '`.' );
}

// For Stash we will check the quota prior to initiating send.
if ( pb_backupbuddy::$options['remote_destinations'][$destination_id]['type'] == 'stash' ) {
    
// Pass off to destination handler.
    
require_once( pb_backupbuddy::plugin_path() . '/destinations/bootstrap.php' );
    
$send_result pb_backupbuddy_destinations::get_info'stash' ); // Used to kick the Stash destination into life.
    
$stash_quota pb_backupbuddy_destination_stash::get_quotapb_backupbuddy::$options['remote_destinations'][$destination_id], true );
    
    if ( isset( 
$stash_quota['error'] ) ) {
        echo  
' Error accessing Stash account. Send aborted. Details: `' implode' - '$stash_quota['error'] ) . '`.';
        die();
    }
    
    if ( 
$backup_file != '' ) {
        
$backup_file_size filesize$backup_file );
    } else {
        
$backup_file_size 50000;
    }
    if ( ( 
$backup_file_size $stash_quota['quota_used'] ) > $stash_quota['quota_total'] ) {
        echo 
"You do not have enough Stash storage space to send this file. Please upgrade your Stash storage or delete files to make space.\n\n";
        
        echo 
'Attempting to send file of size ' pb_backupbuddy::$format->file_size$backup_file_size ) . ' but you only have ' $stash_quota['quota_available_nice'] . ' available. ';
        echo 
'Currently using ' $stash_quota['quota_used_nice'] . ' of ' $stash_quota['quota_total_nice'] . ' (' $stash_quota['quota_used_percent'] . '%).';
        die();
    } else {
        if ( isset( 
$stash_quota['quota_warning'] ) && ( $stash_quota['quota_warning'] != '' ) ) {
            echo 
'1Warning: ' $stash_quota['quota_warning'] . "\n\n";
            
$success_output true;
        }
    }
    
// end if Stash.

pb_backupbuddy::status'details''Scheduling cron to send to this remote destination...' );
$schedule_result backupbuddy_core::schedule_single_eventtime(), pb_backupbuddy::cron_tag'remote_send' ), array( $destination_id$backup_filepb_backupbuddy::_POST'trigger' ), $send_importbuddy$delete_after ) );
if ( 
$schedule_result === FALSE ) {
    
$error 'Error scheduling file transfer. Please check your BackupBuddy error log for details. A plugin may have prevented scheduling or the database rejected it.';
    
pb_backupbuddy::status'error'$error );
    echo 
$error;
} else {
    
pb_backupbuddy::status'details''Cron to send to remote destination scheduled.' );
}
spawn_crontime() + 150 ); // Adds > 60 seconds to get around once per minute cron running limit.
update_option'_transient_doing_cron'); // Prevent cron-blocking for next item.

// SEE cron.php remote_send() for sending function that we pass to via the cron above.

if ( $success_output === false ) {
    echo 
1;
}
die();