================================================================================
                  MxRemotePreview-Installationsanweisung
================================================================================

--------------------------------------------------------------------------------
   Informationen zum Dokument
--------------------------------------------------------------------------------

   Veröffentlicht von:         MOBOTIX AG

   Verfasser:                  Bernd Wilhelm
                               Thilo Schüller

   Datum:                      2010-03-26

   Vertraulichkeit:            Öffentlich
--------------------------------------------------------------------------------


Inhalt
------

(0) Einleitung
(1) Systemvoraussetzungen
(2) Installationsgrundlagen
(3) Installation auf einem Apache-Webserver
(4) Installation auf einem Microsoft Internet Information Server 7
(5) Testen der Webserver-Installation
(6) Testen des CGIs
(7) Sicherheitshinweise



================================================================================
(0) Einleitung
================================================================================

"MxRemotePreview" ist eine Softwarekomponente, die den direkten Dateiserver-
Zugriff von MxControlCenter über schmalbandige Verbindungen (z. B. über das
Internet und einen VPN-Tunnel) ermöglichen soll. MxRemotePreview wird als
CGI-Modul in einer Webserver-Umgebung installiert.

MxControlCenter holt dann nicht mehr die originalen Video-/Audiodaten
direkt vom Dateiserver, sondern sendet eine Anfrage an den Webserver, der
seinerseits für bestimmte Dateitypen MxRemotePreview aufruft.

MxRemotePreview liest die originalen großen Dateien, REDUZIERT sie, indem
der Videoinhalt mit reduzierter Bildrate, Auflösung und/oder
JPEG-Qualität umkodiert wird und schickt die reduzierten Dateien zum
MxControlCenter zurück.

=> Anstelle der großen Originaldaten müssen also nur die viel kleineren
reduzierten Daten über das Netzwerk übertragen werden. Dadurch bekommt das
MxControlCenter die Daten schnell genug, um eine Ereignisliste aufzubauen
bzw. die Filmsequenzen wiederzugeben.

Für MxRemotePreview wird ein Windows-Dateiserver mit einem zusätzlich
installierten Webserver (Apache oder IIS) benötigt. Die Aufzeichnungen können
auf diesem Server selbst liegen (d. h. die Kameras verwenden diesen Server als
Dateiserver) oder auf einem anderen Dateiserver bzw. NAS-System. Werden zwei
unterschiedliche Server verwendet, benötigt der MxRemotePreview-Webserver einen
Zugang mit möglichst hoher Bandbreite zum Dateiserver bzw. NAS mit den
Aufzeichnungen der Kameras.

Falls Sie MxRemotePreview für ein anderes Betriebssystem benötigen, senden Sie
bitte eine E-Mail an software-feedback@mobotix.com, und beschreiben Sie das
gewünschte Betriebssystem.



================================================================================
(1)   Systemvoraussetzungen
================================================================================

* Die Taktrate des Prozessors sollte größer als 1 GHz sein.
* Diese Version läuft nur auf Windows XP SP3 oder höher.



================================================================================
(2)   Installationsgrundlagen
================================================================================

Die grundlegende Idee hinter den Installationsvarianten ist:

(a) Das CGI so installieren, wie vom jeweiligen Webserver vorgesehen.

(b) Einstellen, dass das CGI entweder für alle oder nur für bestimmte JPEG-
    Dateien aufgerufen wird. Als regulärer Ausdruck kann "[MEAPC][0-9]+\.jpg$"
    benutzt werden. Für andere Dateitypen soll und darf das CGI nicht 
    aufgerufen werden.

(c) Die Dokument-Wurzel des Webservers auf den Aufzeichnungspfad setzen. Diese
    als "http://<servername>/" verfügbar machen.

(d) Optional können Standardwerte für die Umkodierung mittels folgender
    Umgebungsvariablen übergeben werden:

    MXRECODER_FRAMERATE - gewünschte Bildrate (sonst: 1 Bild pro Sekunde)
    MXRECODER_WIDTH     - Bildgröße, Seitenverhältnis wird beibehalten
    MXRECODER_HEIGHT      Bild wird innerhalb dieser Dimensionen bleiben
    MXRECODER_QUALITY     gewünschte JPEG-Qualität in Prozent
    MXRECODER_AUDIO     - Audio aktivieren (1) oder deaktivieren (0),
                          deaktivieren spart 64 kBit/s


================================================================================
(3)   Installation auf einem Apache-Webserver
================================================================================

(3a)   Apache-Webserver installieren
--------------------------------------------------------------------------------

Wenn Sie nicht schon einen Apache-Webserver betreiben:

 * Laden Sie sich ein passendes Binärpaket von apache.org herunter.
 * Starten Sie den Installer (z. B. apache_xxx-win32-xxx.msi).
 * Folgen Sie den Anweisungen.
 * Installieren Sie Apache als Windows-Dienst auf Port 80 (Standardeinstellung).
   (Hinweis: Sie können auch einen anderen Port als 80 verwenden. Denken Sie
   jedoch daran, diesen Port auch in der MxControlCenter-Installation
   anzugeben.)


(3b)   MxRemotePreview.cgi installieren
--------------------------------------------------------------------------------

 * Kopieren Sie MxRemotePreview.cgi.exe in das Apache-Verzeichnis:
     C:/Program Files/Apache.../cgi-bin


(3c)   Apache konfigurieren
--------------------------------------------------------------------------------

 * Öffnen Sie httpd.conf aus C:/Program Files/Apache.../conf und ändern Sie die
   folgenden Zeilen:

   -----------------------------------------------------------------------------
   DocumentRoot                 "C:/<Ordner mit Kamera-Aufzeichnungen>"

   ScriptAlias  /cgi-bin/       "C:/<Apache-Verzeichnis>/cgi-bin/"
   Action       mxremotepreview /cgi-bin/MxRemotePreview.cgi.exe

   <Directory "C:/<Ordner mit Kamera-Aufzeichnungen>">
      <FilesMatch [MEAPC][0-9]+\.jpg$>
         SetHandler mxremotepreview
      </FilesMatch>
   </Directory>
   -----------------------------------------------------------------------------

 * Fügen Sie die gewünschten MxRemotePreview-Standardeinstellungen hinzu:
   (Anmerkung: Diese werden normalerweise durch MxCC überladen)

    # Gewünschte Bildrate (Standard: 1 Bild pro Sekunde)
    SetEnv MXRECODER_FRAMERATE   1

    # Auflösung, Seitenverhältnis wird beibehalten
    SetEnv MXRECODER_WIDTH     320
    SetEnv MXRECODER_HEIGHT    240

    # JPEG-Qualität [1..100]
    SetEnv MXRECODER_QUALITY    40

    # Audio aktivieren, 0 zum Deaktivieren
    SetEnv MXRECODER_AUDIO       1


 * Die restliche Apache-Konfiguration kann wie gewünscht angepasst werden.
      Siehe http://httpd.apache.org/docs/2.2/

 * Starten Sie den Apache-Dienst neu.



================================================================================
(4)   Installation auf einem Microsoft Internet Information Server 7
================================================================================


(4a)   IIS installieren
--------------------------------------------------------------------------------

 * Öffnen Sie den Server-Manager und wählen Sie "Rollen hinzufügen".

 * Markieren Sie "Webserver (IIS)" in der Liste und klicken Sie auf den Button
  "Weiter", bis das Auswahlfenster "Rollendienste" erscheint.

 * Wenn die Auswahl im Fenster "Rollendienste" angezeigt wird, führen Sie
   die folgenden Schritte durch (ändern Sie keine der bereits aktivierten
   Optionen:
     (1) Aktivieren Sie "CGI" unter "Anwendungsentwicklung".
     (2) Stellen Sie sicher, dass die "IIS-Verwaltungskonsole" ebenfalls akti-
         viert ist. (Auf Windows 7 ist sie nicht aktiviert, auf Windows Server
         2008 ist sie aktiviert.)
   Klicken Sie auf den Button "Weiter", bis die Installation abgeschlossen ist.

 * Öffnen Sie einen Webbrowser und geben Sie "http://localhost" ein, um die
   den Webserver zu testen.


(4b)   MxRemotePreview.cgi installieren
--------------------------------------------------------------------------------

* Erstellen Sie im Ordner C:\inetpub das Verzeichnis "cgi-bin".
* Kopieren Sie die Datei "MxRemotePreview.cgi.exe" in diesen Ordner.


(4c)   IIS konfigurieren
--------------------------------------------------------------------------------

 * Offnen Sie "Systemsteuerung > Verwaltung" und doppelklicken Sie auf
   "Internetinformationsdienste-Manager".

 * Wechseln Sie im Bereich "Verbindungen" zur "Standardwebsite" und markieren
   Sie diese.

 * Klicken Sie im rechten Bereich auf "Erweiterte Einstellungen...".

 * Tragen Sie im Dialog "Erweiterte Einstellungen" unter "Physikalischer Pfad"
   den Pfad zum freigegebenen Ordner ein, in dem die Kameras ihre aufgezeichne-
   ten Daten speichern. Klicken Sie anschließend auf den Button "OK".

 * Doppelklicken Sie auf das Symbol "Verzeichnis durchsuchen" im mittleren
   Bereich. Wenn sich das Verzeichnis öffnet, klicken Sie im rechten Bereich
   unter "Aktionen" auf "Aktivieren".

 * Klicken Sie im Bereich "Verbindungen" erneut auf "Standardwebsite".

 * Doppelklicken Sie im mittleren Bereich auf das Symbol "Handlerzuordnungen".
   Sobald dieser Dialog geöffnet ist, klicken Sie unter "Aktionen" auf
   "Modulzuordnung hinzufügen...".

 * Wenn der Dialog "Modulzuordnung hinzufügen" im mittleren Bereich erscheint,
   tragen Sie in den unten aufgeführten Feldern die folgenden Werte ein:
     - Anforderungspfad: *.jpg
     - Modul: CgiModule
     - Ausführbare Datei (optional): C:\inetpub\cgi-bin\MxRemotePreview.cgi.exe
     - Name: MxRemotePreview service
   Klicken Sie anschließend Sie auf den Button "OK".

 * Wenn Sie im Dialog "Modulzuordnung hinzufügen" die Frage "Möchten Sie diese
   ISAPI-Erweiterung zulassen?" gestellt bekommen, klicken Sie auf den Button
   "Ja".

 * Rechtsklicken Sie im Bereich "Verbindungen" auf "Standardwebsite" und wählen
   Sie "Virtuelles Verzeichnis hinzufügen".

 * Wenn der Dialog "Virtuelles Verzeichnis hinzufügen" erscheint, tragen Sie in
   den unten aufgeführten Feldern die folgenden Werte ein:
      - Physikalischer Pfad: <Ordner mit Kamera-Aufzeichnungen>
        (der physikalische Pfad kann sich auch auf einer Freigabe eines anderen
        Computers/NAS befinden, wenn diese Freigabe auf dem lokalen Computer als
        Netzlaufwerk verbunden wurde).
   Klicken Sie anschließend auf den Button "OK".

 * Klicken Sie im Bereich "Verbindungen" auf den Namen des Servers.

 * Doppelklicken Sie im mittleren Bereich auf das Symbol "MIME-Typen" und
   anschließend unter "Aktionen" im rechten Bereich auf "Hinzufügen..."

   Hinweis: Obwohl die gleiche Aktion im Dialog "Standardwebsite" durchgeführt
   werden kann, führt das Laden der folgenden Adresse zu einem http-Fehler
   500.19:
   http://<servername>/<camera-ip>/.erdinfo
   
   Aus diesem Grund muss der MIME-Typ der Datei ".erdinfo" global (also für den
   gesamten Webserver) definiert werden (s. u.).

 * Wenn der Dialog "MIME-Typ hinzufügen" erscheint, tragen Sie in
   den unten aufgeführten Feldern die folgenden Werte ein:
    -  	 Dateinamenerweiterung: erdinfo
    - MIME-Typ: application/octet-stream
   Klicken Sie anschließend Sie auf den Button "OK".



================================================================================
(5)   Testen der Webserver-Installation
================================================================================

 * Öffnen Sie einen Web-Browser.

 * Geben Sie "http://127.0.0.1/" als Zieladresse ein.
   Die Webseite sollte die verfügbaren Kameraverzeichnisse auf dem Dateiserver
   anzeigen.

 * Navigieren Sie in die Verzeichnisse, und beachten Sie dabei, wie .JPG-Dateien
   angezeigt werden.

 * Hängen Sie "?previewsize=320x240&quality=20" an die URL eines JPEGs an. Wenn
   Sie jetzt sehen, wie sich das angezeigte Bild entsprechend ändert, dann haben
   Sie alles richtig konfiguriert, und das CGI funktioniert.



================================================================================
(6) Testen des CGIs
================================================================================

Das CGI kann über den Webserver getestet werden. Die Parameter für das
Umkodieren werden in der URL angegeben:

 * previewsize=<h>x<v>  : Maximale Ausdehnung in Pixeln ("320x240" = 320px
                          horizontal x 240px vertikal)
 * framerate=<fps>      : Bilder pro Sekunde, Dezimalzahlen erlaubt, z. B. 1.5
                          (Punkt statt Komma!)
 * quality=<prozent>    : Qualität der JPEG-Kodierung, 1..100
 * noaudio              : Kein Audio im Stream übertragen

Beispiel:

http://mxcam.meinefirma.net/10_0_0_1/000/000/E00001.jpg?previewsize=320x240
   &framerate=1.0&quality=20&noaudio

Hinweis: Diesen Befehl in eine Zeile in der Adressleiste des Browsers kopieren
(die Reihenfolge der Parameter ist beliebig). Stellen Sie sicher, dass sich in
der Adresszeile keine Leerzeichen befinden!



================================================================================
(7) Sicherheitshinweise
================================================================================

Beachten Sie bitte die folgenden Sicherheitshinweise:

 * Stellen Sie sicher, dass Sie den Windows-Computer und insbesondere
   freigegebene Ordner durch speziell angelegte Benutzernamen für die Kameras
   schützen. Für die Aufzeichnung benötigen die Kameras Vollzugriff im
   freigegebenen Ordner. Andere Benutzer sollten auf diese Ordner überhaupt
   keine oder höchstens Leserechte besitzen.
   
 * Schützen Sie Ihre Webserver-Installation und die Aufzeichnungen, indem Sie
   für den Zugriff auf die aufgezeichneten Daten einen Benutzernamen und ein
   Kennwort festlegen. Evtl. ist auch die Verschlüsselung der Daten über SSL
   (Zugriff über "https://...") erforderlich. Informationen zu diesen
   Einstellungen finden Sie in der Apache-Dokumentation auf Ihrem Computer unter
   "http://localhost/manual/" bzw. online unter
   "http://httpd.apache.org/docs-project/".

================================================================================
26. März 2010                  MOBOTIX AG                 http://www.mobotix.com
