Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
L
Liman MYS - Çekirdek
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
liman
Liman MYS - Çekirdek
Commits
d79cbf56
Kaydet (Commit)
d79cbf56
authored
Ara 13, 2018
tarafından
mertcelen
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Daily update.
üst
b9882d9e
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
312 additions
and
311 deletions
+312
-311
ExtensionController.php
app/Http/Controllers/ExtensionController.php
+6
-6
ServerController.php
app/Http/Controllers/ServerController.php
+8
-7
Parameters.php
app/Http/Middleware/Parameters.php
+14
-14
PermissionManager.php
app/Http/Middleware/PermissionManager.php
+22
-10
ScriptParameters.php
app/Http/Middleware/ScriptParameters.php
+10
-7
Server.php
app/Http/Middleware/Server.php
+25
-43
Server.php
app/Server.php
+1
-0
liman.js
public/js/liman.js
+6
-1
index.blade.php
resources/views/extensions/dns/index.blade.php
+35
-36
server.blade.php
resources/views/feature/server.blade.php
+0
-53
modal.blade.php
resources/views/modal.blade.php
+46
-22
index.blade.php
resources/views/server/index.blade.php
+21
-19
one.blade.php
resources/views/server/one.blade.php
+49
-90
web.php
routes/web.php
+69
-3
No files found.
app/Http/Controllers/ExtensionController.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
,
...
...
app/Http/Controllers/ServerController.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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'
));
...
...
app/Http/Middleware/Parameters.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
]);
}
}
}
app/Http/Middleware/PermissionManager.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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"
];
...
...
app/Http/Middleware/ScriptParameters.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
);
}
...
...
app/Http/Middleware/Server.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
);
}
}
app/Server.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
,
...
...
public/js/liman.js
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
];
...
...
resources/views/extensions/dns/index.blade.php
Dosyayı görüntüle @
d79cbf56
<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"
>
×
</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
resources/views/feature/server.blade.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
resources/views/modal.blade.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -11,34 +11,43 @@
<span
aria-hidden=
"true"
>
×
</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($inpu
ts))
@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($selec
ts))
<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
@i
f(isset($text)
)
@i
sset($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
resources/views/server/index.blade.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
",
...
...
resources/views/server/one.blade.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -10,17 +10,17 @@
@include('modal-button',[
"
class
"
=>
"
btn
-
primary
",
"
target_id
" => "
edit
Modal
",
"
target_id
" => "
edit
",
"
text
" => "
Düzenle
"
])
@include('modal-button',[
"
class
"
=>
"
btn
-
warning
",
"
target_id
" => "
command
Modal
",
"
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
" => "
delete
Modal
",
"
target_id
" => "
delete
",
"
text
" => "
Sunucuyu
Sil
"
])
@include('modal',[
"
id
"=>"
delete
Modal
",
"
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
"=>"
edit
Modal
",
"
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
">×</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
:
5
c0a170f7b57f19953126e37
" => [
"
Domain
Adı
" => "
domain
:
text
",
"
Arayüz
" => "
interface
:
text
",
"
DNS
:
5
c0a170f7b57f19953126e37
" => "
extension_id
:
hidden
"
],
"
DHCP
:
5
c0a1c5f7b57f19953126e38
" => [
"
Domain
Adı
" => "
domain
:
text
",
"
Arayüz
" => "
interface
:
text
",
"
Subnet
" => "
subnet
:
text
",
"
DHCP
:
5
c0a1c5f7b57f19953126e38
" => "
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
">×</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
routes/web.php
Dosyayı görüntüle @
d79cbf56
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment