Add-On: Shell-Ersatz für Web-Interface (Rudi-Shell)

Meinst Du so eine Art wget für Downloads von der Box per Kommandozeile, in etwa so?
Code:
# Achtung, Pseudo-Code!
rudi_getfile /etc/init.d/rc.S
 
Mhh.. ich hab jetzt leider keine Box zur Hand, versuche es aber mal:

Es gibt ja die Datei rudi_shellcmd.sh, wo entweder eine Webseite angezeigt wird, bzw. eine Datei runtergeladen wird (über den Content-Type).

In einem Addon von mir rufe ich die Datei direkt auf (als Link mit Parametern in der Adresszeile). Die Datei die runtergeladen wird heißt aber immer rudi_download. Das würde ich gerne übersteuern.

Ich wüsste auch wo ich ansetzen muss, aber bei der nächsten dsmod-Version wär's dann wieder weg ;)

EDIT:
Apropos Box zur Hand, wenn's doch als Anhang gibt :D

Code:
<? if [ "$FORM_display_mode" = "binary" ]; then
	echo 'Content-Type: application/octet-stream'
	echo -n 'Content-Disposition: attachment; [COLOR="Red"]filename="rudi_download'[/COLOR]
	if [ "$FORM_tar" = "true" ]; then echo -n '.tar'; fi
	if [ "$FORM_gz" = "true" ]; then echo -n '.gz'; fi
	echo -e '"\n'
	echo "$FORM_script" | sed "s/$(echo -ne '\r')//g" | sh
else

den meinte ich...

so wär's schön:
Code:
<? if [ "$FORM_display_mode" = "binary" ]; then
	echo 'Content-Type: application/octet-stream'
	echo -n 'Content-Disposition: attachment; [COLOR="Red"]filename="$FORM_filename'[/COLOR]
	if [ "$FORM_tar" = "true" ]; then echo -n '.tar'; fi
	if [ "$FORM_gz" = "true" ]; then echo -n '.gz'; fi
	echo -e '"\n'
	echo "$FORM_script" | sed "s/$(echo -ne '\r')//g" | sh
else

Wenn du sowas noch implementieren könntest, das wäre stark...
 
Zuletzt bearbeitet:
Ich schaue und überlege mal. Es ist ja nicht so, daß es viel Arbeit wäre. Ich bin ein wenig hin und her gerissen zwischen den diversen Möglichkeiten, die es noch gäbe, um Rudi komfortabler zu machen (vordefinierte, parametrisierbare Skripten, mehr Buttons oder Listen für Standardaktionen, Dateibrowser à la Norton Commander usw.) und dem grundsätzlichen Wunsch, Rudi so simpel und elegant wie jetzt zu halten. Es geht ja alles, man muß es nur richtig machen (wie im Wiki beschrieben). Es ist eben eine Shell, kein Browser.

Nebenbei: Ich bin vor einigen Tagen mit dem Autor von Haserl in Kontakt getreten, um ihn zu überzeugen, daß es eine gute Idee wäre, Uploads direkt in einen FIFO (named Pipe) streamen zu können anstatt in ein Temp-File. Gerade beim FW-Upgrade über Rudi wäre das ein Vorteil, weil auf kleinen Boxen bei doppelter Datenhaltung (Tar-Archiv und entpackte Dateien) der Platz vor dem Flashen eng werden könnte. Das hat jetzt zwar nichts mit Deinem Thema zu tun, aber es paßt in den Thread.
 
Also überladen sollte es nicht sein. Die Rudi-API ist schon gut :)

Ist ja nur der Dateiname, so dass diese Dateien direkt geöffnet werden können im Mozilla oder IE. Eventuell sogar über den Mime-Type direkt abgespielt (falls es eine Wave Datei ist). So wie's jetzt ist, ist es schon gut und mehr brauch auch nicht (bis auf den Dateinamen ;)).

Andere Anwendungen könnten darauf aufsetzen und profitieren (ohne jetzt ein extra Package als Mod zu registrieren). Die Datei rudi_shellcmd.cgi macht ja alles, was man benötigt. Meine Idee ging nicht in die Richtung Neu-Implementierung, vielmehr in Richtung Dynamik.

Ich verwende auch nicht die Oberfläche, sondern nur den Funktionsumfang dahinter ...
 
Zuletzt bearbeitet:
Optionaler Download-Dateiname für Rudi-Shell

Meintest Du sowas? Mußt nur dafür sorgen, daß beim Aufruf des Skripts die Umgebungsvariable FORM_download_name gesetzt ist, das müßte genügen. Die Endungen .tar und/oder .gz werden zusätzlich angehängt, wenn die entsprechenden Schalter gesetzt sind.

War zu faul, es auf der Box zu testen. Sag Bescheid, wenn es geht, dann kann ich es ja fest einbauen.
 

Anhänge

  • rudi_shellcmd.patch.txt
    711 Bytes · Aufrufe: 11
Funktioniert.

Jedoch müsste das Hochkomma weg, da es im Dateinamen mitauftaucht:

Code:
        [ -z $FORM_download_name ] && FORM_download_name=rudi_download
        echo 'Content-Type: application/octet-stream'
        echo -n "Content-Disposition: attachment; [COLOR="red"]filename=$FORM_download_name"[/COLOR]
        if [ "$FORM_tar" = "true" ]; then echo -n '.tar'; fi
        if [ "$FORM_gz" = "true" ]; then echo -n '.gz'; fi
        [COLOR="Red"]echo -e '\n'[/COLOR]
        echo "$FORM_script" | sed "s/$(echo -ne '\r')//g" | sh
 
Ach so, da unten war ja das schließende Anführungszeichen. Da hatte ich meinen eigenen Code nicht mehr richtig angeschaut und falsch verstanden. Aber so wie bei Dir stimmt es auch nicht, falls Leerzeichen im Namen vorkommen. Deswegen hatte ich die Anführungszeichen verwendet. Eher so:
Code:
        [ -z "$FORM_download_name" ] && FORM_download_name=rudi_download
        echo 'Content-Type: application/octet-stream'
        echo -n "Content-Disposition: attachment; filename=[COLOR="red"][B]\"[/B][/COLOR]$FORM_download_name"
        if [ "$FORM_tar" = "true" ]; then echo -n '.tar'; fi
        if [ "$FORM_gz" = "true" ]; then echo -n '.gz'; fi
        echo -e '[COLOR="red"][B]"[/B][/COLOR]\n'
        echo "$FORM_script" | sed "s/$(echo -ne '\r')//g" | sh
 
Zuletzt bearbeitet:
Müssen da nicht auch noch Anführungszeichen hin?
[ -z $FORM_download_name ]
[ -z "$FORM_download_name" ]
Grüße
Harald
 
Ja, wäre besser, falls in FORM_download_name Leerzeichen enthalten sein sollten, ansonsten wäre es egal. Aber bei Dateinamen weiß man ja nie... Ich ergänze das gleich oben.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.