]> 91.132.146.200 Git - selfpaste.git/commitdiff
lifetime of a paste
authorBanana <banana@mirage>
Sun, 22 Dec 2019 15:47:54 +0000 (16:47 +0100)
committerBanana <banana@mirage>
Sun, 22 Dec 2019 15:47:54 +0000 (16:47 +0100)
CHANGELOG
TODO
documentation/lifetime.txt [new file with mode: 0644]
webroot/config.default.php
webroot/lib/mancubus.class.php

index 50a6da453d0327c564c860fd73947b4594de7205..2f6db088ebc9b109abb8ff82e28813fe441b8f5e 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,8 @@
 TBA version 0.2 Helium
     * Using https://www.jwz.org/base64-shortlinks/ more correctly
     * Simple flood protection
+    * Lifetime for each paste.
+    * Deletion of paste older than the lifetime
 
 
 20191221 version 0.1 Hydrogen
diff --git a/TODO b/TODO
index 97f40df001e8eb9c8ca944d858a230fe5552cc85..0f6dee670b1729491d4c9f6bda061f442a689631 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,9 +1,6 @@
 * Documentation
-* lifetime
-* deletion of old ones
 * add force download parameter
 * HTTPS for selfpaste bash client
 * multiple secrets
 * extending allowed filetypes
-* creation or even access with basic auth
-* flood protection
\ No newline at end of file
+* creation or even access with basic auth
\ No newline at end of file
diff --git a/documentation/lifetime.txt b/documentation/lifetime.txt
new file mode 100644 (file)
index 0000000..f010fe2
--- /dev/null
@@ -0,0 +1,3 @@
+The default lifetime of a paste is 7 days. Anything older will be deleted.
+
+The default flood prevention time maximum is 30 sec.
\ No newline at end of file
index bfd756636e5a7277c610d092c1642dbd7daf3a3a..16a9508b49a235d4f3a011d46864cc14f7147654 100644 (file)
@@ -23,3 +23,7 @@ define('SELFPASTE_ALLOWED_FILETYPES','text/plain,text/comma-separated-values,tex
 # needed to respond with the correct link for your paste
 # please NO / at the end
 define('SELFPASTE_URL','http://your.tld/path/selfpaste/webroot');
+# time in seconds how long a paste will be available. Default 7 days = 604800 sec
+define('SELFPASTE_PASTE_LIFETIME',604800);
+# time in seconds how long the flood protection should take action. Default 30sec
+define('SELFPASTE_FLOOD_LIFETIME',30);
index c14e6e7a5a8985929cc594c0d7de570b92eeb146..861a866c7ee0335f3e25d583836a00851aa25c60 100644 (file)
@@ -124,6 +124,8 @@ class Mancubus {
             $ret = $this->_checkAllowedFiletype();
             $ret = $this->_checkStorage();
             $ret = $this->_moveUploadedFile();
+
+            $this->_checkLifetime();
         }
         catch (Exception $e) {
             $ret['message'] = $e->getMessage();
@@ -294,9 +296,28 @@ class Mancubus {
         $now = time();
         foreach ($iterator as $file) {
             if($file->isDot() || $file->isDir() || Summoner::startsWith($file->getFilename(),'.')) continue;
-            if ($now - $file->getCTime() >= 30) { // 30 sec
+            if ($now - $file->getCTime() >= SELFPASTE_FLOOD_LIFETIME) {
                 unlink(SELFPASTE_UPLOAD_DIR.'/'.$file->getFilename());
             }
         }
     }
+
+    /**
+     * delete all pastes older than SELFPASTE_PASTE_LIFETIME
+     */
+    private function _checkLifetime() {
+        $iterator = new RecursiveDirectoryIterator(SELFPASTE_UPLOAD_DIR);
+        $now = time();
+
+        foreach (new RecursiveIteratorIterator($iterator) as $file) {
+            $fname = $file->getFilename();
+            if($file->isDir()
+                || Summoner::startsWith($file->getFilename(),'.')
+                || isset($fname[4])
+            ) continue;
+            if ($now - $file->getCTime() >= SELFPASTE_PASTE_LIFETIME) {
+                unlink(SELFPASTE_UPLOAD_DIR.'/'.$fname);
+            }
+        }
+    }
 }
\ No newline at end of file