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

Grant Permission of Server.

üst 5f43812a
......@@ -32,7 +32,7 @@ class PermissionController extends Controller
public function one(){
$request = \App\LimanRequest::where('_id',request('permission_id'))->first();
$request->user_name = \App\User::where('_id',$request->user_id)->first()->name;
return view('permission.one',[
return view('permission.requests.' . $request->type ,[
"request" => $request
]);
}
......
......@@ -6,6 +6,7 @@ use App\Key;
use App\Permission;
use App\Server;
use App\Http\Controllers\Controller;
use App\User;
use Auth;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
......@@ -102,4 +103,42 @@ class MainController extends Controller
"id" => $json->id
])->withCookie(cookie('_xsrf',$client->getConfig('cookies')->toArray()[0]["Value"]));
}
public function grant(){
$user = User::where('email',request('email'))->first();
if($user == null){
return respond("Kullanıcı bulunamadı.",404);
}
// Give User a permission to use this server.
$permissions = Permission::where('user_id',$user->_id)->first();
$user_servers = (Array) $permissions->server;
array_push($user_servers, request('server')->_id);
$permissions->server = $user_servers;
// Lastly, save all information.
$permissions->save();
// Generate key for user.
Key::initWithKey(request('server')->key->username, request('server')->key->_id, request('server')->ip_address,
request('server')->port, Auth::id(), $user->_id);
// Built key object for user.
$key = new Key([
"name" => request('server')->key->name,
"username" => request('server')->key->username,
"server_id" => request('server')->_id
]);
$key->user_id = $user->_id;
$key->save();
return respond("Yetki başarıyla verildi.");
}
public function revoke(){
}
}
......@@ -13,30 +13,28 @@ class OneController extends Controller
}
public function authorized(){
$server = \request('server');
$available_services = Extension::all();
$services = [];
foreach ($server->extensions as $service){
array_push($services,$available_services->where('_id',$service)->first());
}
return view('server.one_auth', [
"stats" => \request('server')->run("df -h"),
"hostname" => request('server')->run("hostname"),
"server" => \request('server'),
"available_services" => $available_services,
"services" => $services,
"installed_extensions" => $this->installedExtensions(),
"available_extensions" => $this->availableExtensions(),
]);
}
public function unauthorized(){
$available_services = Extension::all();
$services = [];
foreach (request('server')->extensions as $service){
array_push($services,$available_services->where('_id',$service)->first());
}
return view('server.one',[
"services" => $services,
"installed_extensions" => $this->installedExtensions(),
"available_extensions" => $this->availableExtensions(),
"server" => request('server')
]);
}
public function availableExtensions(){
return Extension::whereNotIn('_id',request('server')->extensions)->get();
}
public function installedExtensions(){
return Extension::whereIn('_id',request('server')->extensions)->get();
}
}
......@@ -28,4 +28,24 @@ class Key extends Eloquent
shell_exec("sshpass -p '" . $password . "' ssh-copy-id -i " . storage_path('keys') . DIRECTORY_SEPARATOR . $account_name ." " . $username
."@" . $server_address ." 2>&1 -p " . $server_port);
}
public static function initWithKey($username,$key,$server_address,$server_port,$current_name, $new_name){
//Create keys folder
if (!is_dir(storage_path('keys'))) {
shell_exec("mkdir -p " . storage_path('keys'));
}
//Generate key and put it into keys folder, dont regenerate!
if(!file_exists(storage_path('keys') . DIRECTORY_SEPARATOR . $new_name)){
shell_exec("ssh-keygen -t rsa -f " . storage_path('keys') . DIRECTORY_SEPARATOR . $new_name ." -q -P ''");
}
//Trust target server
shell_exec("ssh-keyscan -p " . $server_port . " -H ". $server_address . " >> ~/.ssh/known_hosts");
//Send Keys to target
shell_exec('cat ' . storage_path('keys') . DIRECTORY_SEPARATOR . $new_name . ".pub | ssh -i " .
storage_path('keys') . DIRECTORY_SEPARATOR . $current_name .
" $username@$server_address -p $server_port 'cat >> .ssh/authorized_keys'");
}
}
@extends('layouts.app')
@section('content')
@include('title',[
"title" => $request->user_name . " kullanıcısının " . $request->created_at. " tarihli talebi"
])
<button class="btn btn-success" onclick="history.back()">{{__("Geri Dön")}}</button><br><br>
EXTENSION
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
@include('title',[
"title" => $request->user_name . " kullanıcısının " . $request->created_at. " tarihli talebi"
])
<button class="btn btn-success" onclick="history.back()">{{__("Geri Dön")}}</button><br><br>
OTHER
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
@include('title',[
"title" => $request->user_name . " kullanıcısının " . $request->created_at. " tarihli talebi"
])
<button class="btn btn-success" onclick="history.back()">{{__("Geri Dön")}}</button><br><br>
SCRIPT
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
@include('title',[
"title" => $request->user_name . " kullanıcısının " . $request->created_at. " tarihli talebi"
])
<button class="btn btn-success" onclick="history.back()">{{__("Geri Dön")}}</button><br><br>
SERVER
@endsection
\ No newline at end of file
......@@ -17,22 +17,18 @@
"target_id" => "install_extension",
"text" => "Servisi Aktifleştir"
])<br><br>
@if(count($services) > 0)
@if(count($installed_extensions) > 0)
<h4>{{__("Servis Durumları")}}</h4>
@foreach($services as $service)
<button type="button" class="btn btn-secondary btn-lg" style="cursor:default;" id="status_{{$service->service}}">
{{strtoupper($service->name)}}
@foreach($installed_extensions as $extension)
<button type="button" class="btn btn-secondary btn-lg" style="cursor:default;"
id="status_{{$extension->service}}">
{{strtoupper($extension->name)}}
</button>
@endforeach
@else
<h4>{{__("Yüklü servis yok.")}}</h4>
@endif
<br><br>
<pre>
@isset($stats)
{{$stats}}
@endisset
</pre>
@include('modal-button',[
"class" => "btn-danger",
......@@ -147,29 +143,21 @@
],
"submit_text" => "Düzenle"
])
<?php
$new_extensions = [];
foreach ($available_extensions as $current) {
$new_extensions[$current->name . ":" . $current->_id] = [
$current->name . ":" . $current->_id => "extension_id:hidden"
];
}
?>
@include('modal',[
"id"=>"install_extension",
"title" => "Servisi Aktifleştir",
"url" => route('server_extension'),
"next" => "message",
"selects" => [
"DNS:5c0a170f7b57f19953126e37" => [
"DNS:5c0a170f7b57f19953126e37" => "extension_id:hidden"
],
"DHCP:5c0a1c5f7b57f19953126e38" => [
"DHCP:5c0a1c5f7b57f19953126e38" => "extension_id:hidden"
],
"Kullanıcılar:5c0a1c687b57f19953126e39" => [
"Kullanıcılar:5c0a1c687b57f19953126e39" => "extension_id:hidden"
],
"Gruplar:5c0a1c787b57f19953126e3a" => [
"Gruplar:5c0a1c787b57f19953126e3a" => "extension_id:hidden"
],
"Bilgisayarlar:5c0a1c817b57f19953126e3b" => [
"Bilgisayarlar:5c0a1c817b57f19953126e3b" => "extension_id:hidden"
]
],
"selects" => $new_extensions,
"inputs" => [
"Sunucu Id:$server->_id" => "server_id:hidden"
],
......
......@@ -47,10 +47,15 @@
"class" => "btn-outline-success",
"target_id" => "terminal",
"text" => "Terminal"
])
@include('modal-button',[
"class" => "btn-outline-info",
"target_id" => "give_permission",
"text" => "Yetki Ver"
])<br><br>
@if(count($services) > 0)
@if(count($installed_extensions) > 0)
<h4>{{__("Servis Durumları")}}</h4>
@foreach($services as $service)
@foreach($installed_extensions as $service)
<button type="button" class="btn btn-secondary btn-lg" style="cursor:default;" id="status_{{$service->service}}">
{{strtoupper($service->name)}}
</button>
......@@ -213,6 +218,19 @@
"submit_text" => "Değiştir"
])
@include('modal',[
"id"=>"give_permission",
"title" => "Kullanıcıya Yetki Ver",
"url" => route('server_grant_permission'),
"next" => "function(){return false;}",
"inputs" => [
"Kullanıcı Emaili" => "email:text",
"Sunucu Id:$server->_id" => "server_id:hidden"
],
"text" => "Güvenlik sebebiyle kullanıcı listesi sunulmamaktadır.",
"submit_text" => "Yetkilendir"
])
@include('modal',[
"id"=>"file_upload",
"title" => "Dosya Yükle",
......@@ -300,8 +318,8 @@
});
}
@if(count($services) > 0)
@foreach($services as $service)
@if(count($installed_extensions) > 0)
@foreach($installed_extensions as $service)
setInterval(function () {
checkStatus('{{$service->service}}');
}, 3000);
......
......@@ -81,6 +81,10 @@ Route::group(['middleware' => ['auth','permissions']],function () {
// Server Download File Route
Route::get('/sunucu/indir', 'Server\MainController@download')->name('server_download')->middleware('parameters:path');
// Server Permission Grant Route
Route::post('/sunucu/yetkilendir', 'Server\MainController@grant')->name('server_grant_permission')->middleware('parameters:server_id,email');
});
// Remove Server Route
......
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA7ly3Ja8GIt6O8bds7UUZ/CpPykSTkL3902PSWF5LseMcwNwf
KtGfOu/IsUgnJaJyCgY6O5mygm5OqMfmmiNGlywTlIkwsnau0xn58ii61W+zIxsk
rpTRhGNUSkc/w6D0hPsD60zubSgWHtv6bh3syF1hZoZqZ9BI2QQkkETUd0UHbiMS
J/LsrtVEw1v1tsM9b87P0rC+P3RfxDiPv8P4Qh50yG5rjxUBcImfaj8pylGrmsYp
LbmNbtymuQ+p7ll0o+1C8eanAX/bYyEc3GkKOxNmWQ9DhFD384UXzROD38/RPqfa
AIq4H4TD+G7TpA6ha3XupDGWCvYrg9nk4vx9ZQIDAQABAoIBADdhrWABEYDqivXY
c2ORiZ8QSaeqVUrtCduits23Ywj6xsR8oHU3bTKpYcznAcl5u9teZQtSA6rQbFBE
2ex4Q79+CzKYyYq9jpMX1v4PvpE2ub1vYg96HlAPMBduBH+0lvuKwvdZ0Y/lH3ae
D8qkA07ue2Hx2ykxuKtLjh9DDsaC/Yk89UnxuGBEALz5/7WHJ9fVx6XRveUl++7g
04ZkXiykdr6zVKLnTgbpMfaQifVurullD6cBdtf2UbN26/e4h3B1s1Z/dZgzcn5R
VdgO5uFLmUoAzlLj719+NJ+MrU90na1C2qjgZHsoRN4b3RkvhvJpNkDiSpELy6MI
w5qNZkUCgYEA/bueATRC7voR90XGy9VG9en77oZqi7Ec2/3n3/sUrcroIxUgTOEK
EX6yyYpKnh3pn2KDgqHQ+MI2L9CHvAC0qA1AYhkrpqroCkhIiREyXAWnCyoyAcoi
ErvBvuhASRa2RqsV1/stxr6aai/4u3WG5tj1b4Bn/8SWrib0DG3yUusCgYEA8H3w
ibuRa8atqk+wjleGx+Jl9lY4cyrVDOXKr645slCRIeI1xSJIlsTYjWsI1ETqknsj
0O3WfkpHcoYioN3zF1G1ij5QPfX47fEapY7HId+joACUHjVHL0S/zEN5FbINKk/G
QvzsJL9e7SceZfien/WkHFDaFsx+tyHyhy52PO8CgYBnmZ6HMVaPCw4g352vBnNF
33bdSobgaL222XI+0t77oxirkmmw2kXpJMlNXyjebKpCSNAXm4ieuXW0ijmRutwI
rfh21X4sPCYoZKExThM43Zn6Bg2LC4RkD8Oo9l2hOiPMsPhnSojDWHnmF5ZAvFkL
ktSL5WsRVKyNiRwmoxHJZwKBgDJz6WOr0w1OSB7DyyGBoUgL6iIs4nje0oV7K/OB
VJ9hIaF/KJKr55ihwWChxN9red6zMMdjLi2efbC8DUW8aoRI4xIWkpT9JnUcsN9s
vcAQf+5QUMKpoL586NP8j8mKahKnW8uv7gajk1GjdFAmQXkDeqNqHubLjgXzfEL5
71pHAoGBAJPMJ/+lpwnrLm3JJ3Rh2jewNBD/900mGDMmOe9E6YvENm3G0CP4cP3w
RR89xYJxVeYq58cA8NHRHlaMs+ZaCtY2fqK6skvW1uJTL14f6E52y5Wbfb77hhVL
14lxSsR07/q9R/DWRH+cHOdVLJsY5B7EG4gb/Y2lXsdCrnksecvx
-----END RSA PRIVATE KEY-----
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuXLclrwYi3o7xt2ztRRn8Kk/KRJOQvf3TY9JYXkux4xzA3B8q0Z8678ixSCclonIKBjo7mbKCbk6ox+aaI0aXLBOUiTCydq7TGfnyKLrVb7MjGySulNGEY1RKRz/DoPSE+wPrTO5tKBYe2/puHezIXWFmhmpn0EjZBCSQRNR3RQduIxIn8uyu1UTDW/W2wz1vzs/SsL4/dF/EOI+/w/hCHnTIbmuPFQFwiZ9qPynKUauaxiktuY1u3Ka5D6nuWXSj7ULx5qcBf9tjIRzcaQo7E2ZZD0OEUPfzhRfNE4Pfz9E+p9oAirgfhMP4btOkDqFrde6kMZYK9iuD2eTi/H1l mert@pardus17011
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