User-Interface-Module
| AVM Wiki >> Konfiguration >> User-Interface-Module | @ whmf - IRC-Chat - hu nl it English |
| Community | Modelle | Zubehör | Environment | Konfiguration | Shell-Befehle | Software | Freetz | Lexikon | Tipps+Tricks | Bilder |
| TFFS-Konfig | Fest-Konfig | Binär | Tempfiles | Logs | Sockets | Devices | ProcFS | Interfaces | Daten | UI-Module | Webinterface | Todo |
| User-Interface-Module, in denen die zahlreichen Einstellungen und Statuswerte der Box nach Themen gruppiert sind. Diese High-Level Konfiguration wird durch den ctlmgr (Daemon) verwaltet der über webcm (Webinterface) oder ctlmgr_ctl (Shell-Interface) gesteuert werden kann. Siehe auch die Kategorie User-Interface-Module und den Konfigurations-Index. |
User-Interface-Module und Hintergrund-Information
Nicht alle dieser UI-Module sind auf jeder Box zu finden. Die Suchmaschine links ist euer Freund!
UI-Modul: A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - Index
| UI-Modul | Modell | Funktion |
|---|---|---|
| aura | 7170 | Konfiguration+Status des AURA Diensts |
| autouser | todo | todo |
| box | 7170 | Konfiguration+Status globaler Box-Parameter (WIP) |
| capiotcp | 7170 | Konfiguration+Status des CAPI-over-TCP Diensts |
| capture | 7170 | Konfiguration des Paketmitschnitts |
| cfgtakeover | todo | todo |
| configd | 7270 | Konfiguration+Status der MT-D / MT-F / C3 Unterstützung |
| connection0 | 7170 | Konfiguration+Status der Internet-Verbindung (WIP) |
| connection_voip | 7170 | Konfiguration+Status der VoIP Internet-Verbindung |
| country | 7170* | Konfiguration des aktuellen Landes |
| cpu | 7270_5 | Status der System-Statistik |
| ctlusb | 7170 | Konfiguration+Status der NAS Dienste |
| ddns | 7170 | Konfiguration der Dynamic DNS Unterstützung |
| dect | 7270 | Konfiguration+Status der DECT Telefonie |
| dhcpd | 7170 | Status vergebener DHCP-Leases |
| dnscfg | 7270_52 | Konfiguration benutzerdefinierter DNS-Server |
| dns_excepted_domains | todo | todo |
| dnsserver | 7270_52 | Status aktiver DNS-Server |
| dslmail | 7170 | Konfiguration+Status einer DSL-Feedback Email |
| dslstatglobal | 7170 | Status der PPP-Verbindung(en) |
| dslstatistic | 7170 | Status der Internet-Verbindung |
| docsis | todo | todo |
| emailnotify | 7170 | Konfiguration des Push Service |
| env | 7170 | Konfiguration+Status ausgewählter Environment-Variablen |
| eth0 | 7170 | Konfiguration+Status des LAN1 oder LANA Anschlusses |
| eth1 | 7170 | Konfiguration+Status des LAN2 oder LANB Anschlusses |
| eth2 | 7170 | Konfiguration+Status des LAN3 Anschlusses |
| eth3 | 7170 | Konfiguration+Status des LAN4 Anschlusses |
| forwardrules | 7170 | Konfiguration statischer Portfreigaben |
| gsm | 7270 | Konfiguration+Status des UMTS-Modems |
| igdforwardrules | 7170 | Konfiguration+Status dynamischer Portfreigaben (IGD) |
| inetstat | 7170 | Statistik des Online-Zählers und der Tarifübersicht |
| interfaces | todo | todo |
| internet_ruleset | todo | todo |
| ipv6 | 7270 | Konfiguration+Status der IPv6 Unterstützung |
| ipv6firewall | todo | todo |
| jasonii | 7270_52 | Konfiguration+Status des MyFRITZ!-Kontos |
| landevice | 7170 | Konfiguration der Liste bekannter Geräte und Benutzer (Neighbors) |
| language | 7170* | Konfiguration der aktuellen Sprache |
| logger | todo | todo |
| logic | 7170 | Status der installierten Firmware, Neustart und Werkseinstellungen |
| login | todo | todo |
| lted | 6840 | Konfiguration+Status des LTE-Subsystems |
| mediasrv | 7170 | Konfiguration des Media-Server Diensts |
| mini | todo | todo |
| morphstick | todo | todo |
| netapp | 7170 | Konfiguration der Netzwerkanwendungen (für Priorisierung und Kindersicherung) |
| nlr | FWR | Konfiguration+Status von Audioausgabe und Anzeige beim FWR |
| nqos | 7170 | Konfiguration des NQoS |
| ontel | 7270 | Konfiguration+Status aller Online-Telefonbücher |
| parental_control | todo | todo |
| power | 7170 | Status des Energiemonitors |
| providerlist | 7170* | Konfiguration der Internet Anbieter-Datenbank |
| remoteman | 7170 | Konfiguration der Fernwartung über HTTPS |
| route | 7170 | Konfiguration statischer Routen |
| sar | 7170 | Konfiguration+Status des DSL-Subsystems |
| security | 7170 | Konfiguration+Status des FRITZ!Box-Kennwort-Schutzes |
| sip | 7170 | Konfiguration+Status der SIP Accounts |
| sipextra | 7170 | Konfiguration+Status der SIP Accounts und VoIP global |
| speedtest | 7270_52 | Konfiguration der UDP+TCP Kernel-Benchmarks |
| storagedirectories | 7170* | Konfiguration der Verzeichnisse von NAS-Freigaben |
| storageusers | 7170* | Konfiguration der Benutzer von NAS-Freigaben |
| tam | 7170 | Konfiguration+Status der internen Anrufbeantworter |
| telcfg | 7170 | Konfiguration+Status der Telefonie-Kernfunktionen |
| time | 7170 | Konfiguration der Zeitzone und des SNTP Diensts |
| timer | 7270 | Konfiguration+Status zeitgesteuerter Aktionen (z.B. Kindersicherung) |
| tr064 | 7170 | Konfiguration der TR-064 Funktion |
| tr069 | 7170 | Konfiguration der TR-069 Funktion |
| trafficprio | 7170 | Konfiguration der Priorisierung von Netzwerkanwendungen |
| umts | 7270 | Konfiguration der UMTS Zugangsdaten |
| umts_provider | 7270 | Konfiguration der UMTS Anbieter-Datenbank |
| updatecheck | 7170 | Konfiguration+Status der Online-Update Funktion |
| usbdevices | 7170 | Konfiguration+Status aller physikalischen NAS-Medien |
| user | 7170 | Konfiguration der Kindersicherung |
| userglobal | todo | todo |
| var | 7170 | Pseudo-UI-Modul für Variablen und das WebCM-Environment |
| voipextension | 7170 | Konfiguration+Status der IP-Telefone |
| voipjournal | 7170 | Konfiguration+Status der Sprachübertragungs-Statistik und eines VoIP-Feedbacks |
| voipstat | todo | todo |
| vpn | todo | todo |
| wakeup | 7170* | Konfiguration der WOL Funktion |
| webdavclient | 7270 | Konfiguration+Status des WebDAV Diensts |
| wlan | 7170 | Konfiguration+Status der WLAN Funktion |
Hintergrund-Information
Einführung
Komplexe Systeme wie die FRITZ!Box bestehen aus vielen Einzelsystemen die auf vielseitige Art und Weise miteinander reagieren, so wie Zahnräder in einer traditionellen Uhr. Je komplizierter die Komponenten eines Systems miteinander vernetzt sind desto schwieriger wird es Veränderungen so anzubringen dass das System dadurch nicht gestört wird. Am Beispiel der Uhr könnte man an den Zahnrädern drehen und schrauben was einem Low-Level Eingriff in ihr System entrpricht und die Uhr eventuell zerstört. Zieht man jedoch die Krone (den Knopf) heraus um die Uhr zu stellen hat man eine vorgesehene High-Level Funktion angewendet die mit der Intention des Erfinders konform ist - die Uhr bleibt intakt.
Ähnlich sieht es für die FRITZ!Box aus. Schraubt man an der ar7.cfg herum begeht man einen Low-Level Eingriff. Was genau davon betroffen ist weiss sicher nichtmal jeder Coder bei AVM. Obwohl es ar7cfgchanged gibt kann man nur hoffen dass es auch die Änderung korrekt handhabt und dass kein nichtbetroffener Dienst mit neugestartet wird. Die einzige halbwegs sichere Methode bleibt jedoch ein Neustart, oder eben eine High-Level Funktionen zu nutzen die die kompletten Zusammenhänge kennt. Genau das mach auch das Webinterface, die einzige ausgereifte Methode in's System einzugreifen.
Realisiert wird das Webinterface durch ctlmgr der den Webserver und die Logik zum systemkonformen Manipulieren der Konfiguration enthält. Die Konfiguration wurd in thematisch gruppierten Modulen verwaltet, die oben aufgelisteten User-Interface-Module (kurz UI-Module). Zum Ändern einzelner Einstellungen aus der Shell gibt es auf fast allen FRITZ!Box-Modellen den Befehl ctlmgr_ctl, der genau den selben Mechanismus in ctlmgr steuert wie das Webinterface.
Modul-Hierarchie
Jedes UI-Modul hat einen eindeutigen Namen wie z.B. wlan, dect oder tam der die Funktionsgruppe repräsentiert. Innerhalb eines Moduls werden alle Einstellungen in Form von Variablen verwaltet, die ähnlich einem Dateisystem hierachisch strukturiert werden. Eine Variable hat also innerhalb eines UI-Moduls einen Pfad, und es gibt Verzeichnisse in denen Variablen einsortiert sind die wiederum Unterverzeichnisse haben können.
Zugriffsmethoden
Es gibt bis zu 3 Hauptverzeichnisse in jedem UI-Modul, die die erlaubten Zugriffsmethoden auf die darin enthaltenen Variablen darstellen. Im Verzeichnis settings/ befinden sich Variablen die gelesen und geschrieben werden können, in status/ befindliche Variablen können nur gelesen werden. Das Verzeichnis command/ ist eine Sonderform von settings/ deren Schreibzugriff einen Befehl ausführt (triggert), jedoch beim Lesen kein sinnvolles Ergebnis enthält da nichts abgespeichert wird.
ctlmgr_ctl kann zum Schreiben (w) in command/ und settings/ und zum Lesen (r) von settings/ uns status/ verwendet werden:
$ ctlmgr_ctl w capiotcp settings/enabled 1 # Schreiben: Aktiviert CAPI-over-TCP dauerhaft $ ctlmgr_ctl r capiotcp settings/enabled # Lesen: Prüft ob CAPI-over-TCP aktiv ist 1 $ ctlmgr_ctl r inetstat status/TimeStamp # Lesen: Letzte Antualisierung des Online-Zählers 1318244754 $ ctlmgr_ctl w logic command/reboot 1 # Schreiben: Führt einen Neustart aus
Fehlerbehandlung
Die Namen von UI-Modulen, Pfaden und Variablen sind case sensitiv, Groß- und Kleinschreibung ist also zu beachten. ctlmgr_ctl ist zwar ein systemkonformer Befehl, jedoch wurde er für hauseigene Scripts geschrieben, die wiederum von Programmierern geschrieben werden die die komplexen Zusammenhänge in der Box verstehen. Daher hat dieser Befehl nur sehr begrenzte Fehlermeldungen. Er wurde nicht als öffentliches Werkzeug konzipiert. Je nach Art des Fehlers antwortet ctlmgr_ctl mit 'er', 'err', 'no-emu' oder hängt bis man ihn mit Ctrl-C abbricht,
Datentypen
Variablen in UI-Modulen sind typenlose Strings. Jede Variable kann aber als String oder Array angespochen werden. Umgedreht ausgedrückt ist jede Variable immer das erste Mitglied eines erweiterbaren Arraysund wird durch die (optionale) Ziffer 0 als Ende des Variablennamens dargestellt, die Ziffer 1 repräsentiert das zweite Mitglied, usw. Die folgenden Befehle sind also funktionsidentisch:
$ ctlmgr_ctl r inetstat status/TimeStamp 1328958024 $ ctlmgr_ctl r inetstat status/TimeStamp0 1328958024
Eine Variable kann auch als Verzeichnis angesprochen werden in dem weitere Variablen enthalten sind. Jede Variable hat dort die Sondervariable count, die angibt wie groß ein Array ist. Diese Variable ist auch bei nicht existierenden Variablen ohne Fehler abfragbar:
$ ctlmgr_ctl r inetstat status/TimeStamp/count # Einzelne Variable oder Array mit einem Eintrag 1 $ ctlmgr_ctl r inetstat status/TimeStam/count # Nicht vorhandene Variable oder leeres Array 0
Will man den Zeitpunkt des ersten und letzten Telefonats in der Anrufliste ausgeben geht man so vor:
$ ctlmgr_ctl r telcfg settings/Journal/count # 231 Einträge im Array 231 $ ctlmgr_ctl r telcfg settings/Journal0/Date # Neuester Eintrag 10.02.12 13:19 $ ctlmgr_ctl r telcfg settings/Journal230/Date # Ältester Eintrag 29.11.11 13:44
Ältere Infos die noch eingearbeitet werden
- High-Level Interfaces in der FRITZ!Box
- ctlmgr über das Webinterface mit webcm, luacgi, SSI und JavaScript
- ctlmgr über das Control Programm ctlmgr_ctl
- ctlmgr über das Messaging Programm msgsend
- Direkte Kommunikation mit den Daemons über msgsend (Medium-Level Interface)
- Beispiele
Jeder ist sicher schonmal über eine Funktion der FRITZ!Box gestolpert die man nur umständlich aktivieren kann oder für die es garkeine Bedienmöglichkeit gibt. Nehmen wir als Beispiel den CAPI-over-TCP Dienst, der sich nur per Telefon aktivieren lässt (glaubt man). Die folgende Methode funktioniert auch und steht symbolisch für das High-Level Interface:
ctlmgr_ctl w capiotcp settings/enabled 1
Dieser Aufruf verändert die ar7.cfg und startet den benötigten Dienst systemkonform. Ausser zur Veranschaulichung nicht besonders sinnvoll, aber wollen wir nun den Port ändern auf dem der Server lauscht reicht:
ctlmgr_ctl w capiotcp settings/port 5555
Dies ändert wieder die ar7.cfg und startet den Dienst neu ohne das man sich um die Zusammenhänge kümmern muss.
Jedes UI-Modul kann die Unterverzeichnisse "Settings" und "Status" enthalten in denen sich Werte befinden. Statuswerte kann man nur lesen, sie stellen aktuelle Messwerte dar wie z.B. die DSL-Verbindungsgeschwindigkeit. Settings-Werte dagegen sind schreib- und lesbar, sie stellen die Konfiguration dar.
Siehe auch
Webserver: (99)
- Sektionen: Webinterface, WebCM-Environment, User-Interface-Module, CGI-Environment, SSI-Direktiven
- Lexikon: URL, HTTP, HTTPS, CGI, MIME, HTML, SSI, JavaScript, Ajax, Lua, Applet, Flash, Java
- Lexikon: Telekom-Webinterface, Congstar-Webinterface
- Urlader: webgui_pass, var
- CONFIG_: WEBSRV, WEBUSB, WEBCM_INTERPRETER, SESSIONID, REMOTE_HTTPS, UTF8, LUA, MYFRITZ
- CONFIG_: HANSENET_NO_GUI, HTML_STYLE_T_HOME, HTML_STYLE_T_COM, HTML_STYLE_CONGSTAR
- WebCM: isWebSrv, isSessonId
- Webinterface: Ansicht, Expertenansicht, Inhaltsverzeichnis, Fernwartung, FRITZ!Box-Kennwort
- UI-Module: remoteman, security
- Konfig: mime.cfg, htmltext.db, htmltext_de.db, crossdomain.xml, crossdomain-template.xml
- Konfig: x_remoteSCPD.xml, html/, html/ (nas)
- Tempfiles: config.def, htmltext.db (ram), html/ (ram), html.nas/ (ram), flash.html
- Tempfiles: openssl.cnf, webcm.debug, websrv.debug, webcm_interpreter.log, uidebug.txt
- Tempfiles: ctlmgr.pid, websrv.pid, capture*.pid, crossdomain.xml (ram)
- Befehle: S10-html, S11-config_def, ctlmgr, websrv
- Befehle: webcm, firmwarecfg, system_status, capture_notimeout, luacgi, webtrace, cgiMain, tr064cgi
- Befehle: openssl_genrsa, openssl_req
- Libraries: libwebsrv.so, libtiinterpreter.so, liblua.so, libluaxml.so, libluatextdb.so, libwebusb.so
- Kernel: avm_net_trace.ko
- Devices: kdsldptrace, avm_net_trace
- Ports: Port 80, Port 443, Port 8080, me_webcm*.ctl, me_luacgi*.ctl
- Adressen: fritz.box, fritz.nas, myfritz.box, myfritz.net, fritz.repeater, voipgateway.avm
- Adressen: speedport.ip, speedport.bridge, sinus.ip, congstar.box, alice.box, multi.box
- Freetz: REMOVE_MYFRITZ