]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add support for sftp custom port
authorSA <stephen@mthosting.net>
Fri, 19 Dec 2014 13:19:51 +0000 (08:19 -0500)
committerLukas Reschke <lukas@owncloud.com>
Tue, 24 Feb 2015 12:15:38 +0000 (13:15 +0100)
apps/files_external/lib/sftp.php

index 572829f0fddb1c21d8c036e955a6cc66c25ab553..398f59c7db9823a634fee607937ec2dadf4d35b3 100644 (file)
@@ -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;
        }
 }