static function gallery_shutdown() { // Every 500th request, do a pass over var/logs and var/tmp and delete old files. // Limit ourselves to deleting a single file so that we don't spend too much CPU // time on it. As long as servers call this at least twice a day they'll eventually // wind up with a clean var/logs directory because we only create 1 file a day there. // var/tmp might be stickier because theoretically we could wind up spamming that // dir with a lot of files. But let's start with this and refine as we go. if (!(rand() % 500)) { // Note that this code is roughly duplicated in gallery_task::file_cleanup $threshold = time() - 1209600; // older than 2 weeks foreach (array("logs", "tmp") as $dir) { $dir = VARPATH . $dir; if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file[0] == ".") { continue; } // Ignore directories for now, but we should really address them in the long term. if (is_dir("{$dir}/{$file}")) { continue; } if (filemtime("{$dir}/{$file}") <= $threshold) { unlink("{$dir}/{$file}"); break; } } } } } // Delete all files marked using system::delete_later. system::delete_marked_files(); }
public function add_watermark_reject_illegal_file_with_legal_extension_test() { // Source is a php file, watermark path has extension jpg $name = test::random_name(); $source_path = MODPATH . "watermark/tests/Admin_Watermarks_Controller_Test.php"; $watermark_path = TMPPATH . "uploadfile-123-{$name}.jpg"; copy($source_path, $watermark_path); // Setup and run Admin_Watermarks_Controller::add $controller = new Admin_Watermarks_Controller(); $_POST["file"] = $watermark_path; $_POST["csrf"] = access::csrf_token(); ob_start(); $controller->add(); $results = ob_get_clean(); // Delete all files marked using system::delete_later (from gallery_event::gallery_shutdown) system::delete_marked_files(); // Add should *not* be successful, and watermark should be deleted $this->assert_equal("", $results); $this->assert_false(file_exists($watermark_path)); $this->assert_false(file_exists(VARPATH . "modules/watermark/{$name}.php")); $this->assert_false(file_exists(VARPATH . "modules/watermark/{$name}.jpg")); }