Switch from using command line RAR to using RarArchive pecl module

This commit is contained in:
Junior 2024-11-29 17:18:10 -05:00
parent d593369c14
commit 8b5949d1d0

View File

@ -8,6 +8,7 @@ $data = array();
$data["error"] = false; $data["error"] = false;
$data["message"] = ""; $data["message"] = "";
$data["validated"] = $validated; $data["validated"] = $validated;
$data["filename"] = "";
if ( !$validated ) { if ( !$validated ) {
$data["error"] = true; $data["error"] = true;
@ -19,6 +20,7 @@ if ( !$validated ) {
if ( isset($_REQUEST['comic']) ) { if ( isset($_REQUEST['comic']) ) {
$comicfull = realpath(COMICSDIR . base64_decode(urldecode($_REQUEST['comic']))); $comicfull = realpath(COMICSDIR . base64_decode(urldecode($_REQUEST['comic'])));
$data["filename"] = basename($comicfull);
if ( $comicfull === false ) exit(); if ( $comicfull === false ) exit();
if ( substr($comicfull, 0, strlen(COMICSDIR)) != COMICSDIR ) exit(); if ( substr($comicfull, 0, strlen(COMICSDIR)) != COMICSDIR ) exit();
$comic = substr($comicfull, strlen(COMICSDIR)); $comic = substr($comicfull, strlen(COMICSDIR));
@ -58,7 +60,7 @@ if ( $ext == "cbz" ) {
//$myext = substr($imgname, -3); //$myext = substr($imgname, -3);
if ( ! isset(pathinfo($imgname)['extension']) ) continue; if ( ! isset(pathinfo($imgname)['extension']) ) continue;
$myext = strtolower(pathinfo($imgname)['extension']); $myext = strtolower(pathinfo($imgname)['extension']);
if ( ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) { if ( ($myext == "jpeg") || ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) {
$imgname = str_replace("#", "", $imgname); $imgname = str_replace("#", "", $imgname);
$imgcontents = $zip->getFromIndex($i); $imgcontents = $zip->getFromIndex($i);
$written = file_put_contents($comicoutputfull . $imgname, $imgcontents); $written = file_put_contents($comicoutputfull . $imgname, $imgcontents);
@ -66,20 +68,18 @@ if ( $ext == "cbz" ) {
} }
} }
} elseif ( $ext == "cbr" ) { } elseif ( $ext == "cbr" ) {
$junk = `/usr/local/bin/rar e -ep -o+ "$comicfull" "$comicoutputfull"`; $rar = RarArchive::open($comicfull);
$fh = opendir($comicoutputfull); $entries = $rar->getEntries();
while ( false !== ($file = readdir($fh)) ) { foreach ( $entries as $entry ) {
$myfile = $comicoutputfull . $file; $outfile = str_replace("#", "", basename($entry->getName()));
$mynewfile = $comicoutputfull . str_replace("#", "", $file); $entry->extract(false, $comicoutputfull . $outfile);
//$myext = strtolower(substr($file, -3)); if ( ! isset(pathinfo($outfile)['extension']) ) continue;
if ( ! isset(pathinfo($myfile)['extension']) ) continue; $myext = strtolower(pathinfo($outfile)['extension']);
$myext = strtolower(pathinfo($myfile)['extension']); if ( ($myext == "jpeg") || ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) {
if ( ($myext == "jpg") || ($myext == "png") || ($myext == "webp") ) { $files[] = basename($outfile);
rename($myfile, $mynewfile);
$files[] = basename($mynewfile);
} }
} }
closedir($fh); unset($entry);
} else { } else {
exit(); exit();
} }