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
816e4faf
Kaydet (Commit)
816e4faf
authored
Ock 17, 2019
tarafından
ertansoftware
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Sade Fark
Merge branch 'master' of
https://github.com/mertcelen/liman
üst
3a476c5b
d4028b91
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
302 additions
and
130 deletions
+302
-130
MainController.php
app/Http/Controllers/Extension/MainController.php
+3
-0
OneController.php
app/Http/Controllers/Extension/OneController.php
+14
-1
_routes.php
app/Http/Controllers/Extension/_routes.php
+5
-2
OneController.php
app/Http/Controllers/Server/OneController.php
+2
-6
_routes.php
app/Http/Controllers/Server/_routes.php
+22
-16
PermissionManager.php
app/Http/Middleware/PermissionManager.php
+1
-2
Server.php
app/Http/Middleware/Server.php
+10
-2
Key.php
app/Key.php
+10
-4
Server.php
app/Server.php
+5
-2
User.php
app/User.php
+1
-1
folder.blade.php
resources/views/__system__/folder.blade.php
+3
-2
inputs.blade.php
resources/views/__system__/inputs.blade.php
+35
-8
functions.php
resources/views/extensions/kullanıcılar/functions.php
+52
-2
index_linux.blade.php
...urces/views/extensions/kullanıcılar/index_linux.blade.php
+79
-58
index_windows.blade.php
...ces/views/extensions/kullanıcılar/index_windows.blade.php
+27
-20
index.blade.php
resources/views/scripts/index.blade.php
+5
-4
5c3ec30c7822950ff659d4d4
storage/keys/5c3ec30c7822950ff659d4d4
+27
-0
5c3ec30c7822950ff659d4d4.pub
storage/keys/5c3ec30c7822950ff659d4d4.pub
+1
-0
No files found.
app/Http/Controllers/Extension/MainController.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -32,6 +32,9 @@ class MainController extends Controller
"city"
=>
$cities
[
0
]
]));
}
if
(
$cities
==
null
){
return
respond
(
'Bu özelliği kullanabileceğiniz hiçbir sunucunuz yok.'
);
}
return
view
(
'feature.index'
,
[
"cities"
=>
implode
(
','
,
$cities
)
]);
...
...
app/Http/Controllers/Extension/OneController.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -16,7 +16,6 @@ class OneController extends Controller
// First, check requested server has key.
$server
=
\request
(
'server'
);
if
(
$server
->
key
==
null
){
// Redirect user if requested server is not serverless.
...
...
@@ -95,4 +94,18 @@ class OneController extends Controller
}
}
public
function
runFunction
(){
$extension
=
Extension
::
where
(
'_id'
,
request
()
->
route
(
'extension_id'
))
->
first
();
require
(
base_path
(
'resources/views/extensions/'
.
strtolower
(
$extension
->
name
)
.
'/functions.php'
));
if
(
function_exists
(
request
(
'function_name'
))){
if
(
call_user_func
(
request
(
'function_name'
),
request
(
'server'
),
"SambaPardus01"
,
"cn=admin,dc=ldap,dc=lab"
)){
return
respond
(
"Kullanıcı başarıyla eklendi"
,
200
);
}
else
{
return
respond
(
"Kullanıcı eklenemedi, lütfen yöneticinizle iletişime geçiniz"
,
201
);
}
}
else
{
return
respond
(
"İşlev bulunamadı, lütfen yöneticinizle iletişime geçiniz."
,
404
);
}
}
}
app/Http/Controllers/Extension/_routes.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -38,4 +38,7 @@ Route::post('/eklentiler/betikler/ekle', 'Extension\SettingsController@addScript
// Extension View Script Remove
Route
::
post
(
'/eklentiler/betikler/sil'
,
'Extension\SettingsController@removeScriptFromView'
)
->
name
(
'extension_page_script_remove'
);
\ No newline at end of file
Route
::
post
(
'/eklentiler/betikler/sil'
,
'Extension\SettingsController@removeScriptFromView'
)
->
name
(
'extension_page_script_remove'
);
// Extension Function Api
Route
::
post
(
'/eklenti/{extension_id}/{function_name}'
,
'Extension\OneController@runFunction'
)
->
name
(
'extension_function_api'
)
->
middleware
(
'server'
);
\ No newline at end of file
app/Http/Controllers/Server/OneController.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Server;
use
App\Extension
;
use
App\Http\Controllers\Controller
;
use
App\Http\Middleware\Server
;
use
App\Jobs\RunScript
;
use
App\Key
;
use
App\Notification
;
...
...
@@ -16,11 +17,6 @@ use GuzzleHttp\Exception\GuzzleException;
class
OneController
extends
Controller
{
public
function
__construct
()
{
$this
->
middleware
(
'server'
);
}
public
function
one
(){
return
(
request
(
'server'
)
->
type
==
"linux_ssh"
||
request
(
'server'
)
->
type
==
"windows_powershell"
)
?
$this
->
authorized
()
:
$this
->
unauthorized
();
...
...
@@ -231,7 +227,7 @@ class OneController extends Controller
__
(
":old isimli sunucu adı :new olarak değiştirildi."
,[
"old"
=>
request
(
'server'
)
->
name
,
"new"
=>
request
(
'name'
)])
);
$output
=
request
(
'server'
)
->
update
([
$output
=
Server
::
where
(
'_id'
,
request
(
'server_id'
)
)
->
update
([
"name"
=>
request
(
'name'
),
"control_port"
=>
request
(
'control_port'
),
"city"
=>
request
(
'city'
)
...
...
app/Http/Controllers/Server/_routes.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -13,50 +13,56 @@ Route::post('/sunucu/ekle', 'Server\AddController@main')->name('server_add')->mi
Route
::
post
(
'/server/kontrol'
,
'Server\MainController@isAlive'
)
->
middleware
(
'parameters:ip,port'
);
// Single Server Details Route
Route
::
get
(
'/sunucular/{server_id}'
,
'Server\OneController@one'
)
->
name
(
'server_one'
);
// Server Update Route
Route
::
post
(
'/sunucu/guncelle'
,
'Server\OneController@update'
)
->
name
(
'server_update'
)
->
middleware
(
'parameters:server_id,name,control_port,city'
);
// Server' Service Status Route
Route
::
post
(
'/sunucu/kontrol'
,
'Server\OneController@serviceCheck'
)
->
name
(
'server_check'
)
->
middleware
(
'parameters:service,server_id'
);
Route
::
group
([
'middleware'
=>
[
'auth'
,
'permissions'
]],
function
()
{
// Single Server Details Route
Route
::
get
(
'/sunucular/{server_id}'
,
'Server\OneController@one'
)
->
name
(
'server_one'
);
// Server' Service Status Route
Route
::
post
(
'/sunucu/kontrol'
,
'Server\OneController@serviceCheck'
)
->
name
(
'server_check'
)
->
middleware
(
'parameters:service,server_id'
);
// Server Network Update
Route
::
post
(
'/sunucu/network'
,
'Server\OneController@network'
)
->
name
(
'server_network'
)
->
middleware
(
'parameters:ip,cidr,gateway,interface,password'
);
Route
::
post
(
'/sunucu/network'
,
'Server\OneController@network'
)
->
name
(
'server_network'
)
->
middleware
(
'parameters:ip,cidr,gateway,interface,password'
);
// Server Hostname Update
Route
::
post
(
'/sunucu/hostname'
,
'Server\OneController@hostname'
)
->
name
(
'server_hostname'
)
->
middleware
(
'parameters:hostname'
);
Route
::
post
(
'/sunucu/hostname'
,
'Server\OneController@hostname'
)
->
name
(
'server_hostname'
)
->
middleware
(
'parameters:hostname'
);
// Server Service Run,Stop,Enable,Disable Route
Route
::
post
(
'/sunucu/servis'
,
'Server\OneController@service'
)
->
name
(
'server_service'
)
->
middleware
(
'parameters:extension_id,action'
);
Route
::
post
(
'/sunucu/servis'
,
'Server\OneController@service'
)
->
name
(
'server_service'
)
->
middleware
(
'parameters:extension_id,action'
);
// Server Extension Installation Route
Route
::
post
(
'/sunucu/eklenti'
,
'Server\OneController@enableExtension'
)
->
name
(
'server_extension'
);
Route
::
post
(
'/sunucu/eklenti'
,
'Server\OneController@enableExtension'
)
->
name
(
'server_extension'
);
// Server File Upload Route
Route
::
post
(
'/sunucu/yukle'
,
'Server\OneController@upload'
)
->
name
(
'server_upload'
)
->
middleware
(
'parameters:file,path'
);
Route
::
post
(
'/sunucu/yukle'
,
'Server\OneController@upload'
)
->
name
(
'server_upload'
)
->
middleware
(
'parameters:file,path'
);
// Server Terminal Route
Route
::
get
(
'/sunucu/terminal'
,
'Server\OneController@terminal'
)
->
name
(
'server_terminal'
);
Route
::
get
(
'/sunucu/terminal'
,
'Server\OneController@terminal'
)
->
name
(
'server_terminal'
);
// Server Download File Route
Route
::
get
(
'/sunucu/indir'
,
'Server\OneController@download'
)
->
name
(
'server_download'
)
->
middleware
(
'parameters:path'
);
Route
::
get
(
'/sunucu/indir'
,
'Server\OneController@download'
)
->
name
(
'server_download'
)
->
middleware
(
'parameters:path'
);
// Server Permission Grant Route
Route
::
post
(
'/sunucu/yetkilendir'
,
'Server\OneController@grant'
)
->
name
(
'server_grant_permission'
)
->
middleware
(
'parameters:server_id,email'
);
Route
::
post
(
'/sunucu/yetkilendir'
,
'Server\OneController@grant'
)
->
name
(
'server_grant_permission'
)
->
middleware
(
'parameters:server_id,email'
);
// Remove Server Route
Route
::
post
(
'/sunucu/sil'
,
'Server\OneController@remove'
)
->
name
(
'server_remove'
)
->
middleware
(
'parameters:server_id'
);
\ No newline at end of file
Route
::
post
(
'/sunucu/sil'
,
'Server\OneController@remove'
)
->
name
(
'server_remove'
)
->
middleware
(
'parameters:server_id'
);
});
\ No newline at end of file
app/Http/Middleware/PermissionManager.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -29,7 +29,7 @@ class PermissionManager
// Loop through every validations
foreach
(
PermissionManager
::
$verify
as
$target
){
if
(
!
$this
->
check
(
$target
)){
return
respond
(
'
Liman:
Bu işlem için yetkiniz bulunmamaktadır.'
,
403
);
return
respond
(
'Bu işlem için yetkiniz bulunmamaktadır.'
,
403
);
}
}
// Process request if everything is ok.
...
...
@@ -52,7 +52,6 @@ class PermissionManager
if
(
$value
==
null
){
return
true
;
}
echo
$value
;
if
(
!
in_array
(
$value
,
request
(
'permissions'
)
->
__get
(
$target
))){
return
false
;
}
...
...
app/Http/Middleware/Server.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -21,16 +21,24 @@ class Server
if
(
$server
==
null
)
{
return
respond
(
"Sunucu bulunamadı."
,
404
);
}
//Now that everything is checked, add server variable to request to easy access and prevent more database queries.
$request
->
request
->
add
([
'server'
=>
$server
]);
//Check if ssh port is active on server.
if
(
!
$server
->
isAlive
())
{
return
respond
(
"Sunucuyla bağlantı kurulamadı."
,
503
);
}
// Check if server is serverless, which means no validation required.
if
(
$server
->
serverless
){
return
$next
(
$request
);
}
//Check if SSH key is valid or even exist for user.
if
(
!
$server
->
integrity
())
{
return
respond
(
"SSH: Sunucuya erişmek için izniniz yok."
,
403
);
}
//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
respond
(
"Server bilgisi verilmedi."
,
404
);
}
...
...
app/Key.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -21,8 +21,11 @@ class Key extends Eloquent
shell_exec
(
"ssh-keygen -t rsa -f "
.
storage_path
(
'keys'
)
.
DIRECTORY_SEPARATOR
.
$account_name
.
" -q -P ''"
);
}
//Trust target server
shell_exec
(
"ssh-keyscan -p "
.
$server_port
.
" -H "
.
$server_address
.
" >> ~/.ssh/known_hosts"
);
//Check if server is already trusted or not.
if
(
shell_exec
(
"ssh-keygen -F "
.
$server_address
.
" 2>/dev/null"
)
==
null
){
// Trust Target Server
shell_exec
(
"ssh-keyscan -p "
.
$server_port
.
" -H "
.
$server_address
.
" >> ~/.ssh/known_hosts"
);
}
//Send Keys to target
shell_exec
(
"sshpass -p '"
.
$password
.
"' ssh-copy-id -i "
.
storage_path
(
'keys'
)
.
DIRECTORY_SEPARATOR
.
$account_name
.
" "
.
$username
...
...
@@ -40,8 +43,11 @@ class Key extends Eloquent
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"
);
//Check if server is already trusted or not.
if
(
shell_exec
(
"ssh-keygen -F "
.
$server_address
.
" 2>/dev/null"
)
==
null
){
// 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 "
.
...
...
app/Server.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -120,8 +120,11 @@ class Server extends Eloquent
if
(
$key
==
null
)
{
return
false
;
}
// Trust server again just in case.
shell_exec
(
"ssh-keyscan -p "
.
$this
->
port
.
" -H "
.
$this
->
ip_address
.
" >> ~/.ssh/known_hosts"
);
//Check if server is already trusted or not.
if
(
shell_exec
(
"ssh-keygen -F "
.
$this
->
ip_address
.
" 2>/dev/null"
)
==
null
){
// Trust Target Server
shell_exec
(
"ssh-keyscan -p "
.
$this
->
port
.
" -H "
.
$this
->
ip_address
.
" >> ~/.ssh/known_hosts"
);
}
// Fix key file permissions again, just in case.
$query
=
"chmod 400 "
.
storage_path
(
'keys'
)
.
DIRECTORY_SEPARATOR
.
Auth
::
id
();
...
...
app/User.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -47,6 +47,6 @@ class User extends Authenticatable
if
(
$this
->
permissions
->
__get
(
$target
)
==
null
){
return
$this
->
isAdmin
();
}
return
array_search
(
$id
,
$this
->
permissions
->
__get
(
$target
));
return
in_array
(
$id
,
$this
->
permissions
->
__get
(
$target
));
}
}
resources/views/__system__/folder.blade.php
Dosyayı görüntüle @
816e4faf
@
foreach
(
$files
as
$key
=>
$file
)
@
if
(
is_array
(
$file
))
{
name
:
'{{$key}}'
,
children
:
[
@
include
(
'__system__.folder'
,[
"files"
=>
$file
])]
},
{
"text"
:
"
{
{$key}
}
"
,
"children"
:
[
@
include
(
'__system__.folder'
,[
"files"
=>
$file
])]
},
@
else
{
name
:
'{{$file}}'
,
children
:
[]
},
{
"text"
:
"
{
{$file}
}
"
},
@
endif
@
endforeach
\ No newline at end of file
resources/views/__system__/inputs.blade.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -9,19 +9,46 @@
</select><br>
@else
@if(explode("
:
",
$input
)[1] == "
hidden
")
<input type="
{{
explode
(
":"
,
$input
)[
1
]}}
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
" placeholder="
{{
__
(
$name
)}}
"
class="
form
-
control
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" required value="
{{
explode
(
":"
,
$name
)[
1
]}}
">@if(explode("
:
",
$input
)[1] != "
hidden
")<br>@endif
@if(explode("
:
",
$input
)[1] == "
checkbox
")
<div class="
form
-
check
">
<input class="
form
-
check
-
input
" type="
checkbox
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
">
<label class="
form
-
check
-
label
h5
">
{
{$name}
}
</label>
</div><br>
@else
<input type="
{{
explode
(
":"
,
$input
)[
1
]}}
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
" placeholder="
{{
__
(
$name
)}}
"
class="
form
-
control
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" required value="
{{
explode
(
":"
,
$name
)[
1
]}}
">@if(explode("
:
",
$input
)[1] != "
hidden
")<br>@endif
@endif
@elseif(isset(
$disabled
))
<h5 class="
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" style="
padding
-
top
:
15
px
;
">
{
{__(explode(":",$name)[0])}
}
</h5>
<input type="
{{
explode
(
":"
,
$input
)[
1
]}}
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
" placeholder="
{{
__
(
$name
)}}
"
class="
form
-
control
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" required disabled hidden style="
margin
-
top
:
15
px
">
@if(explode("
:
",
$input
)[1] == "
checkbox
")
<div class="
form
-
check
">
<input class="
form
-
check
-
input
" type="
checkbox
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
">
<label class="
form
-
check
-
label
h5
">
{
{$name}
}
</label>
</div><br>
@else
<h5 class="
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" style="
padding
-
top
:
15
px
;
">
{
{__(explode(":",$name)[0])}
}
</h5>
<input type="
{{
explode
(
":"
,
$input
)[
1
]}}
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
" placeholder="
{{
__
(
$name
)}}
"
class="
form
-
control
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" required disabled hidden style="
margin
-
top
:
15
px
">
@endif
@elseif(explode("
:
",
$input
)[1] == "
textarea
")
<textarea name="
{{
explode
(
":"
,
$input
)[
0
]}}
"
class="
form
-
control
" required></textarea><br>
@else
<h5>
{
{__($name)}
}
</h5>
<input type="
{{
explode
(
":"
,
$input
)[
1
]}}
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
" placeholder="
{{
__
(
$name
)}}
"
class="
form
-
control
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" required>@if(explode("
:
",
$input
)[1] != "
hidden
")<br>@endif
@if(explode("
:
",
$input
)[1] == "
checkbox
")
<div class="
form
-
check
">
<input class="
form
-
check
-
input
" type="
checkbox
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
">
<label class="
form
-
check
-
label
h5
">
{
{$name}
}
</label>
</div><br>
@else
<h5>
{
{__($name)}
}
</h5>
<input type="
{{
explode
(
":"
,
$input
)[
1
]}}
" name="
{{
explode
(
":"
,
$input
)[
0
]}}
" placeholder="
{{
__
(
$name
)}}
"
class="
form
-
control
@
if
(
isset
(
$random
,
$id
)){{
$random
}}
{{
$id
}}
@
endif
" required>@if(explode("
:
",
$input
)[1] != "
hidden
")<br>@endif
@endif
@endif
@endif
@endforeach
...
...
resources/views/extensions/kullanıcılar/functions.php
Dosyayı görüntüle @
816e4faf
<?php
function
hello_world
(){
echo
"hello world"
;
function
_init
(
$ip
,
$port
,
$password
,
$rdn
){
$ldap_connection
=
ldap_connect
(
$ip
,
$port
);
ldap_set_option
(
$ldap_connection
,
LDAP_OPT_PROTOCOL_VERSION
,
3
);
try
{
ldap_bind
(
$ldap_connection
,
$rdn
,
$password
);
}
catch
(
Exception
$e
){
echo
$e
->
getMessage
();
}
return
$ldap_connection
;
}
function
_search
(
$connection
,
$dn
,
$filter
,
$extra
){
$search
=
ldap_search
(
$connection
,
$dn
,
$filter
,
$extra
);
$results
=
ldap_get_entries
(
$connection
,
$search
);
$mert
=
[];
for
(
$i
=
0
;
$i
<
$results
[
"count"
]
;
$i
++
){
$user
=
$results
[
$i
][
"dn"
];
$arr
=
explode
(
","
,
$user
);
$arr
=
array_reverse
(
$arr
);
$res
=
array
();
$t
=
&
$res
;
foreach
(
$arr
as
$k
)
{
if
(
empty
(
$t
[
$k
]))
{
if
(
!
starts_with
(
$k
,
"cn"
)){
$t
[
$k
]
=
array
();
}
else
{
$t
[
$k
]
=
$k
;
}
$t
=
&
$t
[
$k
];
}
}
unset
(
$t
);
$mert
=
array_merge_recursive
(
$mert
,
$res
);
}
return
$mert
;
}
function
addUser
(
$server
,
$password
,
$rdn
){
$user
[
"firstname"
]
=
request
(
"firstname"
);
$user
[
"surname"
]
=
request
(
"surname"
);
$user
[
"fullname"
]
=
request
(
"fullname"
);
$user
[
"username"
]
=
request
(
"username"
);
$user
[
"password"
]
=
request
(
"password"
);
$user
[
"forcechangepass"
]
=
(
request
()
->
exists
(
'forcechangepass'
))
?
"true"
:
"false"
;
$user
[
"neverexpired"
]
=
(
request
()
->
exists
(
'neverexpired'
))
?
"true"
:
"false"
;
$user
[
"lockaccount"
]
=
(
request
()
->
exists
(
'lockaccount'
))
?
"true"
:
"false"
;
$user
[
"objectclass"
]
=
"posixAccount"
;
$user
[
"cantchangepass"
]
=
(
request
()
->
exists
(
'cantchangepass'
))
?
"true"
:
"false"
;
$ldap_connection
=
_init
(
$server
->
ip_address
,
$server
->
port
,
$password
,
$rdn
);
ldap_add
(
$ldap_connection
,
request
(
'tree_path'
),
$user
);
}
\ No newline at end of file
resources/views/extensions/kullanıcılar/index_linux.blade.php
Dosyayı görüntüle @
816e4faf
<?php
$ldap_connection
=
ldap_connect
(
$server
->
ip_address
);
ldap_set_option
(
$ldap_connection
,
LDAP_OPT_PROTOCOL_VERSION
,
3
);
$conn
=
_init
(
$server
->
ip_address
,
$server
->
port
,
"SambaPardus01"
,
"cn=admin,dc=ldap,dc=lab"
);
$pass
=
"SambaPardus01"
;
try
{
$result
=
ldap_bind
(
$ldap_connection
,
"cn=admin,dc=ldap,dc=lab"
,
$pass
);
}
catch
(
Exception
$e
){
echo
$e
->
getMessage
();
}
$search
=
ldap_search
(
$ldap_connection
,
"dc=ldap,dc=lab"
,
"(objectclass=posixAccount)"
,
[
"dn"
]);
$users
=
ldap_get_entries
(
$ldap_connection
,
$search
);
$mert
=
[];
$user_details
=
[];
for
(
$i
=
0
;
$i
<
$users
[
"count"
]
;
$i
++
){
$user
=
$users
[
$i
][
"dn"
];
$arr
=
explode
(
","
,
$user
);
$arr
=
array_reverse
(
$arr
);
$current
=
[];
$tail
=
null
;
$res
=
array
();
$t
=
&
$res
;
foreach
(
$arr
as
$k
)
{
if
(
empty
(
$t
[
$k
]))
{
if
(
!
starts_with
(
$k
,
"cn"
)){
$t
[
$k
]
=
array
();
}
else
{
$t
[
$k
]
=
$k
;
$search
=
ldap_search
(
$ldap_connection
,
"dc=ldap,dc=lab"
,
$k
);
$attributes
=
ldap_get_entries
(
$ldap_connection
,
$search
)[
0
];
$user_details
[
"cn="
.
$attributes
[
"cn"
][
0
]][
"uid"
]
=
$attributes
[
"uid"
][
0
];
$user_details
[
"cn="
.
$attributes
[
"cn"
][
0
]][
"uidnumber"
]
=
$attributes
[
"uidnumber"
][
0
];
$user_details
[
"cn="
.
$attributes
[
"cn"
][
0
]][
"homedirectory"
]
=
$attributes
[
"homedirectory"
][
0
];
$user_details
[
"cn="
.
$attributes
[
"cn"
][
0
]][
"gidnumber"
]
=
$attributes
[
"gidnumber"
][
0
];
$user_details
[
"cn="
.
$attributes
[
"cn"
][
0
]][
"cn"
]
=
$attributes
[
"cn"
][
0
];
}
$t
=
&
$t
[
$k
];
}
}
unset
(
$t
);
$mert
=
array_merge_recursive
(
$mert
,
$res
);
}
hello_world
();
$results
=
_search
(
$conn
,
"dc=ldap,dc=lab"
,
"(objectclass=posixAccount)"
,
[
"dn"
]);
?>
<script
src=
"{{asset('/js/treeview.min.js')}}"
></script>
<link
rel=
"stylesheet"
href=
"{{asset('/css/tree.css')}}"
>
<script
src=
"//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.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>
@include('modal-button',[
"class" => "btn-primary",
"target_id" => "add_user",
"text" => "Kullanıcı Ekle"
])
<br><br>
<div
class=
"container"
>
<div
class=
"row"
>
<div
class=
"col"
>
<div
id=
"tree"
></div>
<input
type=
"search"
onchange=
"search()"
id=
"q"
/><br><br>
<div
id=
"ldap_tree"
></div>
</div>
<div
class=
"col pt-3"
>
<table
class=
"table"
>
...
...
@@ -79,16 +50,66 @@
</div>
<script>
let
tree
=
new
TreeView
([
@
include
(
"__system__.folder"
,[
"files"
=>
$mert
])
],
'tree'
);
tree
.
on
(
'select'
,
function
(
e
){
let
cn
=
e
.
data
.
name
;
document
.
getElementById
(
"uid"
).
innerText
=
user_details
[
cn
][
"uid"
];
document
.
getElementById
(
"uidnumber"
).
innerText
=
user_details
[
cn
][
"uidnumber"
];
document
.
getElementById
(
"homedirectory"
).
innerText
=
user_details
[
cn
][
"homedirectory"
];
document
.
getElementById
(
"gidnumber"
).
innerText
=
user_details
[
cn
][
"gidnumber"
];
document
.
getElementById
(
"cn"
).
innerText
=
user_details
[
cn
][
"cn"
];
});
let
user_details
=
<?php
echo
json_encode
(
$user_details
)
?>
;
</script>
\ No newline at end of file
function
asd
(){
$
(
'#ldap_tree'
).
jstree
({
"plugins"
:
[
"contextmenu"
,
"search"
],
'core'
:
{
'data'
:
[
@
include
(
"__system__.folder"
,[
"files"
=>
$results
])
]
},
'contextmenu'
:
{
"items"
:
items
=
{
addUser
:
{
label
:
"{{__("
Kullan
ı
c
ı
Ekle
")}}"
,
action
:
function
(
obj
)
{
console
.
log
(
obj
);
},
icon
:
"fa fa-cog"
},
deleteUser
:
{
label
:
"{{__("
Kullan
ı
c
ı
y
ı
Sil
")}}"
,
action
:
function
(
obj
)
{
console
.
log
(
obj
);
},
icon
:
"fa fa-trash"
}
}
}
});
}
asd
();
</script>
<script>
function
search
(){
$
(
"#ldap_tree"
).
jstree
(
true
).
search
(
$
(
"#q"
).
val
());
}
</script>
@include('modal',[
"id"=>"add_user",
"title" => "Kullanıcı Ekle",
"url" => route('extension_function_api',[
"extension_id" => $extension->_id,
"function_name" => "addUser"
]),
"next" => "reload",
"inputs" => [
"İsim" => "firstname:text",
"Soyisim" => "surname:text",
"Tüm İsim" => "fullname:text",
"Kullanıcı Adı" => "username:text",
"Parola" => "password:password",
"İlk oturum açılışında değişime zorla" => "forcechangepass:checkbox",
"Parola süresi asla bitmesin" => "neverexpired:checkbox",
"Hesabı kilitle" => "lockaccount:checkbox",
"Kullanıcı parolasını değiştiremez" => "cantchangepass:checkbox",
"LDAP PATH" => "tree_path:text",
"Sunucu Id:$server->_id" => "server_id:hidden"
],
"submit_text" => "Yetkilendir"
])
\ No newline at end of file
resources/views/extensions/kullanıcılar/index_windows.blade.php
Dosyayı görüntüle @
816e4faf
<?php
$ldap_connection
=
ldap_connect
(
$server
->
ip_address
);
ldap_set_option
(
$ldap_connection
,
LDAP_OPT_PROTOCOL_VERSION
,
3
);
ldap_set_option
(
$ldap_connection
,
LDAP_OPT_REFERRALS
,
0
);
$query
=
"openssl s_client -connect "
.
$server
->
ip_address
.
":"
.
$server
->
control_port
.
" 2>/dev/null </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'"
;
$cert
=
shell_exec
(
$query
);
ldap_set_option
(
$ldap_connection
,
LDAP_OPT_X_TLS_CACERTFILE
,
$cert
);
ldap_set_option
(
$ldap_connection
,
LDAP_OPT_X_TLS_REQUIRE_CERT
,
LDAP_OPT_X_TLS_HARD
);
$pass
=
"SambaPardus01"
;
try
{
$result
=
ldap_bind
(
$ldap_connection
,
"
administrator@win.
lab"
,
$pass
);
$result
=
ldap_bind
(
$ldap_connection
,
"
cn=administrator,cn=Users,dc=win,dc=
lab"
,
$pass
);
}
catch
(
Exception
$e
){
dd
(
$e
->
getMessage
());
}
$search
=
ldap_search
(
$ldap_connection
,
"dc=win,dc=lab"
,
"(objectclass=person)"
);
$users
=
ldap_get_entries
(
$ldap_connection
,
$search
);
$mert
=
[];
...
...
@@ -46,15 +52,15 @@ for($i = 0 ; $i < $users["count"] ; $i++){
}
$user_details
[
$k
][
"cn"
]
=
$attributes
[
0
][
"cn"
][
0
];
$user_details
[
$k
][
"name"
]
=
$attributes
[
0
][
"name"
][
0
];
$user_details
[
$k
][
"sn"
]
=
$attributes
[
0
][
"sn"
][
0
];
$user_details
[
$k
][
"givenName"
]
=
$attributes
[
0
][
"givenName"
][
0
];
$user_details
[
$k
][
"samaccountname"
]
=
$attributes
[
0
][
"samaccountname"
][
0
];
$user_details
[
$k
][
"whenCreated"
]
=
$attributes
[
0
][
"whenCreated"
][
0
];
$user_details
[
$k
][
"whenChanged"
]
=
$attributes
[
0
][
"whenChanged"
][
0
];
$user_details
[
$k
][
"pwdLastSet"
]
=
$attributes
[
0
][
"pwdLastSet"
][
0
];
$user_details
[
$k
][
"lastLogon"
]
=
$attributes
[
0
][
"lastLogon"
][
0
];
$user_details
[
$k
][
"lastLogoff"
]
=
$attributes
[
0
][
"lastLogoff"
][
0
];
$user_details
[
$k
][
"accountExpires"
]
=
$attributes
[
0
][
"accountExpires"
][
0
];
//
$user_details[$k]["sn"] = $attributes[0]["sn"][0];
//
$user_details[$k]["givenName"] = $attributes[0]["givenName"][0];
//
$user_details[$k]["samaccountname"] = $attributes[0]["samaccountname"][0];
//
$user_details[$k]["whenCreated"] = $attributes[0]["whenCreated"][0];
//
$user_details[$k]["whenChanged"] = $attributes[0]["whenChanged"][0];
//
$user_details[$k]["pwdLastSet"] = $attributes[0]["pwdLastSet"][0];
//
$user_details[$k]["lastLogon"] = $attributes[0]["lastLogon"][0];
//
$user_details[$k]["lastLogoff"] = $attributes[0]["lastLogoff"][0];
//
$user_details[$k]["accountExpires"] = $attributes[0]["accountExpires"][0];
}
$t
=
&
$t
[
$k
];
...
...
@@ -131,16 +137,16 @@ for($i = 0 ; $i < $users["count"] ; $i++){
tree
.
on
(
'select'
,
function
(
e
){
let
cn
=
e
.
data
.
name
;
document
.
getElementById
(
"cn"
).
innerText
=
user_details
[
cn
][
"cn"
];
document
.
getElementById
(
"whencreated"
).
innerText
=
user_details
[
cn
][
"whencreated"
];
document
.
getElementById
(
"whenchanged"
).
innerText
=
user_details
[
cn
][
"whenchanged"
];
//
document.getElementById("whencreated").innerText = user_details[cn]["whencreated"];
//
document.getElementById("whenchanged").innerText = user_details[cn]["whenchanged"];
document
.
getElementById
(
"name"
).
innerText
=
user_details
[
cn
][
"name"
];
document
.
getElementById
(
"sn"
).
innerText
=
user_details
[
cn
][
"sn"
];
document
.
getElementById
(
"givenName"
).
innerText
=
user_details
[
cn
][
"givenName"
];
document
.
getElementById
(
"samaccountname"
).
innerText
=
user_details
[
cn
][
"samaccountname"
];
document
.
getElementById
(
"pwdLastSet"
).
innerText
=
user_details
[
cn
][
"pwdLastSet"
];
document
.
getElementById
(
"lastLogon"
).
innerText
=
user_details
[
cn
][
"lastLogon"
];
document
.
getElementById
(
"lastLogoff"
).
innerText
=
user_details
[
cn
][
"lastLogoff"
];
document
.
getElementById
(
"accountExpires"
).
innerText
=
user_details
[
cn
][
"accountExpires"
];
//
document.getElementById("sn").innerText = user_details[cn]["sn"];
//
document.getElementById("givenName").innerText = user_details[cn]["givenName"];
//
document.getElementById("samaccountname").innerText = user_details[cn]["samaccountname"];
//
document.getElementById("pwdLastSet").innerText = user_details[cn]["pwdLastSet"];
//
document.getElementById("lastLogon").innerText = user_details[cn]["lastLogon"];
//
document.getElementById("lastLogoff").innerText = user_details[cn]["lastLogoff"];
//
document.getElementById("accountExpires").innerText = user_details[cn]["accountExpires"];
});
let
user_details
=
<?php
echo
json_encode
(
$user_details
)
?>
;
</script>
\ No newline at end of file
resources/views/scripts/index.blade.php
Dosyayı görüntüle @
816e4faf
...
...
@@ -4,9 +4,9 @@
@
include
(
'title'
,[
"title"
=>
"Betikler"
])
<
button
type
=
"button"
class
="
btn
btn
-
success
" onclick="
window
.
location
.
href
=
'{{route('
script_add
')}}'
">
{{
__("
Betik
Oluştur
")
}}
</button>
{{
--<
button
type
=
"button"
class
="
btn
btn
-
success
" onclick="
window
.
location
.
href
=
'{{route('
script_add
')}}'
">--}}
{{
--{{ __("
Betik
Oluştur
") }}--
}}
{
{--</button>--}
}
@include('modal-button',[
"
class
"
=>
"
btn
-
primary
",
...
...
@@ -32,7 +32,8 @@
</thead>
<tbody>
@foreach (
$scripts
as
$script
)
<tr class="
highlight
" onclick="
window
.
location
.
href
=
'{{route('
script_one
',$script->_id)}}'
">
{{--<tr class="
highlight
" onclick="
window
.
location
.
href
=
'{{route('
script_one
',$script->_id)}}'
">--}}
<tr class="">
<td>
{
{$script->name}
}
</td>
</tr>
@endforeach
...
...
storage/keys/5c3ec30c7822950ff659d4d4
0 → 100644
Dosyayı görüntüle @
816e4faf
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAzpQSCBvij2klRGeKYZP50nv8ySK8SjNmXPwhfAMC7hE030Gh
WJGbEPvOYKffmNso3Tnk9md8ykgUVrA+1f0LasZGORhFQlqS2FNfENK7/eugAuDz
EeDUEz9caa/+5xiDxWwdpq2i5AuEFmFcSZ+oh8zQedh79UrD+S1oUr4yM5v+vAq8
ksFCHk5Np1O7dbtcBkgjmBxv03SuRxldN8OQSHlPycaRQlb9P0x+LW0WC+HFSnox
EkqaFM5oyGHCfq6jdz+gObW/crjLeji3s9DXWxNDK67QIFkloiYVBNu3QVrbTuGT
o0b8ExZGH0Vfn5m4s3g6UCQL7LGCbHTvOR8r+wIDAQABAoIBACuEid/nb+ziK5Wj
ckVoFOLAd9ovVRcUiOXhv3QOdlmMimTVwJWV5uLHCQzXkIT09kDUZ2V5G5LJaG9y
pWoS6orNxhFVCZIW3oRv28EBg9TUBFtW5B3KDSMY3/DrwHkScv/t7LkmLwB3ZJYK
YJSp66jf/rMMZeCgpXQimq2Dn7O7Mh34faHCU/dFLT8SC3UUoMQzRWQC0CtdbMVW
ECFImL5nvPPhJvs8F37CaNX70YuqswqYVMNvNxvIccG06FIE57bVtQYgkOoc1imR
6r+KCgyD1dEV5lTQZycUxrbY06H1ti4Dw4JeMxyE01RufYwJQ87X+ib6Wmb2OXcj
tQH9O7ECgYEA61v+vJ1/7Vu2wAePxInr7OHJmtpPlnO7AD1CSEgw0qx5FZrCB3UG
kIMWz3UjKKNyarD/L4WskQfxNJ86mOZ+cbGhhoS8XUTRg3C2MMhPW5yo0lY9OaHU
Hd7vamyRsxfGbHTxj7+3N6/4IRaPiZlgUtX3v3EGGBi1g4AxLvGk9PcCgYEA4LHr
hTzxHuHx66r6eF15qJwFA1vapDoz1h0SbZ50QYpW3tl/PNfAmCV1qYVIyVVeWw7B
hGQCYNANbFeby5pkAe/LWN3GjqtLJabJih6OxH60kXOnq0ktZfgGPJtWsMevzKUq
i27vAwxNW2o2ANkdB9CZpHas5Arb6Lh4x8as9B0CgYEAkxYqC7wuX6sqebYADibX
r3Gn6cO3a2ImIs8l5kBfarno7iyKR9jF4nhaQAqHj3UeIzk8MXnLz9Nz1ZwRJc8e
hHUragL4KR3CBe/hnHkCx1EPXGwS1TqicoyJeSwinhckpVEsSdbZbM7nNd6Ak9Cr
lvkrXJQI5/RBM85gbmML4R8CgYEAgUd9FgTxSm5/rbOLNvO5Sryx2bPgwXrHVlsV
vkJb61W4E7IaFhygsCllYGrSbRyUFFoSF6UfBSrPflWNywCCp+abHf9D/dQqgXhM
Hw7j38RzCfj8MH4DA9dHZ1mM8FuEF3+0UdM664sJex5KAgTpQhTQQaMSaIai7mws
+eyimDUCgYEAltA3eL6p4OEAn2/hxYfKKFuIGyXeqjLfukDLS2G2W1K64He24ZKO
fzqISFjmAcX0zNh9pGWppm/k/DnjrFRvM1wDcsjqMXvYoOsY7okaRiQole8bSpOo
S3Azbaq/FEkxgL616FpBZWx3YA0BnEGAzVzUxJXY5dZLt/jSU0nZXVw=
-----END RSA PRIVATE KEY-----
storage/keys/5c3ec30c7822950ff659d4d4.pub
0 → 100644
Dosyayı görüntüle @
816e4faf
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOlBIIG+KPaSVEZ4phk/nSe/zJIrxKM2Zc/CF8AwLuETTfQaFYkZsQ+85gp9+Y2yjdOeT2Z3zKSBRWsD7V/QtqxkY5GEVCWpLYU18Q0rv966AC4PMR4NQTP1xpr/7nGIPFbB2mraLkC4QWYVxJn6iHzNB52Hv1SsP5LWhSvjIzm/68CrySwUIeTk2nU7t1u1wGSCOYHG/TdK5HGV03w5BIeU/JxpFCVv0/TH4tbRYL4cVKejESSpoUzmjIYcJ+rqN3P6A5tb9yuMt6OLez0NdbE0MrrtAgWSWiJhUE27dBWttO4ZOjRvwTFkYfRV+fmbizeDpQJAvssYJsdO85Hyv7 mert@pardus17011
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