mirror of
https://github.com/phpseclib/phpseclib.git
synced 2024-11-09 15:20:58 +00:00
Merge branch '2.0'
* 2.0: SSH2: move where $host is defined SSH2: make it so you can connect using open sockets
This commit is contained in:
commit
34b572129e
@ -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
|
||||||
@ -989,13 +998,13 @@ class SSH2
|
|||||||
|
|
||||||
$this->curTimeout = $this->timeout;
|
$this->curTimeout = $this->timeout;
|
||||||
|
|
||||||
$host = $this->host . ':' . $this->port;
|
|
||||||
|
|
||||||
$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) {
|
||||||
|
$host = $this->host . ':' . $this->port;
|
||||||
user_error(rtrim("Cannot connect to $host. Error $errno. $errstr"));
|
user_error(rtrim("Cannot connect to $host. Error $errno. $errstr"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1007,6 +1016,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,
|
||||||
|
|
||||||
|
@ -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.'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user