summaryrefslogtreecommitdiff
path: root/dokumentation.html
diff options
context:
space:
mode:
Diffstat (limited to 'dokumentation.html')
-rw-r--r--dokumentation.html462
1 files changed, 462 insertions, 0 deletions
diff --git a/dokumentation.html b/dokumentation.html
new file mode 100644
index 0000000..b88a3ea
--- /dev/null
+++ b/dokumentation.html
@@ -0,0 +1,462 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- Generated by Apache Maven Doxia at Feb 24, 2011 -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>DHBW Calendar -
+ Projektdokumentation</title>
+ <style type="text/css" media="all">
+ @import url("./css/maven-base.css");
+ @import url("./css/maven-theme.css");
+ @import url("./css/site.css");
+ </style>
+ <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+ <meta name="author" content="Yves Fischer" />
+ <meta name="Date-Revision-yyyymmdd" content="20110224" />
+ <meta http-equiv="Content-Language" content="en" />
+
+ </head>
+ <body class="composite">
+ <div id="banner">
+ <div id="bannerLeft">
+ DHBW Calendar
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+
+
+ <div class="xleft">
+ <span id="publishDate">Last Published: 2011-02-24</span>
+ &nbsp;| <span id="projectVersion">Version: 1.0-SNAPSHOT</span>
+ </div>
+ <div class="xright">
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+
+
+ <h5>Allgemein</h5>
+ <ul>
+ <li class="none">
+ <a href="index.html" title="Start">Start</a>
+ </li>
+ <li class="none">
+ <strong>Dokumentation</strong>
+ </li>
+ <li class="none">
+ <a href="license.html" title="Lizenzierung">Lizenzierung</a>
+ </li>
+ </ul>
+ <h5>User Guide</h5>
+ <ul>
+ <li class="none">
+ <a href="user-allgemein.html" title="Allgemein">Allgemein</a>
+ </li>
+ <li class="none">
+ <a href="user-google.html" title="Google Kalender">Google Kalender</a>
+ </li>
+ <li class="none">
+ <a href="user-lightning.html" title="Mozilla Lightning">Mozilla Lightning</a>
+ </li>
+ <li class="none">
+ <a href="user-outlook.html" title="Outlook">Outlook</a>
+ </li>
+ </ul>
+ <h5>Entwickler</h5>
+ <ul>
+ <li class="none">
+ <a href="devel-install.html" title="Install">Install</a>
+ </li>
+ <li class="none">
+ <a href="project-reports.html" title="Reports/API">Reports/API</a>
+ </li>
+ <li class="none">
+ <a href="devel-hacking.html" title="Hacking">Hacking</a>
+ </li>
+ <li class="none">
+ <a href="dependencies.html" title="Dependencies">Dependencies</a>
+ </li>
+ <li class="none">
+ <a href="source-repository.html" title="Source Repository">Source Repository</a>
+ </li>
+ </ul>
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+ </a>
+
+
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+
+
+ <div class="section"><h2>Einleitung<a name="Einleitung"></a></h2>
+ <p>Die Nutzung von elektronischen Kalendern zur Planung und
+ Verwaltung
+ spielt eine
+ enorme Rolle f&#xfc;r viele Privatleute und in
+ vielen Unternehmen.</p>
+ <p>Firmeninterne und -&#xfc;bergreifende Gesch&#xe4;fte nutzen die vielen
+ M&#xf6;glichkeiten
+ von Kalender (Groupware) Applikationen. Mithilfe des
+ iCalendar
+ Standards
+ existiert ein interoperabler Standard zum
+ Austausch von
+ Kalenderinformationen.</p>
+ <p>Die neue Campus-Software ,,Dualis'' der Dualen Hochschule
+ Baden-W&#xfc;rttemberg
+ stellt den Studenten einen elektronischen
+ Vorlesungsplan zur Verf&#xfc;gung.
+ Eine
+ Schnittstelle zur Anbindung an
+ g&#xe4;ngige Kalenderl&#xf6;sungen wird jedoch nicht
+ bereitgestellt.</p>
+ <p>Das Ziel dieses Projektes ist es, einen Adapter bereitzustellen,
+ mithilfe
+ dessen der ,,Stundenplan'' aus dem ,,Dualis'' System der
+ Dualen Hochschule
+ Baden-W&#xfc;rttemberg in eine iCalendar-kompatible
+ Anwendung importiert
+ werden kann.</p>
+ <div class="section"><h3>Dualis<a name="Dualis"></a></h3>
+ <p>
+ Dualis ist das interne Verwaltungssystem der DHBW. Es basiert auf
+ der Software
+ ,,CampusNet'' der Firma Datenlotsen Informationssysteme
+ GmbH, Hamburg.Unter dem Namen ,,BAsys Neu'' wurde Dualis als
+ Abl&#xf6;sung des alten
+ ,,BAsys''-Verwaltungssystem entwickelt. Die
+ Endung ,,-is'' steht
+ f&#xfc;r
+ Informationssystem (
+ <a class="externalLink" href="http://www.dhbw-stuttgart.de/themen/aktuelles/meldung/2008/11/basys-wird-dualis.html">Pressemeldung</a>
+ ).
+ </p>
+ <p>Studierende k&#xf6;nnen &#xfc;ber den Dualis Web-Client ihre Noten, eine
+ Leistungs&#xfc;bersicht &#xfc;ber das gesamte Studium und ihren aktuellen
+ Stundenplan einsehen.</p>
+ </div>
+ <div class="section"><h3>Das iCalendar Format<a name="Das_iCalendar_Format"></a></h3>
+ <p>iCalendar ist ein Internet Standard (RFC 5545) um
+ Kalenderinformationen
+ auszutauschen. Dazu gibt es verschiedene
+ Klassen wie Event, To-Do oder
+ Free/Busy-Information.
+ Im Rahmen dieses
+ Projekts werden nur Events
+ genutzt.</p>
+ <p>
+ iCalendar Daten besitzen den MIME Content-Type
+ <tt>{text/calender</tt>
+ . Die
+ Daten
+ sind in einem einfachen, ASCII
+ Key-Value Format aufgebaut.
+ </p>
+ <p>Grunds&#xe4;tzlich bestehen iCalendar Daten aus folgendem Block</p>
+ <div class="source"><pre>
+BEGIN:VCALENDAR
+PRODID:-//xyz Corp//NONSGML PDA Calendar
+Version 1.0//EN
+VERSION:2.0
+....
+Event, To-Do, Journal,
+Free/Busy, Time
+Zone, Alarm Component
+...
+END:VCALENDAR
+ </pre></div>
+ <p>Eine Event-Component ist wie folgt aufgebaut, wobei noch weitere
+ optionale Felder m&#xf6;glich sind:</p>
+ <div class="source"><pre>
+BEGIN:VEVENT
+DTSTAMP:19960704T120000Z
+UID:uid1@example.com
+ORGANIZER:mailto:jsmith@example.com
+DTSTART:19960918T143000Z
+DTEND:19960920T220000Z
+STATUS:CONFIRMED
+CATEGORIES:CONFERENCE
+SUMMARY:Networld+Interop Conference
+DESCRIPTION:Networld+Interop
+Conference
+and Exhibit\nAtlanta World Congress Center\n
+Atlanta\,
+Georgia
+END:VEVENT
+ </pre></div>
+ <p>Wie zu sehen ist bestehen besondere Vorgaben f&#xfc;r Zeit- und
+ Textformatierung.</p>
+ <p>
+ Zeiten k&#xf6;nnen in der UTC-Zone im Format
+ <tt>YYYYMMDDTHHmmssZ</tt>
+ dargestellt
+ werden.
+ <tt>T</tt>
+ ist ein
+ Trenner zwischen Datum und
+ Zeit,
+ <tt>Z</tt>
+ zeigt an,
+ dass es sich um
+ einen UTC-Timestamp
+ handelt (RFC5545 Sec.
+ 3.3.5).
+ </p>
+ <p>Text wird
+ grunds&#xe4;tzlich als ASCII-Test dargestellt. Es bestehen
+ jedoch
+ Fluchtzeichen f&#xfc;r nicht-ASCII Zeichen und Satz- und
+ Kontrollzeichen ()RFC5545 Sec. 3.3.11).</p>
+ </div>
+ </div>
+ <div class="section"><h2>Umsetzung<a name="Umsetzung"></a></h2>
+ <p>Dem Anschein nach ist der Dualis Web-Client mithilfe der Software
+ Oracle
+ Application Express (APEX) entwickelt.
+ Das erzeugte Markup ist
+ schlecht maschienenverarbeitbar, vermutlich weil
+ es
+ auf die Anzeige
+ gegen&#xfc;ber einem menschlichen Benutzer ausgerichtet ist.</p>
+ <p>Eine Web-API von Dualis gibt anscheinend nicht.
+ Demzufolge m&#xfc;ssen
+ die Webseiten relativ umst&#xe4;ndlich analysiert
+ werden, um an die
+ ben&#xf6;tigten Informationen zu gelangen. Diesen Vorgang
+ nennt man
+ Web-Scraping (engl. ,,kratzen'').</p>
+
+ <p>Dadurch wird die Schnittstelle anf&#xe4;lliger f&#xfc;r kleinere &#xc4;nderungen
+ an dem Dualis Web-Client. Schon das &#xc4;ndern der Beschriftung eines
+ bestimmten Links kann die Funktion beeintr&#xe4;chtigen.</p>
+
+ <p>F&#xfc;r einen zuverl&#xe4;ssigen Betrieb ist es daher unbedingt n&#xf6;tig, dass
+ von Seiten des Dualis System eine stabile Schnittstelle mit einem
+ zum Informationsaustausch geeigneten Format (zum Beispiel eine
+ XML-Schnitstelle) angeboten wird. Oder einfach direkt iCalendar
+ Format.</p>
+ <div class="section"><h3>Web Scraping<a name="Web_Scraping"></a></h3>
+ <p>Zum ,,kratzen'' der Informationen aus dem HTML-Dickicht der
+ Dualis Website wird die Java-Bibliothek htmlunit Verwendet. Deren
+ eigentlicher Zweck ist das automatisierte Headless Testen von
+ Websites. Dazu ist sie in der Lage einen Web-Browser inklusive
+ JavaScript und CSS weitgehend zu emulieren.</p>
+
+ <p>Dies sind optimale Ausgangsbedingungen um eine schwer zug&#xe4;ngliche
+ Seite wie Dualis einfach auszuwerten.</p>
+
+ <p>Ein vereinfachtes Code-Beispiel verdeutlicht die
+ Arbeit mit
+ htmlunit:</p>
+ <div class="source"><pre>
+WebClient webClient = new WebClient();
+
+loginPage = webClient.getPage(DUALIS_URL);
+
+loginForm = loginPage.getFormByName(&quot;cn_loginForm&quot;);
+usernameField = loginForm.getInputByName(&quot;usrname&quot;);
+usernameField.type(username);
+
+passwordField = loginForm.getInputByName(&quot;pass&quot;);
+passwordField.type(password);
+
+submitButton = loginForm.getInputByValue(&quot;Anmelden&quot;);
+page = submitButton.click();
+
+HtmlAnchor anchorByText = page.getAnchorByText(&quot;Stundenplan&quot;);
+page = anchorByText.click();
+ </pre></div>
+ </div>
+
+ <div class="section"><h3>iCalendar Datenschnittstelle<a name="iCalendar_Datenschnittstelle"></a></h3>
+ <p>Die g&#xe4;ngige Methode zum Austausch von iCalendar Daten sind
+ entweder
+ lokale Files
+ oder der entfernte Zugriff &#xfc;ber HTTP.</p>
+
+ <p>Mit diesem Projekt wird der Zugriff &#xfc;ber HTTP erm&#xf6;glicht. Dabei
+ entf&#xe4;llt
+ zus&#xe4;tzlich der Bedarf eine Benutzerkonfiguration zu
+ pflegen, da der Benutzer &#xfc;ber HTTP Basic
+ Authentication (nach RFC
+ 1945 Sec. 11.1) vom Client
+ abgefragt wird.</p>
+
+ <p>Hierzu wurde ein Java-Servlet erstellt welches die
+ Authentifizerung und
+ Steuerung der Dualis Abfrage &#xfc;bernimmt.</p>
+
+ <p>
+ Bei der
+ Ansteurerung der Schnittstelle &#xfc;ber einfache HTTP-Software
+ ist zu beachten, dass das
+ <tt>@</tt>
+ im benutzername mit
+ <tt>%40</tt>
+ zu escapen ist.
+ </p>
+ </div>
+ <div class="section"><h3>Web Datenschnittstelle<a name="Web_Datenschnittstelle"></a></h3>
+ <p>
+ Zus&#xe4;tzlich zur ICS-Schnittstelle existiert eine Schnittstelle f&#xfc;r
+ den Webbrowser. Sie ist mit dem Framework
+ vaadin (
+ <a class="externalLink" href="http://vaadin.com">vaadin.com</a>
+ )
+ umgesetzt und bietet die
+ Funktionalit&#xe4;t den Login durch eine
+ Anmeldung zu testen
+ sowie den
+ ,,Stundenplan'' in einer Tabelle zu
+ Betrachten.
+ </p>
+ </div>
+
+ <div class="section"><h3>Sicherheit des Benutzers<a name="Sicherheit_des_Benutzers"></a></h3>
+ <p>Wie alle Systeme die Authentifizierungs und Benutzerdaten
+ verarbeiten ist dieses
+ hinsichtlich der Vertrauensw&#xfc;rdigkeit zu
+ untersuchen.</p>
+
+ <p>Hinsichtlich der Authentifizierungsinformationen die der
+ Benutzer
+ DHBW Calendar
+ &#xfc;bergibt sind mehrere Angriffspunkte
+ auszumachen.</p>
+ <table align="center" border="1" class="bodyTable">
+ <tr class="a">
+ <th align="left">Problempunkt</th>
+ <th align="left">Analyse</th>
+ </tr>
+ <tr class="b">
+ <td align="left">Auf dem PC des Benutzers</td>
+ <td align="left">F&#xfc;r die Sicherheit
+ auf seinem
+ Zugriffsger&#xe4;t ist jeder
+ Benutzer
+ selbst
+ verantwortlich.</td>
+ </tr>
+ <tr class="a">
+ <td align="left">Die Netzwerkverbindung zum DHBW Calendar</td>
+ <td align="left">Die
+ Netzwerkverbindung zum
+ DHBW Calender
+ sollte entweder als
+ direkte
+ Lokale Kommunikation ablaufen
+ (der
+ DHBW Calender arbeitet
+ lokal) oder
+ eine sichere Verbindung (HTTPS)
+ verwenden.</td>
+ </tr>
+ <tr class="b">
+ <td align="left">Die Verarbeitung im DHBW Calendar</td>
+ <td align="left">Die
+ Verarbeitung
+ im DHBW Calender speichert
+ die verarbeiteten
+ Daten
+ vor&#xfc;bergehend im
+ Arbeitsspeicher des
+ darunterliegenden System.
+ </td>
+ </tr>
+ <tr class="a">
+ <td align="left">Die Netzwerkverbindung zu Dualis</td>
+ <td align="left">ist verschl&#xfc;sselt (HTTPS)
+ %%TODO
+ check was bei
+ un&#xfc;gliten cets
+ passiert</td>
+ </tr>
+ <tr class="b">
+ <td align="left">Die Verarbeitung in Dualis</td>
+ <td align="left"> &#xdc;ber die
+ Verarbeitung
+ innerhalb von Dualis
+ existieren
+ keine
+ Informationen.</td>
+ </tr>
+ <tr class="a">
+ <td align="left">ggf. weitere Verbindungen von Dualis (AD o.&#xe4;.)</td>
+ <td align="left">&#xdc;ber
+ m&#xf6;gliche Kommunikationen
+ von Dualis mit Drittsystem
+ bestehen
+ keine
+ Informationen.</td>
+ </tr>
+ </table>
+ <p>Durch die quelloffenheit
+ des
+ DHBW Calendar ist die
+ Verarbeitung der
+ Daten
+ transparent. Daher
+ entstehen dem Anwender durch
+ die Verwendung
+ des
+ DHBW Calender
+ keine
+ weiteren Sicherheitsrisiken.</p>
+ </div>
+ </div>
+ <div class="section"><h2>Fazit<a name="Fazit"></a></h2>
+ <p>
+ Die Entwicklung des DHBW Calendar erm&#xf6;glicht den Studenten in
+ bezug auf
+ die
+ Organisierung ihres Studentalltags eine neue Dimension
+ von Integration und
+ Komfort.</p>
+ <p>
+ Die Unzul&#xe4;nglichkeit des ,,Dualis'' Backend wurde durch die
+ Verwendung einer High-Level Schnittstelle begegnet. Anstatt
+ regul&#xe4;rer
+ Ausdr&#xfc;cke (
+ <a class="externalLink" href="http://dhbwconnector.sourceforge.net/">DHBW Connector</a>
+ )
+ werden die Eingabeelemente angesprochen
+ welche der Benutzer auch
+ sehen w&#xfc;rde.
+ </p>
+ <p>
+ Die Ver&#xf6;ffentlichung als Open-Source Projekt unter
+ <a href="license.html">AGPL</a>
+ stellt das Vertrauen der Studenten sowohl in Hinsicht auf ihre
+ eigene Sicherheit, als auch der Zuverl&#xe4;ssigkeit hinsichtlich
+ m&#xf6;glicherweise zuk&#xfc;nftig n&#xf6;tiger Anspassungen.
+ </p>
+ </div>
+
+
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">Copyright &#169; 2011.
+ All Rights Reserved.
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>