]> jfr.im git - uguu.git/blobdiff - static/php/includes/Upload.class.php
fix sha1 issue
[uguu.git] / static / php / includes / Upload.class.php
index dbc49568b5aa40aa07f8f24fce8e2d1e20ee2398..8c7c0734596cb36e5de623e4ba581bc58534dd66 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Uguu
  *
- * @copyright Copyright (c) 2022 Go Johansson (nekunekus) <neku@pomf.se> <github.com/nokonoko>
+ * @copyright Copyright (c) 2022 Go Johansson (nokonoko) <neku@pomf.se>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -48,7 +48,8 @@ class Upload
             self::$FILE_NAME = $file['name'];
             self::$FILE_SIZE = $file['size'];
             self::$TEMP_FILE = $file['tmp_name'];
-            $result[] = [self::$FILE_NAME, self::$FILE_SIZE, self::$TEMP_FILE];
+            self::$SHA1 = sha1_file(self::$TEMP_FILE);
+            $result[] = [self::$FILE_NAME, self::$FILE_SIZE, self::$TEMP_FILE, self::$SHA1];
         }
         return $result;
     }
@@ -65,7 +66,10 @@ class Upload
         return $result;
     }
 
-    public function uploadFile($file): array
+    /**
+     * @throws Exception
+     */
+    public function uploadFile(): array
     {
         (new Settings())->loadConfig();
 
@@ -73,7 +77,7 @@ class Upload
             (new Database())->antiDupe();
         }
 
-        (new Upload())->generateName($file);
+        (new Upload())->generateName();
 
 
         if (!is_dir(Settings::$FILES_ROOT)) {
@@ -103,10 +107,28 @@ class Upload
             'size' => self::$FILE_SIZE
         ];
     }
+    public function fileInfo()
+    {
+        if (isset($_FILES['files'])) {
+            $finfo = finfo_open(FILEINFO_MIME_TYPE);
+            self::$FILE_MIME = finfo_file($finfo, self::$TEMP_FILE);
+            $extension = explode('.',self::$FILE_NAME,2);
+            self::$FILE_EXTENSION = $extension['1'];
+            finfo_close($finfo);
 
-    public function generateName($file): string
+            if (Settings::$LOG_IP) {
+                self::$IP = $_SERVER['REMOTE_ADDR'];
+            } else {
+                self::$IP = '0';
+            }
+        }
+    }
+    /**
+     * @throws Exception
+     */
+    public function generateName(): string
     {
-        (new Upload())->fileInfo($file);
+        (new Upload())->fileInfo();
 
         do {
             if (Settings::$FILES_RETRIES === 0) {
@@ -118,8 +140,9 @@ class Upload
                 self::$NEW_NAME .= Settings::$ID_CHARSET[mt_rand(0, strlen(Settings::$ID_CHARSET))];
             }
 
-            if (isset(self::$FILE_EXTENSION) && self::$FILE_EXTENSION !== '') {
-                self::$NEW_NAME_FULL = self::$NEW_NAME . '.' . self::$FILE_EXTENSION;
+            if(isset(self::$FILE_EXTENSION)){
+                self::$NEW_NAME_FULL = self::$NEW_NAME;
+                self::$NEW_NAME_FULL .= '.'.self::$FILE_EXTENSION;
             }
 
             if (Settings::$BLACKLIST_DB) {
@@ -135,30 +158,9 @@ class Upload
         return self::$NEW_NAME_FULL;
     }
 
-    public function fileInfo($file)
-    {
-        if (isset($_FILES['files'])) {
-            self::$SHA1 = sha1_file(self::$TEMP_FILE);
-            $finfo = finfo_open(FILEINFO_MIME_TYPE);
-            self::$FILE_MIME = finfo_file($finfo, self::$TEMP_FILE);
-            finfo_close($finfo);
-
-            if (Settings::$LOG_IP) {
-                self::$IP = $_SERVER['REMOTE_ADDR'];
-            } else {
-                self::$IP = '0';
-            }
-
-            foreach (Settings::$DOUBLE_DOTS as $DDOT) {
-                if (stripos(strrev(self::$FILE_NAME), $DDOT) === 0) {
-                    self::$FILE_EXTENSION = strrev($DDOT);
-                } else {
-                    self::$FILE_EXTENSION = pathinfo(self::$FILE_NAME, PATHINFO_EXTENSION);
-                }
-            }
-        }
-    }
-
+    /**
+     * @throws Exception
+     */
     public function checkMimeBlacklist()
     {
         if (in_array(self::$FILE_MIME, Settings::$BLOCKED_MIME)) {
@@ -166,6 +168,9 @@ class Upload
         }
     }
 
+    /**
+     * @throws Exception
+     */
     public function checkExtensionBlacklist()
     {
         if (in_array(self::$FILE_EXTENSION, Settings::$BLOCKED_EXTENSIONS)) {