Сборка 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,315 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* elFinder driver for Volume Group.
|
||||
*
|
||||
* @author Naoki Sawada
|
||||
**/
|
||||
class elFinderVolumeGroup extends elFinderVolumeDriver
|
||||
{
|
||||
|
||||
/**
|
||||
* Driver id
|
||||
* Must be started from letter and contains [a-z0-9]
|
||||
* Used as part of volume id
|
||||
*
|
||||
* @var string
|
||||
**/
|
||||
protected $driverId = 'g';
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* Extend options with required fields
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->options['type'] = 'group';
|
||||
$this->options['path'] = '/';
|
||||
$this->options['dirUrlOwn'] = true;
|
||||
$this->options['syncMinMs'] = 0;
|
||||
$this->options['tmbPath'] = '';
|
||||
$this->options['disabled'] = array(
|
||||
'archive',
|
||||
'copy',
|
||||
'cut',
|
||||
'duplicate',
|
||||
'edit',
|
||||
'empty',
|
||||
'extract',
|
||||
'getfile',
|
||||
'mkdir',
|
||||
'mkfile',
|
||||
'paste',
|
||||
'resize',
|
||||
'rm',
|
||||
'upload'
|
||||
);
|
||||
}
|
||||
|
||||
/*********************************************************************/
|
||||
/* FS API */
|
||||
/*********************************************************************/
|
||||
|
||||
/*********************** paths/urls *************************/
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
**/
|
||||
protected function _dirname($path)
|
||||
{
|
||||
return '/';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _basename($path)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _joinPath($dir, $name)
|
||||
{
|
||||
return '/' . $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _normpath($path)
|
||||
{
|
||||
return '/';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _relpath($path)
|
||||
{
|
||||
return '/';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _abspath($path)
|
||||
{
|
||||
return '/';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _path($path)
|
||||
{
|
||||
return '/';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _inpath($path, $parent)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************** file stat ********************/
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _stat($path)
|
||||
{
|
||||
if ($path === '/') {
|
||||
return array(
|
||||
'size' => 0,
|
||||
'ts' => 0,
|
||||
'mime' => 'directory',
|
||||
'read' => true,
|
||||
'write' => false,
|
||||
'locked' => true,
|
||||
'hidden' => false,
|
||||
'dirs' => 0
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _subdirs($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _dimensions($path, $mime)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
/******************** file/dir content *********************/
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function readlink($path)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _scandir($path)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _fopen($path, $mode = 'rb')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _fclose($fp, $path = '')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/******************** file/dir manipulations *************************/
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _mkdir($path, $name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _mkfile($path, $name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _symlink($source, $targetDir, $name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _copy($source, $targetDir, $name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _move($source, $targetDir, $name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _unlink($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _rmdir($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _save($fp, $dir, $name, $stat)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _getContents($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _filePutContents($path, $content)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _checkArchivers()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _chmod($path, $mode)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _findSymlinks($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _extract($path, $arc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
**/
|
||||
protected function _archive($dir, $files, $name, $arc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user