Сборка 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,51 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* elFinder driver for trash bin at local filesystem.
|
||||
*
|
||||
* @author NaokiSawada
|
||||
**/
|
||||
class elFinderVolumeTrash extends elFinderVolumeLocalFileSystem
|
||||
{
|
||||
/**
|
||||
* Driver id
|
||||
* Must be started from letter and contains [a-z0-9]
|
||||
* Used as part of volume id.
|
||||
*
|
||||
* @var string
|
||||
**/
|
||||
protected $driverId = 't';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
// original option of the Trash
|
||||
$this->options['lockEverything'] = false; // Lock all items in the trash to disable delete, move, rename.
|
||||
|
||||
// common options as the volume driver
|
||||
$this->options['alias'] = 'Trash';
|
||||
$this->options['quarantine'] = '';
|
||||
$this->options['rootCssClass'] = 'elfinder-navbar-root-trash';
|
||||
$this->options['copyOverwrite'] = false;
|
||||
$this->options['uiCmdMap'] = array('paste' => 'hidden', 'mkdir' => 'hidden', 'copy' => 'restore');
|
||||
$this->options['disabled'] = array('archive', 'duplicate', 'edit', 'extract', 'mkfile', 'places', 'put', 'rename', 'resize', 'upload');
|
||||
}
|
||||
|
||||
public function mount(array $opts)
|
||||
{
|
||||
if ($this->options['lockEverything']) {
|
||||
if (!is_array($opts['attributes'])) {
|
||||
$opts['attributes'] = array();
|
||||
}
|
||||
$attr = array(
|
||||
'pattern' => '/./',
|
||||
'locked' => true,
|
||||
);
|
||||
array_unshift($opts['attributes'], $attr);
|
||||
}
|
||||
// force set `copyJoin` to true
|
||||
$opts['copyJoin'] = true;
|
||||
|
||||
return parent::mount($opts);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user