/var/www/(Del)hsihk.com/wp-content/plugins/backupbuddy/lib/commandbuddy/commandbuddy.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
<?php
// TODO: Eventually pull out all command line execution to run through this library.
//        Currently code is ducplicated between the libraries that run command line commands.

class pb_backupbuddy_commandbuddy {
    
    public function 
__construct() {
    }
    
    
/*    execute()
     *    
     *    Execute a command via the command line.
     *    Example usage:
     *        list( $exec_output, $exec_exit_code ) = $this->execute( 'COMMANDHHERE' );
     *    
     *    @param        string        $command        Command line to run.
     *    @return        array                        Associative array of the response output and exist code. Use with list to assign variables.
     *                                            Format: array( EXEC_OUTPUT, EXIT_CODE );
     */
    
public function execute$command ) {
        if ( 
stristrPHP_OS'WIN' ) && !stristrPHP_OS'DARWIN' ) ) {
            
// Windows; do nothing.
        
} else { // Linux/Mac
            
if ( ( ini_get'exec_dir' ) !== false ) && ( ini_get'exec_dir' ) != '' ) ) { // exec_dir PHP patch in place: http://www.kyberdigi.cz/projects/execdir/
                
pb_backupbuddy::status'details''exec_dir detected. Skipping path assignment.' );
            } else {
                
pb_backupbuddy::status'details''exec_dir not detected. Proceeding normally.' );
                
$command 'PATH=$PATH:/usr/bin/:/usr/local/bin/:usr/local/bin:/usr/local/sbin/:/usr/sbin/:/sbin/:/usr/:/bin/' '; ' $command;
            }
        }
        
        
// Output command (strips mysqldump passwords).
        
if ( strstr$command'--password=' ) ) {
            
$password_portion_begin strpos$command'--password=' );
            
$password_portion_end strpos$command' '$password_portion_begin );
            
//pb_backupbuddy::status( 'details', 'pass start: `' . $password_portion_begin . '`. pass end: `' . $password_portion_end . '`' );
            
$password_portion substr$command$password_portion_begin, ( $password_portion_end $password_portion_begin ) );
            
//pb_backupbuddy::status( 'details', 'pass portion: `' . $password_portion . '`.' );
            
$unpassworded_command str_replace$password_portion'--password=*HIDDEN*'$command );
            
pb_backupbuddy::status'details''exec() command (password hidden) `' $unpassworded_command '` (with path definition).' );
            unset( 
$unpassworded_command );
        } else {
            
pb_backupbuddy::status'details''exec() command `' $command '` (with path definition).' );
        }
        
        
$exec_output = array();
        @
exec$command$exec_output$exec_exit_code);
        
pb_backupbuddy::status'details''exec() command output: `' implode','$exec_output ) . '`; Exit code: `' $exec_exit_code '`; Exit code description: `' pb_backupbuddy::$filesystem->exit_code_lookup$exec_exit_code ) . '`' );
        
        return array( 
$exec_output$exec_exit_code );
    } 
// End execute().
}