public function test_valid_id_removeMissingFile()
 {
     $this->model->shouldReceive("file_exists")->with("/invalid/path/file-1")->once()->andReturn(false);
     $this->model->shouldReceive("delete_data_id")->with("file-hash-1-1")->once();
     $ret = \service\files::valid_id($this->filedata, $this->config, $this->model, 505);
     $this->t->is($ret, false, "missing file should be removed");
 }
Example #2
0
 public function create_multipaste()
 {
     $this->muser->require_access("basic");
     $ids = $this->input->post("ids");
     $userid = $this->muser->get_userid();
     $limits = $this->muser->get_upload_id_limits();
     return \service\files::create_multipaste($ids, $userid, $limits);
 }
Example #3
0
 public function test_verify_uploaded_files_uploadError()
 {
     $CI =& get_instance();
     $a = array(array("name" => "foobar.txt", "type" => "text/plain", "tmp_name" => NULL, "error" => UPLOAD_ERR_NO_FILE, "size" => 1, "formfield" => "file[1]"));
     try {
         \service\files::verify_uploaded_files($a);
         $this->t->fail("verify should error");
     } catch (\exceptions\UserInputException $e) {
         $data = $e->get_data();
         $this->t->is($e->get_error_id(), "file/upload-verify", "verify should error");
         $this->t->is_deeply(array('file[1]' => array('filename' => 'foobar.txt', 'formfield' => 'file[1]', 'message' => 'No file was uploaded')), $data, "expected data in exception");
     }
 }
Example #4
0
 function cron()
 {
     if (!$this->input->is_cli_request()) {
         return;
     }
     $tarball_dir = $this->config->item("upload_path") . "/special/multipaste-tarballs";
     if (is_dir($tarball_dir)) {
         $tarball_cache_time = $this->config->item("tarball_cache_time");
         $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($tarball_dir), RecursiveIteratorIterator::SELF_FIRST);
         foreach ($it as $file) {
             if ($file->isFile()) {
                 if ($file->getMTime() < time() - $tarball_cache_time) {
                     $lock = fopen($file, "r+");
                     flock($lock, LOCK_EX);
                     unlink($file);
                     flock($lock, LOCK_UN);
                 }
             }
         }
     }
     $oldest_time = time() - $this->config->item('upload_max_age');
     $oldest_session_time = time() - $this->config->item("sess_expiration");
     $config = array("upload_max_age" => $this->config->item("upload_max_age"), "small_upload_size" => $this->config->item("small_upload_size"), "sess_expiration" => $this->config->item("sess_expiration"));
     $query = $this->db->select('file_storage_id storage_id, id, user, date')->from('files')->where("user", 0)->where("date <", $oldest_session_time)->get()->result_array();
     foreach ($query as $row) {
         $row['data_id'] = $row['hash'] . '-' . $row['storage_id'];
         \service\files::valid_id($row, $config, $this->mfile, time());
     }
     // 0 age disables age checks
     if ($this->config->item('upload_max_age') == 0) {
         return;
     }
     $query = $this->db->select('hash, files.id, user, files.date, file_storage.id storage_id')->from('files')->join('file_storage', "file_storage.id = files.file_storage_id")->where('files.date <', $oldest_time)->get()->result_array();
     foreach ($query as $row) {
         $row['data_id'] = $row['hash'] . '-' . $row['storage_id'];
         \service\files::valid_id($row, $config, $this->mfile, time());
     }
 }
Example #5
0
 public function valid_filedata($filedata)
 {
     return \service\files::valid_id($filedata, $this->id_validation_config, $this, time());
 }