"[RELEASE]" ShareX-Uploadscript

23 Dec 2015
1,196
1,154
#1
Heyho,

habe vorhin beim Aufräumen meiner alten Projekte noch einen ShareX-Uploadscript gefunden, weil mir der "ursprüngliche" nicht gepasst hatte.
War ein ganz einfacher Script mit vielleicht 15(?) Zeilen Code. Kann sein, dass es da mittlerweile was besseres gibt.

Was ist mit dem Script möglich?
  • User "anlegen"
    • User bekommen einen eigenen Key und einen eigenen Unterorder, welcher entweder so heißt wie der User oder anderweitig festgelegt werden kann.
  • Verbieten/Erlauben von Mime-Types
    • In einem Array kann man erlaubte Dateiendungen festlegen und bei dem jeweiligen User festlegen, ob diese Beschränkung für ihn gelten oder nicht.
    • Bisher sind nur Bilder und Videos in dem Array. Falls ihr weitere hinzufügen wollt, ist hier eine Liste: https://wiki.selfhtml.org/wiki/MIME-Type/Übersicht
  • Löschen von Dateien
  • Anzeigen aller Dateien
Folgende Params können via ShareX übergeben werden:
  • (Pflicht) secret
  • (Optional) randomname(true|false) - soll ein zufälliger Name generiert oder der ursprüngliche Dateiname beibehalten und 3 beliebige Zahlen davorgesetzt werden.
  • (Optional) stringlen(beliebige Zahl) - Wenn randomname true ist, bestimmt dieser Wert die Länge des zufälligen Namens
Wenn die beiden optionalen Parameter nicht mitübergeben werden, dann nimmt er die Einstellungen aus dem Kopf des Dokuments.



Kann ich leider nicht einbetten, da Cloudflare zicken macht.
oder:
Github

WICHTIG:

Übernehmt keinesfalls die Secrets aus dem Code.
Schreibt selbst welche oder generiert sie bestenfalls.
Hier bspw.: https://passwordsgenerator.net/
  • Zeichen: (mindestens) 16
  • Include Numbers
  • Include lowercase und uppercase Characters

Wären sicherlich noch einige andere Sachen mit möglich.
Kommentare sind keine drin; das meiste sollte selbsterklärend sein.
Falls nicht, dann könnt ihr gerne fragen.

Der Code ist etwas älter, habe ihn aber vorhin benutzt und er sollte funktionieren.
Falls nicht, lasst es mich wissen.

Nachtrag 22.12:
Kurzer Nachtrag:

In den letzten 1,5 Stunden habe ich noch die ein oder andere Änderung eingebaut.

Hochladen bleibt gleich.

Neue Funktionen:
  • List all Files
    • Je nach Berechtigung bekommt man nur seine eigenen oder alle Files
      • Angabe von Name, Link und Delete-Link
  • Delete File
    • Je nach Berechtigung kann man jedes gewünschte File oder nur seine eigenen Files löschen

Wie funktioniert das Anzeigen aller Files?

http://www.yourpage.com/list.php?secret=123456

Dann werden, je nach Berechtigung, entweder alle oder nur die Files der Person angezeigt.
Diese können dann auch direkt per Button gelöscht oder geöffnet werden.
Wichtig: Die darstellende Komponente ist ugly as fuck. Ich bin nicht kreativ und hasse auch alles im Frontend.
Wer sich berufen fühlt, kann da ja gerne was nettes basteln. Ansonsten kommt die Tage noch eine Lösung in JS.

Wie funktioniert das Löschen eines Files?

http://www.yourpage.com/delete.php?secret=123456&file=test.png

Löscht die Datei, wenn euer Secret/Benutzer die Berechtigung dazu hat.

Der Code ist im prozeduralen Stil geschrieben, da ich schlichtweg zu faul war.
Ich habe noch die ein oder andere Idee dafür und sollte ich diese Umsetzen, wird der Code refactored.

Schönen Abend euch!

Ansonsten viel Spaß und schöne Feiertage.
 
Last edited:
23 Dec 2015
1,196
1,154
#2
Kurzer Nachtrag:

In den letzten 1,5 Stunden habe ich noch die ein oder andere Änderung eingebaut.

Hochladen bleibt gleich.

Neue Funktionen:
  • List all Files
    • Je nach Berechtigung bekommt man nur seine eigenen oder alle Files
      • Angabe von Name, Link und Delete-Link
  • Delete File
    • Je nach Berechtigung kann man jedes gewünschte File oder nur seine eigenen Files löschen

Wie funktioniert das Anzeigen aller Files?

http://www.yourpage.com/list.php?secret=123456

Dann werden, je nach Berechtigung, entweder alle oder nur die Files der Person angezeigt.
Diese können dann auch direkt per Button gelöscht oder geöffnet werden.
Wichtig: Die darstellende Komponente ist ugly as fuck. Ich bin nicht kreativ und hasse auch alles im Frontend.
Wer sich berufen fühlt, kann da ja gerne was nettes basteln. Ansonsten kommt die Tage noch eine Lösung in JS.

Wie funktioniert das Löschen eines Files?

http://www.yourpage.com/delete.php?secret=123456&file=test.png

Löscht die Datei, wenn euer Secret/Benutzer die Berechtigung dazu hat.

Der Code ist im prozeduralen Stil geschrieben, da ich schlichtweg zu faul war.
Ich habe noch die ein oder andere Idee dafür und sollte ich diese Umsetzen, wird der Code refactored.

Schönen Abend euch!
 

lion

Well-Known Member
24 Jul 2015
269
540
#3
Hier eine Config zum importieren in ShareX:

Code:
{
  "DestinationType": "ImageUploader, TextUploader, FileUploader",
  "RequestURL": "https://domain.de/up.php",
  "FileFormName": "sharex",
  "Arguments": {
    "secret": "secret",
    "randomname": "true",
    "stringlen": "15"
  }
}
 

Electricz

seal bruder gib mal nicen custom titel
23 Dec 2014
4,410
1,641
#4
hallo bin noob

Code:
Fehler: Message:
Der Remoteserver hat einen Fehler zurückgegeben: (500) Interner Serverfehler.

Request URL:
https://cleanlegen.de/up.php

Stack trace:
   bei System.Net.HttpWebRequest.GetResponse()
   bei ShareX.UploadersLib.Uploader.SendRequestFile(String url, Stream data, String fileName, String fileFormName, Dictionary`2 args, NameValueCollection headers, CookieCollection cookies, ResponseType responseType, HttpMethod method, String contentType, String metadata)
 

lion

Well-Known Member
24 Jul 2015
269
540
#5
hallo bin noob

Code:
Fehler: Message:
Der Remoteserver hat einen Fehler zurückgegeben: (500) Interner Serverfehler.

Request URL:
https://cleanlegen.de/up.php

Stack trace:
   bei System.Net.HttpWebRequest.GetResponse()
   bei ShareX.UploadersLib.Uploader.SendRequestFile(String url, Stream data, String fileName, String fileFormName, Dictionary`2 args, NameValueCollection headers, CookieCollection cookies, ResponseType responseType, HttpMethod method, String contentType, String metadata)
Wird an deinem Webserver liegen - > error logs
 

Electricz

seal bruder gib mal nicen custom titel
23 Dec 2014
4,410
1,641
#6
Wird an deinem Webserver liegen - > error logs
[Thu Jan 17 19:36:31.079702 2019] [:error] [pid 25688] [client 1-] PHP Catchable fatal error: Argument 1 passed to getUser() must be an instance of string, string given, called in /var/www/cleanlegen.de/root/public/up.php on line 10 and defined in /var/www/cleanlegen.de/root/public/functions.php on line 14
 
23 Dec 2015
1,196
1,154
#7
[Thu Jan 17 19:36:31.079702 2019] [:error] [pid 25688] [client 1-] PHP Catchable fatal error: Argument 1 passed to getUser() must be an instance of string, string given, called in /var/www/xxx/root/public/up.php on line 10 and defined in /var/www/xxx/root/public/functions.php on line 14
Wie sieht denn der Secret aus, der übergeben wird?
Im Endeffekt sagt er, dass er mit dem übergebenen Secret nicht "zufrieden" ist(auch wenn dran steht, dass er einen string expected und string given ist xD)
Deine Domain ist übrigens einsehbar(falls du das nicht willst, fix editen).
 

Electricz

seal bruder gib mal nicen custom titel
23 Dec 2014
4,410
1,641
#8
Wie sieht denn der Secret aus, der übergeben wird?
Im Endeffekt sagt er, dass er mit dem übergebenen Secret nicht "zufrieden" ist(auch wenn dran steht, dass er einen string expected und string given ist xD)
Deine Domain ist übrigens einsehbar(falls du das nicht willst, fix editen).
random Groß- und Kleinbuchstaben + Zahlen
 
23 Dec 2015
1,196
1,154
#10
random Groß- und Kleinbuchstaben + Zahlen
Geh mal in die functions.php und änder:
Code:
/**
* @description get user by secret-key
* @param string $secret
* @param array $a_allowedUser
*/
function getUser(string $secret, array $a_allowedUser) {
in
Code:
/**
* @description get user by secret-key
* @param array $a_allowedUser
*/
function getUser($secret, array $a_allowedUser) {
Andere Frage:
Hast du das davor schon problemlos benutzt und tritt das jetzt direkt beim ersten Benutzen auf?
 

Electricz

seal bruder gib mal nicen custom titel
23 Dec 2014
4,410
1,641
#11
Geh mal in die functions.php und änder:
Code:
/**
* @description get user by secret-key
* @param string $secret
* @param array $a_allowedUser
*/
function getUser(string $secret, array $a_allowedUser) {
in
Code:
/**
* @description get user by secret-key
* @param array $a_allowedUser
*/
function getUser($secret, array $a_allowedUser) {
Andere Frage:
Hast du das davor schon problemlos benutzt und tritt das jetzt direkt beim ersten Benutzen auf?
Ging auch nicht.

Hab vorher ein anderes Script Problemlos genutzt, da aber meine ganzen Settings von sharex usw weg waren, wollte ich deines mal testen, bzw nutzen

Gibt es vielleicht sonst iwas was ich eventuell vercheckt habe (rechte oder so ka)
 
23 Dec 2015
1,196
1,154
#13
Ging auch nicht.

Hab vorher ein anderes Script Problemlos genutzt, da aber meine ganzen Settings von sharex usw weg waren, wollte ich deines mal testen, bzw nutzen

Gibt es vielleicht sonst iwas was ich eventuell vercheckt habe (rechte oder so ka)
Muss ich mir nachher mal anschauen.

bekomme bad request? :x

nvm bin dumm
Bad Request wird beim Up in folgenden Fällen zurückgegeben:
Stringlen nicht numeric oder wenn "isset($_POST['secret']) && isset($_FILES) && $_FILES['sharex']['error'] == 0)" eins davon false ist.


Scheint ja fixed zu sein :grin: