rrenkert@436: Lada-Client
rrenkert@436: ===========
torsten@469: Dies ist die Prototypversion eines EXTJS basierten Klienten für die
torsten@469: Verarbeitung von Labordaten (Lada) zur Überwachung der Umweltradioaktivität.
torsten@469:
torsten@469: Die Software bietet grundlegende Funktionalität zur Erfassung und Bearbeitung
torsten@469: von Messdaten. Weitere Informationen finden sich auf der Projektwebseite unter
torsten@469: der Adresse:
torsten@469:
torsten@469: https://wald.intevation.org/projects/lada/
torsten@469:
torsten@469: Die Software entstand im Rahmen einer Software Entwicklung durch die
torsten@469: Intevation GmbH im Auftrag des Bundesamt für Strahlenschutz im Jahre 2013.
torsten@469:
torsten@469: Lizenz
torsten@469: ------
torsten@469: Die Software unter der GPL Affero Lizenz verfügbar.
torsten@469:
torsten@469: Quellen
torsten@469: -------
torsten@469: Die Quelldateien lassen sich wie folgt auschecken:
torsten@469: hg clone https://scm.wald.intevation.org/hg/lada/lada-client
torsten@469:
torsten@469: Dokumentation
torsten@469: -------------
torsten@469: Die Dokumentation wird mit dem Tool JSDuck erzeugt.
torsten@469: Im Wurzelordner lässt sich nach der Installation von JSDuck dann mit dem
torsten@469: Befehl "jsduck" die Dokumentation für den Lada-Clienten erzeugen.
torsten@469: Die Dokumentation findet sich nach der Generierung in dem Order "doc".
torsten@469: Einstiegseite ist die Seite template.html.
torsten@469:
torsten@469: JSDuck ist unter der Adresse
torsten@469:
torsten@469: https://github.com/senchalabs/jsduck
torsten@469:
torsten@469: zu finden und muss installiert werden.
torsten@469:
torsten@469: Einstellung bezüglich der Generierung der Dokumentation ist in der Datei
torsten@469: jsduck.json hinterlegt.
rrenkert@436:
rrenkert@436: Entwicklung
rrenkert@436: -----------
rrenkert@436: Für die Entwicklung ist es notwenig in dem Wurzelordner die ExtJS-Bibliothek
rrenkert@436: in der Version >=4.2.0 unter dem Namen "extjs" zur Verfügung zu stellen.
torsten@27:
torsten@27: Diese lässt sich unter der folgenden URL herunterladen:
torsten@27: http://cdn.sencha.com/ext/gpl/ext-4.2.0-gpl.zip
torsten@27:
torsten@27: SHA1 Checksum: 2ce990d9e90c48a76078e8533c72b5452f9ed809
torsten@27:
torsten@27: Beispiel:
torsten@27: curl -O http://cdn.sencha.com/ext/gpl/ext-4.2.0-gpl.zip
torsten@27: unzip ext-4.2.0-gpl.zip
torsten@27: ln -s ext-4.2.0-gpl extjs
torsten@340:
rrenkert@436: Zusätzlich wird für diese Anwendung eine Bibliothek zur Internationalisierung
rrenkert@436: verwendet, die unter der URL
rrenkert@436:
rrenkert@436: https://github.com/elmasse/Ext.i18n.Bundle
rrenkert@436:
rrenkert@436: verfügbar ist, verwendet.
rrenkert@436: Diese muss in dem Ordner 'src' der vorher zur Verfügung gestellten ExtJS
rrenkert@436: Bibliothek eingebunden werden. Dazu wird der Ordner 'i18n' in den Ordner 'src' kopiert
rrenkert@436: oder verlinkt.
rrenkert@436:
torsten@469: Build
torsten@469: -----
rrenkert@436: Die Anwendung wird mit Hilfe des von Sencha bereitgestellten Tools 'Sencha Cmd'
rrenkert@436: compiliert und minifiziert. Vorbedingung für den Compilevorgang ist die unter
rrenkert@436: Entwicklung beschriebene Verzeichnisstruktur.
rrenkert@436:
rrenkert@436: Sencha Cmd kann unter der URL
rrenkert@436:
rrenkert@436: http://www.sencha.com/products/sencha-cmd/download
rrenkert@436:
rrenkert@436: heruntergeladen und dann installiert werden.
rrenkert@436:
rrenkert@436: Mit dem folgenden Befehl kann dann der Lada-Client compiliert und minifiziert werden:
rrenkert@436:
rrenkert@436: sencha -sdk /path/to/extjs compile \
rrenkert@436: -classpath=app,app/view/widgets/resources/datetime page -yui \
rrenkert@436: -in index.html -out build/index.html
rrenkert@436:
rrenkert@436: Dies erzeugt in dem Ordner 'build' die minifizierte Version der Anwendung, die
rrenkert@436: alle benötigten Klassen der ExtJS Bibliothek beinhaltet und eine entsprechende
rrenkert@436: index.html, die zur Auslieferung in einem Webserver verwendet werden kann.
rrenkert@436:
torsten@469: Installation
torsten@469: ------------
torsten@469: Für den Betrieb des Lada-Clients muss dieser innerhalb einer Webserver-Umgebung
torsten@469: installiert werden. Die folgenden Hinweise geben eine Kurze Anleitung zur
torsten@469: Installation eines Apache-Webserver.
torsten@340:
torsten@469: Hinweis: Für den Betrieb einer vollständigen Installation ist neben dem
torsten@469: Klienten auch die Installation eines Servers und entsprechender Datenbank
torsten@469: notwendig. Für die Installation des Servers folgen Sie bitte den Hinweisen in
torsten@469: der README Datei des Server-Pakets. Siehe Projektwebseite. Optional: Die
torsten@469: Authentifizierung kann gegen einen LDAP-Server durchgeführt werden. Beispiele
torsten@469: finde sich in dem Installationbeispiel.
torsten@399:
torsten@469: Die folgenden Hinweise beziehen sich auf die Installation und Einrichtung auf
torsten@469: Basis eines Oracle-RedHat Linux Systems.
torsten@399:
torsten@469: Installation Apache
torsten@469: ```````````````````
torsten@469: Zunächst wird der Apache Webserver aus dem Repository installiert:
torsten@469:
torsten@469: yum install httpd mod_ssl
torsten@469: service httpd start
torsten@469:
torsten@469: Aktivierung der Apache Module
torsten@469: `````````````````````````````
torsten@469:
torsten@469: Die Konfiguration, welche Module beim Start des Apache geladen werden, erfolgt
torsten@469: in der Datei "/etc/httpd/conf". Die zu ladende Module sind in dieser Datei mit
torsten@469: der Option "LoadModule" angegeben. Folgende Module werden benötigt:
torsten@469:
torsten@469: * ldap_module: Authenitfizierung gegen den LDAP
torsten@469: * headers_module: Setzten der Header nach der Authenitifizierung
torsten@469: * proxy_module: Reverse Proxy des Apache zum Jboss-Server
torsten@469:
torsten@469: Einrichtung der Anwendung
torsten@469: `````````````````````````
torsten@469: Zunächst hinterlegen wir die Anwendung in dem Server.
torsten@469:
torsten@469: cd /var/www/html
torsten@469: hg clone https://scm.wald.intevation.org/hg/lada/lada-client/ lada
torsten@469: cd lada
torsten@469: git clone https://github.com/elmasse/Ext.i18n.Bundle.git
torsten@469: curl -O http://cdn.sencha.com/ext/gpl/ext-4.2.0-gpl.zip
torsten@469: unzip ext-4.2.0-gpl.zip
torsten@469: ln -s ext-4.2.0.663 extjs
torsten@469: rm ext-4.2.0-gpl.zip
torsten@469: cd extjs/src
torsten@469: ln -s ../../Ext.i18n.Bundle/i18n i18n
torsten@469:
torsten@469: # Wichtig um SELinux dazu zu überreden das neue Verzeichnis auch zu
torsten@469: # servieren:
torsten@469: restorecon -Rv /var/www/html/
torsten@469:
torsten@469: Die Anwendung sollte nun bereits unter der Adresse http://localhost/lada
torsten@469: erreichbar sein.
torsten@469:
torsten@469: Konfiguration Proxy Server
torsten@469: ``````````````````````````
torsten@469: Damit der Client eine Verbindung zu dem Server aufbauen kann, um von dort
torsten@469: Daten laden zu können, ist es notwendig den Server weiter zu konfigurieren.
torsten@469:
torsten@469: togglesebool httpd_can_network_connect
torsten@469: service httpd restart
torsten@469:
torsten@469: Dies erlaubt dem Apache grundsätzlich sich mit einem anderen Dienst zu verbinden.
torsten@469: Nun muss noch ein Reverse-Proxy eingerichtet werden. Dieser ist nur für
torsten@469: bestimmte Adressen aktiv
torsten@469:
torsten@469: Folgende Datei sollte unter "/etc/httpd/conf.d/lada.conf" angelegt werden:
torsten@469:
torsten@469:
torsten@469: ServerAdmin webmaster@localhost
torsten@469: #ServerName dummy-host.example.com
torsten@469: ErrorLog logs/lada-error_log
torsten@469: CustomLog logs/lada-access_log common
torsten@469:
torsten@469: # Set multiple Proxys
torsten@469: ProxyPass /lada/server http://localhost:8080/lada
torsten@469: ProxyPassReverse /lada/server http://localhost:8080/lada
torsten@469:
torsten@469:
torsten@469: Alle Anfragen an die Adresse "/lada/service", werden nun an den Server weitergeleitet.
torsten@469:
torsten@469: Authentifizierung
torsten@469: `````````````````
torsten@469: Die Authentifizierung geschieht gegen einen LDAP-Server.
torsten@469:
torsten@469:
torsten@469: AuthType basic
torsten@469: AuthName "test"
torsten@469: AuthBasicProvider ldap
torsten@469: AuthLDAPURL "ldap://ike.polyhedra.intevation.de:389/cn=users,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de?uid,memberof??(&(objectClass=inetOrgPerson)(memberOf=*))"
torsten@469: Require valid-user
torsten@469:
torsten@469:
torsten@469:
torsten@469: RequestHeader unset Authorization
torsten@469: RequestHeader set X-LDAP-User "%{AUTHENTICATE_uid}e"
torsten@469: RequestHeader set X-LDAP-Groups "%{AUTHENTICATE_memberof}e"
torsten@469:
torsten@469:
torsten@469: Sofern gewünscht, kann die Authentifizierung für Testzwecke zu deaktivieren
torsten@469: werden. Trotz allem müssen die entsprechenden Header gesetzt werden, da der
torsten@469: Server zur Authentifizierung und Authorisierung erwartet.
torsten@469:
torsten@469: # Set Headers to simulate Authentification.
torsten@469:
torsten@469: RequestHeader set X-LDAP-User "mst_06010"
torsten@469: RequestHeader set X-LDAP-Groups "cn=Imis_world,cn=groups,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de;cn=mst_06010,cn=groups,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de;cn=mst_11010,cn=groups,dc=icosahedron,dc=polyhedra,dc=intevation,dc=de"
torsten@469: