]> 91.132.146.200 Git - selfpaste.git/commitdiff
todo cleanup and added an example cronjob file
authorBanana <mail@bananas-playground.net>
Tue, 24 Mar 2020 21:27:26 +0000 (22:27 +0100)
committerBanana <mail@bananas-playground.net>
Tue, 24 Mar 2020 21:27:26 +0000 (22:27 +0100)
CHANGELOG
TODO
documentation/clean-cronjob.txt [new file with mode: 0644]
webroot/lib/mancubus.class.php

index 2b8c1638bfa97620b5478b61f870f993e2570cc0..e44f1dcad751edc5f7ded36df8919e0d31d22b4a 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@ tbd version 0.4-beta Beryllium
 * added perl as default allowed file
 * added shellscript to the default allowed files
 * added html and js to the default allowed files
+* added an example cronjob file which can be used
+  to clean old pastes. See clean-cronjob.txt for more
+  detals
 
 2020101 version 0.3-beta Lithium
 * Update information now included
diff --git a/TODO b/TODO
index 0240a0de74635c5767342fd4de13078782d638a8..5ef4ac10292155205a024fb2fa3d2c530299f8a7 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,11 +1,7 @@
 * Documentation
 * code cleanup and small footprint
 * add force download parameter
-* HTTPS for selfpaste bash client
 * multiple secrets
-* extending allowed filetypes
 * creation or even access with basic auth
 * abstract storage to support different storage solutions
 * config file for client script
-* proxy setting for client script
-* Lifetimecheck as cronjob
diff --git a/documentation/clean-cronjob.txt b/documentation/clean-cronjob.txt
new file mode 100644 (file)
index 0000000..1de9791
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+/**
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+ *
+ * You should have received a copy of the
+ * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+ * along with this program.  If not, see http://www.sun.com/cddl/cddl.html
+ *
+ * 2019 - 2020 https://://www.bananas-playground.net/projekt/selfpaste
+ */
+
+/**
+ * Use this example to create a cronjob to clean up the paste entries which are over livetime.
+ * Usually the cleanup is done at creation and works well. But if you have a high load
+ * or very low load, those lifetime limits will not be checked correctly
+ *
+ * rename this file into a php file and create a cronjob which executes this file as
+ * php cli command
+ *
+ * example runs very sunday : 0 0 * * 0 php /path/to/this/file.php
+ *
+ * you need to change PATH_TO_MANCUBUS_CLASS to find the required PHP class
+ */
+
+# Encoding and error reporting setting
+mb_http_output('UTF-8');
+mb_internal_encoding('UTF-8');
+ini_set('error_reporting',-1); // E_ALL & E_STRICT
+
+# default time setting
+date_default_timezone_set('Europe/Berlin');
+
+# PATH to mancubus.class.php
+define('PATH_TO_MANCUBUS_CLASS','/path/to/selfpaste/mancubus.class.php');
+
+# verbose output
+# false no output
+# true for output
+$verbose=false;
+
+require_once(PATH_TO_MANCUBUS_CLASS);
+
+if($verbose == true) echo "Selfpaste cleanup start\n";
+$mancubus = new Mancubus();
+$mancubus->cleanupCronjob($verbose);
+if($verbose == true) echo "Selfpaste cleanup end\n";
\ No newline at end of file
index 5168548cc2ec4a6b88923b764ca5323a49a2e06d..c3af2ce77450b81bac274030cdc5be203979c80c 100644 (file)
@@ -134,6 +134,15 @@ class Mancubus {
         return $ret;
     }
 
+    /**
+     * Cleans lifetime and floodfiles.
+     * @param boolean
+     */
+    public function cleanupCronjob($verbose=false) {
+        $this->_cleanupFloodFiles($verbose);
+        $this->_checkLifetime($verbose);
+    }
+
     /**
      * Check if the POST upload worked
      * @return array message,status
@@ -291,12 +300,13 @@ class Mancubus {
     /**
      * clean up the flood tmp files. Everything older then 30 sec will be deleted.
      */
-    private function _cleanupFloodFiles() {
+    private function _cleanupFloodFiles($verbose=false) {
         $iterator = new DirectoryIterator(SELFPASTE_UPLOAD_DIR);
         $now = time();
         foreach ($iterator as $file) {
             if($file->isDot() || $file->isDir() || Summoner::startsWith($file->getFilename(),'.')) continue;
             if ($now - $file->getCTime() >= SELFPASTE_FLOOD_LIFETIME) {
+                if($verbose === true) echo "Delete ".$file->getFilename()."\n";
                 unlink(SELFPASTE_UPLOAD_DIR.'/'.$file->getFilename());
             }
         }
@@ -305,7 +315,7 @@ class Mancubus {
     /**
      * delete all pastes older than SELFPASTE_PASTE_LIFETIME
      */
-    private function _checkLifetime() {
+    private function _checkLifetime($verbose=false) {
         $iterator = new RecursiveDirectoryIterator(SELFPASTE_UPLOAD_DIR);
         $datepointInThePastInSec = strtotime('-'.SELFPASTE_PASTE_LIFETIME.' days');
 
@@ -317,6 +327,7 @@ class Mancubus {
             ) continue;
             if ($file->getMTime() <= $datepointInThePastInSec) {
                 if(is_writable($file->getPathname())) {
+                    if($verbose === true) echo "Delete ".$file->getPathname()."\n";
                     unlink($file->getPathname());
                 }
             }