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

Daily update.

üst b9882d9e
......@@ -6,7 +6,7 @@ use App\Extension;
use App\Script;
use App\Server;
use Illuminate\Http\Request;
use JsonException;
class ExtensionController extends Controller
{
public static $protected = true;
......@@ -86,13 +86,14 @@ class ExtensionController extends Controller
"extension" => $extension,
"scripts" => $scripts,
"data" => $outputs,
"view" => "index"
"view" => "index",
"server" => $server
]);
}
public function route(){
$extension = Extension::where('name',\request('extension_id'))->first();
$scripts = Script::where('extensions','like',\request('extension_id'))->get();
$extension = request('extension');
$scripts = Script::where('extensions','like','%' . $extension->name . '%')->get();
$outputs = [];
foreach (\request('scripts') as $script){
$parameters = '';
......@@ -103,8 +104,7 @@ class ExtensionController extends Controller
$output = str_replace('\n','',$output);
$outputs[$script->unique_code] = json_decode($output,true);
}
$view = (\request()->ajax()) ? 'extensions.' . strtolower(\request('extension_id')) . '.' . \request('url')
: 'feature.server';
$view = (\request()->ajax()) ? 'extensions.' . strtolower(\request('extension_id')) . '.' . \request('url') : 'feature.server';
if(view()->exists($view)){
return view($view,[
"result" => 200,
......
......@@ -15,11 +15,15 @@ class ServerController extends Controller
public static $protected = true;
public function index(){
$all_servers = Server::all();
$permissions = request('permissions');
$servers = [];
if($permissions->__get("server") == null){
return view('server.index');
}
foreach ($permissions->server as $server_id) {
array_push($servers,$all_servers->where('_id',$server_id)->first());
if(Server::where('_id',$server_id)->exists()){
array_push($servers,Server::where('_id',$server_id)->first());
}
}
return view('server.index',[
"servers" => $servers
......@@ -77,10 +81,7 @@ class ServerController extends Controller
public function run(){
$output = Server::where('_id',\request('server_id'))->first()->run(\request('command'));
return [
"result" => 200,
"data" => $output
];
return $output;
}
public function runScript(){
......@@ -171,7 +172,7 @@ class ServerController extends Controller
}
public function enableExtension(){
$extension = Extension::where('name','like',\request('extension'))->first();
$extension = Extension::where('_id',\request('extension_id'))->first();
$script = Script::where('unique_code',$extension->setup)->first();
$server = \request('server');
$output = $server->runScript($script,\request('domain') . " " . \request('interface'));
......
......@@ -7,27 +7,27 @@ use Illuminate\Support\Facades\Auth;
class Parameters
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next,...$parameters)
{
foreach ($parameters as $parameter) {
if(!$request->has($parameter)){
return response()->json([
"result" => [
"message" => "Missing parameter > $parameter",
"code" => 403
],
"data" => []
],403);
return $this->response("Missing parameter > $parameter");
}
}
$request->request->add(['user_id' => (Auth::check()) ? Auth::id() : 0]);
return $next($request);
}
private function response($message)
{
if (request()->wantsJson()) {
return response([
"message" => $message
], 403);
}else{
return response()->view('general.error', [
"message" => $message
]);
}
}
}
......@@ -8,34 +8,45 @@ use App\Extension;
class PermissionManager
{
// Main Function of Middleware
public function handle($request, Closure $next)
{
// Get User Permissions.
$permissions = Auth::user()->permissions();
// If there's not any permission and user is not admin, throw error.
if($permissions == null && Auth::user()->isAdmin() == false){
return $this->response("Liman'ı Kullanmak için hiçbir yetkiniz bulunmamaktadır.");
}
// Add permissions to request so we can access it later without accessing database again.
$request->request->add(['permissions' => $permissions]);
// If simply admin, allow request.
if(Auth::user()->isAdmin()){
return $next($request);
}
// Possible Inputs to Verify
$validations = [
"script" => 0,
"server" => 1,
"extension" => 1
];
// Loop through every validations
foreach($validations as $target=>$type){
if($this->verify($target,$type) == false){
return $this->response();
}
}
// Verify Controller for double Check
if($this->verifyController() == false){
return $this->response();
}
// Process request if everything is ok.
return $next($request);
}
......@@ -51,21 +62,25 @@ class PermissionManager
}
}
private function extensionNametoId(){
// Since id can be inside both in route and request headers, extract that information.
private function nameToId($target){
$name = null;
if(request()->route($target . '_id') != null){
$name = request()->route($target . '_id');
}else if(request()->has($target . '_id')){
$name = request()->get($target . '_id');
}
return $name;
}
// Simply get Controller name from request headers.
private function controller(){
$controller = explode('\\',\request()->route()->getAction('controller'));
$controller = explode('Controller@',$controller[count($controller) -1 ])[0];
return strtolower($controller);
}
// Check permissions object' arrays if target key exists.
private function checkArray($target){
$permissions = (\request('permissions'));
if($permissions->__get($target) == null || is_array($permissions->__get($target)) == false){
......@@ -75,17 +90,13 @@ class PermissionManager
}
}
// Simply go through all functions to check permission.
private function verify($target,$type){
$permissions = (\request('permissions'));
$id = null;
if(request()->route($target . '_id') != null){
$id = request()->route($target . '_id');
}else if(request()->has($target . '_id')){
$id = request()->get($target . '_id');
}
if($id != null){
$permissions = \request('permissions');
$name = $this->nameToId($target);
if($name != null){
if($arr = $this->checkArray($target)){
if(in_array($id,$arr) == false){
if($arr == false | in_array($name,$arr) == (($type == 1) ? false : true)){
return false;
}
}else{
......@@ -95,6 +106,7 @@ class PermissionManager
return true;
}
// Check if Controller is in ignored list.
private function verifyController(){
$controller = $this->controller();
$ignore_list = ["home","ssh","server"];
......
......@@ -16,13 +16,15 @@ class ScriptParameters
*/
public function handle($request, Closure $next)
{
$extension_name = null;
if($request->route('extension') != null){
$extension_name = $request->route('extension');
}else if($request->has('extension')){
$extension_name = $request->get('extension');
$extension_id = null;
if($request->route('extension_id') != null){
$extension_id = $request->route('extension_id');
}
$extension = \App\Extension::where('name','like',$extension_name)->first();
if($request->has('extension_id')){
$extension_id = $request->get('extension_id');
}
$extension = \App\Extension::where('_id',$extension_id)->first();
$url = null;
if($request->route('unique_code') != null){
$url = $request->route('unique_code');
......@@ -33,13 +35,14 @@ class ScriptParameters
$scripts = [];
if(isset($extension->views[$url])){
foreach ($extension->views[$url] as $script_name){
array_push($scripts,Script::where('extensions','like',$extension_name)->where('unique_code',$script_name)->first());
array_push($scripts,Script::where('extensions','like',$extension->name)->where('unique_code',$script_name)->first());
}
}else{
array_push($scripts,Script::where('unique_code',$url)->first());
}
$request->request->add(['scripts' => $scripts]);
$request->request->add(['extension' => $extension]);
$request->request->add(['url' => $url]);
return $next($request);
}
......
......@@ -6,71 +6,53 @@ use Closure;
class Server
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$server_id = null;
if($request->route('server_id') != null){
if ($request->route('server_id') != null) {
$server_id = $request->route('server_id');
}else if($request->has('server_id')){
} else if ($request->has('server_id')) {
$server_id = $request->get('server_id');
}
if($request != null){
if ($request != null) {
//Let's verify server.
$server = \App\Server::where('_id',$server_id)->first();
$server = \App\Server::where('_id', $server_id)->first();
//If server is simply not found.
if($server == null){
$message = __("Sunucu bulunamadı.");
if($request->ajax()){
return response([
"message" => $message
],404);
}
return response()->view('general.error',[
"message" => $message
]);
if ($server == null) {
return $this->response(__("Sunucu bulunamadı."));
}
//Check if ssh port is active on server.
if($server->sshPortEnabled() == false){
$message = __("Sunucuyla bağlantı kurulamadı.");
if($request->ajax()){
return response([
"message" => $message
],503);
}
return response()->view('general.error',[
"message" => $message
]);
if ($server->sshPortEnabled() == false) {
return $this->response(__("Sunucuyla bağlantı kurulamadı."));
}
//Check if SSH key is valid or even exist for user.
if($server->integrity() == false){
if ($server->integrity() == false) {
$message = __("SSH: Sunucuya erişmek için izniniz yok.");
if($request->ajax()){
if ($request->ajax()) {
return response([
"message" => $message
],401);
], 401);
}
return redirect(route('keys'));
}
//Now that everything is checked, add server variable to request to easy access and prevent more database queries.
$request->request->add(['server' => $server]);
} else {
return $this->response(__("Server bilgisi verilmedi."));
}
return $next($request);
}
private function response($message)
{
if (request()->wantsJson()) {
return response([
"message" => $message
], 401);
}else{
$message = __("Server bilgisi verilmedi.");
if($request->ajax()){
return response([
"message" => $message
],401);
}
return response()->view('general.error',[
return response()->view('general.error', [
"message" => $message
]);
]);
}
return $next($request);
}
}
......@@ -11,6 +11,7 @@ class Server extends Eloquent
protected $connection = 'mongodb';
protected $fillable = ['name', 'ip_address' ,'port' ,'city'];
private $key = null;
public function run($command){
$key = Key::where([
'server_id' => $this->id,
......
......@@ -4,9 +4,10 @@ function request(url,data,next) {
var r = new XMLHttpRequest();
r.open("POST",url);
r.setRequestHeader('X-CSRF-TOKEN', csrf);
r.setRequestHeader("Accept","text/json");
r.send(form);
r.onreadystatechange = function(){
if(r.status == 200){
if(r.status == 200 && r.readyState == 4){
return next(r.responseText);
}
}
......@@ -27,6 +28,10 @@ function debug(data){
console.log(data);
}
function back(){
history.back();
}
function navbar(flag) {
var sidebar = document.getElementsByClassName("sidebar")[0];
var main = document.getElementsByTagName('main')[0];
......
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#addZone">
Zone Ekle
</button>
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{__("Zone Ekle")}}
</button>
<div class="dropdown-menu">
<button class="dropdown-item" data-toggle="modal" data-target="#add_forward_zone">Forward Zone Ekle</a>
<button class="dropdown-item" data-toggle="modal" data-target="#add_reverse_zone">Reverse Zone Ekle</a>
</div>
</div>
@if(is_array($data["dns_generate"]))
@foreach($data["dns_generate"] as $zone)
<div class="card">
......@@ -14,36 +21,28 @@
@endforeach
@endif
<div class="modal fade" id="addZone" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Zone Ekle</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<h3>Adı</h3>
<input id="zone_name" type="text" class="form-control" placeholder="Zone Adı"><br>
<h3>Zone Tipi</h3>
<select class="form-control" id="zone_type" name="Zone Tipi">
<option value="forward">Forward</option>
<option value="reverse">Reverse</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">İptal</button>
<button type="button" class="btn btn-success" onclick="addZone()">Zone Ekle</button>
</div>
</div>
</div>
</div>
@include('modal',[
"id"=>"add_forward_zone",
"title" => "Forward Zone Ekle",
"url" => route('extension_api',['add_forward_zone']),
"next" => "debug",
"inputs" => [
"Zone Adı" => "alan_adi:text",
"-:$server->_id" => "server_id:hidden",
"-:$extension->_id" => "extension_id:hidden"
],
"submit_text" => "Ekle"
])
<script>
function addZone() {
refresh('add_' + $("#zone_type").val() + '_zone','alan_adi:' + $("#zone_name").val());
}
</script>
\ No newline at end of file
@include('modal',[
"id"=>"add_reverse_zone",
"title" => "Reverse Zone Ekle",
"url" => route('extension_api',['add_reverse_zone']),
"next" => "debug",
"inputs" => [
"Zone Adı" => "alan_adi:text",
"-:$server->_id" => "server_id:hidden",
"-:$extension->_id" => "extension_id:hidden"
],
"submit_text" => "Ekle"
])
\ No newline at end of file
......@@ -30,56 +30,4 @@
</div>
</div>
</div>
<script>
var server_id = "{{request('server')->_id}}";
var extension = "{{$extension->name}}";
var history = [];
function request(url,next,...inputs) {
var data = {
server_id : server_id,
extension : extension,
url : url
};
inputs.forEach(function (input) {
var key = input.split(':')[0];
data[key] = input.split(':')[1];
});
$.ajax({
url : '{{route('extension_api',$extension->name)}}',
type : "POST",
data :data,
success : function (data) {
next(data);
}
});
}
function redirect(path,...inputs) {
var params = "?";
inputs.forEach(function (input) {
params = params + "&" + input.split(':')[0] + "=" + input.split(':')[1];
});
location.href = location.href + '/' + path + params;
}
function refresh(url,...inputs) {
var data = {
server_id : server_id,
extension : extension,
url : url
};
inputs.forEach(function (input) {
var key = input.split(':')[0];
data[key] = input.split(':')[1];
});
$.ajax({
url : '{{route('extension_api',$extension->name)}}',
type : "POST",
data :data,
success : function (data) {
location.reload();
}
});
}
</script>
@endsection
\ No newline at end of file
......@@ -11,34 +11,43 @@
<span aria-hidden="true">&times;</span>
</button>
</div>
@if(isset($onsubmit))
<?php
$rand = bin2hex(random_bytes(10));
?>
@isset($onsubmit)
<form @isset($id)id="{{$id}}_form"@endisset onsubmit="return {{$onsubmit}}" target="#">
@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">
@if(isset($inputs) && is_array($inputs))
@foreach ($inputs as $name => $input)
@if(is_array($input))
<h5>{{__(explode(":",$name)[0])}}</h5>
<select name="{{explode(":",$name)[1]}}" class="form-control" required>
@foreach ($input as $key => $value)
<option value="{{$value}}">{{__($key)}}</option>
@endforeach
</select><br>
@else
@if(explode(":", $input)[1] == "hidden")
<input type="{{explode(":", $input)[1]}}" name="{{explode(":", $input)[0]}}" placeholder="{{__($name)}}" class="form-control" required value="{{explode(":",$name)[1]}}">@if(explode(":", $input)[1] != "hidden")<br>@endif
@else
<h5>{{__($name)}}</h5>
<input type="{{explode(":", $input)[1]}}" name="{{explode(":", $input)[0]}}" placeholder="{{__($name)}}" class="form-control" required>@if(explode(":", $input)[1] != "hidden")<br>@endif
@endif
@endif
@endforeach
@if(isset($selects) && is_array($selects))
<h5>{{__("Servis Seçimi")}}</h5>
<select class="form-control" required onchange="cs_{{$id}}(this.value)">
@foreach ($selects as $key => $select)
<option value="{{explode(":",$key)[1]}}">{{__(explode(":",$key)[0])}}</option>
@endforeach
@foreach ($selects as $key => $select)
@include('__system__.inputs',[
"inputs" => $select,
"disabled" => "true",
"id" => explode(":",$key)[1],
"random" => $id
])
@endforeach
</select><br>
@endif
@isset($inputs)
@include('__system__.inputs',$inputs)
@endisset
@if(isset($text))
@isset($text)
{{__($text)}}
@endisset
@isset($output)
<pre>
<textarea class="form-control" id="{{$output}}" hidden readonly rows="10"></textarea>
</pre>
<br>
@endisset
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-success">@isset($submit_text){{__($submit_text)}}@endisset</button>
......@@ -46,4 +55,19 @@
</form>
</div>
</div>
</div>
\ No newline at end of file
</div>
@isset($selects)
<script type="text/javascript">
function cs_{{$id}}(test){
Array.prototype.forEach.call(document.getElementsByClassName('install_extension'),function(element){
element.setAttribute('hidden',"true");
element.setAttribute('disabled',"true");
});
Array.prototype.forEach.call(document.getElementsByClassName(test),function(element){
element.removeAttribute('hidden');
element.removeAttribute('disabled');
});
}
cs_{{$id}}('{{explode(':',key($selects))[1]}}')
</script>
@endisset
\ No newline at end of file
......@@ -9,26 +9,28 @@
"target_id" => "add_server",
"text" => "Server Ekle"
])<br><br>
<table class="table">
<thead>
<tr>
<th scope="col">{{__("Sunucu Adı")}}</th>
<th scope="col">{{__("İp Adresi")}}</th>
<th scope="col">{{__("Port")}}</th>
</tr>
</thead>
<tbody>
@foreach ($servers as $server)
<tr onclick="location.href = '/sunucular/{{$server->_id}}';" class="highlight">
<td>{{$server->name}}</td>
<td>{{$server->ip_address}}</td>
<td>{{$server->port}}</td>
@if(isset($servers))
<table class="table">
<thead>
<tr>
<th scope="col">{{__("Sunucu Adı")}}</th>
<th scope="col">{{__("İp Adresi")}}</th>
<th scope="col">{{__("Port")}}</th>
</tr>
@endforeach
</tbody>
</table>
</thead>
<tbody>
@foreach ($servers as $server)
<tr onclick="location.href = '/sunucular/{{$server->_id}}';" class="highlight">
<td>{{$server->name}}</td>
<td>{{$server->ip_address}}</td>
<td>{{$server->port}}</td>
</tr>
@endforeach
</tbody>
</table>
@else
<h3>{{__("Sunucunuz Bulunmuyor.")}}</h3>
@endif
@include('modal',[
"id"=>"add_server",
"title" => "Sunucu Ekle",
......
......@@ -10,17 +10,17 @@
@include('modal-button',[
"class" => "btn-primary",
"target_id" => "editModal",
"target_id" => "edit",
"text" => "Düzenle"
])
@include('modal-button',[
"class" => "btn-warning",
"target_id" => "commandModal",
"target_id" => "command",
"text" => "Komut Çalıştır"
])
@include('modal-button',[
"class" => "btn-secondary",
"target_id" => "addService",
"target_id" => "install_extension",
"text" => "Servis Ekle"
])
@include('modal-button',[
......@@ -48,12 +48,12 @@
@include('modal-button',[
"class" => "btn-danger",
"target_id" => "deleteModal",
"target_id" => "delete",
"text" => "Sunucuyu Sil"
])
@include('modal',[
"id"=>"deleteModal",
"id"=>"delete",
"title" => $server->name,
"url" => route('server_remove'),
"text" => "isimli sunucuyu silmek istediğinize emin misiniz? Bu işlem geri alınamayacaktır.",
......@@ -65,7 +65,7 @@
])
@include('modal',[
"id"=>"editModal",
"id"=>"edit",
"title" => "Sunucuyu Düzenle",
"url" => route('server_update'),
"next" => "reload",
......@@ -104,98 +104,56 @@
"submit_text" => "Değiştir"
])
<div class="modal fade" id="commandModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title">
{{__("Komut Çalıştır")}}
</h1>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-check">
<input class="form-check-input" type="checkbox" onclick="document.getElementById('run_command').disabled = !this.checked;" id="commandResponsibility">
<label class="form-check-label">
{{__("Özel komut çalıştırma sorumluluğunu kabul ediyorum.")}}
</label>
</div><br>
<div class="form-group">
<textarea class="form-control" id="run_command" rows="3" disabled></textarea>
</div>
<div class="form-group">
<textarea class="form-control" id="commandOutput" rows="3" readonly hidden></textarea>
</div>
@include('modal',[
"id"=>"install_extension",
"title" => "Servis Yükle",
"url" => route('server_extension'),
"next" => "reload",
"selects" => [
"DNS:5c0a170f7b57f19953126e37" => [
"Domain Adı" => "domain:text",
"Arayüz" => "interface:text",
"DNS:5c0a170f7b57f19953126e37" => "extension_id:hidden"
],
"DHCP:5c0a1c5f7b57f19953126e38" => [
"Domain Adı" => "domain:text",
"Arayüz" => "interface:text",
"Subnet" => "subnet:text",
"DHCP:5c0a1c5f7b57f19953126e38" => "extension_id:hidden"
]
],
"inputs" => [
"Sunucu Id:$server->_id" => "server_id:hidden"
],
"submit_text" => "Değiştir"
])
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">İptal</button>
<button type="button" class="btn btn-warning" onclick="runCommand()">Çalıştır</button>
</div>
</div>
</div>
</div>
@include('modal',[
"id"=>"command",
"title" => "Özel Komut Çalıştır",
"url" => route('server_run'),
"next" => "commandDisplay",
"inputs" => [
"Sorumluluk Reddi" => "responsibility:checkbox",
"Kod Alanı" => "command:textarea",
"Sunucu Id:$server->_id" => "server_id:hidden"
],
"output" => "command_output",
"submit_text" => "Çalıştır"
])
<div class="modal fade" id="addService" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">DNS Kurulumu</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<h5>Domain Adı</h5>
<input id="dns_domain" type="text" class="form-control"
placeholder="Domain Adı">
</div>
<div class="form-group">
<h5>Interface</h5>
<input id="dns_interface" type="text" class="form-control"
placeholder="Interface">
</div>
<div class="collapse" id="installServiceOutput">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">İptal</button>
<button type="button" class="btn btn-warning" onclick="installService()">Kur</button>
</div>
</div>
</div>
</div>
<script>
function checkStatus(extension) {
var element = $("#status_" + extension);
$.ajax({
url : "{{ route('server_check') }}",
type : "POST",
data : {
extension : extension,
server_id : '{{$server->_id}}'
},
success : function (data) {
if(data["result"] === 200){
element.removeClass('btn-info').removeClass('btn-danger').addClass('btn-success');
}else if(data["result"] === 201){
element.removeClass('btn-success').removeClass('btn-info').addClass('btn-danger');
}else{
element.removeClass('btn-success').removeClass('btn-info').addClass('btn-secondary');
}
}
});
function commandDisplay(output){
var element = document.getElementById("command_output");
element.value = output;
element.removeAttribute('hidden');
}
@foreach($server->extensions as $extension)
setInterval(function () {
checkStatus('{{$extension}}');
// checkStatus('{{$extension}}');
}, 3000);
@endforeach
</script>
@endsection
\ No newline at end of file
......@@ -2,52 +2,117 @@
Auth::routes();
// Change the language
Route::post('/locale','HomeController@setLocale')->name('set_locale');
// Middleware group for both authentication and permissions of request.
Route::group(['middleware' => ['auth','permissions']], function () {
// Home Route
Route::get('/', 'HomeController@index')->name('home');
// Servers Route
Route::get('/sunucular', 'ServerController@index')->name('servers');
// Add Server Route
Route::post('/sunucu/ekle' , 'ServerController@add')->name('server_add')->middleware('parameters:username,password,ip_address,port');
// Server Status Route (Telnet)
Route::post('/api/status', 'ServerController@isAlive')->middleware('parameters:ip,port');
// Middleware to convert server_id to server object.
Route::group(['middleware' => ['server']], function () {
// Extension' Server' Home Route
Route::get('/l/{extension_id}/{city}/{server_id}', 'ExtensionController@server')->name('extension_server');
// Extension' Server' Any Route Handler
Route::get('/l/{extension_id}/{city}/{server_id}/{unique_code}','ExtensionController@route')->middleware('script_parameters');
// Single Server Details Route
Route::get('/sunucular/{server_id}', 'ServerController@one')->name('server_one');
// Remove Server Route
Route::post('/sunucu/sil', 'ServerController@remove')->name('server_remove')->middleware('parameters:server_id');
// Server Update Route
Route::post('/sunucu/guncelle','ServerController@update')->name('server_update')->middleware('parameters:server_id,name');
// Server Command Route
Route::post('/sunucu/calistir', 'ServerController@run')->name('server_run');
// Server' Service Status Route
Route::post('/sunucu/kontrol', 'ServerController@check')->name('server_check')->middleware('parameters:extension_id,server_id');
Route::post('/sunucu/network', 'ServerController@network')->name('server_network')->middleware('parameters:ip,cidr,gateway,interface,password');
// Server Network Update
Route::post('/sunucu/network', 'ServerController@network')->name('server_network')
->middleware('parameters:ip,cidr,gateway,interface,password');
// Server Hostname Update
Route::post('/sunucu/hostname', 'ServerController@hostname')->name('server_hostname')->middleware('parameters:hostname');
// Server Service Run,Stop,Enable,Disable Route
Route::post('/sunucu/servis', 'ServerController@service')->name('server_service')->middleware('parameters:extension_id,action');
// Server Extension Installation Route
Route::post('/sunucu/eklenti', 'ServerController@enableExtension')->name('server_extension');
Route::post('/extension/{extension_id}/','ExtensionController@route')->name('extension_api')->middleware('script_parameters');
});
// SSH Key List Route
Route::get('/anahtarlar','SshController@index')->name('keys');
// SSH Key Add Route
Route::post('/anahtar/ekle','SshController@add')->name('key_add');
// User Details Route
Route::get('/kullanici/{user_id}','UserController@one')->name('user');
// Script List Route
Route::get('/betikler', 'ScriptController@index')->name('scripts');
// Script Add View Route
Route::get('/betik/ekle', 'ScriptController@add')->name('script_add');
// Script Add Route
Route::post('/betik/ekle', 'ScriptController@create')->name('script_create');
// Script Details Route
Route::get('/betik/{script_id}' , 'ScriptController@one')->name('script_one');
// Script Run Route
Route::post('/betik/calistir', 'ServerController@runScript')->name('script_run');
// Script Upload Route
Route::post('/betik/yukle', 'ScriptController@upload')->name('script_upload');
// Extension Page (City Select) Route
Route::get('/l/{extension_id}', 'ExtensionController@index')->name('extension_id');
// Extension City Servers Route
Route::get('/l/{extension_id}/{city}', 'ExtensionController@city')->name('extension_city');
// Settings Route
Route::get('/ayarlar', 'SettingsController@index')->name('settings');
// Extensions List Route
Route::get('/eklentiler' , 'ExtensionController@settings')->name('extensions_settings');
// Extension Details Route
Route::get('/eklentiler/{extension_id}','ExtensionController@one')->name('extension_one');
// Extension Management Route
Route::post('/extension/{job}','ExtensionController@route')->name('extension_api')->middleware('script_parameters');
// My Requests Route
Route::get('/taleplerim','HomeController@all')->name('request_permission');
// Send Request Route
Route::post('/talep','HomeController@request')->name('request_send');
// List All Requests Route
Route::get('/talepler','PermissionController@all')->name('request_list');
// Request Details Page
Route::get('/talep/{request_id}','PermissionController@one')->name('request_one');
});
\ No newline at end of file
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