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

« 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.

« nach oben

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. :rolleyes:

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.

« nach oben

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. ;-)

« nach oben

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.

« nach oben

Weiterführende Links

« nach oben

« zurück (Gesammelte Anleitungen)