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

Server configuration update added.

Multiple fixes
üst 8fd9f3bc
......@@ -23,3 +23,4 @@ DEBUGBAR_ENABLED = FALSE
QUEUE_DRIVER=database
SERVER_CONNECTION_TIMEOUT = 5000
LOG_PATH=/liman/logs/liman.log
\ No newline at end of file
......@@ -4,7 +4,6 @@ namespace App\Classes\Connector;
use App\Key;
use App\ServerLog;
use phpseclib\Crypt\Hash;
use phpseclib\Crypt\RSA;
use phpseclib\Net\SFTP;
use phpseclib\Net\SSH2;
......@@ -50,7 +49,7 @@ class SSHConnector implements Connector
abort(504,"Anahtarınız ile giriş yapılamadı.");
}
}catch (\Exception $exception){
abort(504,$exception->getMessage());
abort(504,"Sunucuya Bağlanılamadı");
}
$this->ssh = $ssh;
......@@ -91,7 +90,7 @@ class SSHConnector implements Connector
$this->sendFile($localPath, $remotePath,0555);
$localHash = md5_file($localPath);
$remoteHash = explode(' ',substr($this->execute('md5sum ' . $remotePath),0 , -1))[0];
$remoteHash = explode(' ',substr($this->execute('md5sum ' . $remotePath,false),0 , -1))[0];
if($localHash != $remoteHash){
abort(504,"Betik gönderilemedi, internet kesintisi oluşmuş veya disk dolmuş olabilir.");
......
......@@ -2,6 +2,10 @@
namespace App\Http\Controllers\Settings;
use App\Extension;
use App\Permission;
use App\Script;
use App\Server;
use App\User;
use App\Http\Controllers\Controller;
......@@ -14,9 +18,106 @@ class MainController extends Controller
$this->middleware('admin');
}
public function index(){
public function index()
{
return view('settings.index',[
"users" => User::all(),
]);
}
public function one()
{
$user = User::find(request('user_id'));
if(!$user){
abort(504,"Kullanıcı Bulunamadı.");
}
$permissions = Permission::where('user_id',request('user_id'))->first();
$servers = [];
foreach ($permissions->server as $server_id){
$server = Server::find($server_id);
if($server){
array_push($servers,$server);
}
}
$scripts = [];
foreach ($permissions->script as $script_id){
$script = Script::find($script_id);
if($script){
array_push($scripts,$script);
}
}
$extensions = [];
foreach ($permissions->extension as $extension_id){
$extension = Extension::find($extension_id);
if($extension){
array_push($extensions,$extension);
}
}
return view('settings.one',[
"user" => $user,
"servers" => $servers,
"extensions" => $extensions,
"scripts" => $scripts
]);
}
public function getList()
{
$permissions = Permission::where('user_id',request('user_id'))->first();
$data = [];
$title = [];
$display = [];
switch (request('type')){
case "server":
$data = Server::whereNotIn('_id',$permissions->server)->get();
$title = ["*hidden*", "İsim" , "Türü", "İp Adresi"];
$display = ["_id:_id", "name" , "type", "ip_address"];
break;
case "extension":
$data = Extension::whereNotIn('_id',$permissions->extension)->get();
$title = ["*hidden*", "İsim"];
$display = ["_id:_id", "name"];
break;
case "script":
$data = Script::whereNotIn('_id',$permissions->script)->get();
$title = ["*hidden*", "İsim" , "Eklenti"];
$display = [ "_id:_id", "name" , "extensions"];
break;
default:
abort(504,"Tip Bulunamadı");
}
return view('l.table',[
"value" => $data,
"title" => $title,
"display" => $display,
]);
}
public function addList()
{
try{
$permissions = Permission::where('user_id',request('user_id'))->first();
$data = $permissions->__get(request('type'));
$new = array_merge(json_decode(request('ids')), $data);
$permissions->__set(request('type'),$new);
$permissions->save();
return [
"message" => "Yetki Başarıyla Verildi.",
"status" => "yes"
];
}catch (\Exception $exception){
return [
"message" => "Yetki Verilemedi.",
"status" => "no"
];
}
}
}
......@@ -2,4 +2,12 @@
// Settings Route
Route::get('/ayarlar', 'Settings\MainController@index')->name('settings');
Route::get('/ayarlar', 'Settings\MainController@index')->name('settings')->middleware('admin');
Route::get('/ayarlar/{user_id}','Settings\MainController@one')->name('settings_one')->middleware('admin');
Route::post('/ayarlar/liste','Settings\MainController@getList')->name('settings_get_list')->middleware('admin');
Route::post('/ayar/yetki/ekle','Settings\MainController@addList')->name('settings_add_to_list')->middleware('admin');
Route::view('/ayar/sunucu','settings.server')->middleware('admin')->name('settings_server');
\ No newline at end of file
......@@ -81,6 +81,9 @@
'command.config.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.down' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.environment' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.event.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.event.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.event.list' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.key.generate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.migrate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
'command.migrate.fresh' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
......
This diff is collapsed.
......@@ -2,89 +2,22 @@
return [
/*
|--------------------------------------------------------------------------
| Title
|--------------------------------------------------------------------------
|
| The default title of your admin panel, this goes into the title tag
| of your page. You can override it per page with the title section.
| You can optionally also specify a title prefix and/or postfix.
|
*/
'title' => 'Liman Sistem Yönetimi',
'title_prefix' => '',
'title_postfix' => '',
/*
|--------------------------------------------------------------------------
| Logo
|--------------------------------------------------------------------------
|
| This logo is displayed at the upper left corner of your admin panel.
| You can use basic HTML here if you want. The logo has also a mini
| variant, used for the mini side bar. Make it 3 letters or so
|
*/
'logo' => '<b>Liman</b>',
'logo_mini' => '<b>L</b>',
/*
|--------------------------------------------------------------------------
| Skin Color
|--------------------------------------------------------------------------
|
| Choose a skin color for your admin panel. The available skin colors:
| blue, black, purple, yellow, red, and green. Each skin also has a
| ligth variant: blue-light, purple-light, purple-light, etc.
|
*/
'skin' => 'blue',
/*
|--------------------------------------------------------------------------
| Layout
|--------------------------------------------------------------------------
|
| Choose a layout for your admin panel. The available layout options:
| null, 'boxed', 'fixed', 'top-nav'. null is the default, top-nav
| removes the sidebar and places your menu in the top navbar
|
*/
'layout' => null,
/*
|--------------------------------------------------------------------------
| Collapse Sidebar
|--------------------------------------------------------------------------
|
| Here we choose and option to be able to start with a collapsed side
| bar. To adjust your sidebar layout simply set this either true
| this is compatible with layouts except top-nav layout option
|
*/
'collapse_sidebar' => false,
/*
|--------------------------------------------------------------------------
| URLs
|--------------------------------------------------------------------------
|
| Register here your dashboard, logout, login and register URLs. The
| logout URL automatically sends a POST request in Laravel 5.3 or higher.
| You can set the request to a GET or POST with logout_method.
| Set register_url to null if you don't want a register link.
|
*/
'dashboard_url' => '/',
'logout_url' => 'cikis',
......@@ -93,18 +26,6 @@ return [
'register_url' => 'register',
/*
|--------------------------------------------------------------------------
| Menu Items
|--------------------------------------------------------------------------
|
| Specify your menu items to display in the left sidebar. Each menu item
| should have a text and and a URL. You can also specify an icon from
| Font Awesome. A string instead of an array represents a header in sidebar
| layout. The 'can' is a filter on Laravel's built in Gate functionality.
|
*/
'menu' => [
'Sunucular',
[
......@@ -145,37 +66,13 @@ return [
],
],
/*
|--------------------------------------------------------------------------
| Menu Filters
|--------------------------------------------------------------------------
|
| Choose what filters you want to include for rendering the menu.
| You can add your own filters to this array after you've created them.
| You can comment out the GateFilter if you don't want to use Laravel's
| built in Gate functionality
|
*/
'filters' => [
JeroenNoten\LaravelAdminLte\Menu\Filters\HrefFilter::class,
JeroenNoten\LaravelAdminLte\Menu\Filters\ActiveFilter::class,
JeroenNoten\LaravelAdminLte\Menu\Filters\SubmenuFilter::class,
JeroenNoten\LaravelAdminLte\Menu\Filters\ClassesFilter::class,
// JeroenNoten\LaravelAdminLte\Menu\Filters\GateFilter::class,
],
/*
|--------------------------------------------------------------------------
| Plugins Initialization
|--------------------------------------------------------------------------
|
| Choose which JavaScript plugins should be included. At this moment,
| only DataTables is supported as a plugin. Set the value to true
| to include the JavaScript file from a CDN via a script tag.
|
*/
'plugins' => [
'datatables' => true,
'chartjs' => true,
......
......@@ -47,7 +47,7 @@ return [
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'path' => env('LOG_PATH'),
'level' => 'debug',
'days' => 14,
],
......
......@@ -270,7 +270,6 @@
</div>
<!-- /.tab-pane -->
</div>
<!-- /.tab-content -->
</div>
<script>
function editPage(element){
......
<div class="modal fade" id="@isset($id){{$id}}@endisset" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-content" style="width: 100%">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
......@@ -16,7 +16,7 @@
@else
<form @isset($id)id="{{$id}}_form"@endisset onsubmit="return @isset($url)request('{{$url}}',this,@isset($next){{$next}}@endisset)"@endisset target="#">
@endif
<div class="modal-body">
<div class="modal-body" style="width: 100%">
<div id="{{$id}}_alert" class="alert" role="alert" hidden>
</div>
@if(isset($selects) && is_array($selects))
......
......@@ -36,7 +36,8 @@
@if(count($installed_extensions) > 0)
<h4>{{__("Servis Durumları")}}</h4>
@foreach($installed_extensions as $extension)
<button type="button" class="btn btn-outline-primary btn-lg status_{{$extension->service}}" style="cursor:default;">
<button type="button" class="btn btn-outline-primary btn-lg status_{{$extension->service}}"
style="cursor:default;" onclick="location.href = '{{route('extension_server',["extension_id" => $extension->_id, "city" => $server->city, "server_id" => $server->_id])}}'">
{{$extension->name}}
</button>
@endforeach
......
......@@ -83,7 +83,8 @@
@if(count($installed_extensions) > 0)
<h4>{{__("Servis Durumları")}}</h4>
@foreach($installed_extensions as $extension)
<button type="button" class="btn btn-outline-primary btn-lg status_{{$extension->service}}" style="cursor:default;">
<button type="button" class="btn btn-outline-primary btn-lg status_{{$extension->service}}"
style="cursor:default;" onclick="location.href = '{{route('extension_server',["extension_id" => $extension->_id, "city" => $server->city, "server_id" => $server->_id])}}'">
{{$extension->name}}
</button>
@endforeach
......
......@@ -11,7 +11,9 @@
"class" => "btn-success",
"target_id" => "add_user",
"text" => "Kullanıcı Ekle"
])<br><br>
])
<button class="btn btn-danger" onclick="location.href = '{{route('settings_server')}}'">{{__("Sunucu Ayarları")}}</button>
<br><br>
@include('l.table',[
"value" => \App\User::all(),
"title" => [
......@@ -81,4 +83,10 @@
],
"submit_text" => "Parolayı Sıfırla"
])
<script>
function details(row) {
let user_id = row.querySelector('#user_id').innerHTML;
location.href = '/ayarlar/' + user_id;
}
</script>
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__("Ana Sayfa")}}</a></li>
<li class="breadcrumb-item"><a href="{{route('settings')}}">{{__("Ayarlar")}}</a></li>
<li class="breadcrumb-item active" aria-current="page">{{$user->name}}</li>
</ol>
</nav>
<h2>{{__("Kullanıcı Ayarları")}}</h2>
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab_1" data-toggle="tab" aria-expanded="true">{{__("Genel Ayarlar")}}</a></li>
<li id="server_type"><a href="#tab_2" data-toggle="tab"
aria-expanded="false">{{__("Eklenti Yetkileri")}}</a></li>
<li id="server_type"><a href="#tab_3" data-toggle="tab" aria-expanded="false">{{__("Betik Yetkileri")}}</a>
</li>
<li class=""><a href="#tab_4" data-toggle="tab" aria-expanded="false">{{__("Sunucu Yetkileri")}}</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab_1">
Merhaba Dunya
</div>
<div class="tab-pane" id="tab_2">
<button onclick="getList('extension')" class="btn btn-success">{{__("Eklenti Ekle")}}</button><br><br>
@include('l.table',[
"value" => $extensions,
"title" => [
"Adı" , "Id"
],
"display" => [
"name" , "_id"
],
])
</div>
<div class="tab-pane" id="tab_3">
<button onclick="getList('script')" class="btn btn-success">{{__("Betik Ekle")}}</button><br><br>
@include('l.table',[
"value" => $scripts,
"title" => [
"Adı" , "Id"
],
"display" => [
"name" , "_id"
],
])
</div>
<div class="tab-pane" id="tab_4">
<button onclick="getList('server')" class="btn btn-success">{{__("Sunucu Ekle")}}</button><br><br>
@include('l.table',[
"value" => $servers,
"title" => [
"Adı" , "Id"
],
"display" => [
"name" , "_id"
],
])
</div>
</div>
</div>
@include('l.modal',[
"id" => "server_modal",
"title" => "Sunucu Listesi",
"submit_text" => "Seçili Sunuculara Yetki Ver",
"onsubmit" => "addData"
])
@include('l.modal',[
"id" => "script_modal",
"title" => "Betik Listesi",
"submit_text" => "Seçili Betiklere Yetki Ver",
"onsubmit" => "addData"
])
@include('l.modal',[
"id" => "extension_modal",
"title" => "Eklenti Listesi",
"submit_text" => "Seçili Eklentilere Yetki Ver",
"onsubmit" => "addData"
])
<script>
function getList(type) {
let form = new FormData();
form.append('type', type);
form.append('user_id','{{$user->_id}}');
request('{{route('settings_get_list')}}', form, function (response) {
Swal.close();
$("#" + type + "_modal .modal-body").html(response);
$("#" + type + "_modal table").DataTable({
bFilter: true,
select: {
style: 'multi'
},
"language": {
url: "{{asset('turkce.json')}}"
}
});
$("#" + type + "_modal").modal('show');
})
}
function addData(modalElement) {
Swal.fire({
position: 'center',
type: 'info',
title: '{{__("Ekleniyor...")}}',
showConfirmButton: false,
});
let data = [];
let table = $(modalElement).find('table').DataTable();
table.rows( { selected: true } ).data().each(function(element){
data.push(element[1]);
});
let form = new FormData();
form.append('ids',JSON.stringify(data));
form.append('user_id','{{$user->_id}}');
form.append('type',modalElement.getAttribute('id').split('_')[0]);
request('{{route('settings_add_to_list')}}', form, function (response) {
let json = JSON.parse(response);
if(json["status"] === "yes"){
Swal.fire({
position: 'center',
type: 'success',
title: json["message"],
showConfirmButton: false,
timer: 2000
});
setTimeout(function () {
location.reload();
},2000);
}else{
Swal.fire({
position: 'center',
type: 'error',
title: json["message"],
showConfirmButton: false,
timer: 2000
});
}
});
return false;
}
$('table').DataTable({
bFilter: true,
select: {
style: 'multi'
},
"language" : {
url : "{{asset('turkce.json')}}"
}
});
</script>
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__("Ana Sayfa")}}</a></li>
<li class="breadcrumb-item"><a href="{{route('settings')}}">{{__("Ayarlar")}}</a></li>
<li class="breadcrumb-item active" aria-current="page">{{__("Sunucu Ayarları")}}</li>
</ol>
</nav>
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab_1" data-toggle="tab" aria-expanded="true">{{__("Genel Ayarlar")}}</a></li>
<li id="server_type"><a href="#tab_2" data-toggle="tab"
aria-expanded="false">{{__("MongoDB Ayarları")}}</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab_1">
<form id="generalSettings" onsubmit="return saveGeneral()">
<h3><b>{{__("Genel Ayarlar")}}</b></h3><br>
<h4>{{__("Sistem Adı")}}</h4>
<input type="text" class="form-control" value="{{env('APP_NAME')}}">
<h4>{{__("Debug Modu")}}</h4>
<input type="text" class="form-control" value="{{env('APP_DEBUG')}}">
<h4>{{__("Sistem Adresi")}}</h4>
<input type="text" class="form-control" value="{{env('APP_URL')}}">
<h4>{{__("Syslog Dosya Konumu")}}</h4>
<input type="text" class="form-control" value="{{env('LOG_PATH')}}">
<h4>{{__("Sunucu Bağlantı Zaman Aşımı")}}</h4>
<input type="text" class="form-control" value="{{env('SERVER_CONNECTION_TIMEOUT')}}"><br>
<button type="submit" class="btn btn-danger">{{__("Değişiklikleri Kaydet")}}</button>
</form>
</div>
<div class="tab-pane" id="tab_2">
<form action="">
<h3><b>{{__("MongoDB Ayarları")}}</b></h3><br>
<h5>{{__("Dikkat: Yaptığınız değişikler ile sunucuya erişiminizi kaybedebilirsiniz.")}}</h5>
<h4>{{__("Bağlantı Adresi")}}</h4>
<input type="text" class="form-control" value="{{env('DB_HOST')}}">
<h4>{{__("Bağlantı Portu")}}</h4>
<input type="text" class="form-control" value="{{env('DB_PORT')}}">
<h4>{{__("Veritabanı Adı")}}</h4>
<input type="text" class="form-control" value="{{env('DB_DATABASE')}}">
<h4>{{__("Kullanıcı Adı")}}</h4>
<input type="text" class="form-control" value="{{env('DB_USERNAME')}}">
<h4>{{__("Parola")}}</h4>
<input type="text" class="form-control" value="{{env('DB_PASSWORD')}}"><br>
<button type="submit" class="btn btn-danger">{{__("Değişiklikleri Kaydet")}}</button>
</form>
</div>
</div>
</div>
<script>
function saveGeneral(form) {
swal({
title: "Are you sure?",
text: "Once deleted, you will not be able to recover this imaginary file!",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willDelete) => {
if (willDelete) {
swal("Poof! Your imaginary file has been deleted!", {
icon: "success",
});
} else {
swal("Your imaginary file is safe!");
}
});
}
</script>
@endsection
......@@ -9,18 +9,6 @@
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<link rel="stylesheet" href="{{asset('/css/liman.css')}}">
{{--<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">--}}
<!-- Bootstrap 3.3.7 -->
{{--<link rel="stylesheet" href="{{ asset('vendor/adminlte/vendor/bootstrap/dist/css/bootstrap.min.css') }}">--}}
<!-- Font Awesome -->
{{--<link rel="stylesheet" href="{{ asset('vendor/adminlte/vendor/font-awesome/css/font-awesome.min.css') }}">--}}
<!-- Theme style -->
{{--<link rel="stylesheet" href="{{ asset('/css/adminlte.min.css') }}">--}}
{{--@yield('adminlte_css')--}}
</head>
<body class="hold-transition @yield('body_class')">
......@@ -31,38 +19,14 @@
$('table').not('.notDataTable').DataTable({
autoFill : true,
bFilter: true,
destroy: true,
"language" : {
url : "{{asset('turkce.json')}}"
}
});
} );
</script>
{{--<script src="{{ asset('vendor/adminlte/vendor/jquery/dist/jquery.min.js') }}"></script>--}}
{{--<script src="{{ asset('vendor/adminlte/vendor/jquery/dist/jquery.slimscroll.min.js') }}"></script>--}}
{{--<script src="{{asset('js/jquery.js')}}"></script>--}}
{{--<script src="{{asset('js/datatables.js')}}"></script>--}}
{{--<script src="{{asset('js/other.js')}}"></script>--}}
{{--<script src="{{ asset('vendor/adminlte/vendor/bootstrap/dist/js/bootstrap.min.js') }}"></script>--}}
{{--<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.7.1/jquery.contextMenu.min.css">--}}
{{--<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.7.1/jquery.contextMenu.min.js"></script>--}}
{{--<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.7.1/jquery.ui.position.js"></script>--}}
{{--<link rel="stylesheet" href="https://cdn.datatables.net/select/1.3.0/css/select.dataTables.min.css">--}}
{{--@if(config('adminlte.plugins.datatables'))--}}
{{--<!-- DataTables with bootstrap 3 renderer -->--}}
{{--<script src="//cdn.datatables.net/v/bs/dt-1.10.18/datatables.min.js"></script>--}}
{{--<link rel="stylesheet" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">--}}
{{--@endif--}}
{{--<script src="https://cdn.datatables.net/select/1.3.0/js/dataTables.select.min.js"></script>--}}
{{--<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.0/Chart.bundle.min.js"></script>--}}
{{--<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.7/themes/default/style.min.css" />--}}
{{--<script src="//cdnjs.cloudflare.com/ajax/libs/jstree/3.3.7/jstree.min.js"></script>--}}
{{--<script src="https://cdn.jsdelivr.net/npm/sweetalert2@8"></script>--}}
@yield('body')
{{--@yield('adminlte_js')--}}
</body>
</html>
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