15.09.2013 Aufrufe

Dokumentation komplett - PIP - Urban Suppiger

Dokumentation komplett - PIP - Urban Suppiger

Dokumentation komplett - PIP - Urban Suppiger

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!