Browse Source

Add support for sftp custom port

tags/v8.1.0alpha1
SA 9 years ago
parent
commit
350f8eb86e
1 changed files with 15 additions and 3 deletions
  1. 15
    3
      apps/files_external/lib/sftp.php

+ 15
- 3
apps/files_external/lib/sftp.php View 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;
}
}

Loading…
Cancel
Save