Current File : //var/www/vinorea/modules/ipexportimport/controllers/front/getFile.php |
<?php
/**
*
* NOTICE OF LICENSE
*
* @author SmartPresta <tehran.alishov@gmail.com>
* @copyright 2024 SmartPresta
* @license Commercial License
*/
if (!defined('_PS_VERSION_')) {
exit;
}
require_once dirname(__FILE__) . '/../../classes/EIAHelper.php';
class IpExportImportGetFileModuleFrontController extends ModuleFrontController
{
protected $display_header = false;
protected $display_footer = false;
public function init()
{
$filename = Tools::getValue('file');
if (!Validate::isSha1($filename)) {
die(Tools::displayError());
}
$file = _PS_DOWNLOAD_DIR_ . preg_replace('/\.{2,}/', '.', $filename);
$filename = ProductDownload::getFilenameFromFilename($filename);
if (empty($filename)) {
$filename = Tools::getValue('filename');
if (empty($filename)) {
$filename = 'file';
}
}
if (!file_exists($file)) {
die(Tools::displayError('Fatal error'));
}
/* Detect mime content type */
$mimeType = false;
if (function_exists('finfo_open')) {
$finfo = @finfo_open(FILEINFO_MIME);
$mimeType = @finfo_file($finfo, $file);
@finfo_close($finfo);
} elseif (function_exists('mime_content_type')) {
$mimeType = @mime_content_type($file);
}
// elseif (function_exists('exec')) {
// $mimeType = trim(@exec('file -b --mime-type ' . escapeshellarg($file)));
// if (!$mimeType) {
// $mimeType = trim(@exec('file --mime ' . escapeshellarg($file)));
// }
// if (!$mimeType) {
// $mimeType = trim(@exec('file -bi ' . escapeshellarg($file)));
// }
// }
if (empty($mimeType)) {
$bName = basename($filename);
$bName = explode('.', $bName);
$bName = Tools::strtolower($bName[count($bName) - 1]);
if (!($mimeType = EIAHelper::getMimeFromType($bName))) {
$mimeType = 'application/octet-stream';
}
}
if (ob_get_level() && ob_get_length() > 0) {
ob_end_clean();
}
/* Set headers for download */
header('Content-Transfer-Encoding: binary');
header('Content-Type: ' . $mimeType);
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="' . $filename . '"');
//prevents max execution timeout, when reading large files
@set_time_limit(0);
$fp = fopen($file, 'rb');
if ($fp && is_resource($fp)) {
while (!feof($fp)) {
echo fgets($fp, 16384);
}
}
exit;
}
}