/*
* 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
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;
}
return $result;
}
- public function uploadFile($file): array
+ /**
+ * @throws Exception
+ */
+ public function uploadFile(): array
{
(new Settings())->loadConfig();
(new Database())->antiDupe();
}
- (new Upload())->generateName($file);
+ (new Upload())->generateName();
if (!is_dir(Settings::$FILES_ROOT)) {
'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) {
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) {
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)) {
}
}
+ /**
+ * @throws Exception
+ */
public function checkExtensionBlacklist()
{
if (in_array(self::$FILE_EXTENSION, Settings::$BLOCKED_EXTENSIONS)) {