shell bypass 403
Cubjrnet7 Shell
: /home/eklavya/www/administrator/components/com_phocagallery/libraries/phocagallery/file/ [ drwxr-xr-x ]
<?php
/**
* @package Phoca Gallery
* @author Jan Pavelka - https://www.phoca.cz
* @copyright Copyright (C) Jan Pavelka https://www.phoca.cz
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 and later
* @cms Joomla
* @copyright Copyright (C) Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
*/
defined( '_JEXEC' ) or die( 'Restricted access' );
use Joomla\CMS\Object\CMSObject;
use Joomla\Filesystem\File;
use Joomla\Filesystem\Path;
use Joomla\CMS\Factory;
jimport( 'joomla.filesystem.folder' );
jimport( 'joomla.filesystem.file' );
phocagalleryimport('phocagallery.image.image');
phocagalleryimport('phocagallery.path.path');
class PhocaGalleryFile
{
public static function getTitleFromFile(&$filename, $displayExt = 0) {
if (!isset($filename)) {
$filename = '';
}
$filename = str_replace('//', '/', $filename);
$filename = str_replace('\\', '/', $filename);
$folderArray = explode('/', $filename);// Explode the filename (folder and file name)
$countFolderArray = count($folderArray);// Count this array
$lastArrayValue = $countFolderArray - 1;// The last array value is (Count array - 1)
$title = new stdClass();
$title->with_extension = $folderArray[$lastArrayValue];
$title->without_extension = PhocaGalleryFile::removeExtension($folderArray[$lastArrayValue]);
if ($displayExt == 1) {
return $title->with_extension;
} else if ($displayExt == 0) {
return $title->without_extension;
} else {
return $title;
}
}
public static function removeExtension($filename) {
return substr($filename, 0, strrpos( $filename, '.' ));
}
public static function getMimeType($filename) {
$ext = File::getExt($filename);
switch(strtolower($ext)) {
case 'png':
$mime = 'image/png';
break;
case 'jpg':
case 'jpeg':
$mime = 'image/jpeg';
break;
case 'gif':
$mime = 'image/gif';
break;
case 'webp':
$mime = 'image/webp';
break;
case 'avif':
$mime = 'image/avif';
break;
Default:
$mime = '';
break;
}
return $mime;
}
public static function getFileSize($filename, $readable = 1) {
$path = PhocaGalleryPath::getPath();
$fileNameAbs = Path::clean($path->image_abs . $filename);
if (!PhocaGalleryFile::exists($fileNameAbs)) {
$fileNameAbs = $path->image_abs_front . 'phoca_thumb_l_no_image.png';
}
if ($readable == 1) {
return PhocaGalleryFile::getFileSizeReadable(filesize($fileNameAbs));
} else {
return filesize($fileNameAbs);
}
}
/*
* http://aidanlister.com/repos/v/function.size_readable.php
*/
public static function getFileSizeReadable ($size, $retstring = null, $onlyMB = false) {
if ($onlyMB) {
$sizes = array('B', 'kB', 'MB');
} else {
$sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
}
if ($retstring === null) { $retstring = '%01.2f %s'; }
$lastsizestring = end($sizes);
foreach ($sizes as $sizestring) {
if ($size < 1024) { break; }
if ($sizestring != $lastsizestring) { $size /= 1024; }
}
if ($sizestring == $sizes[0]) { $retstring = '%01d %s'; } // Bytes aren't normally fractional
return sprintf($retstring, $size, $sizestring);
}
public static function getFileOriginal($filename, $rel = 0) {
$path = PhocaGalleryPath::getPath();
if ($rel == 1) {
return str_replace('//', '/', $path->image_rel . $filename);
} else {
return Path::clean($path->image_abs . $filename);
}
}
public static function getFileFormat($filename) {
$path = PhocaGalleryPath::getPath();
$file = Path::clean($path->image_abs . $filename);
$size = getimagesize($file);
if (isset($size[0]) && isset($size[1]) && (int)$size[1] > (int)$size[0]) {
return 2;
} else {
return 1;
}
}
public static function existsFileOriginal($filename) {
$fileOriginal = PhocaGalleryFile::getFileOriginal($filename);
if (PhocaGalleryFile::exists($fileOriginal)) {
return true;
} else {
return false;
}
}
public static function deleteFile ($filename) {
$fileOriginal = PhocaGalleryFile::getFileOriginal($filename);
if (PhocaGalleryFile::exists($fileOriginal)){
File::delete($fileOriginal);
return true;
}
return false;
}
public static function existsCss($file, $type) {
$path = self::getCSSPath($type);
if (file_exists($path.$file) && $file != '') {
return $path.$file;
}
return false;
}
public static function getCSSPath($type, $rel = 0) {
$paths = PhocaGalleryPath::getPath();
if ($rel == 1) {
if ($type == 1) {
return $paths->media_css_rel . 'main/';
} else {
return $paths->media_css_rel . 'custom/';
}
} else {
if ($type == 1) {
return Path::clean($paths->media_css_abs . 'main/');
} else {
return Path::clean($paths->media_css_abs . 'custom/');
}
}
}
public static function getCSSFile($id = 0, $fullPath = 0) {
if ((int)$id > 0) {
$db = Factory::getDBO();
$query = 'SELECT a.filename as filename, a.type as type'
.' FROM #__phocagallery_styles AS a'
.' WHERE a.id = '.(int) $id
.' ORDER BY a.id';
$db->setQuery($query, 0, 1);
$filename = $db->loadObject();
if (isset($filename->filename) && $filename->filename != '') {
if ($fullPath == 1 && isset($filename->type)) {
return self::getCSSPath($filename->type). $filename->filename;
} else {
return $filename->filename;
}
}
}
return false;
}
public static function exists($file) {
return is_file(Path::clean($file));
}
}
?>