WordPress.org

Make WordPress Core

Ticket #8210: 8210.diff

File 8210.diff, 4.6 KB (added by DD32, 10 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;