permission("fvoe")) { $fvoe = FVOE::init($_GET["codice"], FVOEInizializationType::CODICE_FVOE); if(! empty($fvoe->info["codice"]) && $fvoe->info["stato"] >= 20 && $fvoe->isAccessible()) { if(isset($_GET["all"]) && isset($_GET["type"])) { $directory = generateStrongPassword(10, false, 'l'); $path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $directory; foreach ($fvoe->tipologia_documenti as $tipologia) { $documents = $fvoe->fetchDocumentsByType($tipologia["codice"]); if($_GET["type"] == "current") { $documents->getCurrentDocuments(); } if($_GET["type"] == "archive") { $documents->getOldDocuments(); } if($documents->count() > 0) { foreach($documents->all() as $document) { $file = $fvoe->getDocument($document->id_documento); if(! empty($file) && $file->status == 200 && ! empty($file->contenutoDocumento->contenuto)) { if(! is_dir($path)) { mkdir($path, 0775, true); } $filename = strtolower($file->contenutoDocumento->nomefile); $content = base64_decode($file->contenutoDocumento->contenuto); file_put_contents($path . DIRECTORY_SEPARATOR . $filename, $content); } } } } $command = sprintf('cd %s && zip -rj %s %s', escapeshellarg(dirname($path)), escapeshellarg("{$directory}.zip"), escapeshellarg($path)); exec($command, $output, $result); if($result === 0) { $command = sprintf('rm -rf %s', escapeshellarg($path)); exec($command, $output, $result); $path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . "{$directory}.zip"; $length = filesize($path); header("Content-Description: File Transfer"); header('Content-Type: application/zip'); header("Content-Disposition: attachment; filename={$directory}.zip"); header("Content-Transfer-Encoding: binary"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: public"); header("Content-Length: $length"); readfile($path); unlink($path); exit; } } else if(isset($_GET['tipologia'])) { $document = $fvoe->fetchDocumentsByType($_GET['tipologia']); if($document->count() > 0) { $documents = array_column(json_decode(json_encode($document->all()), true), null, "id_documento"); if(! empty($documents[$_GET["id_documento"]])) { $document = $fvoe->getDocument($_GET["id_documento"]); if($document->status == 200) { $content = $document->contenutoDocumento->contenuto; $content = base64_decode($content); $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_buffer($finfo, $content); $filename = strtolower($document->contenutoDocumento->nomefile); $length = strlen($content); // $length = $document->contenutoDocumento->dimensione; header("Content-Description: File Transfer"); header("Content-Type: $mimetype"); header("Content-Disposition: attachment; filename=$filename"); header("Content-Transfer-Encoding: binary"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: public"); header("Content-Length: $length"); echo $content; exit(); } } } } } } HTTPStatus(403); ?>