Webcm

From Fritz!Box
Jump to: navigation, search

AVM Wiki >> Shell-Befehle >> webcm @ whmf   -   IRC-Chat   -   hu nl it English
Community Modelle Zubehör Environment Konfiguration Shell-Befehle Software Freetz Lexikon Tipps+Tricks Bilder

Startup-Scripts AVM-Befehle BusyBox-Befehle Linux-Befehle Shared Libraries Kernel-Module Listings Todo

Contents

Befehl

webcm (Web Control Manager) ist das CGI-Frontent zu ctlmgr (Control Manager) mit dem alle Einstellungen und Statuswerte die in User-Interface-Modulen gruppiert sind im Webinterface angezeigt oder verändert werden können.

Um Arbeitsspeicher zu sparen ist webcm kein Daemon, er wird "per Klick" von ctlmgr als CGI-Prozess aufgerufen und nach Abarbeitung seines Auftrags beendet.

Aufgerufen von

Kommunikation

Tempfiles

CGI-Aufruf

http://fritz.box/cgi-bin/webcm?<query_variable>=<wert>&<query_variable>=<wert>&....

Beispiel einer webcm Query:

webcm ?
sid=356c382b661c7c85 &
getpage=../html/de/menus/menu2.html &
errorpage=../html/de/menus/menu2.html &
var:pagename=home &
var:errorpagename= &
var:menu=home &
var:pagemaster= &
time:settings/time=1278193514/-120 &
var:activtype=bridge &
var:tabInetstat=0 &
var:weckernr= &
logger:settings/filter=0 &

Das Beispiel wurde zur Erhöhung der Leserlichkeit dekodiert und formatiert. Namen und Werte der Query-Variablen werden natürlich URL-Encoded und ohne Leerzeichen vor und nach den "&" zu einer Zeile aneinandergereiht.

Wie man sieht kann webcm direkt Variablen in User-Interface-Modulen zuweisen, hier in den Modulen var, time, logger.

Der übergebene Query erscheint CGI-typisch in der CGI-Environment Variable QUERY_STRING.

Shell-Aufruf

Zur lokalen Nutzung von webcm zum Auslesen von Statuswerten ist keine Trickserei mit FRITZ!Box-Kennwort-Login in Scripts nötig da webcm auch einen Shell-Modus hat der ohne Login funktioniert (was auch Sinn macht).

Diese Methode funktioniert in neuerer Firmware nicht mehr und wurde durch ctlmgr_ctl Abfragen in supportdata.dsl ersetzt!

Diese Funktion wird auch vom System genutzt, in supportdata:

echo "exp_pm_mode_L2: <? query sar:status/exp_pm_mode_L2 ?>" >supp.txt
echo "exp_pm_mode_L2_act: <? query sar:status/exp_pm_mode_L2_act ?>" >>supp.txt
echo "modem_ShowtimeSecs: <? query sar:status/modem_ShowtimeSecs ?>" >>supp.txt
/usr/www/cgi-bin/webcm nextpage=supp.txt
rm supp.txt

Es wird eine Pseudo-Webseite aus query SSI-Direktiven erzeugt, die mit dem nextpage Argument in webcm geladen wird, der dann Statuswerte im sar User-Interface-Modul in die Pseudo-Webseite einfügt und ausgibt. Dieses Script-Fragment führt zu folgender Ausgabe:

exp_pm_mode_L2: 0
exp_pm_mode_L2_act: 0
modem_ShowtimeSecs: 1995418

Bedeutung: Die DSL-Verbindung unterstützt keine L2-Power-Modes und besteht seit 1995418 Sekunden.

Da webcm sehr langsam ist was query-Direktiven angeht dauert der erste Aufruf mehrere Sekunden. Aufrufe danach sind bedeutend schneller, da webcm einen Query-Cache pflegt, zeigen aber dadurch veraltete Werte. Wie lange der Cache Query-Werte speichert, und was genau im ersten Aufruf gecached wird, wird noch dokumentiert.

Beispiele

TODO

Quelltext

Der Quelltext ist zwar nicht offen, die Dateinamen schon:

$ strings usr/www/cgi-bin/webcm | grep "\.c$" | sort

cgi.c
interpreter_link.c       # SSI-Interpreter Callback zu libtiinterpreter.so
main.c
post.c
query_cache_simple.c     # Cache für die query SSI-Direktive
referrer_check.c         # Obligatorischer HTTP_REFERER-Test zur Steigerung der "Sicherheit"

Symbole

GetSessionId
Interpreter_Error_Callback
Interpreter_Open_Callback
Interpreter_Query_Callback
NameWithoutVarPrefix
QueryCache_Exit
QueryCache_Insert
QueryCache_Lookup
ReferrerViolation
SetSessionId
add_debug_error
check_response
do_post
get_input
getcgivars
is_post_write_access_violation
is_read_access_allowed
is_write_access_allowed
login
main
msgr_makeTransSetPost
parse_cgivars
parse_cgivars_from_parameter
set_write_access
setup_input
unescape_url
valid_string

Abhängigkeiten

Siehe auch

Webserver: (99)