Esempio n. 1
0
 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"));
 }