WordPress.org

Make WordPress Core

Ticket #8210: 8210.diff

File 8210.diff, 4.6 KB (added by DD32, 6 years ago)
  • wp-admin/includes/class-wp-filesystem-ssh2.php

     
    141141 
    142142        function run_command($link, $command, $returnbool = false) { 
    143143                $this->debug("run_command();"); 
    144                 if(!($stream = @ssh2_exec( $link, $command . "; echo \"__COMMAND_FINISHED__\";"))) { 
     144                if(!($stream = @ssh2_exec( $link, $command . '; echo "__COMMAND_FINISHED__";'))) { 
    145145                        $this->errors->add('command', sprintf(__('Unable to perform command: %s'), $command)); 
    146146                } else { 
    147147                        stream_set_blocking( $stream, true ); 
    148148                        $time_start = time(); 
    149149                        $data = null; 
    150150                        while( true ) { 
    151                                 if (strpos($data,"__COMMAND_FINISHED__") !== false){ 
     151                                if (strpos($data,'__COMMAND_FINISHED__') !== false){ 
    152152                                        break;  //      the command has finshed! 
    153153                                } 
    154154                                if( (time()-$time_start) > $this->timeout ){ 
     
    189189 
    190190        function get_contents($file, $type = '', $resumepos = 0 ) { 
    191191                $this->debug("get_contents();"); 
     192                 
     193                if ( true ) { 
     194                        $handle = @fopen('ssh2.sftp://' . $this->link . $file, 'rb'); 
     195                        if ( ! $handle ) 
     196                                return false; 
     197                        $content = ''; 
     198                        while ( ! @feof($handle) ) 
     199                                $contents .= fread($handle, 8092); 
     200                        fclose($handle); 
     201                        return $contents; 
     202                } 
     203 
    192204                $tempfile = wp_tempnam( $file ); 
    193205                if ( ! $tempfile ) 
    194206                        return false; 
     
    206218 
    207219        function put_contents($file, $contents, $type = '' ) { 
    208220                $this->debug("put_contents($file);"); 
     221                 
     222                if ( true ) { 
     223                        $handle = @fopen('ssh2.sftp://' . $this->link . $file, 'w'); 
     224                        if ( ! $handle || ! @fwrite($handle, $contents) ) 
     225                                return false; 
     226                        fclose($handle); 
     227                        return true; 
     228                } 
     229                 
    209230                $tempfile = wp_tempnam( $file ); 
    210231                $temp = fopen($tempfile, 'w'); 
    211232                if ( ! $temp ) 
     
    235256                if ( ! $this->exists($file) ) 
    236257                        return false; 
    237258                if ( ! $recursive || ! $this->is_dir($file) ) 
    238                         return $this->run_command($this->link, sprintf('chgrp %o %s', $mode, $file), true); 
    239                 return $this->run_command($this->link, sprintf('chgrp -R %o %s', $mode, $file), true); 
     259                        return $this->run_command($this->link, sprintf('chgrp %o "%s"', $mode, $file), true); 
     260                return $this->run_command($this->link, sprintf('chgrp -R %o "%s"', $mode, $file), true); 
    240261        } 
    241262 
    242263        function chmod($file, $mode = false, $recursive = false) { 
     
    248269                if ( ! $this->exists($file) ) 
    249270                        return false; 
    250271                if ( ! $recursive || ! $this->is_dir($file) ) 
    251                         return $this->run_command($this->link, sprintf('chmod %o %s', $mode, $file), true); 
    252                 return $this->run_command($this->link, sprintf('chmod -R %o %s', $mode, $file), true); 
     272                        return $this->run_command($this->link, sprintf('chmod %o "%s"', $mode, $file), true); 
     273                return $this->run_command($this->link, sprintf('chmod -R %o "%s"', $mode, $file), true); 
    253274        } 
    254275 
    255276        function chown($file, $owner, $recursive = false ) { 
     
    257278                if ( ! $this->exists($file) ) 
    258279                        return false; 
    259280                if ( ! $recursive || ! $this->is_dir($file) ) 
    260                         return $this->run_command($this->link, sprintf('chown %o %s', $mode, $file), true); 
    261                 return $this->run_command($this->link, sprintf('chown -R %o %s', $mode, $file), true); 
     281                        return $this->run_command($this->link, sprintf('chown %o "%s"', $mode, $file), true); 
     282                return $this->run_command($this->link, sprintf('chown -R %o "%s"', $mode, $file), true); 
    262283        } 
    263284 
    264285        function owner($file) { 
     
    311332 
    312333        function exists($file) { 
    313334                $this->debug("exists();"); 
    314                 $list = $this->run_command($this->link, sprintf('ls -lad %s', $file)); 
     335                $list = $this->run_command($this->link, sprintf('ls -lad "%s"', $file)); 
    315336                return (bool) $list; 
    316337        } 
    317338 
    318339        function is_file($file) { 
    319340                $this->debug("is_file();"); 
    320341                //DO NOT RELY ON dirlist()! 
    321                 $list = $this->run_command($this->link, sprintf('ls -lad %s', $file)); 
     342                $list = $this->run_command($this->link, sprintf('ls -lad "%s"', $file)); 
    322343                $list = $this->parselisting($list); 
    323344                if ( ! $list ) 
    324345                        return false; 
     
    329350        function is_dir($path) { 
    330351                $this->debug("is_dir();"); 
    331352                //DO NOT RELY ON dirlist()! 
    332                 $list = $this->parselisting($this->run_command($this->link, sprintf('ls -lad %s', untrailingslashit($path)))); 
     353                $list = $this->parselisting($this->run_command($this->link, sprintf('ls -lad "%s"', untrailingslashit($path)))); 
    333354                if ( ! $list ) 
    334355                        return false; 
    335356                else 
     
    449470                        $limitFile = false; 
    450471                } 
    451472 
    452                 $list = $this->run_command($this->link, sprintf('ls -la %s', $path)); 
     473                $list = $this->run_command($this->link, sprintf('ls -la "%s"', $path)); 
    453474 
    454475                if ( $list === false ) 
    455476                        return false;