From a27753dd80fad3bdd4706d691b4d03a449047110 Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Sat, 12 Jul 2014 22:45:53 +0200 Subject: [PATCH] Pass existing Net_SFTP object into Net_SFTP_Stream. --- apps/files_external/lib/sftp.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/sftp.php index 0cec250778f..e0655cc8d3d 100644 --- a/apps/files_external/lib/sftp.php +++ b/apps/files_external/lib/sftp.php @@ -17,6 +17,9 @@ class SFTP extends \OC\Files\Storage\Common { private $password; private $root; + /** + * @var \Net_SFTP + */ private $client; private static $tempFiles = array(); @@ -231,8 +234,8 @@ class SFTP extends \OC\Files\Storage\Common { case 'x+': case 'c': case 'c+': - // FIXME: make client login lazy to prevent it when using fopen() - return fopen($this->constructUrl($path), $mode); + $context = stream_context_create(array('sftp' => array('session' => $this->client))); + return fopen($this->constructUrl($path), $mode, false, $context); } } catch (\Exception $e) { } @@ -294,7 +297,10 @@ class SFTP extends \OC\Files\Storage\Common { * @param string $path */ public function constructUrl($path) { - $url = 'sftp://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path; + // Do not pass the password here. We want to use the Net_SFTP object + // supplied via stream context or fail. We only supply username and + // hostname because this might show up in logs (they are not used). + $url = 'sftp://'.$this->user.'@'.$this->host.$this->root.$path; return $url; } }