Dokumentation komplett - PIP - Urban Suppiger
Dokumentation komplett - PIP - Urban Suppiger
Dokumentation komplett - PIP - Urban Suppiger
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>PIP</strong>: Presentation over IP<br />
<strong>Urban</strong> <strong>Suppiger</strong>, Dominique Uebersax<br />
6. Oktober 2008<br />
Gruppenarbeit an der ETH Zürich<br />
September 2007 bis Mai 2008<br />
Betreuer: Prof. Dr. Bernhard Plattner<br />
1
Inhaltsverzeichnis<br />
1 Einleitung 3<br />
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
1.2 Ziel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
1.3 Lizenzierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />
2 Entwicklerhandbuch 4<br />
2.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />
2.2 Grundkonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />
2.3 Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.4 Installation der Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.4.1 Basis-System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.4.2 Weitere Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.5 Installation des Web-Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
2.5.1 Laden der Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
2.5.2 Verknüpfen von Web-Interface und Datenbank . . . . . . . . . . . . . . . . . . 11<br />
2.5.3 Erste Schritte nach der Installation . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
2.6 Funktionsweise des Web-Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
2.6.1 Funktionsweise des Web-Interface für den Benutzer (Anwender-Bereich) . . . . 12<br />
2.6.2 Funktionsweise des Web-Interface für den Administrator (Administrator-Bereich) 15<br />
2.7 Ausbaumöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
3 Administratorenhandbuch 16<br />
3.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
3.2 Grundkonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
3.3 Installation des Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
3.3.1 Wahl der Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
3.3.2 Image-CD erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
3.3.3 Image installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
3.3.4 Erste Schritte nach der Installation . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
3.4 Administration über das Web-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
3.4.1 Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
3.4.2 Auflösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
3.4.3 Netzzugang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
3.4.4 Passwort ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
3.4.5 Erweiterte Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
A Glossar 20<br />
2
1 Einleitung<br />
1.1 Motivation<br />
Heutzutage bringen die meisten Teilnehmer einer Konferenz ihren Laptop mit. Können sie diesen aber<br />
auch konstruktiv einsetzen? Eine konstruktive Zusammenarbeit ist nur dann effizient möglich, wenn<br />
zu einem beliebigen Zeitpunkt jede Person die Möglichkeit hat, ihren Bildschirminhalt den anderen<br />
zu zeigen. Dazu muss man aber meistens seinen Laptop via Kabel an ein grosses Anzeigegerät (z.B.<br />
Beamer, HD-Display) anschliessen oder es müssen sich alle um den kleinen Laptop scharen. Wollen<br />
nun mehrere Personen nacheinander etwas auf ihrem Laptop präsentieren, stellt sich die Frage nach<br />
dem Vorgehen:<br />
• Schliessen alle nacheinander ihren eigenen Laptop an das Anzeigegerät an und halten ihre<br />
Präsentation?<br />
• Oder schliesst eine Person ihren Laptop an und die anderen transferieren ihre Präsentationen<br />
auf diesen Laptop (z.B. via USB-Speicher)?<br />
Gäbe es nicht eine effizientere Methode?<br />
1.2 Ziel<br />
Stellen Sie sich vor, alle Teilnehmer einer Konferenz können von ihrem Sitzplatz aus, innert kürzester<br />
Zeit ihren Bildschirminhalt allen anderen zeigen, ohne ein Video-Kabel einstecken oder Daten von<br />
ihrem Computer transferieren zu müssen.<br />
Das Projekt <strong>PIP</strong> verfolgt genau dieses Ziel. <strong>PIP</strong> ist ein Interface zwischen einem Anzeigegerät und<br />
mehreren Anwender-Laptops. Folgende Punkte stehen dabei im Vordergrund:<br />
• Einfachheit: Anwender können einfach und mit wenigen Mausklicks ihren Bildschirminhalt präsentieren,<br />
ohne ein Video-Kabel einzustecken.<br />
• Kontrolle: Über ein intuitives Web-Interface stehen den Anwender alle notwendigen Funktionen,<br />
wie das Umschalten zwischen den verfügbaren Bildschirmen oder das Ändern der Auflösung auf<br />
dem Anzeigegerät, zur Verfügung.<br />
• Sicherheit: Die physische Präsenz der Beteiligten wird durch einen Sicherheitscode gewährleistet,<br />
der auf dem Anzeigegerät dargestellt wird. Die Zugriffskontrolle wird mit einer Firewall gelöst.<br />
• Kosten: Wo möglich werden durch den Einsatz von Open Source Software die Kosten des <strong>PIP</strong>-<br />
Service minimiert.<br />
Des weiteren wird auch die System-Administration durch geeignete Werkzeuge einfach gehalten, sodass<br />
keine grossen Vorkenntnisse notwendig sind, um selbst einen <strong>PIP</strong>-Service aufzubauen und zu betreiben.<br />
Schliesslich ist der gesamte <strong>PIP</strong>-Service in Form zweier Handbücher vollständig dokumentiert:<br />
• Entwickler-Handbuch: Es dient dazu, von Grund auf alle Schritte zum Aufbau eines <strong>PIP</strong>-Service<br />
nachvollziehen zu können. Ein geübter Linux-Anwender kann damit einen eigenen <strong>PIP</strong>-Service<br />
aufbauen und nach Belieben erweitern. Das Entwicklerhandbuch ist aber vor allem für das<br />
bessere Verständnis des Service gedacht. Für den produktiven Einsatz wird empfohlen, nach<br />
dem Administratoren-Handbuch vorzugehen.<br />
• Administratoren-Handbuch: Zusammen mit der <strong>PIP</strong>-Image-CD bildet es die Grundlage für einen<br />
Administrator ohne fortgeschrittene Linux-Kenntnisse, einen <strong>PIP</strong>-Service aufzubauen und zu<br />
betreiben.<br />
3
1.3 Lizenzierung<br />
Die <strong>PIP</strong>-Software ist Open Source Software und kann unter den Bedingungen der GNU General Public<br />
License (Version 2 oder später) beliebig weitergegeben und/oder verändert werden.<br />
Der volle Worlaut der GPL kann unter http://www.gnu.org/licenses/gpl-2.0.txt gelesen werden.<br />
2 Entwicklerhandbuch<br />
2.1 Einleitung<br />
Dieses Handbuch hilft Ihnen, einen <strong>PIP</strong>-Service von Grund auf zu erstellen und anschliessend zu betreiben.<br />
Sie benötigen dazu gewisse Grundkenntnisse im Umgang mit (Ubuntu-)Linux. So müssen Sie<br />
beispielsweise in der Lage sein, zusätzliche Software zu installieren oder Änderungen an Konfigurationsdateien<br />
vornehmen zu können. Sie sollten auch vertraut sein im Umgang mit PHP und MySQL.<br />
In diesem Handbuch werden alle grundlegenden Schritte erklärt. Es können aber bei weitem nicht<br />
alle erstellten Dateien genau erläutert werden. Wenn Sie alle Einzelheiten nachvollziehen wollen,<br />
müssen Sie die Quellcodedateien selbst studieren. Anhand der Kommentare zwischen den Programmzeilen<br />
sollte das aber gut machbar sein.<br />
2.2 Grundkonzept<br />
Überblick Zuerst sollten Sie einen Überblick gewinnen, wie der <strong>PIP</strong>-Service aufgebaut ist.<br />
Der <strong>PIP</strong>-Server nimmt dabei zwei Funktionen wahr:<br />
• Anzeigen der übermittelten Bildinformationen auf dem angeschlossenen Anzeigegerät.<br />
• Web-Server zur Authentifizierung und Steuerung<br />
Pro Anzeigegerät wird nur ein einziger Server benötigt, der die gesamte Funktionalität zur Verfügung<br />
stellt.<br />
Web-Interface Es erlaubt eine einfache Anmeldung und Authentifizierung der Anwender sowie die<br />
Möglichkeit für den Administrator einige Einstellungen vorzunehmen. Für genauere Informationen zur<br />
Funktionsweise des Web-Interfaces lesen Sie den Abschnitt 2.6.<br />
VNC-Verbindung VNC (Virtual Network Computing) ist eine Software, die es ermöglicht, den<br />
Bildschirminhalt eines entfernten Computers auf dem eigenen lokalen Computer darzustellen und sogar<br />
Tastatur- und Mauseingabe an den entfernten Computer zurückzuschicken (dies kann z.B. für Supporting<br />
verwendet werden, kommt beim <strong>PIP</strong>-Service aber nicht zum Einsatz.). Der <strong>PIP</strong>-Service baut<br />
auf der Implementation von TightVNC auf. Mehr dazu erfahren Sie auf http://www.tightvnc.org.<br />
4
Da bei der hier gegebenen Situation die Anwender ihren Bildschirminhalt exportieren wollen,<br />
müssen sie auf ihrem Computer einen VNC-Server in Betrieb haben. Normalerweise wartet ein VNC-<br />
Server auf eingehende Verbindungen von VNC-Viewern, die ihrerseits die übermittelten Bild-Informationen<br />
darstellen. Dies hätte hier den entscheidenden Nachteil, dass die Anwender eine eingehende TCP-<br />
Verbindung auf Port 5900 zulassen und dazu eventuell die Firewall auf ihrem Computer anpassen<br />
müssten, was auch ein nicht unterschätzbares Sicherheitsrisiko darstellen würde. Daher setzt der <strong>PIP</strong>-<br />
Service auf eine umgekehrte Verbindung (so genannte ≪reverse connection≫). Das heisst, dass der<br />
VNC-Viewer, der auf dem <strong>PIP</strong>-Server läuft, so konfiguriert wird, dass er auf eingehende Verbindungen<br />
von VNC-Servern wartet. Die Anwender erstellen dann mit ihren VNC-Servern eine umgekehrte<br />
Verbindung zum wartenden VNC-Viewer.<br />
2.3 Systemvoraussetzungen<br />
Die Entwicklung des <strong>PIP</strong>-Service erfolgte auf einem normalen Desktop PC mit 1024MiB RAM und<br />
einer ASUS Radeon 9200 Grafik-Karte mit 128 MiB Grafikspeicher. Damit lässt sich ein guter <strong>PIP</strong>-<br />
Server betreiben. Wollen Sie nur Standbilder anzeigen, die selten wechseln, wird auch ein einfacheres<br />
System genügen. Sie müssen nur berücksichtigen, dass ein Linux (Grösse ca. 2 GiB) mit einem X-Server<br />
auf dem System betrieben werden kann. Möchten Sie auch Videos flüssig darstellen lassen, sollten sie<br />
bei der Hardware nicht sparen.<br />
Für die Installation sind Tastatur und Maus nützlich. Diese können Sie, nachdem Sie das System<br />
eingerichtet haben, aber wieder entfernen, um ungewollte Benutzerinteraktionen zu unterbinden. Von<br />
da an erfolgt die Interaktion mit dem <strong>PIP</strong>-Server über den Administrator-Bereich des Web-Interfaces<br />
oder, falls es einmal nötig sein sollte, über SSH.<br />
2.4 Installation der Software<br />
2.4.1 Basis-System<br />
Als Basis-System für den <strong>PIP</strong>-Service dient Ubuntu 8.04 (hardy) mit der Kernel-Version 2.6.24-16. Der<br />
<strong>PIP</strong>-Service kann auch mit einer anderen Linux-Distribution realisiert werden. Die ursprüngliche Entwicklung<br />
fand auf Ubuntu-Linux statt und verwendet einige distributionsspezifische Charakteristiken<br />
(z.B. sudo, Pfad-Angaben, usw.). Daher deckt diese Anleitung nur die Konfiguration mit Ubuntu-<br />
Linux ab. Installieren Sie also am besten als erstes die neueste Ubuntu-Version auf Ihren <strong>PIP</strong>-Server.<br />
Besuchen Sie dazu http://www.ubuntu.com und folgen Sie den Anweisungen auf dieser Internet-Seite.<br />
Wichtig: Wählen Sie bei der Installation als Benutzer-Namen ≪user≫ und als Passwort<br />
≪pip1234≫. Ändern Sie das Passwort nach der Installation über das Web-Interface.<br />
2.4.2 Weitere Software<br />
Nun sind Sie bereit, die zusätzlich benötigte Software zu installieren und eigene Skripts zu erstellen.<br />
Den gesamten Quellcode (alle Skripts und Konfigurationsdateien) können Sie auf der <strong>PIP</strong>-Homepage<br />
(http://www.pip.mybytes.ch) herunterladen. Diese befinden sich im Sourcecode-Package im Unterordner<br />
≪Sonstige Skripte≫.<br />
vncviewer Der vorinstallierte VNC-Viewer ist für den <strong>PIP</strong>-Service nicht geeignet. Wenn mehrere<br />
Fenster geöffnet sind, können sie nicht eindeutig unterschieden werden, da im Fenster-Titel einzig der<br />
Host-Name des verbundenen Computers angezeigt wird, aber kein eindeutiges Merkmal wie die IP-<br />
Adresse des verbundenen Computers oder Prozess-ID des zugehörigen VNC-Viewer. Der Host-Name<br />
kann durchaus auf zwei verschiedenen Computern der gleiche sein. Um ein Umschalten zwischen den<br />
einzelnen Fenstern zu ermöglichen, muss ein Fenster aber eindeutig identifiziert werden können. Daher<br />
5
muss für den <strong>PIP</strong>-Service ein angepasster VNC-Viewer eingesetzt werden. Sie können auf der <strong>PIP</strong>-<br />
Homepage einen solchen angepassten VNC-Viewer herunterladen (im Quellcode-Paket im Unterordner<br />
≪Sonstige Skripte≫). Er basiert auf dem Quellcode von TightVNC (http://www.tightvnc.org). Alternativ<br />
können Sie folgende Schritte selber durchführen, um zum gleichen Ergebnis zu kommen:<br />
• Laden Sie den Quellcode des TightVNC-Viewers von http://www.tightvnc.org herunter.<br />
• Stellen Sie sicher, dass folgende Bibliotheken auf Ihrem System installiert sind:<br />
– libxmu-dev<br />
– libxaw7-dev<br />
– zlib1g-dev<br />
– libjpeg62-dev<br />
• Nehmen Sie folgende Anpassungen vor:<br />
– Suchen Sie in der Datei vnc unixsrc/vncviewer/misc.c nach der Zeile mit sprintf(title,<br />
titleFormat, desktopName) und ändern Sie diese folgendermassen:<br />
// Als Titel soll ≪num≫ gesetzt werden.<br />
sprintf(title, titleFormat, num );<br />
– Fügen Sie unmittelbar vor dieser Zeile folgendes ein, um die PID (Prozess-ID) des Prozesses,<br />
der das Fenster öffnet, in der Variablen num zu speichern:<br />
// Die PID (process ID) des Prozesses, der das Fenster öffnet, holen.<br />
pid t pid = getpid();<br />
// Ein char-Array anlegen, das die PID speichern kann.<br />
char num[20];<br />
// Die PID in das char-Array ≪num≫ schreiben.<br />
sprintf( num, "%d", pid );<br />
– Suchen Sie nun in der Datei vnc unixsrc/vncviewer/argsresources.c nach<br />
Vncviewer.title: TightVNC: %s<br />
und ändern Sie diese Zeile zu:<br />
Vncviewer.title: <strong>PIP</strong>-VNC: %s<br />
Achten Sie darauf, dass diese Zeile genau so geschrieben ist. Die Fenster-Handhabung basiert<br />
darauf, dass der Fenstertitel mit ≪<strong>PIP</strong>-VNC≫ beginnt.<br />
• Wechseln Sie in den Ordner vnc unixsrc und kompilieren Sie den vncviewer mit folgenden<br />
Befehlen:<br />
– xmkmf<br />
– make World<br />
• Kopieren Sie den kompilierten vncviewer aus dem Ordner vnc unixsrc/vncviewer/ nach /home/user/pip/<br />
.<br />
6
Apache / PHP / MySQL Da der <strong>PIP</strong>-Service auf der Interaktion durch ein Web-Interface aufbaut,<br />
müssen Sie als nächstes einen Web-Server inklusive Datenbankverwaltung installieren. In Ubuntu geht<br />
das ganz einfach über den Befehl:<br />
sudo tasksel install lamp-server<br />
Dies installiert einen Apache- und einen MySQL-Server. Damit der Webserver die nötigen Rechte hat,<br />
müssen Sie den Benutzer- und Gruppennamen für Apache (APACHE RUN USER bzw. APACHE RUN GROUP)<br />
in /etc/apache2/envvars auf ≪user≫ umstellen.<br />
Es wird empfohlen, dass Sie bei der Installation ein Administratorpasswort für MySQL wählen. In<br />
diesem Fall müssen Sie anschliessend in der Datei /var/www/lib/config.php die Variable $GLOBALS[pw]<br />
entsprechend anpassen.<br />
Stellen Sie sicher, dass der Ordner /var/www/ keine Dateien enthält, wie z.B. eine automatisch<br />
installierte index.html.<br />
OSD (On-Screen Display) Als Zugriffskontrolle für Verbindungen zum Anzeigegerät wird dem<br />
Benutzer ein 4-stelliger Code angezeigt, den er zur Authentifizierung eingeben muss. Um diese Anzeige<br />
zu ermöglichen brauchen Sie das Packet xosd-bin. Installieren Sie es mit dem Befehl:<br />
sudo apt-get install xosd-bin<br />
Fensterhandhabung Das Umschalten zwischen den verschiedenen angemeldeten Anwendern geschieht<br />
über das Tool wmctrl. Installieren Sie es mit dem Befehl:<br />
sudo apt-get install wmctrl<br />
Um Fenster beim Entstehen, d.h. wenn ein Anwender eine Verbindung aufbaut, gleich in den Vollbildmodus<br />
bringen zu können, brauchen Sie noch devilspie. Installieren Sie es ebenfalls:<br />
sudo apt-get install devilspie<br />
Zur Steuerung von devilspie müssen Sie noch eine Konfigurationsdatei anlegen. Erstellen Sie die<br />
Datei /home/user/pip/pip-vnc.ds mit folgendem Inhalt:<br />
(if<br />
)<br />
(contains (window name) "<strong>PIP</strong>-VNC")<br />
(fullscreen)<br />
Später werden Sie devilspie mit dieser Datei als Argument starten und so dafür sorgen, dass jedes<br />
neue Fenster, das im Titel ≪<strong>PIP</strong>-VNC≫ enthält, im Vollbildmodus gestartet wird.<br />
Hintergrundbild Als Hintergrundbild soll für den Anwender eine nützliche Begrüssungsnachricht<br />
angezeigt werden. Das Steuern des Hintergrundes wird über kwebdesktop realisiert. Dabei wird über<br />
ein PHP-Skript eine Website mit dem gewünschten Inhalt generiert. Diese Website wird dann mittels<br />
kwebdesktop als Bild gespeichert und mit dem gconftool-2 als Hintergrundbild gesetzt. Um<br />
kwebdesktop und die notwendigen Bibliotheken zu installieren, führen Sie folgenden Befehl aus:<br />
sudo apt-get install kdesktop<br />
7
Nun müssen Sie ein Script erstellen, das den Hintergrund anpasst. Erstellen Sie dazu die Datei<br />
/home/user/pip/backgr.sh mit folgendem Inhalt (kann auch von der Website heruntergeladen werden):<br />
# Sagt dem System mit welcher Shell das Skript ausgeführt werden soll.<br />
#!/bin/bash<br />
# Das Verzeichnis, in dem die Hintergrundbilder gespeichert werden.<br />
LOCATION="/home/user/pip/background/"<br />
# Website, die als Hintergrundbild gespeichert werden soll.<br />
WEBSITE="http://localhost/background.php"<br />
# Mit kwebdesktop ein Bild der Website speichern.<br />
/usr/bin/kwebdesktop 900 620 $LOCATION/background.png "$WEBSITE"<br />
# Mittels gconftool-2 wird das Hintergrundbild neu gesetzt.<br />
gconftool-2 -t str --set /desktop/gnome/background/picture filename "$LOCATION/background.png"<br />
# Das System hat Mühe, wenn der Befehl nur einmal ausgeführt wird. Daher zur Sicherheit nochmals.<br />
gconftool-2 -t str --set /desktop/gnome/background/picture filename "$LOCATION/background.png"<br />
# Das Bild soll zentriert dargestellt werden.<br />
gconftool-2 -t str --set /desktop/gnome/background/picture options "centered"<br />
Die Datei /var/www/background.php, welche für die Darstellung des Hintergrunds zuständig ist,<br />
wird später (zusammen mit dem Web-Interface) an die richtige Stelle kopiert.<br />
DHCP-Server Sollten Sie den <strong>PIP</strong>-Server auch unabhängig von einer bestehenden Internet-Infrastruktur<br />
einsetzen wollen, d.h. an einem Ort, wo keine Internetverbindung besteht, kann der <strong>PIP</strong>-Server ein<br />
eigenes WLAN-Netz aufbauen. Dann müssen Sie aber einen DHCP-Server installieren und konfigurieren,<br />
damit die Anwender eine IP-Adresse zugewiesen bekommen, wenn sie sich auf dem <strong>PIP</strong>-Netz<br />
einloggen (dazu später mehr). Wenn Sie diese Einsatzmethode nicht in Betracht ziehen, können Sie<br />
getrost zum nächsten Abschnitt springen.<br />
sudo apt-get install dhcp3-server<br />
installiert den DHCP-Server.<br />
Fügen Sie am Ende der Datei /etc/dhcp3/dhcpd.conf einen Eintrag für das <strong>PIP</strong>-Netz hinzu (die<br />
vollständige Datei kann von der Website heruntergeladen werden):<br />
subnet 192.168.169.0 netmask 255.255.255.0 {<br />
range 192.168.169.17 192.168.169.116;<br />
option domain-name-servers 192.168.169.116;<br />
option domain-name "pip";<br />
option broadcast-address 192.168.169.255;<br />
default-lease-time 10800;<br />
max-lease-time 14400;<br />
}<br />
8
Startup-Jobs Jetzt erstellen Sie noch ein Start-Skript, das wichtige Einstellungen vornimmt, erforderliche<br />
Programme startet und bei jedem System-Start ausgeführt wird. Erstellen Sie also die<br />
Datei pipStartupJobs.sh in einem beliebigen Ordner. Die Datei muss so aussehen (kann auch von<br />
der Website heruntergeladen werden):<br />
#!/bin/bash<br />
work() {<br />
# Alle laufenden vncviewer und devilspie stoppen.<br />
killall vncviewer<br />
killall devilspie<br />
# Sicherstellen, dass das richtige Display angesprochen wird.<br />
export DISPLAY=:0.0<br />
# Befehle an den X-Server von überall zulassen. Das ist notwendig, damit<br />
# über das Web-Interface Fenster kontrolliert werden können.<br />
xhost +<br />
# Den vncviewer starten. Passen Sie die Werte für compresslevel und quality Ihren<br />
# Bedürfnissen und der Übertragungsstrecke an. Die hier gemachte Einstellung bedeutet<br />
# hohe Kompression und geringe Qualität.<br />
# weitere Optionen: viewonly verhindert die Steuerung des Anwender-Computers vom <strong>PIP</strong>-<br />
# Server aus. encodings "tight" setzt die verwendete Codierung auf "tight"<br />
# (für weitere Erklärungen und Alternative schauen Sie in die Manpage von vncviewer)<br />
# noraiseonbeep sorgt dafür, dass Fenster nicht aus dem Hintergrund nach vorne treten<br />
# wenn auf dem entsprechenden Anwender-Computer ein Systemton wiedergegeben wird.<br />
# listen schliesslich sorgt dafür, dass ein VNC-Server eine Verbindung aufbauen kann.<br />
/home/user/pip/vncviewer -viewonly -noraiseonbeep -encodings "tight" -compresslevel 1 -quality 5 -lis<br />
# devilspie starten. Für Details lesen Sie das Entwicklerhandbuch.<br />
devilspie /home/user/pip/pip-vnc.ds &<br />
# start config.php aufrufen. Für Details lesen Sie die Erklärungen zu dieser Datei<br />
# das Entwicklerhandbuch.<br />
cd /var/www<br />
php /var/www/start config.php &<br />
# Einen immer währenden loop starten, der jede Minute backgr.sh aufruft. Für Details<br />
# zu backgr.sh lesen Sie das Entwicklerhandbuch.<br />
while ( true )<br />
do<br />
sleep 10<br />
/home/user/pip/backgr.sh > /home/user/pip/output.log 2>&1 &<br />
cd /var/www<br />
php /var/www/timeout.php &<br />
sleep 30<br />
done<br />
}<br />
work > /home/user/pip/output.log 2>&1 &<br />
exit<br />
Machen Sie die eben erstellte Datei ausführbar (chmod +x pipStartupJobs.sh). Fügen Sie dann das<br />
Skript zur Aufstartroutine ihres Systems hinzu, so dass das Skript bei jedem Systemstart ausgeführt<br />
wird. Beachten Sie aber, dass dabei Dienste wie der Webserver u.A. bereits laufen müssen. Beim<br />
Desktopmanager Gnome erreichen Sie dies am Besten, wenn Sie das Skript über den Menüeintrag<br />
≪Systems≫ > ≪Preferences≫ > ≪Sessions≫ > ≪Startup Programs≫ zur Startroutine hinzufügen. Alternativ<br />
können Sie in der Datei /home/user/.profile die folgende Zeile anfügen:<br />
/home/user/pip/pipStartupJobs.sh &<br />
In diesem Fall wird das Skript aber jedes Mal ausgeführt, wenn der X-Server neu gestartet wird.<br />
9
Die beiden Dateien timeout.php und start config.php werden weiter unten, zusammen mit der<br />
Installation des Web-Interface, an die richtige Stelle kopiert.<br />
PHP5 Command Line Interpreter Um eine PHP-Datei überhaupt aus einer Shell heraus ausführen<br />
zu können benötigen Sie noch das Paket php5-cli.<br />
sudo apt-get install php5-cli<br />
2.5 Installation des Web-Interfaces<br />
Im vorhergehenden Abschnitt haben sie sämtliche Software installiert, die nötig ist, um einen <strong>PIP</strong>-<br />
Server betreiben zu können. Nun sind Sie bereit, den Kern des Servers (das Web-Interface) zu installieren.<br />
Die nötige Software (Webserver, PHP, Datenbank) ist bereits installiert. Sämtliche Sourcecode-<br />
Dateien können sie im Internet unter http://www.pip.mybytes.ch herunterladen. Kopieren Sie daraus<br />
den Inhalt des Ordners ≪Web-Interface≫ in den Ordner /var/www. Im Ordner /var/www sollte<br />
nun folgende Struktur ersichtlich sein:<br />
admin Web-Interface (Administrator-Bereich)<br />
lang Sprachdateien (Deutsch, Englisch)<br />
lib Verschiedene gesammelte PHP-Funktionen<br />
res Ressourcen für die Darstellung: Bilder, CSS-Dateien<br />
template HTML-Vorlagen für die Darstellung<br />
index.php Hauptdatei; bearbeitet sämtliche Anfragen<br />
background.php Liefert das Hintergrundbild; Wird von backgr.sh aufgerufen.<br />
start config.php Speichert beim Systemstart die Konfiguration der Datenbank in<br />
Dateien ab. Dies garantiert die Integrität zwischen Datenbank und<br />
System (Linux).<br />
timeout.php Sperrt Benutzer aus, die das Web-Interface schliessen ohne sich<br />
abzumelden.<br />
Im Unterordner /var/www/lib finden Sie folgende Dateien:<br />
check login.php Wird immer zu Beginn aufgerufen und dient der Überprüfung, ob der<br />
Benutzer angemeldet ist<br />
config.php Konfigurationsdatei (Einstellungen)<br />
mysql.php Funktionen, um mit der Datenbank zu interagieren<br />
others.php verschiedene Funktionen<br />
servercmd.php Funktionen, um mit dem System (Linux) zu kommunizieren und<br />
Befehle in der Shell auszuführen<br />
template.php Funktionen, um HTML-Vorlagen einzulösen und mit dynamischen<br />
Inhalten zu füllen<br />
Im Unterordner /var/www/admin befinden sich alle Dateien, die für den Administrator-Bereich<br />
benötigt werden:<br />
lang Sprachdateien für den Administrator-Bereich<br />
lib Funktionssammlungen, die nur im Administrator-Bereich gebraucht<br />
werden<br />
res Ressourcen für den Administrator-Bereich<br />
template HTML-Vorlagen für den Administrator-Bereich<br />
index.php Hauptdatei: Diese Datei bearbeitet sämtliche Anfragen im<br />
Administrator-Bereich.<br />
10
2.5.1 Laden der Datenbank<br />
Nebst den Quellcode-Dateien müssen Sie auch noch die Datenbankinhalte kopieren. Suchen Sie dazu<br />
die Datei <strong>PIP</strong>-MySQL-Dump.sql im Ordner ≪Datenbank≫ des Sourcecode-Package und importieren<br />
Sie diese Datei in ihre MySQL-Datenbank. Sie können dazu ein beliebiges MySQL-Tool ihrer Wahl<br />
verwenden. Am einfachsten erreichen Sie dies mit dem folgenden Befehl:<br />
mysql -u root -p < <strong>PIP</strong>-MySQL-Dump.sql<br />
Die soeben importierten Tabellen können mit dem Kommanzeilenprogramm mysql betrachtet werden.<br />
mysql -p pip<br />
mysql> show tables;<br />
Mit dem Laden der Datenbankinhalte haben sie eine Datenbank mit den Namen pip importiert. In<br />
dieser Datenbank können Sie nun folgende Tabellen vorfinden:<br />
config Speichert alle Konfigurationen, die im Administrator-Bereich<br />
eingestellt werden können. Diese Tabelle enthält nur einen einzigen<br />
Datensatz mit allen Einstellungen.<br />
config resolution Speichert die zur Verfügung stehenden Bildschirmauflösungen. Jede<br />
mögliche Auflösung belegt einen Datensatz.<br />
be sessions Listet die Benutzer auf, die im Backend (Administrator-Bereich)<br />
angemeldet sind<br />
fe users Listet die Benutzer auf, die im Frontend (Anwender-Bereich)<br />
angemeldet sind<br />
2.5.2 Verknüpfen von Web-Interface und Datenbank<br />
In der Datei /var/www/lib/config.php stehen alle Angaben, die vom Web-Interface benötigt werden,<br />
um sich mit der Datenbank zu verbinden. Die Grundeinstellungen sollten in der Regel funktionieren.<br />
Falls Sie aber den Datenbanknamen, den Usernamen oder das MySQL-Passwort geändert haben, so<br />
müssen Sie dies in dieser Konfigurationsdatei aktualisieren, damit das Web-Interface korrekt funktioniert.<br />
2.5.3 Erste Schritte nach der Installation<br />
Auto-Login aktivieren Klicken Sie in der oberen Taskleiste auf ≪System≫ / ≪Administration≫ /<br />
≪Login Window≫. Falls sie nach dem Passwort gefragt werden, geben sie ≪pip1234≫ ein. Wählen Sie<br />
das Register ≪Security≫, aktivieren Sie die Checkbox ≪Enable Automatic Login≫ und wählen Sie den<br />
Benutzer ≪user≫ von der Dropdown-Liste.<br />
JAVA-Applet kopieren Das JAVA-Applet darf aus Lizenzgründen leider nicht zusammen mit<br />
dem <strong>PIP</strong>-Image verteilt werden. Sie müssen das Applet selber herunterladen und an die richtige<br />
Stelle kopieren. Ansonsten können Sie das Applet aber kostenlos gebrauchen, sofern Sie es nicht für<br />
kommerzielle Zwecke verwenden.<br />
1. Besuchen Sie die Seite http://www.gotoservers.com/vnctry.html und lesen Sie die Linzenzvereinbarung.<br />
2. Klicken Sie auf ≪I agree and start download≫.<br />
3. Entpacken Sie das Zip-Archiv mit dem Befehl unzip freegsvncj.zip und kopieren Sie die<br />
Datei freegsvnc.jar auf den <strong>PIP</strong>-Server in den Ordner /var/www/res.<br />
11
Neustart Führen Sie einen System-Neustart durch, damit alle geänderten Konfigurationen übernommen<br />
werden. Die weiteren Einstellungen erfolgen nun über das Web-Interface.<br />
2.6 Funktionsweise des Web-Interfaces<br />
Sie verfügen nun über ein lauffähiges <strong>PIP</strong>-System. Eventuell möchten Sie noch weitere Konfigurationen<br />
vornehmen. Lesen Sie dazu den Abschnitt 3.4 im Administratoren-Handbuch.<br />
Das folgende Kapitel beschreibt die Funktionsweise des <strong>PIP</strong>-Systems. Dabei wird chronologisch<br />
vorgegangen, das heisst die Funktionsweise wird anhand eines <strong>komplett</strong>en Durchgangs (Anmeldung -<br />
Benutzung - Abmeldung) aufgezeigt und die Hintergrundvorgänge werden erklärt.<br />
2.6.1 Funktionsweise des Web-Interface für den Benutzer (Anwender-Bereich)<br />
Das Web-Interface kann über die IP-Adresse des <strong>PIP</strong>-Servers mit einem Webbrowser erreicht werden.<br />
Die IP-Adresse des Servers wird auf dem Desktop-Hintergrund des Servers angezeigt, wenn keine VNC-<br />
Verbindung geöffnet ist. Damit die IP-Adresse auch im DHCP-Modus (IP wird dynamisch zugewiesen)<br />
richtig angezeigt wird, wird der Desktop-Hintergrund durch das Skript backgr.sh aktualisiert, welches<br />
von pipStartupJobs.sh periodisch aufgerufen wird (siehe Seite 9).<br />
Startseite Bei Eingabe der IP-Adresse im Webbrowser erscheint die Startseite des <strong>PIP</strong>-Servers.<br />
Auf dieser Seite findet der Benutzer einige Informationen darüber, was ein <strong>PIP</strong>-System ist und wie<br />
dieses zu bedienen ist. Wie auf sämtlichen <strong>PIP</strong>-Seiten findet man oben rechts eine Sprachauswahl<br />
(Englisch/Deutsch).<br />
Der Benutzer hat nun die Möglichkeit, die Anmeldung zu starten. Dazu muss er seinen Namen<br />
(oder sein Kürzel) eingeben. Dies ist wichtig, damit der Benutzer anschliessend von allen anderen<br />
angemeldeten Benutzern unterschieden werden kann. Mit einem Mausklick gelangt man einen Schritt<br />
weiter zur Authentifikation. Bereits zu diesem Zeitpunkt wird der Benutzer im System erfasst, damit<br />
er eindeutig zugeordnet werden kann.<br />
Authentifikation: Code anzeigen Die Authentifikation dient der Überprüfung, ob die sich anmeldende<br />
Person wirklich physisch vor dem Bildschirm präsent ist. Ein zufällig generierter Code wird<br />
mit Hilfe des Programms osd cat auf dem Bildschirm angezeigt.<br />
export DISPLAY=:0.0<br />
echo $username : $code | osd cat -o $v pos -i $h pos -f<br />
"-adobe-helvetica-bold-*-*-*-64-*-*-*-*-*-*-*" -d 6<br />
Die erste Zeile sorgt dafür, dass die Umgebungsvariable DISPLAY richtig gesetzt wird. Die zweite Zeile<br />
zeigt den Zufallscode am Bildschirm an. Alle Zeichenfolgen mit einem vorgestellten $ kennzeichnen<br />
PHP-Variablen, die zur Laufzeit mit entsprechendem Inhalt dynamisch eingefügt werden. Die Option<br />
-f dient der Schriftwahl, -d gibt die Anzeigedauer in Sekunden an.<br />
Authentifikation: Benutzer anmelden Sobald der Code richtig eingegeben wurde, kann der Benutzer<br />
am System angemeldet werden. Das bedeutet, dass die Firewall des <strong>PIP</strong>-Servers so geöffnet<br />
wird, dass der Benutzer die Möglichkeit hat, eine VNC-Verbindung zu starten.<br />
sudo -S -u root iptables -A INPUT -p tcp -s $client ip --dport 5500 -j ACCEPT<br />
< /home/user/pip/sudoPass<br />
12
Um die Firewall zu konfigurieren wird das Programm iptables verwendet. Mit dem obigen Befehl<br />
wird die Firewall für eingehende Verbindungen von der IP-Adresse $client ip auf den Port 5500<br />
(VNC-Port) zugelassen. Da für die Ausführung von iptables root-Rechte benötigt werden, wird der<br />
Befehl zusammen mit sudo verwendet. Damit das Passwort nicht interaktiv abgefragt wird (was bei<br />
sudo Standard ist, aber im Zusammenhang mit PHP scheitern würde), wird das Passwort aus einer<br />
Datei eingelesen.<br />
Statusanzeige Sobald der Benutzer vollständig angemeldet ist, gelangt er zur Statusanzeige. Hier<br />
findet der Benutzer eine Übersicht, welche anderen Benutzer ebenfalls angemeldet sind. Damit die<br />
Anzeige aktuell bleibt, lädt sie sich alle 20 Sekunden neu. Von hier aus hat der Benutzer auch die<br />
Möglichkeit, eine VNC-Verbindung zu starten, und somit seinen Bildschirminhalt auf dem <strong>PIP</strong>-Server<br />
darzustellen. Damit dies funktioniert, muss der Benutzer einen VNC-Server starten und von dort aus<br />
eine so genannte Reverse-Verbindung initiieren. Dazu gibt es zwei Möglichkeiten:<br />
• VNC-Server als Java-Applet: Mit dem Java-Applet kann bequem und ohne jegliche Installation<br />
ein VNC-Server gestartet werden. Das Applet ist so konfiguriert, dass es automatisch eine<br />
Verbindung mit dem <strong>PIP</strong>-Server aufbaut. Der Nachteil liegt in der etwas längeren Reaktionszeit<br />
und der geringeren Bildqualität.<br />
Achtung: Das Java-Applet wird aus Lizenzgründen nicht mit dem <strong>PIP</strong>-System mitgeliefert und<br />
muss manuell heruntergeladen und an die richtige Stelle kopiert werden (siehe Seite 11). Ansonsten<br />
ist das Java-Applet aber frei benutzbar, sofern es nicht für kommerzielle Zwecke verwendet<br />
wird.<br />
• VNC-Server als Desktop-Programm: Es gibt eine Reihe guter VNC-Programme, die auf<br />
dem eigenen Desktop-Rechner installiert werden können und die eine Reverse-Verbindung unterstützen.<br />
Zwar muss dafür eine Installation vorgenommen werden, dafür ist die Anzeige qualitativ<br />
deutlich besser. Eine Liste der empfohlenenen Programme (inkl. Installationsanleitungen) findet<br />
man unter http://www.pip.mybytes.ch/?content=vnc.<br />
Sobald ein Benutzer nicht nur am System angemeldet ist, sondern tatsächlich auch über eine aktive<br />
VNC-Verbindung verfügt, wird dies erkannt und in der Statusanzeige angezeigt. Dazu werden<br />
periodisch die Verbindungen auf dem <strong>PIP</strong>-Server analysiert.<br />
netstat -e -n -p -t | grep vnc | grep ESTABLISHED | awk ’{match($5,":"); print<br />
substr($5,1,RSTART-1)}’<br />
Mit netstat werden alle Netzwerk-Verbindungen des <strong>PIP</strong>-Servers ausgelesen und anschliessend mit<br />
grep nach den Schlüsselwörtern ≪vnc≫ und ≪ESTABLISHED≫ durchsucht, so dass nur bestehende<br />
VNC-Verbindungen angezeigt werden. Aus diesen Verbindungsdaten wird dann die IP-Adresse herausgefiltert.<br />
Es resultiert eine Liste von IP-Adressen, deren Hosts eine aktive VNC-Verbindung zum<br />
<strong>PIP</strong>-Server aufweisen. Diese Liste wird mit der Liste der angemeldeten Benutzer verglichen, um die<br />
Statusanzeige entsprechend aktualisieren zu können.<br />
Statusanzeige: Alle Fenster minimieren Der Benutzer hat die Möglichkeit, per Mausklick sämtliche<br />
offenen Fenster (VNC-Verbindungen) zu minimieren. Dies wird mit dem bereits erwähnten Programm<br />
wmctrl realisiert:<br />
wmctrl -k on<br />
13
Statusanzeige: Vordergrund Eine Erweiterung bietet der Befehl, einen bestimmten Benutzer im<br />
Vordergrund anzeigen zu lassen. Dafür muss erst die PID (Prozess-ID) ausgelesen werden, die der<br />
entsprechende vncviewer-Task besitzt:<br />
netstat -e -n -p -t | grep $client ip | grep vnc | awk ’{match($0,"/"); print<br />
substr($0,RSTART-9,9)}’<br />
Der Befehlt ähnelt dem Befehl zum Auslesen der verbundenen IP-Adressen stark, in diesem Fall wird<br />
aber die Prozess-ID ausgelesen. Mit der Prozess-ID kann ein spezifisches Fenster direkt angesprochen<br />
werden, da ja der Fenstername des angepassten VNC-Viewers unter anderem aus eben dieser Prozess-<br />
ID besteht (siehe Abschnitt ≪vncviewer≫ auf Seite 5).<br />
wmctrl -k on<br />
wmctrl -a $pid<br />
wmctrl -r $pid -b add,fullscreen<br />
Der erste Befehl minimiert alle Fenster, der zweite aktiviert das verlangte Fenster und der letzte Befehl<br />
versetzt es in den Vollbildmodus.<br />
Statusanzeige: Auflösung ändern Der Benutzer hat die Möglichkeit, die Auflösung des <strong>PIP</strong>-<br />
Servers zu ändern und so an seine Bedürfnisse anzupassen. Allerdings können nur Auflösungen ausgewählt<br />
werden, die vom Administrator aktiviert wurden. Der Systembefehl für eine solche Änderung<br />
kann zum Beispiel folgendermassen aussehen:<br />
/usr/bin/xrandr -display :0.0 -s 1024x768<br />
Verbindung schliessen / Logout ≪Verbindung schliessen≫ bedeutet, dass die VNC-Verbindung<br />
geschlossen wird, die Authentifikation aber aufrecht erhalten bleibt.<br />
kill ‘netstat -e -n -p -t | grep $client ip | grep vnc | awk ’{match($0,"/");<br />
print substr($0,RSTART-9,9)}’‘<br />
Der hintere Teil ist bereits bekannt und liest die PID des entsprechenden Prozesses aus. Nun muss<br />
nur noch der Prozess mit einem kill-Aufruf beendet werden.<br />
Bei einem Logout wird zusätzlich auch die Authentifikation gelöscht, indem die Firewall für den<br />
Benutzer wieder geschlossen wird und der Benutzer aus dem System gelöscht wird.<br />
sudo -S -u root iptables -D INPUT -p tcp -s $client ip --dport 5500 -j ACCEPT<br />
< /home/user/pip/sudoPass<br />
Die Option -D bewirkt, dass die Firewallregel wieder gelöscht wird.<br />
Automatisches Logout Wenn die Statusanzeige im Browser geöffnet ist, bewirkt eine periodische<br />
Aktualisierung, dass der Benutzer am System angemeldet bleibt. Wenn der Benutzer das Browserfenster<br />
schliesst, ohne sich vorher abzumelden, so fehlt diese Aktualisierung. Das Skript timeout.php,<br />
welches von pipStartupJobs.sh periodisch aufgerufen wird, sorgt dafür, dass solche Benutzer aufgespürt<br />
und innerhalb von 1-2 Minuten aus dem System abgemeldet werden. Dies verhindert, dass<br />
jemand seine VNC-Verbindung ≪vergisst≫ oder dass jemand willkürlich den Server blockieren könnte.<br />
14
2.6.2 Funktionsweise des Web-Interface für den Administrator (Administrator-Bereich)<br />
Das Web-Interface des Administrators kann unter http://IP-des-Servers/admin aufgerufen werden.<br />
Im Abschnitt 3.4 ist beschrieben, welche Änderungen im Administrator-Bereich vorgenommen werden<br />
können. Hier wird lediglich beschrieben, wie diese Änderungen technisch umgesetzt werden.<br />
Allgemeine Einstellungen Hier können Name des Servers und E-Mail Adresse des Administrators<br />
eingegeben werden. Diese Daten werden lediglich in der Datenbank gespeichert.<br />
Auflösungen Hier können die Auflösungen gewählt werden, die vom Benutzer auswählbar sein<br />
sollen. Für jede mögliche Auflösung besteht ein Datensatz in der Tabelle config resolution, in dem<br />
gespeichert wird, ob die Auflösung wählbar ist oder nicht.<br />
Netzzugang Hier kann eingestellt werden, wie der <strong>PIP</strong>-Server mit dem Netzwerk verbunden ist.<br />
Sowohl die Auswahl, als auch alle Zusatzdaten (Statische IP, Subnetzmaske, WLAN Verschlüsselung,<br />
...) werden einerseits in der Datenbank gespeichert. Andererseits werden die Einstellungen auch in<br />
der Datei /etc/network/interfaces gespeichert und dann die Interfaces neu gestartet, so dass die<br />
Konfiguration auch vom System (Linux) übernommen wird. Die Funktion, die das Schreiben der<br />
interfaces-Datei übernimmt, ist in der Quellcode-Datei /var/www/admin/lib/others.php detailliert<br />
erklärt.<br />
Passwort ändern Der Administrator hat die Möglichkeit das Passwort zu ändern. Ändert der<br />
Benutzer das Passwort, so wird sowohl das Passwort für das Web-Interface, als auch das System-<br />
Passwort (Linux) geändert. Das Web-Interface überprüft lediglich, ob das Passwort nur aus Zahlen<br />
und Zeichen besteht und 6 bis 40 Zeichen lang ist. Linux überprüft aber zusätzlich, ob das Passwort<br />
nicht zu einfach ist und ob es dem alten Passwort nicht zu stark ähnelt. Dies kann zu unerwarteten<br />
Schwierigkeiten führen. Deshalb wird im Zweifelsfall das Passwort nicht geändert und der Benutzer<br />
wird aufgefordert, ein neues Passwort auszuprobieren.<br />
Das Passwort für MySQL wird allerdings nicht geändert. Da MySQL sowieso so konfiguriert sein<br />
sollte, dass nur Anfragen vom localhost entgegengenommen werden, erübrigt sich in diesem Fall eine<br />
Passworteingabe.<br />
Erweiterte Konfiguration In der erweiterten Konfiguration können die Gerätenamen des Ethernetund<br />
(falls vorhanden) des WLAN-Interface geändert werden. Diese Werte werden lediglich in der<br />
Datenbank gespeichert und werden für diverse Funktionen benötigt, zum Beispiel beim Auslesen der<br />
eigenen IP-Adresse.<br />
Hier werden ebenfalls die Zugangsdaten gefunden, wie man sich per SSH mit dem <strong>PIP</strong>-Server<br />
verbinden kann. So kann der Server auch dann noch beliebig konfiguriert werden, wenn Tastatur und<br />
Maus nicht mehr angeschlossen sind.<br />
2.7 Ausbaumöglichkeiten<br />
Man kann sich verschiedene Punkte zur Erweiterung des bestehenden <strong>PIP</strong>-Service vorstellen:<br />
• Verschlüsselung: Damit Bildschirm-Daten auf dem Weg vom Anwender-Laptop zum <strong>PIP</strong>-Server<br />
nicht abgefangen werden können, wäre eine Implementation mit einem SSH-Tunnel denkbar.<br />
Dabei würde die VNC-Verbindung durch einen SSH-Tunnel aufgebaut und wäre somit verschlüsselt.<br />
Zu berücksichtigen ist dabei u.a. die verfügbare Bandbreite der Übertragung, da die<br />
Verschlüsselung die Übertragungsrate der Bilddaten verschlechtern wird.<br />
15
• Einbettung: Eine andere Weiterentwicklung wäre die Implementation auf einem hardware- und<br />
softwaremässigen Minimalsystem, das in Kombination mit einem Display als Komplettsystem<br />
montiert werden könnte.<br />
• Kollaboration: Vorstellbar wäre auch eine Variante, bei der kein weiteres Anzeigegerät eingesetzt<br />
wird, sondern die Anwender ihre Bildschirminhalte gegenseitig auf ihren Laptops darstellen.<br />
Dann würde jemand präsentieren und alle anderen auf ihren eigenen Laptops zuschauen. Diese<br />
Variante setzt aber voraus, dass alle einen Laptop dabei haben.<br />
3 Administratorenhandbuch<br />
3.1 Einleitung<br />
Dieses Handbuch hilft Ihnen dabei, einen <strong>PIP</strong>-Service mithilfe der <strong>PIP</strong>-Image-CD aufzubauen und zu<br />
betreiben. Sie benötigen dazu nur geringe Kenntnisse im Umgang mit Linux. Vielmehr werden die<br />
erforderlichen Schritte genau erklärt.<br />
3.2 Grundkonzept<br />
Überblick Zuerst sollten Sie einen Überblick gewinnen, wie der <strong>PIP</strong>-Service aufgebaut ist.<br />
Der <strong>PIP</strong>-Server nimmt dabei zwei Funktionen wahr:<br />
• Anzeigen der übermittelten Bild-Informationen auf dem angeschlossenen Anzeigegerät.<br />
• Web-Server zur Authentifizierung und Steuerung<br />
Es wird nur ein einziger Server benötigt, der die gesamte Funktionalität zur Verfügung stellt.<br />
Web-Interface Es erlaubt eine einfache Anmeldung und Authentifizierung der Anwender sowie die<br />
Möglichkeit einige Einstellungen vorzunehmen (mehr dazu später im Abschnitt 3.4).<br />
VNC-Verbindung VNC (Virtual Network Computing) ist eine Software, die es ermöglicht, den<br />
Bildschirminhalt eines entfernten Computers auf dem eigenen lokalen Computer darzustellen und<br />
sogar Tastatur- und Mauseingabe an den entfernten Computer zurückzuschicken. Der <strong>PIP</strong>-Service<br />
verwendet aber nur die Anzeigefunktion. Er baut auf der Implementation von TightVNC auf. Mehr<br />
dazu erfahren Sie auf http://www.tightvnc.org.<br />
Da bei der hier gegebenen Situation die Anwender ihren Bildschirminhalt exportieren wollen,<br />
müssen sie auf ihrem Computer einen VNC-Server in Betrieb haben. Normalerweise wartet ein VNC-<br />
Server auf eingehende Verbindungen von VNC-Viewern, die ihrerseits die übermittelten Bild-Informationen<br />
16
darstellen. Dies hätte hier den entscheidenden Nachteil, dass die Anwender eine eingehende TCP-<br />
Verbindung auf Port 5900 zulassen und dazu eventuell die Firewall auf ihrem Computer anpassen<br />
müssten. Daher setzt der <strong>PIP</strong>-Service auf eine umgekehrte Verbindung. Das heisst, dass der VNC-<br />
Viewer, der auf dem <strong>PIP</strong>-Server läuft, so konfiguriert wird, dass er auf eingehende Verbindungen<br />
von VNC-Servern wartet. Die Anwender erstellen dann mit ihren VNC-Servern eine umgekehrte<br />
Verbindung zum wartenden VNC-Viewer.<br />
3.3 Installation des Systems<br />
3.3.1 Wahl der Hardware<br />
Die Entwicklung des <strong>PIP</strong>-Service erfolgte auf einem normalen Desktop PC mit 1024MiB RAM und<br />
einer ASUS Radeon 9200 Grafik-Karte mit 128 MiB Grafikspeicher. Damit lässt sich ein guter <strong>PIP</strong>-<br />
Server betreiben. Wollen Sie nur Standbilder anzeigen, die selten wechseln, wird auch ein einfacheres<br />
System genügen. Sie müssen nur berücksichtigen, dass das Linux-Image ca. 3 GiB Platz auf der<br />
Festplatte benötigt. Möchten Sie auch Videos flüssig darstellen lassen, sollten sie bei der Hardware<br />
nicht sparen. Bedenken Sie, dass das eingesetzte VNC-Protokoll nicht besonders effizient ist.<br />
Stellen Sie auf jeden Fall sicher, dass dich der ausgewählte Computer von einer CD booten lässt.<br />
3.3.2 Image-CD erstellen<br />
Laden Sie auf ihrem normalen Arbeitscomputer das <strong>PIP</strong>-Image von<br />
http://www.pip.mybytes.ch/index.php?content=download<br />
herunter und brennen Sie es auf eine CD. Für Hilfe zum Brennen eines ISO-Images, konsultieren Sie<br />
bitte:<br />
https://help.ubuntu.com/community/BurningIsoHowto<br />
3.3.3 Image installieren<br />
Booten Sie den Computer, den Sie als <strong>PIP</strong>-Server ausgesucht haben, mit der <strong>PIP</strong>-Image-CD. Die<br />
Installation des Systems ist weitgehend selbsterklärend und vollkommen identisch zu einer normalen<br />
Ubuntu-Installation. Benötigen Sie weitere Informationen zur Installation von Ubuntu, konsultieren<br />
Sie bitte:<br />
https://help.ubuntu.com/community/Installation<br />
Wichtig: Wählen Sie bei der Installation als Benutzer-Namen ≪user≫ und als Passwort<br />
≪pip1234≫. Ändern Sie das Passwort nach der Installation über das Administrator-<br />
Interface.<br />
3.3.4 Erste Schritte nach der Installation<br />
Auto-Login aktivieren Klicken Sie in der oberen Taskleiste auf ≪System≫ / ≪Administration≫ /<br />
≪Login Window≫. Falls sie nach dem Passwort gefragt werden, geben sie ≪pip1234≫ ein. Wählen Sie<br />
das Register ≪Security≫, aktivieren Sie die Checkbox ≪Enable Automatic Login≫ und wählen Sie den<br />
Benutzer ≪user≫ von der Dropdown-Liste.<br />
17
JAVA-Applet kopieren Das JAVA-Applet darf aus Lizenzgründen leider nicht zusammen mit<br />
dem <strong>PIP</strong>-Image verteilt werden. Sie müssen das Applet selber herunterladen und an die richtige<br />
Stelle kopieren. Ansonsten können Sie das Applet aber kostenlos gebrauchen, sofern Sie es nicht für<br />
kommerzielle Zwecke verwenden.<br />
1. Besuchen Sie die Seite http://www.gotoservers.com/vnctry.html und lesen Sie die Linzenzvereinbarung.<br />
2. Klicken Sie auf ≪I agree and start download≫.<br />
3. Entpacken Sie das Zip-Archiv und kopieren Sie die Datei freegsvnc.jar auf den <strong>PIP</strong>-Server in<br />
den Ordner /var/www/res.<br />
Die Installation des <strong>PIP</strong>-Servers ist somit abgeschlossen. Sie können nun auch Tastatur und Maus<br />
vom Server entfernen. Auf jeden Fall sollten sie den nachfolgenden Abschnitt 3.4 lesen, um zu erfahren,<br />
wie Sie ihren eben installierten <strong>PIP</strong>-Server über das Web-Interface konfigurieren können.<br />
Ansonsten können sie den Anwender-Bereich des Web-Interfaces mit http://IP-des-Servers/<br />
erreichen. Die Funktionsweise sollte selbsterklärend sein.<br />
Weitere Informationen finden Sie unter http://www.pip.mybytes.ch.<br />
3.4 Administration über das Web-Interface<br />
Unter http://IP-des-Servers/admin steht Ihnen ein Administrator-Bereich zur Verfügung, in dem<br />
Sie Ihren <strong>PIP</strong>-Server konfigurieren können. Sie sollten auf jeden Fall zuerst die Einstellungen vornehmen,<br />
bevor Sie den <strong>PIP</strong>-Server das erste Mal testen.<br />
Das Administrator-Passwort ist bei einem neu aufgesetzten System auf ≪pip1234≫ gesetzt. Es wird<br />
aber unbedingt empfohlen, das Passwort baldmöglichst zu ändern.<br />
3.4.1 Allgemeine Einstellungen<br />
Sie können den Namen des Servers und Ihre E-Mail Adresse setzen. Der Name dient den Benutzern<br />
zur Orientierung, auf welchem <strong>PIP</strong>-Server sie gelandet sind. Ihre E-Mail Adresse gibt den Benutzern<br />
die Möglichkeit mit Ihnen Kontakt aufzunehmen bei Problemen. Ansonsten sind diese Einstellungen<br />
aber irrelevant für die Funktionsweise des <strong>PIP</strong>-Servers.<br />
3.4.2 Auflösungen<br />
Sie können festlegen, welche Auflösungen der Benutzer einstellen kann. Sie geben den Anwendern<br />
damit die Flexibilität, das Anzeigegerät nach ihren Bedürfnissen einzurichten. Stellen Sie aber sicher,<br />
dass sie keine Auflösungen aktivieren, die vom Bildschirm oder der Grafikkarte des <strong>PIP</strong>-Servers nicht<br />
unterstützt werden. Auf jeden Fall müssen Sie mindestens eine gültige Auflösung wählen.<br />
3.4.3 Netzzugang<br />
In diesem Register wird festgelegt, wie der <strong>PIP</strong>-Server mit dem Netzwerk verbunden ist.<br />
• Ethernet Statisch: Der <strong>PIP</strong>-Server ist per Ethernet-Kabel an einem Router angeschlossen und<br />
verfügt über eine statische IP. Dies ist die empfohlene Konfiguration, bei der Sie schnellste<br />
Übertragungsgeschwindigkeit erreichen und bei der Sie sicher sind, dass die IP-Adresse nicht<br />
willkürlich ändert. So kann es auch Sinn machen, dem <strong>PIP</strong>-Server einen eigenen DNS-Eintrag<br />
zu geben (z.B. ≪http://pip.meine-firma.ch≫), um die Benutzerfreundlichkeit zu erhöhen.<br />
Auf jeden Fall müssen Sie noch die IP-Adressen, die Subnetzmaske und das Standardgateway<br />
eintragen.<br />
18
• Ethernet Dynamisch: Der <strong>PIP</strong>-Server ist per Ethernet-Kabel an einem Router angeschlossen und<br />
versucht sich selbst eine IP zuzuordnen. Sie erreichen eine hohe Übertragungsgeschwindigkeit,<br />
die IP-Adresse des Servers kann aber willkürlich wechseln, so dass der Server plötzlich unter<br />
einer anderen IP-Adresse erreichbar ist.<br />
(Dies ist die Standardeinstellung im Grundzustand.)<br />
• WLAN Statisch: Der <strong>PIP</strong>-Server greift drahtlos auf einen Router zu und verfügt über eine statische<br />
IP. Sie erreichen dadurch möglicherweise eine geringere Übertragungsrate als mit einem<br />
Ethernet-Kabel. Die restlichen Aspekte sind mit ≪Ethernet Statisch≫ vergleichbar.<br />
Zusätzlich müssen sie noch die SSID (Name des Drahtlosnetzwerks) und eine allfällige Verschlüsselung<br />
angeben. Momentan wird nur WEP- und keine WPA-Verschlüsselung unterstützt.<br />
• WLAN dynamisch: Der <strong>PIP</strong>-Server greift drahtlos auf einen Router zu und versucht sich selbst<br />
eine IP zuzuordnen. Diese Variante wird nicht empfohlen. Sie erreichen möglicherweise eine<br />
geringere Übertragungsrate als mit einem Ethernet-Kabel und die IP-Adresse kann willkürlich<br />
wechseln.<br />
Zusätzlich müssen sie noch die SSID (Name des Drahtlosnetzwerks) und eine allfällige Verschlüsselung<br />
angeben. Momentan wird nur WEP- und keine WPA-Verschlüsselung unterstützt.<br />
• WLAN Ad-Hoc: Sofern Sie nicht die Möglichkeit haben, den <strong>PIP</strong>-Server in ein bestehendes Netzwerk<br />
zu integrieren, können Sie ein eigenes drahtloses Ad-Hoc-Netzwerk aufbauen. Andere Teilnehmer<br />
können drahtlos auf das Netzwerk ≪pip≫ zugreifen, indem sie die richtige Verschlüsselung<br />
einstellen:<br />
WEP 128bit ASCII<br />
Passwort: pip1234567890<br />
3.4.4 Passwort ändern<br />
Es wird empfohlen, baldmöglichst nach der Installation (und danach regelmässig) eines neues Passwort<br />
zu setzen. Geben Sie das alte Passwort ein und wiederholen Sie das neue Passwort zwei Mal.<br />
Das Passwort darf nur aus Zahlen und Buchstaben (Gross- und Kleinschreibung) bestehen und muss<br />
zwischen 6 und 40 Zeichen lang sein. Achten Sie auch darauf, dass das neue Passwort nicht zu einfach<br />
ist und dem alten Passwort nicht zu stark ähnelt, ansonsten wird ein Fehler auftreten.<br />
3.4.5 Erweiterte Konfiguration<br />
Sie haben die Möglichkeit, die Gerätenamen des Ethernet- und des WLAN-Interface zu ändern, wenn<br />
Sie wissen, dass diese falsch eingestellt sind. Ausserdem haben Sie die Möglichkeit, sich per SSH mit<br />
dem <strong>PIP</strong>-Server zu verbinden, um ihn beliebig zu konfigurieren. Verwenden Sie diese Methode aber<br />
nur, wenn Sie ein erfahrener Linux-Benutzer sind und wenn Sie genau wissen, was sie dabei tun.<br />
19
A Glossar<br />
CSS Cascading Style Sheets: deklarative Sprache zur Darstellung von Websiteelementen<br />
DHCP Dynamic Host Configuration Protocol: Dynamische Zuweisung der Netzwerkkonfiguration<br />
(IP-Adresse, Subnetzmaske, ...) vom einem Server an mehrere Clients.<br />
DNS Domain Name System: Dienst zur Verwaltung der Namensräume im Internet<br />
<strong>PIP</strong> Presentation over IP<br />
<strong>PIP</strong>-Server Computer, der den <strong>PIP</strong>-Service bereitstellt.<br />
PHP PHP Hypertext Preprocessor: Skriptsprache zur Erstellung von Webanwendungen<br />
SSH Secure Shell: Mögliche Realisation einer verschlüsselten Netzwerkverbindung.<br />
VNC Virtual Network Computing<br />
VNC-Server Software, die Bildschirminformationen an einen VNC-Viewer übermittelt.<br />
VNC-Viewer Software, die Bildschirminformationen eines VNC-Servers entgegen nimmt und auf<br />
dem angeschlossenen Anzeigegerät darstellt.<br />
20