Merge branch 'ssh-custom-socket-1.0' into ssh-custom-socket-2.0

Conflicts:
	phpseclib/Net/SSH2.php
This commit is contained in:
terrafrost 2015-07-17 12:43:50 -05:00
commit 4d086bee86
2 changed files with 39 additions and 15 deletions

View File

@ -869,7 +869,9 @@ class SSH2
/** /**
* Default Constructor. * Default Constructor.
* *
* @param String $host * $host can either be a string, representing the host, or a stream resource.
*
* @param Mixed $host
* @param optional Integer $port * @param optional Integer $port
* @param optional Integer $timeout * @param optional Integer $timeout
* @see \phpseclib\Net\SSH2::login() * @see \phpseclib\Net\SSH2::login()
@ -954,10 +956,17 @@ class SSH2
34 => 'NET_SSH2_MSG_KEXDH_GEX_REQUEST') 34 => 'NET_SSH2_MSG_KEXDH_GEX_REQUEST')
); );
if (is_resource($host)) {
$this->fsock = $host;
return;
}
if (is_string($host)) {
$this->host = $host; $this->host = $host;
$this->port = $port; $this->port = $port;
$this->timeout = $timeout; $this->timeout = $timeout;
} }
}
/** /**
* Set Crypto Engine Mode * Set Crypto Engine Mode
@ -993,6 +1002,7 @@ class SSH2
$this->last_packet = microtime(true); $this->last_packet = microtime(true);
if (!is_resource($this->fsock)) {
$start = microtime(true); $start = microtime(true);
$this->fsock = @fsockopen($this->host, $this->port, $errno, $errstr, $this->curTimeout); $this->fsock = @fsockopen($this->host, $this->port, $errno, $errstr, $this->curTimeout);
if (!$this->fsock) { if (!$this->fsock) {
@ -1007,6 +1017,7 @@ class SSH2
$this->is_timeout = true; $this->is_timeout = true;
return false; return false;
} }
}
/* According to the SSH2 specs, /* According to the SSH2 specs,

View File

@ -87,4 +87,17 @@ class Functional_Net_SSH2Test extends PhpseclibFunctionalTestCase
$this->assertInternalType('string', $ssh->getServerPublicHostKey()); $this->assertInternalType('string', $ssh->getServerPublicHostKey());
} }
public function testOpenSocketConnect()
{
$fsock = fsockopen($this->getEnv('SSH_HOSTNAME'), 22);
$ssh = new SSH2($fsock);
$username = $this->getEnv('SSH_USERNAME');
$password = $this->getEnv('SSH_PASSWORD');
$this->assertTrue(
$ssh->login($username, $password),
'SSH2 login using an open socket failed.'
);
}
} }