Esempio n. 1
0
 /**
  * Open a readable stream to a remote file
  *
  * @param string $source
  * @return resource a read only stream with the contents of the remote file
  *
  * @throws \Icewind\SMB\Exception\NotFoundException
  * @throws \Icewind\SMB\Exception\InvalidTypeException
  */
 public function read($source)
 {
     $source = $this->escapePath($source);
     // since returned stream is closed by the caller we need to create a new instance
     // since we can't re-use the same file descriptor over multiple calls
     $workgroupArgument = $this->server->getWorkgroup() ? ' -W ' . escapeshellarg($this->server->getWorkgroup()) : '';
     $command = sprintf('%s %s --authentication-file=%s %s', $this->system->getSmbclientPath(), $workgroupArgument, System::getFD(3), escapeshellarg('//' . $this->server->getHost() . '/' . $this->name));
     $connection = new Connection($command);
     $connection->writeAuthentication($this->server->getUser(), $this->server->getPassword());
     $connection->write('get ' . $source . ' ' . System::getFD(5));
     $connection->write('exit');
     $fh = $connection->getFileOutputStream();
     stream_context_set_option($fh, 'file', 'connection', $connection);
     return $fh;
 }
Esempio n. 2
0
 /**
  * Open a readable stream to a remote file
  *
  * @param string $source
  * @return resource a read only stream with the contents of the remote file
  *
  * @throws \Icewind\SMB\Exception\NotFoundException
  * @throws \Icewind\SMB\Exception\InvalidTypeException
  */
 public function read($source)
 {
     $source = $this->escapePath($source);
     // close the single quote, open a double quote where we put the single quote...
     $source = str_replace('\'', '\'"\'"\'', $source);
     // since returned stream is closed by the caller we need to create a new instance
     // since we can't re-use the same file descriptor over multiple calls
     $command = sprintf('%s --authentication-file=/proc/self/fd/3 //%s/%s -c \'get %s /proc/self/fd/5\'', Server::CLIENT, $this->server->getHost(), $this->name, $source);
     $connection = new Connection($command);
     $connection->writeAuthentication($this->server->getUser(), $this->server->getPassword());
     $fh = $connection->getFileOutputStream();
     stream_context_set_option($fh, 'file', 'connection', $connection);
     return $fh;
 }