remote forking: use the original http/https url in description
[phorkie.git] / src / phorkie / Tools.php
index d9b7637f7120b3f3fdd09e20ae2d2085579bd688..9435dc047d560624036e464ccf76851c5b49ad2c 100644 (file)
@@ -4,6 +4,13 @@ namespace phorkie;
 
 class Tools
 {
+    /**
+     * Delete an entire directory structure
+     *
+     * @param string $path Path to delete
+     *
+     * @return bool
+     */
     public static function recursiveDelete($path)
     {
         if (!is_dir($path) || is_link($path)) {
@@ -37,6 +44,29 @@ class Tools
         }
         return $prot . '://' . $_SERVER['HTTP_HOST'] . $path;
     }
+
+    /**
+     * Removes malicious parts from a file name
+     *
+     * @param string $file File name from the user
+     *
+     * @return string Fixed and probably secure filename
+     */
+    public static function sanitizeFilename($file)
+    {
+        $file = trim($file);
+        $file = str_replace(array('\\', '//'), '/', $file);
+        $file = str_replace('/../', '/', $file);
+        if (substr($file, 0, 3) == '../') {
+            $file = substr($file, 3);
+        }
+        if (substr($file, 0, 1) == '../') {
+            $file = substr($file, 1);
+        }
+
+        return $file;
+    }
+
 }
 
-?>
\ No newline at end of file
+?>