From 0846dea3676ba99ae333e9c607e7e010ccfd92c3 Mon Sep 17 00:00:00 2001 From: Tower Date: Fri, 27 Feb 2026 15:15:36 +0100 Subject: [PATCH] update: api tests --- WEBROOT/api/get.php | 60 +++++++++++++++++++++++++++ WEBROOT/api/upload.php | 92 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 WEBROOT/api/get.php create mode 100644 WEBROOT/api/upload.php diff --git a/WEBROOT/api/get.php b/WEBROOT/api/get.php new file mode 100644 index 0000000..03926a5 --- /dev/null +++ b/WEBROOT/api/get.php @@ -0,0 +1,60 @@ + "Unauthorized"]); + exit; +} + +if (in_array($token, $validTokens)) { + DatabaseInsert( + "API", + "CLIENT_IP, TOKEN, API, FUNKTION", + (new getSpecificData())->getClientIP(), + $token, + (new getSpecificData())->getRequestURL(), + $function + ); + + if ($function === "IPs") { + $data = DatabaseShow( + "logs", + "CLIENT_IP" + ); + } + + if ($function === "Ueberstunden") { + $data = DatabaseShow( + "Ueberstunden", + "MINUTEN" + ); + } + + echo json_encode( + [ + "success" => true, + "data" => $data, + ] + ); + exit; +} \ No newline at end of file diff --git a/WEBROOT/api/upload.php b/WEBROOT/api/upload.php new file mode 100644 index 0000000..eb8df57 --- /dev/null +++ b/WEBROOT/api/upload.php @@ -0,0 +1,92 @@ + "Unauthorized"]); + exit; +} + +if (!isset($_FILES['files'])) { + http_response_code(400); + echo json_encode(["error" => "No files uploaded"]); + exit; +} + +$folderName = null; +$readmeContent = null; + +// Prüfen ob readme.md hochgeladen wurde +foreach ($_FILES['files']['name'] as $key => $name) { + if (strtolower($name) === "readme.md") { + $tmpName = $_FILES['files']['tmp_name'][$key]; + $readmeContent = file_get_contents($tmpName); + break; + } +} + +if ($readmeContent) { + // Erste Markdown-Überschrift extrahieren (# Titel) + if (preg_match('/^#\s*(.+)$/m', $readmeContent, $matches)) { + $rawName = $matches[1]; + + // Slug erzeugen (ordner-tauglich machen) + $folderName = strtolower($rawName); + $folderName = preg_replace("/[^a-z0-9]+/", "-", $folderName); + $folderName = trim($folderName, "-"); + } +} + +// Fallback falls keine readme oder kein Titel +if (!$folderName) { + $folderName = uniqid("upload_", true); +} +$uploadDir = $baseUploadDir . $folderName . "/"; + +if (!mkdir($uploadDir, 0755, true)) { + http_response_code(500); + echo json_encode(["error" => "Failed to create directory"]); + exit; +} + +$uploadedFiles = []; + +foreach ($_FILES['files']['tmp_name'] as $key => $tmpName) { + + if ($_FILES['files']['error'][$key] !== UPLOAD_ERR_OK) { + continue; + } + + $originalName = basename($_FILES['files']['name'][$key]); + + $safeName = preg_replace("/[^a-zA-Z0-9._-]/", "", $originalName); + + $finfo = new finfo(FILEINFO_MIME_TYPE); + $mime = $finfo->file($tmpName); + + if ($_FILES['files']['size'][$key] > 25 * 1024 * 1024) { + continue; + } + + $targetPath = $uploadDir . $safeName; + + if (move_uploaded_file($tmpName, $targetPath)) { + $uploadedFiles[] = $safeName; + } +} + +echo json_encode([ + "success" => true, + "folder" => $folderName, + "uploaded_files" => $uploadedFiles +]);