From: SA Date: Fri, 19 Dec 2014 13:19:51 +0000 (-0500) Subject: Add support for sftp custom port X-Git-Tag: v8.1.0alpha1~414^2~1 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=350f8eb86eb415a1c6c582242c77d63e92705025;p=nextcloud-server.git Add support for sftp custom port --- diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/sftp.php index 572829f0fdd..398f59c7db9 100644 --- a/apps/files_external/lib/sftp.php +++ b/apps/files_external/lib/sftp.php @@ -37,6 +37,7 @@ class SFTP extends \OC\Files\Storage\Common { private $user; private $password; private $root; + private $port = 22; /** * @var \Net_SFTP @@ -50,10 +51,21 @@ class SFTP extends \OC\Files\Storage\Common { \Net_SFTP_Stream::register(); $this->host = $params['host']; + + //deals with sftp://server example $proto = strpos($this->host, '://'); if ($proto != false) { $this->host = substr($this->host, $proto+3); } + + //deals with server:port + $HasPort = strpos($this->host,':'); + if($HasPort != false) { + $pieces = explode(":", $this->host); + $this->host = $pieces[0]; + $this->port = $pieces[1]; + } + $this->user = $params['user']; $this->password = isset($params['password']) ? $params['password'] : ''; @@ -81,7 +93,7 @@ class SFTP extends \OC\Files\Storage\Common { } $hostKeys = $this->readHostKeys(); - $this->client = new \Net_SFTP($this->host); + $this->client = new \Net_SFTP($this->host, $this->port); // The SSH Host Key MUST be verified before login(). $currentHostKey = $this->client->getServerPublicHostKey(); @@ -112,7 +124,7 @@ class SFTP extends \OC\Files\Storage\Common { } public function getId(){ - return 'sftp::' . $this->user . '@' . $this->host . '/' . $this->root; + return 'sftp::' . $this->user . '@' . $this->host . ':' . $this->port . '/' . $this->root; } public function getHost() { @@ -342,7 +354,7 @@ class SFTP extends \OC\Files\Storage\Common { // 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; + $url = 'sftp://'.$this->user.'@'.$this->host.':'.$this->port.$this->root.$path; return $url; } }