function getTempName($fileName = '', $dir = '') { if (empty($dir)) { $dir = getTempDir(); } $fileName = basename($fileName); if (empty($fileName)) { $fileName = time(); } $fileName = preg_replace('|\\..*$|', '.tmp', $fileName); $fileName = $dir . getUniqueFileName($dir, $fileName); touch($fileName); return $fileName; }
/** * Generate differences between this version and a previous version. * * @param array $diffResultArray Results of difference engine. * @param int $compareVersion Version to compare with * @return int -1 = version is latest version, can not compare to self * -2 = diffs disabled * -3 = versions are the same * -4 = other error * +n = generation successful, returns the version number of the previous version */ function diff(&$diffResultArray) { if (!defined('DIFF_COMMAND')) { return -2; } // diffs disabled $object = $this->foowd->getObj(array('objectid' => $this->objectid, 'classid' => $this->classid, 'workspaceid' => $this->workspaceid)); if ($this->version == $object->version) { return -1; } // can not compare to self $fileid = time(); $temp_dir = getConstOrDefault('DIFF_TMPDIR', getTempDir()); $oldFile = $temp_dir . 'foowd_diff_' . $fileid . '-1'; $newFile = $temp_dir . 'foowd_diff_' . $fileid . '-2'; $oldPage = $this->body; $newPage = $object->body; ignore_user_abort(TRUE); // don't halt if aborted during diff if (!($fp1 = fopen($oldFile, 'w')) || !($fp2 = fopen($newFile, 'w'))) { $this->foowd->track('msg', 'Could not create temp files in "' . $temp_dir . '" required for diff engine.'); $returnValue = -4; // other error } elseif (fwrite($fp1, $oldPage) < 0 || fwrite($fp2, $newPage) < 0) { $this->foowd->track('msg', 'Could not write to temp files in "' . $temp_dir . '" required for diff engine.'); $returnValue = -4; // other error } else { fclose($fp1); fclose($fp2); $this->foowd->track('msg', 'executing external diff engine', '"' . DIFF_COMMAND . '"'); $diffResult = shell_exec(DIFF_COMMAND . ' ' . $oldFile . ' ' . $newFile); if ($diffResult === FALSE) { $this->foowd->track('msg', 'Error occured running diff engine "', DIFF_COMMAND, '".'); $returnValue = -4; // other error } elseif ($diffResult == FALSE) { $returnValue = -3; } else { $diffResultArray = explode("\n", $diffResult); $returnValue = $object->version; } } unlink($oldFile); unlink($newFile); ignore_user_abort(FALSE); // all done, it's ok to abort now $this->foowd->track(); return $returnValue; }
function createFile($extension, $content) { $filename = getTempDir() . $extension; file_put_contents($filename, $content); return $filename; }
} else { if (!strcmp($action, "chk264")) { /* ACTION: Simply stalls while checking for 264 file. * Parms: <monitor><timeout> * NOTE: This will be called directly by path, so include files * may not be available */ session_start(); require_once dirname(__FILE__) . "/../includes/functions.php"; if (!isset($_GET['monitor']) || !isset($_GET['timeout'])) { logXmlErr("Monitor not specified for chk264"); exit; } $monitor = validInteger($_GET['monitor']); $path = getTempDir() . "/" . m3u8fname($monitor); /* Wait for the second sample to become available */ $tsfile = getTempDir() . "/sample_" . $monitor . "-2.ts"; /* Setup timeout */ $startTime = time(); $timeout = validInteger($_GET['timeout']); while (!file_exists($path) || !file_exists($tsfile)) { if (time() > $startTime + $timeout) { logXmlErr("Timed out waiting for stream to start, exiting..."); kill264proc($monitor); exit; } usleep(10000); } logXml("File exists, stream created after " . (time() - $startTime) . " sec"); exit; } else { if (!strcmp($action, "feed")) {
/** Erases the M3u8 and TS file names for a given monitor */ function eraseH264Files($monitor) { /** NOTE: This command executes an 'rm' command, so $monitor parameter * should be properly validated before executing */ /* Remove wdir/.m3u8 and wdir/sample_<mon>*.ts */ shell_exec("rm -f " . getTempDir() . "/" . m3u8fname($monitor) . " " . getTempDir() . "/sample_" . $monitor . "*.ts"); }