Webserver (ctlmgr) für eigene Zwecke umnutzen?

Frittensenf

Neuer User
Mitglied seit
27 Mrz 2014
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
Auf der Fritzbox läuft ja ein Webserver, der die Oberfläche ausliefert. Der diesen implementierende Prozeß hört auf den melodischen Namen ctlmgr. Zumindest auf meiner Fb 7272 mit FRITZ!OS 06.30. Kann man sehen mit netstat und ps.

Ich hab einen USB Speicherstift angeschlossen, wo noch ein paar GB frei sind. Nun fänd ich es schick, wenn man den ctlmgr so konfigurieren könnte, daß er noch ein Verzeichnis vom USB Speicher serviert. Nicht für die Welt, nur für gelegentliche Anfragen von intern.

Hat jemand dahingehend Erfahrungen gesammelt?

Auf die Idee gebracht hat mich die Reaktivierung des Telnet Servers mittels Aktualisierung und Shellskript, wo man ja sieht, wie das System auf simple Weise sinnvoll und minimal invasiv modifiziert werden kann.
 
Moins

Das ist einfach.
Das geht mit telnet und/oder Pseudoimage.
Dafür stehen dir in /var drei Softlinks zur Verfügung.
Code:
lrwxrwxrwx    1 root     root            12 Jan  1  1970 /var/html -> /usr/www/avm/
lrwxrwxrwx    1 root     root             8 Aug  5 20:50 /var/html.myfritz -> /usr/www.myfritz/avm/
lrwxrwxrwx    1 root     root            16 Jan  1  1970 /var/html.nas -> /usr/www.nas/avm/
Wir nehmen mal: html.myfritz
Code:
cd /var
rm html.myfritz
ln -sf /var/media/ftp/SanDisk-Cruzer-01 html.myfritz
l html*
lrwxrwxrwx    1 root     root            12 Jan  1  1970 html -> /usr/www/avm/
lrwxrwxrwx    1 root     root            32 Aug  5 23:35 html.myfritz -> /var/media/ftp/SanDisk-Cruzer-01/
lrwxrwxrwx    1 root     root            16 Jan  1  1970 html.nas -> /usr/www.nas/avm/
lrwxrwxrwx    1 root     root            19 Aug  5 22:28 htmltext.db -> /etc/htmltext_de.db
Und noch eine index.html ins USB Hauptverzeichnis, dann hast du eigenen Webspace auf: "http://myfritz.box"
 
Zuletzt bearbeitet:
Danke für die schnelle Antwort.
Code:
  12 Jan  1  1970 /var/html         -> /usr/www/avm
  20 Jan  1  1970 /var/html.myfritz -> /usr/www.myfritz/avm
  16 Jan  1  1970 /var/html.nas     -> /usr/www.nas/avm
Hmm, aber in den verwiesenen Verzeichnissen liegen doch Skripte von AVM? Die scheinen für die drei Einträge in der Menüleiste der Oberfläche zu sein: FRITZ!Box, FRITZ!NAS, MyFRITZ. Wenn ich einen dieser Verweise einfach umsetze, dann schauen die Skripte darin dumm aus der Wäsche, daß sie nicht mehr aufgerufen werden.

Ich dachte eher an eine Erweiterung der Konfiguration. Sofern sie nicht komplett einkompiliert ist. Also ein Verweis, ob nun als Alias wie beim Apachen oder als Symlink, das ist schnuppe, so daß ich dann mit http://fritz.box/intern/ auf dem USB Speicher lande.

Hab mal mit lsof -p nach offenen Dateien geschaut, dabei nur dies gefunden, keine reguläre Datei:

srwxr-xr-x 1 root root 0 Jan 1 1970 /var/tmp/me_ctlmgr.ctl

Wo ist die HTTP Konfig? Oder hat er keine, da alles einkompiliert?
 
Die Konfiguration des Webservers ist tatsächlich zumindest teilweise "einkompiliert" ... meines Wissens wirken auch die Einstellungen in der ar7.cfg bzgl. des Webserver teilweise weiter - das ist aber auch schwer zu ermitteln. Die Einstellung für das CGI-Verzeichnis dort wirkt offenbar, ebenso wie die Port-Einstellungen. Aber schon bei der Liste der möglichen Index-Dateinamen ist das wohl nicht mehr der Fall (das ist inzwischen fest "index.lua") und auch das Basisverzeichnis läßt sich dort nicht mehr konfigurieren (das ist inzwischen offensichtlich fest verdrahtet auf /usr/www).

Um eine URL wie http://fritz.box/intern/ benutzen zu können, muß es ein Verzeichnis /usr/www/html/intern geben (das kann auch ein Symlink sein, muß aber eben als Direktory existieren) und das erzielt man auf dem von Dir anvisierten Weg nur, wenn man das komplette /usr/www/$OEM/html-Verzeichnis (dahin wird von /usr/www/html aus verlinkt), über den Umweg über das beschreibbare tmpfs) im tmpfs spiegelt und dort sein eigenes Unterverzeichnis hinzufügt. So eine Art "virtueller Server", der parallel und unabhängig von den AVM-Inhalten läuft, ist jedenfalls nicht machbar - das bleibt immer innerhalb desselben Prozesses.

Code:
root@FB7490:~ $ readlink /usr/www/html
/var/html
root@FB7490:~ $ readlink -f /usr/www/html
/usr/www/avm
 
Jetzt hab ich's gepeilt. Danke nochmal. In /usr liegen die drei WWW Verzeichnisse (www, www.nas, www.myfritz) für die drei Oberflächen FRITZ!BOX, FRITZ!NAS und MyFritz. Darin jeweils ein Symlink namens html auf Ziele in /var, was im Gegensatz zu /usr schreibbar gemountet ist, so daß man diese Symlinks ändern kann. Per Vorgabe zeigen sie zurück nach /usr/{www,www.nas,www.myfritz}/avm.

Eines der drei Verzeichnisse könnte ich nun komplett auf den Speicherstift kopieren und den Symlink in /var entsprechend umsetzen. Dann müßten eventuell noch ein paar relative Symlinks gefixt werden. Allerdings würde nicht mehr viel laufen, wenn aus irgendwelchen Gründen der Speicherstift mal abgezogen ist. Also am ehesten noch die MyFritz Oberfläche mißbrauchen, die ist nicht so wichtig.

Minimal invasiv ist das allerdings nach meinem Empfinden nicht mehr.

Ich finde, daß AVM hier dem Anwender einen kleinen Einhängpunkt spendieren könnte. So wie Bilder/Musik/Videos/Dokumente und Online-Speicher könnte auch ein Ordner WWW angelegt werden, wo der Webserver automatisch eine Verzeichnisliste erzeugt, sofern keine index.html oder dergleichen vorhanden ist. Da könnte man seine HTML Bücher und Merkzettelchen hin packen. Wenn der interne Speicher nicht reicht, was zumeist der Fall sein dürfte, ersetzt man den Eintrag einfach durch einen Symlink auf den USB Speicher. Der Webserver sollte sich nicht dafür interessieren, ob es ein Verzeichnis oder ein Symlink ist.

Kann man die Änderung auch selber machen, wenn man das Firmware BIN entpackt und entsprechend modifiziert?
Code:
# grep html /usr/bin/ctlmgr
/tools/kids_not_allowed.html
http://%s/tools/kids_not_allowed.html
/usr/www/html
/usr/www.myfritz/html
/usr/www.myfritz/html/errors
/usr/www.nas/html
/usr/www.nas/html/errors
/usr/www/html/errors/kids
http://download.avm.de/tv/tv1.html
http://download.avm.de/tv/tv2.html
http://download.avm.de/tv/tv3.html
htmltext_
Wohl nicht, man müßte den ctlmgr neu kompilieren. Den Quelltext hat man ja aber gar nicht, oder?
 
Abend

Immer diese WebGui-Ästheten, pöh. :roll:

Damit der Link im AVM Webinterface sauber durchrutscht bedarfs nur einer: /cgi-bin/luacgi

Und so oder eine ähnliche...

index.lua
HTML:
<!DOCTYPE html>
<html>
<head>
<title>{?gTxtFritzBox?}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="expires" content="0">
<meta http-equiv="refresh" content="1;URL=http://myfritz.box/myfritz/cgi-bin/events"
</head>
<body>
<p><?lua print("...redirecting...") ?></p>
</body>
</html>
 
Diesen Beitrag hab ich nicht verstanden. Worauf beziehst du dich und was meinst du damit?
 
:confused:
Wenn ich einen dieser Verweise einfach umsetze, dann schauen die Skripte darin dumm aus der Wäsche, daß sie nicht mehr aufgerufen werden.
Denn dann wird bei Klick auf MyFRITZ! die index.lua ausgeführt.
 
Es funktioniert ganz gut, danke für eure Hilfe! Muß sich jetzt erst mal in der Praxis bewähren, aber ich bin zufrieden.

Hier ist ein Lua Skript (ZIP, 3 KB), welches neben dem Verzeichnisinhalt das AVM Lua box Objekt zeigt. Meine ersten Schritte in Lua. :cool:
 
Ich glaube, du müßtest ein Alias setzen, um /var/media/ftp per HTTP zu servieren. (Ein Alias wie in der httpd.conf des Apache Webservers, falls bekannt, ansonsten "httpd conf alias" gugeln.) Aber um ein Alias zu setzen, müßte man Zugriff auf die Konfiguration haben. Und das geht nicht ohne weiteres. Ich hab's nicht mal untersucht, aber es ist sicher Bastelei. Man müßte wohl in das FritzOS Paket eingreifen, eventuell sogar die Quellen haben und den Webserver rekompilieren, und dann das Resultat flashen. Mit anderen Worten: Ich glaub, es lohnt sich nicht, da zu kompliziert. Aber ein Verzeichnis auf dem USB Stift, das geht relativ problemlos.
 
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.