This repository has been archived on 2023-10-27. You can view files and clone it, but cannot push or open issues or pull requests.
beatsaber-wip-uploader/upload.php

74 lines
1.8 KiB
PHP
Raw Normal View History

2023-04-15 13:13:25 +00:00
<?php
header('Content-type:application/json;charset=utf-8'); // Set the response content type to JSON
$target_dir = "./maps/";
/**
* Generates a random map id
*/
function generateMapId()
{
$mapId = "";
$characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
2023-04-15 17:11:15 +00:00
for ($i = 0; $i < 4; $i++) {
2023-04-15 13:13:25 +00:00
$mapId .= $characters[rand(0, strlen($characters) - 1)];
}
return $mapId;
}
/**
* Checks if the file is a zip file
*/
function isZipFile($file)
{
$fileType = strtolower(pathinfo($file, PATHINFO_EXTENSION));
return $fileType == "zip";
}
$mapId = generateMapId(); // the id of the map
2023-04-15 13:35:21 +00:00
$map = $_FILES["map"]; // the file to upload
2023-04-15 18:00:51 +00:00
if (!isset($map)) { // if the file is not set
echo "No file was uploaded";
die();
}
2023-04-15 13:35:21 +00:00
$file = $map["tmp_name"]; // the temporary file path
2023-04-15 17:41:20 +00:00
$size = $map["size"]; // the size of the file
if ($size > 100000000) { // if the file is larger than 100MB
echo "The file is too large";
die();
}
2023-04-15 13:13:25 +00:00
2023-04-15 13:35:21 +00:00
if (!isZipFile($map["name"])) {
2023-04-15 13:13:25 +00:00
echo "The file is not a zip file";
2023-04-15 13:25:54 +00:00
die();
2023-04-15 13:13:25 +00:00
}
$fileHash = hash_file("sha256", $file); // the hash of the file
$exists = false;
foreach (scandir($target_dir) as $file) { // scan the maps directory for a file with the same hash
if (hash_file("sha256", $target_dir . $file) == $fileHash) {
$mapId = pathinfo($file, PATHINFO_FILENAME);
$exists = true;
break;
}
}
if ($exists) { // if the file already exists, redirect to the existing file
header("Location: /?map=https://wip.fascinated.cc/maps/" . $mapId . ".zip");
die();
}
2023-04-15 13:13:25 +00:00
$target_file = $target_dir . $mapId . ".zip";
2023-04-15 13:25:54 +00:00
if (!move_uploaded_file($file, $target_file)) {
echo "There was an error uploading the file";
die();
2023-04-15 13:13:25 +00:00
}
2023-04-15 14:02:44 +00:00
// redirect to /?map=https://wip.fascinated.cc/maps/" . $mapId . ".zip
header("Location: /?map=https://wip.fascinated.cc/maps/" . $mapId . ".zip");