Сборка REDL: панель на PHP 8, капча-тумблер, закрытые уязвимости, установщики в один клик
- панель работает на PHP 8.4 (оригинал под PHP 7.0): elFinder utf8_encode, apache_get_modules, warnings - капча выключена и управляется из админки (флаг captcha_enable + блок настроек) - закрыты две SQL-инъекции без авторизации (createAuthLog: пароль из POST и CF-Connecting-IP) - убрано хранение паролей в открытом виде в authlog, XSS в поле ref - установщики install-panel.sh и install-node.sh (оригинальный затирал sources.list репозиториями Debian 9) - современный Dockerfile (оригинальный на debian:stretch больше не собирается) - планировщик и автозапуск работают без systemd - брендинг REDL.IO, год 2026, ссылки на redl.io - документация на русском: ИЗМЕНЕНИЯ, БЕЗОПАСНОСТЬ, ИНСТРУКЦИЯ
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/*
|
||||
Copyright (c) 2020 HOSTINPL (HOSTING-RUS) https://vk.com/hosting_rus
|
||||
Developed by Samir Shelenko and Alexander Zemlyanoy (https://vk.com/id00v / https://vk.com/mrsasha082)
|
||||
*/
|
||||
?>
|
||||
<div class="footer bg-white py-4 d-flex flex-lg-column" id="kt_footer">
|
||||
<div class="container d-flex flex-column flex-md-row align-items-center justify-content-between">
|
||||
<div class="text-dark order-2 order-md-1">
|
||||
<span class="text-muted font-weight-bold mr-2">2026©</span>
|
||||
<a href="https://redl.io" target="_blank" class="text-dark-75 text-hover-primary">REDL.IO — Хостинг с искусственным интеллектом</a>
|
||||
</div>
|
||||
<div class="nav nav-dark order-1 order-md-2">
|
||||
<a href="/contacts" class="nav-link pr-3 pl-0">Контакты</a>
|
||||
<a href="https://redl.io" target="_blank" class="nav-link px-3">REDL.IO</a>
|
||||
<a href="javascript:;" class="nav-link pl-3 pr-0">Пользователей на сайте: <div style="margin-left: 0.25rem;" id="online"></div></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
toastr.options = {
|
||||
"closeButton": true,
|
||||
"debug": false,
|
||||
"newestOnTop": false,
|
||||
"progressBar": true,
|
||||
"positionClass": "toast-top-right",
|
||||
"preventDuplicates": false,
|
||||
"onclick": null,
|
||||
"showDuration": "300",
|
||||
"hideDuration": "1000",
|
||||
"timeOut": "3500",
|
||||
"extendedTimeOut": "3000",
|
||||
"showEasing": "swing",
|
||||
"hideEasing": "linear",
|
||||
"showMethod": "fadeIn",
|
||||
"hideMethod": "fadeOut"
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(
|
||||
function get() {
|
||||
setTimeout(getstatus('online'), 105000);
|
||||
setTimeout(get, 35000);
|
||||
}
|
||||
);
|
||||
function getstatus(action) {
|
||||
$.ajax({
|
||||
url: '/common/footer/getstatus/'+action,
|
||||
dataType: 'text',
|
||||
success: function(data) {
|
||||
data = $.parseJSON(data);
|
||||
switch(data.status) {
|
||||
case 'error':
|
||||
toastr.error(data.error);
|
||||
$('#controlBtns button').prop('disabled', false);
|
||||
break;
|
||||
case 'online':
|
||||
console.info(data.online);
|
||||
$("#online").html(data.online_usr)
|
||||
break
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user