Veraltet - Autoconfig - Zentrale Kontrolle über den Webbrowser Firefox (bis Version 3)
Einleitung
Für zu Hause uninteressant, in einem Firmennetzwerk unerlässlich: Die Zentrale Verwaltung von Programmeinstellungen. Microsft hat sich so nette Dinge wie Gruppenrichtlinien einfallen lassen, um Einstellungen ihrer Programme (und anderer Programme, die ihre Konfiguration in der Regitrierung ablegen) zentral zu steuern.
Das Mozilla Projekt geht hier aber andere Wege und die Einstellungen des Webbrowsers Firefox werden nicht in der Registrierung gespeichert. Für die Konfiguration des Browsers wird Autoconfig verwendet, das hier im Folgenden schrittweise angewendet werden soll.
« zurück (Gesammelte Anleitungen)
Inhalt
- Autoconfig - Wie es funktioniert
- Firefox - Wo finde ich was
- Firefox - Inhalt und Aufbau der zentralen Konfigurationsdateien
- Abschließende Bemerkung
- Weiterführende Links
« zurück (Gesammelte Anleitungen)
Autoconfig - Wie es funktioniert
Die Benutzerkonfigurationsdatei prefs.js
Der Webbrowser Firefox kann komplett über ECMAScript (JavaScript) gesteuert werden. Wenn man sich die Konfigurationsdatei prefs.js
ansieht, sieht man, dass es sich lediglich um eine Sequenz von Aufrufen der Methode user_pref()
handelt, die Konfigurationsattributen
Werte zuweist. Diese Attribute legen Einstellungen Webbrowsers fest und steuern das Verhalten seiner Benutzeroberfläche.
Den aktuellen Wert dieser Attribute kann man durch Eingabe von about:config in der Adresszeile einsehen. Bei den neuen Versionen von Firefox wird eine Warnung ausgegeben, dass die Veränderung der Werte über direkten Aufruf von about:config nicht unterstützt wird (oder anders ausgedrückt: Wer hier rumspielt sollte wissen, was er da tut).
Die Datei prefs.js
ändert sich immer dann, wenn man eine Option im Firefox ändert, z. B. wenn man Cookies deaktivert.
Man kann die ausgegebene Liste auch durch Eingaben in der Filterleiste beschränken. Gibt man dort z. B. "cookie" ein, werden
alle Parameter, die das Wort "cookie" beinhalten aufgelistet. Vom Benutzer eingestellte Parameter, die vom Defaultwert abweichen, werden
fett dargestellt.
Da es sich bei der Datei prefs.js
lediglich um Benutzereinstellungen handelt, hat sie für die systemweite Steuerung keine weitere
Bedeutung.
Die Systemkonfigurationsdatei all.js
Die zentrale Steuerungsdatei liegt im Programmverzeichnis des Browsers. Hier werden die globalen Einstellungen für Firefox definiert, unter anderem gibt es hier die Möglichkeit, eine weitere Konfigurationsdatei aufzurufen, die dann vor jedem Start des Webbrowsers abgearbeitet wird.
Abgesehen von den Pfadangaben ist diese Konfiguration unabhängig von dem verwendeten Betriebssystem. Deswegen sollen hier erstmal diese Unterschiede aufgezeigt werden, um dann auf dieser Basis den OS-unabhängigen Teil aufzubauen.
Firefox - Wo finde ich was
Je nach Betriebssystem und Art der Installation oder Distribution liegen die Konfigurationsdateien an anderer Stelle. Gerade bei UNIXoiden Systemen und speziell debian ist das etwas verwirrend. Zu allem Überfluss heißt der Firefox wegen Lizenzstreitigkeiten unter debian Iceweasel.
Es gibt zwei Pfade, die für uns interessant sind:
Pfad zum Benutzerprofil
Windows: %APPDATA%\Mozilla\Firefox\Profiles\XXXXXXXX.default Linux: $HOME/.mozilla/firefox/XXXXXXXX.$LOGNAME
Hier werden alle Benutzereinstellungen gespeichert, inkl. Zwischenspeicher (engl.: Cache). Dieser kann über die Systemeinstellungen abgeschaltet oder an eine andere Stelle verschoben werden.
Die acht Xe sind eine zufällig erzeugte Zeichenkette, die für jedes Firefoxprofil generiert wird. Eine Liste aller Profile findet man in
der Datei profiles.ini
, die auf derselben Ebene wie die Profilverzeichnisse liegt.
Programmverzeichnis und Pfad zur Datei all.js
Windows: %ProgramFiles%\Mozilla Firefox %ProgramFiles%\Mozilla Firefox\greprefs\all.js Linux: Tarball von Mozilla.org: /opt/firefox ^^^^ entspricht dem Verzeichnis, in das man den Tarball entpackt hat /opt/firefox/greprefs/all.js debian (Paket xulrunner-x.y): /usr/share/xulrunner-x.y /usr/share/xulrunner-x.y/greprefs/all.js
Bei debian werden Bibliotheken meist in mehrere separate Pakete aufgeteilt, die dann entprechend über Paketabhängigkeiten mit dem Programm
installiert werden. Für Iceweasel ist das entsprechend das Paket xulrunner-x.y
(x.y = Versionsnummer), dass die
auf XUL basierenden Teile von Iceweasel enthält.
Im Folgenden sollen nun die Abkürzungen $PROFILE für den Pfad zum Benutzerprofil,
$INSTALLDIR für den Pfad zum Programmverzeichnis und $ALL_JS
für den Pfad zur globalen Konfigurationsdatei all.js
stehen.
Hinweis: Hierbei handelt es sich nicht um Systemvariablen! Diese Festlegung soll nur helfen, die folgenden Abschnitte ohne lästige Fallunterscheidungen abhandeln zu können.
Firefox - Inhalt und Aufbau der zentralen Konfigurationsdateien
Es gibt zwei verschiedene Fälle für eine zentrale Konfiguration:
-
Terminalserver:
Firefox ist auf einem Terminalserver installiert und für jeden Benutzer sollen ein paar Einstellungen vorgegeben werden, die er nicht überschreiben kann. Die von $ALL_JS aufgerufene Konfigurationsdatei liegt hierbei auf der lokalen Festplatte, normalerweise auch im $INSTALLDIR. -
Lokale Installationen und/oder Terminalserver:
Firefox ist auf vielen Arbeitsstationen installiert und $ALL_JS verweist auf eine Konfigurationsdatei, die auf einem Webserver im lokalen Netzwerk liegt. Ob die Installation nun auf einer normalen Arbeitsstation oder einem Terminalserver liegt, ist unerheblich. Alle Benutzer sollen dieselbe Konfiguration erhalten.
Grundsätzlich ändert man in der Datei $ALL_JS so wenig wie möglich ab!
Um einen Verweis auf eine globale Konfigurationsdatei darin einzubauen, müssen lediglich zwei Variablen über die Methode
pref(attribute,value)
oder lockPref(attribute,value)
gesetzt werden:
[...] pref("general.config.filename", "autoconfig.js"); pref("general.config.obscure_value", 13); // for MCD .cfg files [...]
Der angegebene Dateiname wird relativ zu $INSTALLDIR ausgewertet. Die Variable obscure_value
bezieht sich auf eine Rotation der
einzelnen Zeichen um n Stellen (hier: 13, auch bekannt als ROT13), um die Konfigurationsdatei
auf den ersten Blick des Benutzers unleserlich zu machen.
Wir werden wir hier einen Wert von 0 verwenden.
Inhalt der Datei autoconfig.js
Im zweiten oben genannten Fall (viele lokale Installationen von Firefox), muss der Inhalt der Datei autoconfig.js
wie folgt angepasst
werden:
// Datei: $INSTALLDIR/autoconfig.js // Umleitung zur eigentlichen, zentralen Konfiguration lockPref("autoadmin.global_config_url","http://192.168.100.10/global_settings.js");
Erläuterungen
Die Methode lockPref()
setzt eine Einstellung, und deaktiviert das entsprechende Steuerelement in der Firefox-Oberfläche bzw. in
about:config
, damit der Benutzer die Einstellung nicht mehr ändern kann. Gesperrte Einträge werden in about:config
kursiv dargestellt.
Die Einstellung autoadmin.global_config_url
legt die Position der zu ladenden Konfigurationsdatei global_settings.js
fest,
die sich auf dem Webserver (und Proxyserver, wie man weiter unten sieht) mit der IP-Adresse 192.168.100.10 befindet.
Hinweis: Die Dateinamen der Konfigurationsdateien sollten keine Minuszeichen enthalten, da diese intern als Trennzeichen verwendet werden. Stattdessen verwendet man Unterstriche.
Mit der Einstellung in der Datei autoconfig.js
wird somit bei jedem Start von Firefox die folgende Datei geladen und ausgeführt:
Inhalt der Datei global_settings.js
// global_settings.js // im WWW-Rootverzeichnis auf 192.168.100.10 // // Beschreibung: // Globale Einstellungen fuer den Firefox Browser via Autoconfig. // // Quellen: // http://mit.edu/~firefox/www/maintainers/autoconfig.html // http://kb.mozillazine.org/About:config_entries // try { // Proxy Server Einstellungen pref("network.proxy.http", "192.168.100.10"); pref("network.proxy.http_port", 8080); pref("network.proxy.share_proxy_settings", true); pref("network.proxy.type", 1); pref("network.proxy.no_proxies_on", "127.0.0.1, localhost, 192.168.*.*, *.mydomain.example.com"); // Benutzer duerfen keine Updates einspielen lockPref("app.update.enabled", false); lockPref("extensions.update.enabled", false); lockPref("browser.search.update", false); // FF als Standardbrowser lockPref("browser.shell.checkDefaultBrowser", false); lockPref("pref.general.disable_button.default_browser", true); // Inhalte (JavaScript und Java) pref("javascript.enabled", true); lockPref("security.enable_java", false); // keine fehlenden Plugins nachladen und auch nicht in Regsitry danach scannen lockPref("xpinstall.enabled", false) lockPref("plugin.default_plugin_disabled", false); // Intranetseite als Startseite lockPref("browser.startup.homepage", "http://intranet.mydomain.example.com/"); // Ordner fuer Downloads jedesmal erfragen pref("browser.download.useDownloadDir", false); } catch(e) { displayError("ARGL :-P", e); }
Hinweis: Soll nur eine zentrale Konfiguration einer Terminalserverinstallation (erster Fall oben) stattfinden, entspricht der Inhalt der Datei
autoconfig.js
dem der Datei global_settings.js
und die letztere entfällt.
Erläuterungen
Wie oben bereits erwähnt, gibt es die beiden Methoden pref(attribute,value)
und lockPref(attribute,value)
, um
Einstellungen festzulegen.
Mit pref(attribute,value)
wird ein Wert gesetzt, bleibt aber für den Benutzer zur Laufzeit änderbar. Ein Möglicher
Anwendungsfall wäre z. B. die Einstellung von (de)aktviertem JavaScript. Der Wert wird aber bei jedem Firefox Start erneut gesetzt.
Mit lockPref(attribute,value)
gesetzte Werte werden in der Oberfläche und about:config
gesperrt. Der Benutzer hat
hier keine Möglichkeit mehr, das Verhalten zur Laufzeit zu verändern. Denkbare Anwendung hierfür ist z. B. die lästige
Updatefunktion, die auf einem Terminalserver mit Benutzerrechten jedes Mal fehlschlagen würde und zu für Benutzer unverständlichen
Fehlermeldungen führt.
Welche Werte in der oben stehenden Datei global_settings.js
gesetzt werden, ist durch eine Kommentarzeile darüber erklärt.
Sollte beim Setzen der Werte etwas schiefgehen und eine Ausnahme geworfen werden, wird beim Start von Firefox eine Fehlermeldung ausgegeben, die in ihrer Form hier noch Verbesserungspotenzial besitzt.
Abschließende Bemerkung
Autoconfig ist eine gute Möglichkeit, Firefox-Installationen zentral und betriebssystemunabhängig zu verwalten. Leider heißt das aber auch, dass man hierfür an einer anderen Stelle konfigurieren muss, als es beim Rest des Systems der Fall ist, wie z. B. im Falle von Windows mit seinen Gruppenrichtlinien.
Gerade die Möglichkeit aber, eine Datei über Webtechnologien einzubinden, zeigt sich meiner Meinung nach auch die Eleganz dieser Lösung: Schließlich ist der Firefox im Web zu Hause.
Weiterführende Links
-
API Reference (englisch):
Writing Configuration Files (The SIPB Firefox Locker - Maintainers) -
Liste aller veränderbaren Variablen:
mozillaZine - About:config entries