mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-31 01:35:36 +02:00
Fix issues
This commit is contained in:
parent
18cdc49b88
commit
945c29d1bc
@ -47,16 +47,17 @@ if (isset($config['filemanager']['message']) === true) {
|
|||||||
$config['filemanager']['message'] = null;
|
$config['filemanager']['message'] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$directory = (string) get_parameter('directory');
|
|
||||||
if (empty($directory) === true) {
|
|
||||||
$directory = 'images';
|
|
||||||
} else {
|
|
||||||
$directory = str_replace('\\', '/', $directory);
|
|
||||||
$directory = filemanager_safe_directory($directory, 'images');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add custom directories here.
|
// Add custom directories here.
|
||||||
$fallback_directory = 'images';
|
$fallback_directory = 'images';
|
||||||
|
// Get directory.
|
||||||
|
$directory = (string) get_parameter('directory');
|
||||||
|
if (empty($directory) === true) {
|
||||||
|
$directory = $fallback_directory;
|
||||||
|
} else {
|
||||||
|
$directory = str_replace('\\', '/', $directory);
|
||||||
|
$directory = filemanager_safe_directory($directory, $fallback_directory);
|
||||||
|
}
|
||||||
|
|
||||||
// Banned directories.
|
// Banned directories.
|
||||||
$banned_directories['include'] = true;
|
$banned_directories['include'] = true;
|
||||||
$banned_directories['godmode'] = true;
|
$banned_directories['godmode'] = true;
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
* ============================================================================
|
* ============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
// Get global data.
|
// Get global data.
|
||||||
// Constants.
|
// Constants.
|
||||||
define('MIME_UNKNOWN', 0);
|
define('MIME_UNKNOWN', 0);
|
||||||
@ -139,13 +138,6 @@ function upload_file($upload_file_or_zip, $default_real_directory)
|
|||||||
$config['filemanager']['correct_upload_file'] = 0;
|
$config['filemanager']['correct_upload_file'] = 0;
|
||||||
$config['filemanager']['message'] = null;
|
$config['filemanager']['message'] = null;
|
||||||
|
|
||||||
$sec2 = get_parameter('sec2');
|
|
||||||
if ($sec2 === 'enterprise/godmode/agentes/collections' || $sec2 === 'advanced/collections') {
|
|
||||||
$homedir_filemanager = io_safe_output($config['attachment_store']).'/collection';
|
|
||||||
} else {
|
|
||||||
$homedir_filemanager = io_safe_output($config['homedir']);
|
|
||||||
}
|
|
||||||
|
|
||||||
check_login();
|
check_login();
|
||||||
|
|
||||||
if (! check_acl($config['id_user'], 0, 'AW')) {
|
if (! check_acl($config['id_user'], 0, 'AW')) {
|
||||||
@ -172,9 +164,7 @@ function upload_file($upload_file_or_zip, $default_real_directory)
|
|||||||
if ($upload_file === true) {
|
if ($upload_file === true) {
|
||||||
if (isset($_FILES['file']) === true && empty($_FILES['file']['name']) === false) {
|
if (isset($_FILES['file']) === true && empty($_FILES['file']['name']) === false) {
|
||||||
$filename = $_FILES['file']['name'];
|
$filename = $_FILES['file']['name'];
|
||||||
$filesize = $_FILES['file']['size'];
|
|
||||||
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
|
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
|
||||||
$directory = filemanager_safe_directory((string) get_parameter('directory'));
|
|
||||||
$umask = io_safe_output((string) get_parameter('umask'));
|
$umask = io_safe_output((string) get_parameter('umask'));
|
||||||
|
|
||||||
if (strpos($real_directory, $default_real_directory) !== 0) {
|
if (strpos($real_directory, $default_real_directory) !== 0) {
|
||||||
@ -186,11 +176,7 @@ function upload_file($upload_file_or_zip, $default_real_directory)
|
|||||||
ui_print_error_message(__('Security error'));
|
ui_print_error_message(__('Security error'));
|
||||||
} else {
|
} else {
|
||||||
// Copy file to directory and change name.
|
// Copy file to directory and change name.
|
||||||
if (empty($directory) === true) {
|
$nombre_archivo = $real_directory.'/'.$filename;
|
||||||
$nombre_archivo = $real_directory.'/'.$filename;
|
|
||||||
} else {
|
|
||||||
$nombre_archivo = $real_directory.'/'.$directory.'/'.$filename;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! @copy($_FILES['file']['tmp_name'], $nombre_archivo)) {
|
if (! @copy($_FILES['file']['tmp_name'], $nombre_archivo)) {
|
||||||
$config['filemanager']['message'] = ui_print_error_message(__('Upload error'));
|
$config['filemanager']['message'] = ui_print_error_message(__('Upload error'));
|
||||||
@ -215,10 +201,8 @@ function upload_file($upload_file_or_zip, $default_real_directory)
|
|||||||
&& empty($_FILES['file']['name']) === false
|
&& empty($_FILES['file']['name']) === false
|
||||||
) {
|
) {
|
||||||
$filename = $_FILES['file']['name'];
|
$filename = $_FILES['file']['name'];
|
||||||
$filesize = $_FILES['file']['size'];
|
|
||||||
$filepath = $_FILES['file']['tmp_name'];
|
$filepath = $_FILES['file']['tmp_name'];
|
||||||
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
|
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
|
||||||
$directory = filemanager_safe_directory((string) get_parameter('directory'));
|
|
||||||
|
|
||||||
if (strpos($real_directory, $default_real_directory) !== 0) {
|
if (strpos($real_directory, $default_real_directory) !== 0) {
|
||||||
// Perform security check to determine whether received upload
|
// Perform security check to determine whether received upload
|
||||||
@ -270,7 +254,6 @@ function create_text_file($default_real_directory)
|
|||||||
|
|
||||||
if (empty($filename) === false) {
|
if (empty($filename) === false) {
|
||||||
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
|
$real_directory = filemanager_safe_directory((string) get_parameter('real_directory'));
|
||||||
$directory = filemanager_safe_directory((string) get_parameter('directory'));
|
|
||||||
$umask = (string) get_parameter('umask');
|
$umask = (string) get_parameter('umask');
|
||||||
|
|
||||||
if (strpos($real_directory, $default_real_directory) !== 0) {
|
if (strpos($real_directory, $default_real_directory) !== 0) {
|
||||||
@ -281,26 +264,28 @@ function create_text_file($default_real_directory)
|
|||||||
// corresponding .htaccess).
|
// corresponding .htaccess).
|
||||||
ui_print_error_message(__('Security error'));
|
ui_print_error_message(__('Security error'));
|
||||||
} else {
|
} else {
|
||||||
if (empty($directory) === true) {
|
$nombre_archivo = $real_directory.'/'.$filename;
|
||||||
$nombre_archivo = $real_directory.'/'.$filename;
|
|
||||||
} else {
|
|
||||||
$nombre_archivo = $real_directory.'/'.$directory.'/'.$filename;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! @touch($nombre_archivo)) {
|
try {
|
||||||
$config['filemanager']['message'] = ui_print_error_message(__('Error creating file'));
|
// Create the file.
|
||||||
} else {
|
$result = touch($nombre_archivo);
|
||||||
if ($umask !== '') {
|
|
||||||
chmod($nombre_archivo, $umask);
|
if ($result === true) {
|
||||||
|
if ($umask !== '') {
|
||||||
|
chmod($nombre_archivo, $umask);
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_print_success_message(__('File created correctly'));
|
||||||
|
$config['filemanager']['correct_upload_file'] = 1;
|
||||||
|
} else {
|
||||||
|
throw new Exception(__('Error creating file'));
|
||||||
}
|
}
|
||||||
|
} catch (Exception $ex) {
|
||||||
ui_print_success_message(__('Upload correct'));
|
$config['filemanager']['message'] = ui_print_error_message($ex->getMessage());
|
||||||
|
|
||||||
$config['filemanager']['correct_upload_file'] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ui_print_error_message(__('Error creating file with empty name'));
|
$config['filemanager']['message'] = ui_print_error_message(__('Error creating file with empty name'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,7 +383,9 @@ if ($delete_file === true) {
|
|||||||
/**
|
/**
|
||||||
* Recursive delete directory and empty or not directory.
|
* Recursive delete directory and empty or not directory.
|
||||||
*
|
*
|
||||||
* @param string $dir The dir to deletete
|
* @param string $dir The dir to deletete.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
function filemanager_delete_directory($dir)
|
function filemanager_delete_directory($dir)
|
||||||
{
|
{
|
||||||
@ -428,8 +415,9 @@ function filemanager_delete_directory($dir)
|
|||||||
* Read a directory recursibly and return a array with the files with
|
* Read a directory recursibly and return a array with the files with
|
||||||
* the absolute path and relative
|
* the absolute path and relative
|
||||||
*
|
*
|
||||||
* @param string $dir absoute dir to scan
|
* @param string $dir Absoute dir to scan.
|
||||||
* @param string $relative_path Relative path to scan, by default ''
|
* @param string $relative_path Relative path to scan, by default ''.
|
||||||
|
* @param boolean $add_empty_dirs Add empty dirs.
|
||||||
*
|
*
|
||||||
* @return array The files in the dirs, empty array for empty dir of files.
|
* @return array The files in the dirs, empty array for empty dir of files.
|
||||||
*/
|
*/
|
||||||
@ -437,14 +425,14 @@ function filemanager_read_recursive_dir($dir, $relative_path='', $add_empty_dirs
|
|||||||
{
|
{
|
||||||
$return = [];
|
$return = [];
|
||||||
|
|
||||||
// Windows compatibility
|
// Windows compatibility.
|
||||||
$dir = str_replace('\\', '/', $dir);
|
$dir = str_replace('\\', '/', $dir);
|
||||||
$relative_path = str_replace('\\', '/', $relative_path);
|
$relative_path = str_replace('\\', '/', $relative_path);
|
||||||
|
|
||||||
if ($handle = opendir($dir)) {
|
if ($handle = opendir($dir)) {
|
||||||
while (false !== ($entry = readdir($handle))) {
|
while (false !== ($entry = readdir($handle))) {
|
||||||
if (($entry != '.') && ($entry != '..')) {
|
if (($entry !== '.') && ($entry !== '..')) {
|
||||||
if (is_dir($dir.$entry)) {
|
if (is_dir($dir.$entry) === true) {
|
||||||
$return[] = [
|
$return[] = [
|
||||||
'relative' => $relative_path.$entry,
|
'relative' => $relative_path.$entry,
|
||||||
'absolute' => $dir.$entry,
|
'absolute' => $dir.$entry,
|
||||||
@ -480,14 +468,18 @@ function filemanager_read_recursive_dir($dir, $relative_path='', $add_empty_dirs
|
|||||||
/**
|
/**
|
||||||
* The main function to show the directories and files.
|
* The main function to show the directories and files.
|
||||||
*
|
*
|
||||||
* @param string $real_directory The string of dir as realpath.
|
* @param string $real_directory The string of dir as realpath.
|
||||||
* @param string $relative_directory The string of dir as relative path.
|
* @param string $relative_directory The string of dir as relative path.
|
||||||
* @param string $url The url to set in the forms and some links in the explorer.
|
* @param string $url The url to set in the forms and some links in the explorer.
|
||||||
* @param string $father The directory father don't navigate bottom this.
|
* @param string $father The directory father don't navigate bottom this.
|
||||||
* @param boolean $editor The flag to set the edition of text files.
|
* @param boolean $editor The flag to set the edition of text files.
|
||||||
* @param string $url_file The url to put in the files instead the default. By default empty string and use the url of filemanager.
|
* @param boolean $readOnly The flag to set read only.
|
||||||
* @param boolean $download_button The flag to show download button, by default false.
|
* @param string $url_file The url to put in the files instead the default. By default empty string and use the url of filemanager.
|
||||||
* @param string $umask The umask as hex values to set the new files or updload.
|
* @param boolean $download_button The flag to show download button, by default false.
|
||||||
|
* @param string $umask The umask as hex values to set the new files or updload.
|
||||||
|
* @param mixed $homedir_filemanager Homedir of file manager.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
function filemanager_file_explorer(
|
function filemanager_file_explorer(
|
||||||
$real_directory,
|
$real_directory,
|
||||||
@ -503,7 +495,7 @@ function filemanager_file_explorer(
|
|||||||
) {
|
) {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
// Windows compatibility
|
// Windows compatibility.
|
||||||
$real_directory = str_replace('\\', '/', $real_directory);
|
$real_directory = str_replace('\\', '/', $real_directory);
|
||||||
$relative_directory = str_replace('\\', '/', $relative_directory);
|
$relative_directory = str_replace('\\', '/', $relative_directory);
|
||||||
$father = str_replace('\\', '/', $father);
|
$father = str_replace('\\', '/', $father);
|
||||||
@ -513,7 +505,7 @@ function filemanager_file_explorer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
$hack_metaconsole = '';
|
$hack_metaconsole = '';
|
||||||
if (defined('METACONSOLE')) {
|
if (is_metaconsole() === true) {
|
||||||
$hack_metaconsole = '../../';
|
$hack_metaconsole = '../../';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -598,28 +590,21 @@ function filemanager_file_explorer(
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
// List files
|
// List files.
|
||||||
if (! is_dir($real_directory)) {
|
if (is_dir($real_directory) === false) {
|
||||||
echo __('Directory %s doesn\'t exist!', $relative_directory);
|
echo __('Directory %s doesn\'t exist!', $relative_directory);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$files = filemanager_list_dir($real_directory);
|
$files = filemanager_list_dir($real_directory);
|
||||||
|
|
||||||
if (!empty($files)) {
|
if (empty($files) === false) {
|
||||||
$table = new stdClass();
|
$table = new stdClass();
|
||||||
$table->width = '100%';
|
$table->width = '100%';
|
||||||
$table->id = 'table_filemanager';
|
$table->id = 'table_filemanager';
|
||||||
if (!defined('METACONSOLE')) {
|
|
||||||
$table->class = 'info_table';
|
|
||||||
$table->title = '<span>'.__('Index of %s', $relative_directory).'</span>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined('METACONSOLE')) {
|
|
||||||
$table->class = 'databox_tactical';
|
|
||||||
$table->title = '<span>'.__('Index of %s', $relative_directory).'</span>';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$table->class = (is_metaconsole() === true) ? 'databox_tactical' : 'info_table';
|
||||||
|
$table->title = '<span>'.__('Index of %s', $relative_directory).'</span>';
|
||||||
$table->colspan = [];
|
$table->colspan = [];
|
||||||
$table->data = [];
|
$table->data = [];
|
||||||
$table->head = [];
|
$table->head = [];
|
||||||
@ -640,9 +625,10 @@ function filemanager_file_explorer(
|
|||||||
|
|
||||||
$prev_dir = explode('/', $relative_directory);
|
$prev_dir = explode('/', $relative_directory);
|
||||||
$prev_dir_str = '';
|
$prev_dir_str = '';
|
||||||
for ($i = 0; $i < (count($prev_dir) - 1); $i++) {
|
$prev_dir_count = count($prev_dir);
|
||||||
|
for ($i = 0; $i < ($prev_dir_count - 1); $i++) {
|
||||||
$prev_dir_str .= $prev_dir[$i];
|
$prev_dir_str .= $prev_dir[$i];
|
||||||
if ($i < (count($prev_dir) - 2)) {
|
if ($i < ($prev_dir_count - 2)) {
|
||||||
$prev_dir_str .= '/';
|
$prev_dir_str .= '/';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -680,16 +666,16 @@ function filemanager_file_explorer(
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MIME_UNKNOWN:
|
case MIME_UNKNOWN:
|
||||||
if ($fileinfo['size'] == 0) {
|
if ((int) $fileinfo['size'] === 0) {
|
||||||
if ((strstr($fileinfo['name'], '.txt') !== false) || (strstr($fileinfo['name'], '.conf') !== false) || (strstr($fileinfo['name'], '.sql') !== false) || (strstr($fileinfo['name'], '.pl') !== false)) {
|
if ((strstr($fileinfo['name'], '.txt') !== false) || (strstr($fileinfo['name'], '.conf') !== false) || (strstr($fileinfo['name'], '.sql') !== false) || (strstr($fileinfo['name'], '.pl') !== false)) {
|
||||||
$fileinfo['mime'] = MIME_TEXT;
|
$fileinfo['mime'] = MIME_TEXT;
|
||||||
$data[0] = html_print_image('images/mimetypes/text.png', true, ['title' => __('Text file'), 'class' => 'invert_filter']);
|
$data[0] = html_print_image('images/mimetypes/text.png', true, ['title' => __('Text file'), 'class' => 'invert_filter']);
|
||||||
} else {
|
} else {
|
||||||
// unknow
|
// Unknown.
|
||||||
$data[0] = '';
|
$data[0] = '';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// pdf
|
// Pdf.
|
||||||
$data[0] = '';
|
$data[0] = '';
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -701,8 +687,8 @@ function filemanager_file_explorer(
|
|||||||
|
|
||||||
if ($fileinfo['is_dir']) {
|
if ($fileinfo['is_dir']) {
|
||||||
$data[1] = '<a href="'.$url.'&directory='.$relative_directory.'/'.$fileinfo['name'].'&hash2='.md5($relative_directory.'/'.$fileinfo['name'].$config['server_unique_identifier']).'">'.$fileinfo['name'].'</a>';
|
$data[1] = '<a href="'.$url.'&directory='.$relative_directory.'/'.$fileinfo['name'].'&hash2='.md5($relative_directory.'/'.$fileinfo['name'].$config['server_unique_identifier']).'">'.$fileinfo['name'].'</a>';
|
||||||
} else if (!empty($url_file)) {
|
} else if (empty($url_file) === false) {
|
||||||
// Set the custom url file
|
// Set the custom url file.
|
||||||
$url_file_clean = str_replace('[FILE_FULLPATH]', $fileinfo['realpath'], $url_file);
|
$url_file_clean = str_replace('[FILE_FULLPATH]', $fileinfo['realpath'], $url_file);
|
||||||
|
|
||||||
$data[1] = '<a href="'.$url_file_clean.'">'.$fileinfo['name'].'</a>';
|
$data[1] = '<a href="'.$url_file_clean.'">'.$fileinfo['name'].'</a>';
|
||||||
@ -712,9 +698,9 @@ function filemanager_file_explorer(
|
|||||||
$data[1] = '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'">'.$fileinfo['name'].'</a>';
|
$data[1] = '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'">'.$fileinfo['name'].'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notice that uploaded php files could be dangerous
|
// Notice that uploaded php files could be dangerous.
|
||||||
if (pathinfo($fileinfo['realpath'], PATHINFO_EXTENSION) == 'php'
|
if (pathinfo($fileinfo['realpath'], PATHINFO_EXTENSION) === 'php'
|
||||||
&& (is_readable($fileinfo['realpath']) || is_executable($fileinfo['realpath']))
|
&& (is_readable($fileinfo['realpath']) === true || is_executable($fileinfo['realpath']) === true)
|
||||||
) {
|
) {
|
||||||
$error_message = __('This file could be executed by any user');
|
$error_message = __('This file could be executed by any user');
|
||||||
$error_message .= '. '.__('Make sure it can\'t perform dangerous tasks');
|
$error_message .= '. '.__('Make sure it can\'t perform dangerous tasks');
|
||||||
@ -733,12 +719,13 @@ function filemanager_file_explorer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Actions buttons
|
// Actions buttons
|
||||||
// Delete button
|
// Delete button.
|
||||||
$data[4] = '';
|
$data[4] = '';
|
||||||
$data[4] .= '<span style="display: flex">';
|
$data[4] .= '<span style="display: flex">';
|
||||||
$typefile = array_pop(explode('.', $fileinfo['name']));
|
$typefile = array_pop(explode('.', $fileinfo['name']));
|
||||||
if (is_writable($fileinfo['realpath'])
|
if (is_writable($fileinfo['realpath']) === true
|
||||||
&& (! is_dir($fileinfo['realpath']) || count(scandir($fileinfo['realpath'])) < 3) && (!$readOnly)
|
&& (is_dir($fileinfo['realpath']) === false || count(scandir($fileinfo['realpath'])) < 3)
|
||||||
|
&& ($readOnly === false)
|
||||||
) {
|
) {
|
||||||
$data[4] .= '<form method="post" action="'.$url.'" style="">';
|
$data[4] .= '<form method="post" action="'.$url.'" style="">';
|
||||||
$data[4] .= '<input type="image" class="invert_filter" src="images/cross.png" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">';
|
$data[4] .= '<input type="image" class="invert_filter" src="images/cross.png" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">';
|
||||||
@ -758,9 +745,9 @@ function filemanager_file_explorer(
|
|||||||
$data[4] .= html_print_input_hidden('hash2', $hash2, true);
|
$data[4] .= html_print_input_hidden('hash2', $hash2, true);
|
||||||
$data[4] .= '</form>';
|
$data[4] .= '</form>';
|
||||||
|
|
||||||
if (($editor) && (!$readOnly)) {
|
if (($editor) && ($readOnly === false)) {
|
||||||
if (($typefile != 'bin') && ($typefile != 'pdf') && ($typefile != 'png') && ($typefile != 'jpg')
|
if (($typefile !== 'bin') && ($typefile !== 'pdf') && ($typefile !== 'png') && ($typefile !== 'jpg')
|
||||||
&& ($typefile != 'iso') && ($typefile != 'docx') && ($typefile != 'doc') && ($fileinfo['mime'] != MIME_DIR)
|
&& ($typefile !== 'iso') && ($typefile !== 'docx') && ($typefile !== 'doc') && ($fileinfo['mime'] != MIME_DIR)
|
||||||
) {
|
) {
|
||||||
$hash = md5($fileinfo['realpath'].$config['server_unique_identifier']);
|
$hash = md5($fileinfo['realpath'].$config['server_unique_identifier']);
|
||||||
$data[4] .= "<a style='vertical-align: top;' href='$url&edit_file=1&hash=".$hash.'&location_file='.$fileinfo['realpath']."' style='float: left;'>".html_print_image('images/edit.png', true, ['style' => 'margin-top: 2px;', 'title' => __('Edit file'), 'class' => 'invert_filter']).'</a>';
|
$data[4] .= "<a style='vertical-align: top;' href='$url&edit_file=1&hash=".$hash.'&location_file='.$fileinfo['realpath']."' style='float: left;'>".html_print_image('images/edit.png', true, ['style' => 'margin-top: 2px;', 'title' => __('Edit file'), 'class' => 'invert_filter']).'</a>';
|
||||||
@ -789,9 +776,9 @@ function filemanager_file_explorer(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$readOnly) {
|
if ($readOnly === false) {
|
||||||
if (is_writable($real_directory)) {
|
if (is_writable($real_directory) === true) {
|
||||||
// The buttons to make actions
|
// The buttons to make actions.
|
||||||
$tabs_dialog = '<ul id="file_table_modal">
|
$tabs_dialog = '<ul id="file_table_modal">
|
||||||
<li class="create_folder">
|
<li class="create_folder">
|
||||||
<a href="javascript: show_form_create_folder();">'.html_print_image(
|
<a href="javascript: show_form_create_folder();">'.html_print_image(
|
||||||
@ -886,18 +873,17 @@ function filemanager_file_explorer(
|
|||||||
/**
|
/**
|
||||||
* Check if a directory is writable.
|
* Check if a directory is writable.
|
||||||
*
|
*
|
||||||
* @param string Directory path to check.
|
* @param string $filepath Directory path to check.
|
||||||
* @param bool If set, it will try to make the directory writeable if it's not.
|
|
||||||
*
|
*
|
||||||
* @param bool Wheter the directory is writeable or not.
|
* @return boolean Wheter the directory is writeable or not.
|
||||||
*/
|
*/
|
||||||
function filemanager_get_file_info($filepath)
|
function filemanager_get_file_info(string $filepath)
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
$realpath = realpath($filepath);
|
$realpath = realpath($filepath);
|
||||||
$filepath = str_replace('\\', '/', $filepath);
|
$filepath = str_replace('\\', '/', $filepath);
|
||||||
// Windows compatibility
|
// Windows compatibility.
|
||||||
$info = [
|
$info = [
|
||||||
'mime' => MIME_UNKNOWN,
|
'mime' => MIME_UNKNOWN,
|
||||||
'mime_extend' => mime_content_type($filepath),
|
'mime_extend' => mime_content_type($filepath),
|
||||||
@ -935,10 +921,9 @@ function filemanager_get_file_info($filepath)
|
|||||||
/**
|
/**
|
||||||
* Check if a directory is writable.
|
* Check if a directory is writable.
|
||||||
*
|
*
|
||||||
* @param string Directory path to check.
|
* @param string $dirpath Directory path to check.
|
||||||
* @param bool If set, it will try to make the directory writeable if it's not.
|
|
||||||
*
|
*
|
||||||
* @param bool Wheter the directory is writeable or not.
|
* @return array List with files.
|
||||||
*/
|
*/
|
||||||
function filemanager_list_dir($dirpath)
|
function filemanager_list_dir($dirpath)
|
||||||
{
|
{
|
||||||
@ -948,8 +933,8 @@ function filemanager_list_dir($dirpath)
|
|||||||
$dirs = [];
|
$dirs = [];
|
||||||
$dir = opendir($dirpath);
|
$dir = opendir($dirpath);
|
||||||
while ($file = @readdir($dir)) {
|
while ($file = @readdir($dir)) {
|
||||||
// Ignore hidden files
|
// Ignore hidden files.
|
||||||
if ($file[0] == '.') {
|
if ($file[0] === '.') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,23 +65,17 @@ if (isset($config['filemanager']['message'])) {
|
|||||||
$config['filemanager']['message'] = null;
|
$config['filemanager']['message'] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$directory = (string) get_parameter('directory', SNMP_DIR_MIBS);
|
$directory = (string) get_parameter('directory');
|
||||||
$directory = str_replace('\\', '/', $directory);
|
$directory = str_replace('\\', '/', $directory);
|
||||||
|
|
||||||
// Add custom directories here
|
// Add custom directories here.
|
||||||
$fallback_directory = 'attachment/mibs';
|
$fallback_directory = SNMP_DIR_MIBS;
|
||||||
|
|
||||||
// A miminal security check to avoid directory traversal
|
if (empty($directory) === true) {
|
||||||
if (preg_match('/\.\./', $directory)) {
|
|
||||||
$directory = $fallback_directory;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (preg_match('/^\//', $directory)) {
|
|
||||||
$directory = $fallback_directory;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (preg_match('/^manager/', $directory)) {
|
|
||||||
$directory = $fallback_directory;
|
$directory = $fallback_directory;
|
||||||
|
} else {
|
||||||
|
$directory = str_replace('\\', '/', $directory);
|
||||||
|
$directory = filemanager_safe_directory($directory, $fallback_directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
$banned_directories['include'] = true;
|
$banned_directories['include'] = true;
|
||||||
@ -91,13 +85,10 @@ $banned_directories['reporting'] = true;
|
|||||||
$banned_directories['general'] = true;
|
$banned_directories['general'] = true;
|
||||||
$banned_directories[ENTERPRISE_DIR] = true;
|
$banned_directories[ENTERPRISE_DIR] = true;
|
||||||
|
|
||||||
if (isset($banned_directories[$directory])) {
|
if (isset($banned_directories[$directory]) === true) {
|
||||||
$directory = $fallback_directory;
|
$directory = $fallback_directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Current directory
|
|
||||||
$available_directories[$directory] = $directory;
|
|
||||||
|
|
||||||
$real_directory = realpath($config['homedir'].'/'.$directory);
|
$real_directory = realpath($config['homedir'].'/'.$directory);
|
||||||
|
|
||||||
ui_print_info_message(__('MIB files will be installed on the system. Please note that a MIB may depend on other MIB. To customize trap definitions use the SNMP trap editor.'));
|
ui_print_info_message(__('MIB files will be installed on the system. Please note that a MIB may depend on other MIB. To customize trap definitions use the SNMP trap editor.'));
|
||||||
@ -107,11 +98,11 @@ $create_text_file = (bool) get_parameter('create_text_file');
|
|||||||
|
|
||||||
$default_real_directory = realpath($config['homedir'].'/'.$fallback_directory);
|
$default_real_directory = realpath($config['homedir'].'/'.$fallback_directory);
|
||||||
|
|
||||||
if ($upload_file_or_zip) {
|
if ($upload_file_or_zip === true) {
|
||||||
upload_file($upload_file_or_zip, $default_real_directory);
|
upload_file($upload_file_or_zip, $default_real_directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($create_text_file) {
|
if ($create_text_file === true) {
|
||||||
create_text_file($default_real_directory);
|
create_text_file($default_real_directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user