summaryrefslogtreecommitdiffstats
path: root/application/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'application/controllers')
-rw-r--r--application/controllers/file.php44
1 files changed, 39 insertions, 5 deletions
diff --git a/application/controllers/file.php b/application/controllers/file.php
index b8b22f12b..49434699c 100644
--- a/application/controllers/file.php
+++ b/application/controllers/file.php
@@ -205,16 +205,50 @@ class File extends CI_Controller {
$this->load->view($this->var->view_dir.'/footer', $this->data);
}
- // Handles uploaded files
- function do_upload()
+ // Handle pastes
+ function do_paste()
{
$this->muser->require_access();
- if ($this->uri->segment(3)) {
- $this->var->cli_client = true;
- $this->var->view_dir = "file_plaintext";
+ $content = $this->input->post("content");
+ $filesize = strlen($content);
+ $filename = "stdin";
+
+ if(!$content) {
+ $this->output->set_status_header(400);
+ $this->data["msg"] = "Nothing was pasted, content is empty.";
+ $this->load->view($this->var->view_dir.'/header', $this->data);
+ $this->load->view($this->var->view_dir.'/upload_error', $this->data);
+ $this->load->view($this->var->view_dir.'/footer');
+ return;
+ }
+
+ if ($filesize > $this->config->item('upload_max_size')) {
+ $this->output->set_status_header(413);
+ $this->load->view($this->var->view_dir.'/header', $this->data);
+ $this->load->view($this->var->view_dir.'/too_big');
+ $this->load->view($this->var->view_dir.'/footer');
+ return;
}
+ $id = $this->file_mod->new_id();
+ $hash = md5($content);
+
+ $folder = $this->file_mod->folder($hash);
+ file_exists($folder) || mkdir ($folder);
+ $file = $this->file_mod->file($hash);
+
+ file_put_contents($file, $content);
+ chmod($file, 0600);
+ $this->file_mod->add_file($hash, $id, $filename);
+ $this->file_mod->show_url($id, $extension);
+ }
+
+ // Handles uploaded files
+ function do_upload()
+ {
+ $this->muser->require_access();
+
$extension = $this->input->post('extension');
if(!isset($_FILES['file']) || $_FILES['file']['error'] !== 0) {
$this->output->set_status_header(400);