User-Interface-Module

From Fritz!Box
Jump to: navigation, search

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

Info
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
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)