Kaydet (Commit) c835f593 authored tarafından mertcelen's avatar mertcelen

SSH Custom port support added

Fix for #LMYS-12
üst 34c2d76f
......@@ -21,6 +21,7 @@ interface Connector
$username,
$password,
$user_id,
$key
$key,
$port = null
);
}
......@@ -30,7 +30,7 @@ class SSHCertificateConnector implements Connector
public function __construct(\App\Server $server, $user_id)
{
list($username, $password) = self::retrieveCredentials();
self::init($username, $password, $server->ip_address);
self::init($username, $password, $server->ip_address,$server->key_port ? $server->key_port : 22);
return true;
}
......@@ -67,7 +67,7 @@ class SSHCertificateConnector implements Connector
public function sendFile($localPath, $remotePath, $permissions = 0644)
{
if ($this->sftp == null) {
$sftp = new SFTP(server()->ip_address);
$sftp = new SFTP(server()->ip_address,server()->key_port);
list($username, $password) = self::retrieveCredentials();
if (!$sftp->login($username, $password)) {
return false;
......@@ -117,7 +117,8 @@ class SSHCertificateConnector implements Connector
$username,
$password,
$user_id,
$key
$key,
$port = null
) {
return true;
}
......@@ -145,9 +146,9 @@ class SSHCertificateConnector implements Connector
return [lDecrypt($username["value"]), lDecrypt($password["value"])];
}
public function init($username, $password, $hostname, $putSession = true)
public function init($username, $password, $hostname, $port = 22, $putSession = true)
{
$ssh = new SSH2($hostname);
$ssh = new SSH2($hostname,$port);
$key = new RSA();
$key->loadKey($password);
if (!$ssh->login($username, $key)) {
......
......@@ -33,7 +33,7 @@ class SSHConnector implements Connector
{
if (!ConnectorToken::get($server->id)->exists()) {
list($username, $password) = self::retrieveCredentials();
self::init($username, $password, $server->ip_address);
self::init($username, $password, $server->ip_address,$server->key_port ? $server->key_port : 22);
}
return true;
......@@ -90,7 +90,7 @@ class SSHConnector implements Connector
public static function verify($ip_address, $username, $password, $port)
{
$token = self::init($username, $password, $ip_address, false);
$token = self::init($username, $password, $ip_address, $port, false);
if ($token) {
return respond("Kullanıcı adı ve şifre doğrulandı.", 200);
}
......@@ -119,9 +119,10 @@ class SSHConnector implements Connector
$username,
$password,
$user_id,
$key
$key,
$port = null
) {
$token = self::init($username, $password, $server->ip_address);
$token = self::init($username, $password, $server->ip_address,$port ? $port : 22);
if ($token) {
return true;
} else {
......@@ -156,7 +157,7 @@ class SSHConnector implements Connector
{
if (!ConnectorToken::get(server()->id)->exists()) {
list($username, $password) = self::retrieveCredentials();
self::init($username, $password, server()->id);
self::init($username, $password, server()->ip_address,server()->key_port ? server()->key_port : 22);
}
// Create Guzzle Object.
$client = new Client();
......@@ -181,7 +182,7 @@ class SSHConnector implements Connector
// If it's first time, retry after recreating ticket.
if ($retry) {
list($username, $password) = self::retrieveCredentials();
self::init($username, $password, server()->ip_address);
self::init($username, $password, server()->ip_address,server()->key_port ? server()->key_port : 22);
return self::request($url, $params, $retry - 1);
} else {
// If nothing works, abort.
......@@ -197,6 +198,7 @@ class SSHConnector implements Connector
$username,
$password,
$hostname,
$port,
$putSession = true
) {
$client = new Client();
......@@ -209,6 +211,7 @@ class SSHConnector implements Connector
"username" => $username,
"password" => $password,
"hostname" => $hostname,
"port" => $port,
"connection_type" => "ssh",
],
'timeout' => 5,
......@@ -217,7 +220,6 @@ class SSHConnector implements Connector
} catch (\Exception $e) {
return null;
}
$json = json_decode((string) $res->getBody());
//Escape For . character in session.
if ($putSession) {
......
......@@ -204,7 +204,8 @@ class WinRMConnector implements Connector
$username,
$password,
$user_id,
$key
$key,
$port = null
) {
$token = self::init($username, $password, $server->ip_address);
if ($token) {
......
......@@ -45,7 +45,7 @@ class AddController extends Controller
$this->server = new Server();
$this->server->fill(request()->all());
$this->server->user_id = auth()->id();
request('key_port') ? $this->server->key_port = request('key_port') : null;
// Check if Server is online or not.
if (!$this->server->isAlive()) {
return respond("Sunucuyla bağlantı kurulamadı.", 406);
......@@ -133,7 +133,8 @@ class AddController extends Controller
request('username'),
request('password'),
auth()->id(),
null
null,
$this->server->key_port,
);
if (!$flag) {
......
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use App\Server;
use App\ConnectorToken;
class AddKeyPortToServers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('servers', function (Blueprint $table) {
$table->integer('key_port')->nullable();
});
//Update current server objects.
$servers = Server::whereIn('type',['linux_ssh','linux_certificate','windows_powershell'])->get();
foreach($servers as $server){
if($server->key_port == null){
if($server->type == "windows_powershell"){
$server->key_port = 5986;
}else{
$server->key_port = 22;
}
$server->save();
}
}
// Delete current tokens.
ConnectorToken::truncate();
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('servers', function (Blueprint $table) {
//
});
}
}
......@@ -333,6 +333,7 @@
form.append('password',$("#keyPassword").val());
}
form.append('type',$("#keyType").val());
form.append('key_port',$("#port").val());
}else{
form.append('type',$("input[name=operating_system]:checked").val());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment