#!/usr/bin/env php false); /******************************************************************************/ // change to docroot if needed if (!is_file(realpath(getcwd().'/inc/functions/functions.core.php'))) chdir(realpath(dirname(__FILE__)."/..")); // check for home if (!is_file('inc/functions/functions.core.php')) exit("Error: this script can only be used in its default-path (DOCROOT/bin/)\n"); // core functions require_once('inc/functions/functions.core.php'); /** * @author R.D. Damron * @name rar/zip uncompression * @usage ./uncompress.php "pathtofile" "extractdir" "typeofcompression" "uncompressor-bin" "password" */ $logfile = 'error.log'; //convert and set variables $arg1 = urldecode($argv[1]); $arg2 = urldecode($argv[2]); $arg3 = $argv[3]; $arg4 = $argv[4]; $arg5 = $argv[5]; // unrar file if (strcasecmp('rar', $arg3) == 0){ if (file_exists($arg2.$logfile)) @unlink($arg2.$logfile); $Command = tfb_shellencode($arg4)." x -o+ -p". tfb_shellencode($arg5) ." ". tfb_shellencode($arg1) . " " . tfb_shellencode($arg2); $unrarpid = trim(shell_exec("nohup ".$Command." > " . tfb_shellencode($arg2.$logfile) . " 2>&1 & echo $!")); echo 'Uncompressing file...
PID is: ' . $unrarpid . '
'; usleep(250000); // wait for 0.25 seconds while (is_running($unrarpid)) { if (file_exists($arg2.$logfile)) { $lines = file($arg2.$logfile); foreach($lines as $chkline) { if (strpos($chkline, 'already exists. Overwrite it ?') !== FALSE){ kill($unrarpid); echo 'File has already been extracted, please delete extracted file if re-extraction is necessary.'; break 2; } if (strpos($chkline, 'Cannot find volume') !== FALSE){ kill($unrarpid); echo 'File has a missing volume and can not been extracted.'; break 2; } if (strpos($chkline, 'ERROR: Bad archive') !== FALSE){ kill($unrarpid); echo 'File has a bad volume and can not been extracted.'; break 2; } if (strpos($chkline, 'CRC failed') !== FALSE){ kill($unrarpid); echo 'File extraction has failed with a CRC error and was not been extracted.'; break 2; } } } usleep(250000); // wait for 0.25 seconds } if (file_exists($arg2.$logfile)) { $lines = file($arg2.$logfile); foreach($lines as $chkline) { if (strpos($chkline, 'All OK') !== FALSE){ echo 'File has successfully been extracted!'; @unlink($arg2.$logfile); // exit exit(); } } } // exit exit(); } // unzip if (strcasecmp('zip', $arg3) == 0) { if (file_exists($arg2.$logfile)) @unlink($arg2.$logfile); $Command = tfb_shellencode($arg4).' -o ' . tfb_shellencode($arg1) . ' -d ' . tfb_shellencode($arg2); $unzippid = trim(shell_exec("nohup ".$Command." > " . tfb_shellencode($arg2.$logfile) . " 2>&1 & echo $!")); echo 'Uncompressing file...
PID is: ' . $unzippid . '
'; usleep(250000); // wait for 0.25 seconds while (is_running($unzippid)) { usleep(250000); // wait for 0.25 seconds /* occupy time to cause popup window load bar to load in conjunction with unzip progress */ } // exit exit(); } /** * is_running * * @param $PID * @return */ function is_running($PID){ $ProcessState = exec("ps ".tfb_shellencode($PID)); return (count($ProcessState) >= 2); } /** * kill * * @param $PID * @return */ function kill($PID){ exec("kill -KILL ".tfb_shellencode($PID)); return true; } /** * del * * @param $file * @return */ function del($file){ exec("rm -rf ".tfb_shellencode($file)); return true; } ?>