You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.8 KiB
PHP
85 lines
1.8 KiB
PHP
<?php
|
|
/*
|
|
* CVM is more free software. It is licensed under the WTFPL, which
|
|
* allows you to do pretty much anything with it, without having to
|
|
* ask permission. Commercial use is allowed, and no attribution is
|
|
* required. We do politely request that you share your modifications
|
|
* to benefit other developers, but you are under no enforced
|
|
* obligation to do so :)
|
|
*
|
|
* Please read the accompanying LICENSE document for the full WTFPL
|
|
* licensing text.
|
|
*/
|
|
|
|
if(!isset($_CVM)) { die("Unauthorized."); }
|
|
|
|
class SshConnector extends CPHPBaseClass
|
|
{
|
|
public $connected = false;
|
|
public $authenticated = false;
|
|
public $connection = null;
|
|
|
|
public $host = "localhost";
|
|
public $port = 22;
|
|
public $key = "/etc/cvm/key";
|
|
public $pubkey = "/etc/cvm/key.pub";
|
|
public $keytype = "ssh-rsa";
|
|
|
|
public function RunCommand($command)
|
|
{
|
|
if($this->connected == false && $this->authenticated == false)
|
|
{
|
|
try
|
|
{
|
|
$this->Connect();
|
|
$this->DoCommand($command);
|
|
}
|
|
catch (SshConnectException $e)
|
|
{
|
|
$error = $e->getMessage();
|
|
throw new SshCommandException("Could not run command {$command}: Failed to connect: {$error}");
|
|
}
|
|
catch (SshCommandException $e)
|
|
{
|
|
$error = $e->getMessage();
|
|
throw new SshCommandException($error);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
$this->DoCommand($command);
|
|
}
|
|
catch (SshCommandException $e)
|
|
{
|
|
$error = $e->getMessage();
|
|
throw new SshCommandException($error);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function Connect()
|
|
{
|
|
$options = array(
|
|
'hostkey' => $this->keytype
|
|
)
|
|
|
|
if($this->connection = ssh2_connect($this->host, $this->port, $options))
|
|
{
|
|
if(ssh2_auth_pubkey_file())
|
|
}
|
|
else
|
|
{
|
|
throw new SshConnectException("Could not connect to {$this->host}:{$this->port}: {$error}");
|
|
}
|
|
}
|
|
|
|
private function DoCommand()
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
?>
|