Dies ist ein einfacher ShareX-Uploader, der auf Node.js und MariaDB basiert. Der Uploader ermöglicht das Hochladen und generiert verschiedene Links für den Zugriff auf die hochgeladenen Dateien.
Du bist ein Developer und siehst hier Fehler oder hast Verbesserungsvorschläge? Zögere nicht ein Issue zu öffnen bzw. eine Pull Request.
- Hochladen von Bildern, Gifs, Videos, Audio und Dateien
- Token-basierte Authentifizierung
- Herunterladen und Löschen von Dateien
- GPS-Daten werden automatisch entfernt
- Vollständig anpassbare Discord-Einbettungen
- Integrierter Webviewer mit Bilder, Video- und Audioplayer
- Einbetten von Bildern, Gifs und Videos direkt in Discord
- Informations- und Fehler-Protokoll mit anpassbaren Discord-Webhook
- macOS/Linux-Unterstützung mit alternativen Clients wie [Flameshot] ([Skript für Esel]) & [MagicCap]
- Liste aller Dateien
- ...
Derzeit wird nur die Lokale Installationsmethoden unterstützt. In Zukunft wird aber auch Docker unterstützt.
Erweitern für die Lokale Installation
-
Node.JS v18.X.X installation
Debian:
cd ~ && apt install curl && curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh && sudo bash nodesource_setup.sh && sudo apt install nodejs
Ubuntu:
cd ~ && apt install curl && curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh && sudo bash nodesource_setup.sh && sudo apt install nodejs
-
Klone dieses Repo mit
git clone https://github.com/MaximilianGT500/Uploader.git && cd Uploader/
. -
Passe nun die
config.js
an. -
Führe
npm i
aus, um die benötigten Abhängigkeiten zu installieren. -
Führe
npm run register
aus, um den ersten Nutzer zu erstellen. -
Führe
npm start
aus, um den Uploader zu starten.
Für HTTPS-Unterstützung musst Du einen Reverse-Proxy konfigurieren. Ich empfehle Caddy, aber jeder Reverse-Proxy funktioniert gut (wie Apache oder Nginx). Eine Beispielkonfiguration für Caddy findest du hier:
uploader.example.com {
reverse_proxy localhost:3000
}
Die Datei config.sxcu
kann auch geändert und importiert werden, für ein schnelleren Start.
- Füge einen neuen benutzerdefinierten Uploader in ShareX hinzu, indem Du auf
Destinations > Custom uploader settings...
gehst. - Klicke auf
New
und gebe dem Uploader einen Namen Deiner Wahl. - Setze Zieltyp auf "Bild", "Text" und "Datei".
- Method:
POST
- Request URL:
https://example/upload
- Body:
Formulardaten (multipart/form-data)
- File form name:
file
(wörtlich "file" in das Feld eingeben) - Headers:
- Name:
Autorisierung
- Wert:
Dein Token
- Wert:
- Name:
- URL:
{json:view}
- Thumbnail URL:
{json:preview}
- Deletion URL:
{json:delete}
- Method:
Der Uploader hat eine API (v1.0.0) für Frontend-Entwickler zur einfachen Integration. Im Moment ist die API ziemlich begrenzt, aber ich werde sie in Zukunft erweitern, mit dem Feedback der Frontend-Entwickler.
Alle Endpunkte, die eine Autorisierung erfordern, werden einen Authorization
-Header benötigen, dessen Wert das Login-Token des Benutzers ist. Admin-Benutzer können auf alle Endpunkte zugreifen, während Nicht-Admin-Benutzer nur auf die für sie relevanten Endpunkte zugreifen können.
Andere Dinge zu beachten:
- Alle Endpunkte geben ein JSON-Objekt zurück.
- Erfolgreiche Endpunkte sollten einen
200
Statuscode zurückgeben. Alle Fehler verwenden den entsprechenden4xx
oder5xx
Statuscode (wie401 Unauthorized
).
Endpunkt | Zweck | Admin? |
---|---|---|
POST /login |
Dieser Endpunkt ermöglicht es einem Benutzer, sich anzumelden und ein Login-Token zu erhalten, das zur Authentifizierung verwendet wird. | Nein |
POST /upload |
Mit diesem Endpunkt kann ein Benutzer eine Datei hochladen. | Nein |
GET /view/:filename |
Dieser Endpunkt stellt ein WebUI für eine spezifische Datei bereit, die dem angegebenen Benutzer gehört. | Nein |
GET /oembed/:filename |
Hier erhält ein Benutzer die OEmbed-Daten für eine spezifische Datei. | Nein |
GET /download/:filename |
Durch diesen Endpunkt erhält der Benutzer einen direkten Download-Link für eine spezifische Datei. | Nein |
DELETE /file-delete/:username/:filename |
Mit diesem Endpunkt werden alle Daten einer angegebenen Datei gelöscht, einschließlich des Previews, der Datei selbst und des Datenbankeintrags. Der Zugriff ist auf den angegebenen Benutzer beschränkt. | Ja |
DELETE /file-delete/:filename |
Dieser Endpunkt löscht alle Daten einer angegebenen Datei, einschließlich des Previews, der Datei selbst und des Datenbankeintrags. Der Zugriff erfolgt über das Login-Token des eingeloggten Benutzers. | Nein |
DELETE /user-delete/:username |
Dieser Endpunkt löscht alle Daten eines Nutzers, einschließlich des Nutzers selbst, des Ordners des Nutzers und des Datenbankeintrags. Der Zugriff erfolgt über das Login-Token des eingeloggten Benutzers. | Ja |
DELETE /user-delete |
Mit diesem Endpunkt werden alle Daten des angemeldeten Nutzers gelöscht, einschließlich des Nutzers selbst, des Ordners des Nutzers und des Datenbankeintrags. Der Zugriff ist auf den angegebenen Benutzer beschränkt. | Nein |
GET /files/:username |
Hier erhält der Benutzer eine Liste aller Dateien eines bestimmten Nutzers. | Ja |
GET /files |
Durch diesen Endpunkt erhält der Benutzer eine Liste aller Dateien, die dem eingeloggten Benutzer gehören. | Nein |
Alle dieser Skripte sollten mit npm run <script-name>
ausgeführt werden. (außer start
)
Script | Beschreibung |
---|---|
start |
Startet den Uploader. Dies ist das Standardskript und wird mit npm start ausgeführt.. |
token |
Mit diesen Script bekommst du den Token von den angegebenen Nutzername und Passwort |
register |
Mit diesen Script kannst du einen Nutzer registrieren |
Verwende dieses Skript.
Solltest Du hilfe benötigen, öffne ein Issue oder Kontaktiere mich über meiner Website.
- Einiges von der README.md wurde von ass übernommen
Dieses Projekt ist unter der MIT-Lizenz lizenziert.