Beiwagen
Ohne Flash Player haben Nutzer heutzutage am WWW wenig Freude, doch den gibt es nur für einige gängige Betriebssysteme. Wer nicht mit dem Mainstream schwimmen will, muss trotzdem nicht auf YouTube und ähnliche Annehmlichkeiten verzichten - vorausgesetzt, er verwendet das geeignete Werkzeug.
- Michael Riepe
Browser aus der Netscape-Familie sind nicht zuletzt deshalb so beliebt, weil sie sich leicht erweitern lassen. Neue Funktionen kann man bei Firefox und Co. mit HTML, XUL und JavaScript programmieren; Plug-ins verleihen den Browsern neue darstellerische Fähigkeiten. Einige davon sind mittlerweile essenziell – ohne Flash etwa kommt man im Web nicht weit. Administratoren benötigen in der Regel auch ein Java-Plug-in zum Verwalten ihrer Geräte. Geht es nach Microsoft, avanciert Silverlight – respektive dessen Open-Source-Variante Moonlight – über kurz oder lang zum Dritten im Bunde der Unerlässlichen.
Leider sind Plug-ins nicht plattformunabhängig. Zwar ist die Schnittstelle zwischen Browser und Plug-in standardisiert, sodass dasselbe Plug-in theoretisch mit Mozilla, Firefox und SeaMonkey funktioniert. Ein Plug-in für Linux lässt sich jedoch nicht unter Solaris verwenden, und 32-Bit-Code läuft nicht in einem 64-Bit-Browser oder umgekehrt. Wer ein etwas exotischeres System nutzt, findet mitunter kein passendes Plug-in.
Ein weiterer Nachteil besteht darin, dass Plug-ins im Kontext des Browser-Prozesses laufen und Zugriff auf dessen sämtliche Ressourcen haben. Das öffnet zum einen Tür und Tor für allerlei Angriffe aus dem Web, zum anderen können Programmierfehler im Plug-in leicht zum Absturz des Browsers führen.
Teilen und (be)herrschen
Onlinequellen
Liefe das Plug-in in einem eigenen Prozess, lösten sich viele dieser Schwierigkeiten in Luft auf. Genau diesen Ansatz verfolgt nspluginwrapper (siehe Kasten „Onlinequellen“). Das Paket enthält ein generisches „Proxy-Plug-in“, das im Kontext des Browsers läuft. Es erzeugt einen neuen Prozess und startet dort den npviewer, der das eigentliche Plug-in lädt und ausführt. Alle Funktionsaufrufe leitet der Wrapper per Remote Procedure Call (RPC) an den Viewer weiter; als Transportmedium dient ein Unix-Domain-Socket, der sich im Wesentlichen wie eine TCP-Verbindung verhält.
Dank der Trennung von Proxy und Viewer kann man auch systemfremde Plug-ins verwenden. Lediglich der Proxy muss zum Browser passen. Zurzeit erlaubt es nspluginwrapper unter anderem, Plug-ins für Linux/x86 auf einem x86_64-System zu nutzen – wohl die am häufigsten vorkommende Variante. Ist der Linux-Kompatibilitätsmodus aktiviert, soll das auch unter FreeBSD und NetBSD funktionieren. Theoretisch kann man die x86-Variante des npviewer mithilfe des Prozessor-Emulators QEMU sogar auf Rechnern starten, deren CPUs nicht Intel-kompatibel sind. Allerdings funktioniert nspluginwrapper nicht mit allen Plug-ins. Eine Liste der getesteten Plug-ins ist auf der Projekt-Homepage zu finden. Mit von der Partie ist Adobes Flash Player, Suns Java-Plug-in hingegen glänzt leider noch durch Abwesenheit.
Wer nspluginwrapper installiert, bemerkt zunächst keinen Unterschied – ohne ausdrückliche Anweisung tut die Software gar nichts. Der Nutzer muss alle gewünschten Plug-ins manuell installieren: nspluginwrapper –i /usr/lib/mozilla/plugins/libflashplayer.so etwa bindet den Flash Player aus dem genannten Verzeichnis ein. Tritt kein Fehler auf, legt das Programm im Verzeichnis $HOME/.mozilla/plugins unter dem Namen npwrapper.libflashplayer.so das Proxy-Plug-in ab.
Wem das zu umständlich ist, der kann mit nspluginwrapper –a –i eine automatische Installation versuchen. Allerdings durchsucht das Programm nur bestimmte Systemverzeichnisse und $HOME/.mozilla/plugins nach installierbaren Plug-ins. Mit nspluginwrapper –r <pfad> lässt sich ein einzelnes Plug-in wieder deinstallieren, nspluginwrapper –a –r entfernt alle mit nspluginwrapper eingebundenen Plug-ins wieder. nspluginwrapper –l zeigt alle vorhandenen Proxies an. Installiert der Systemadministrator neue Versionen, kann der Nutzer mit nspluginwrapper –u ein Update der Proxy-Plug-ins durchführen.
Zu beachten ist, dass nspluginwrapper nur Plug-ins berücksichtigt, für die ein geeigneter Viewer installiert ist – etwa /usr/lib/nspluginwrapper/i386/linux/npviewer.bin für ein 32-Bit-Linux auf Intel-kompatiblen CPUs. Außerdem ignoriert das Programm alle nativen Plug-ins, da der Browser sie direkt laden kann. Wer den Wrapper trotzdem verwenden will – etwa aus Sicherheitsgründen –, muss nspluginwrapper mit der zusätzlichen Option –n aufrufen.
Als zusätzliches Schmankerl enthält das Paket seit Version 1.2.0 das Programm nspluginplayer, das Plug-ins ohne Browser ausführen kann. Argumente erwartet der Player in der Form <attribut>=<wert>. Mit src muss der Nutzer eine URL oder einen Dateinamen angeben, gegebenenfalls zusätzlich mit type den MIME-Typ der Datei. width und height bestimmen die Fenstergröße. Andere Attribute leitet nspluginplayer an das geladene Plug-in weiter.