Gibt es eine Möglichkeit, ein Skript zum Herunterladen/Löschen einer Datei in einen Webserver „einzubetten“?

Gibt es eine Möglichkeit, ein Skript zum Herunterladen/Löschen einer Datei in einen Webserver „einzubetten“?

Ich muss dafür sorgen, dass ein Server folgendermaßen funktioniert:

Prüfen Sie, ob die angeforderte Datei lokal vorhanden ist.

  • Wenn vorhanden, servieren Sie es sofort
  • wenn nicht, übergeben Sie den REQUEST_URI an ein Skript, das ihn herunterlädt
  • Wenn die Datei ?delete=1 hat, rufen Sie das Skript auf, um sie zu entfernen

Ich habe dieses Verhalten erfolgreich mit nginx (unter Verwendung des 404-Fehlerhandlers) und PHP implementiert. Die Sache ist, dass ich, um dies auf einem anderen Server zu implementieren, sowohl nginx als auch PHP installieren/kompilieren muss.

Meine Frage ist, ob es eine Möglichkeit gibt, PHP aus dem Stack zu entfernen und Nginx (oder einen anderen Server) für diese Aufgabe einzusetzen. Ideal wäre für mich, wenn ich Bash-Skripte/-Befehle direkt vom Server aus ausführen/aufrufen könnte.

Kann mir jemand den richtigen Weg weisen?

Antwort1

Was Sie versuchen, lässt sich ganz einfach mit einfachem CGI und einem Shell-Skript erreichen. Wie Sie CGI aktivieren/implementieren, hängt vom Server ab. Nginxsollenkann, aber ich weiß, dass Apache dazu in der Lage ist. Lesen Sie in der Dokumentation nach oder stellen Sie eine spezifische Frage zum Aktivieren von CGI auf einem bestimmten Webserver.

Einfache Bash-Logik zum Prüfen, ob eine Datei existiert und um sie anzuzeigen:

#!/bin/bash

FILE="/path/to/file"
URI="http://example.com/file"

/bin/echo "Content-type: text/plain"
/bin/echo

if [ -f $FILE ]; then
  /bin/cat $FILE
else
  /usr/bin/wget $URI
fi

Sie können ${QUERY_STRING} analysieren, um Ihre Löschaktion zu erhalten. Die vollständige Lösung und Fehlerbehandlung überlasse ich Ihnen als Übung. Es wird etwas knifflig und geht über den Rahmen unseres Q&A-Formats hinaus.

Sehen:Parsen von QUERY_STRING in Bash CGI-Skripten

verwandte Informationen