diff options
Diffstat (limited to 'dokumentation.html')
-rw-r--r-- | dokumentation.html | 317 |
1 files changed, 146 insertions, 171 deletions
diff --git a/dokumentation.html b/dokumentation.html index fdff5a9..b88a3ea 100644 --- a/dokumentation.html +++ b/dokumentation.html @@ -58,25 +58,31 @@ <h5>User Guide</h5>
<ul>
<li class="none">
- <a href="user/allgemein.html" title="Allgemein">Allgemein</a>
+ <a href="user-allgemein.html" title="Allgemein">Allgemein</a>
</li>
<li class="none">
- <a href="user/google.html" title="Google Kalender">Google Kalender</a>
+ <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>
+ <a href="user-lightning.html" title="Mozilla Lightning">Mozilla Lightning</a>
</li>
<li class="none">
- <a href="user/outlook.html" title="Outlook">Outlook</a>
+ <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>
+ <a href="devel-install.html" title="Install">Install</a>
</li>
<li class="none">
- <a href="devel/hacking.html" title="Hacking">Hacking</a>
+ <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>
@@ -94,14 +100,12 @@ <div class="section"><h2>Einleitung<a name="Einleitung"></a></h2> - <p> - Die Nutzung von elektronischen Kalendern zur Planung und + <p>Die Nutzung von elektronischen Kalendern zur Planung und Verwaltung spielt eine enorme Rolle für viele Privatleute und in vielen Unternehmen.</p> - <p> - Firmeninterne und -übergreifende Geschäfte nutzen in vielen die + <p>Firmeninterne und -übergreifende Geschäfte nutzen die vielen Möglichkeiten von Kalender (Groupware) Applikationen. Mithilfe des iCalendar @@ -109,17 +113,15 @@ existiert ein interoperabler Standard zum Austausch von Kalenderinformationen.</p> - <p> - Die neue Campus-Software ,,Dualis'' der Dualen Hochschule + <p>Die neue Campus-Software ,,Dualis'' der Dualen Hochschule Baden-Württemberg stellt den Studenten einen elektronischen Vorlesungsplan zur Verfügung. Eine Schnittstelle zur Anbindung an - gängige Kalenderlösung wird jedoch nicht + gängige Kalenderlösungen wird jedoch nicht bereitgestellt.</p> - <p> - Das Ziel dieses Projektes ist es, einen Adapter bereitzustellen + <p>Das Ziel dieses Projektes ist es, einen Adapter bereitzustellen, mithilfe dessen der ,,Stundenplan'' aus dem ,,Dualis'' System der Dualen Hochschule @@ -127,101 +129,99 @@ 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 + <p> + Dualis ist das interne Verwaltungssystem der DHBW. Es basiert auf der Software ,,CampusNet'' der Firma Datenlotsen Informationssysteme - GmbH, Hamburg. - </p> - <p> - Unter dem Namen ,,BAsys Neu'' wurde Dualis als Ablösung des alten - ,,BAsys''-Verwaltungssystem entwickelt. Die Endung ,,-is'' steht + GmbH, Hamburg.Unter dem Namen ,,BAsys Neu'' wurde Dualis als + Ablösung des alten + ,,BAsys''-Verwaltungssystem entwickelt. Die + Endung ,,-is'' steht für - Informationssystem.%cite - %http://www.dhbw-stuttgart.de/themen/aktuelles/meldung/2008/11/basys-wird-dualis.html + 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önnen über den Dualis Web-Client ihre Noten, eine + <p>Studierende können über den Dualis Web-Client ihre Noten, eine Leistungsübersicht über das gesamte Studium und ihren aktuellen - Stundenplan einsehen. - </p> + 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 + <p>iCalendar ist ein Internet Standard (RFC 5545) um Kalenderinformationen - auszutauschen.</p> - <p> - Dabei gibt es Verschiedene Klassen wir Event, To-Do oder + auszutauschen. Dazu gibt es verschiedene + Klassen wie Event, To-Do oder Free/Busy-Information. - Im Rahmen dieses Projekts werden nur Events + Im Rahmen dieses + Projekts werden nur Events genutzt.</p> <p> iCalendar Daten besitzen den MIME Content-Type - \texttt{text/calender}. Die + <tt>{text/calender</tt> + . Die Daten sind in einem einfachen, ASCII - Key-Value Format aufgebaut.</p> - <p> - Grundsätzlich bestehen iCalendar Daten aus folgendem Block -</p> + Key-Value Format aufgebaut. + </p> + <p>Grundsä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 +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ö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ür Zeit- und +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ür Zeit- und Textformatierung.</p> <p> Zeiten können in der UTC-Zone im Format - \texttt{YYYYMMDDTHHmmssZ} + <tt>YYYYMMDDTHHmmssZ</tt> dargestellt - werden. \texttt{T} ist ein + werden. + <tt>T</tt> + ist ein Trenner zwischen Datum und - Zeit, \texttt{Z} + Zeit, + <tt>Z</tt> zeigt an, dass es sich um einen UTC-Timestamp - handelt\footnote{RFC5545 Sec. - 3.3.5}.</p> - <p> - Text wird + handelt (RFC5545 Sec. + 3.3.5). + </p> + <p>Text wird grundsätzlich als ASCII-Test dargestellt. Es bestehen jedoch Fluchtzeichen für nicht-ASCII Zeichen und Satz- und - Kontrollzeichen - \footnote{RFC5545 Sec. 3.3.11}. - </p> + 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 + <p>Dem Anschein nach ist der Dualis Web-Client mithilfe der Software Oracle Application Express (APEX) entwickelt. Das erzeugte Markup ist @@ -229,85 +229,57 @@ es auf die Anzeige gegenüber einem menschlichen Benutzer ausgerichtet ist.</p> - - <p>Eine Web-API von Dualis gibt meines unseres Wissens nach nicht. - Demzufolge müssen die - Webseiten relativ umständlich analysiert + <p>Eine Web-API von Dualis gibt anscheinend nicht. + Demzufolge müssen + die Webseiten relativ umständlich analysiert werden, um an die - benötigten - Informationen zu gelangen. Diesen Vorgang - nennt man Web-Scraping - (engl. ,,kratzen'').</p> + benötigten Informationen zu gelangen. Diesen Vorgang + nennt man + Web-Scraping (engl. ,,kratzen'').</p> - <p>Dadurch wird die Schnittstelle anfälliger für - kleinere Änderungen - an dem - Dualis - Web-Client. Schon das Ändern der - Beschriftung eines - bestimmten Links kann die - Funktion beeinträchtigen.</p> + <p>Dadurch wird die Schnittstelle anfälliger für kleinere Änderungen + an dem Dualis Web-Client. Schon das Ändern der Beschriftung eines + bestimmten Links kann die Funktion beeinträchtigen.</p> <p>Für einen zuverlässigen Betrieb ist es daher unbedingt nötig, dass - von Seiten - des Dualis System eine stabile Schnittstelle mit einem zum - Informationsaustausch - geeigneten Format (zum Beispiel eine - XML-Schnitstelle nach dem HTTP/REST - Prinzip) angeboten wird. Oder - einfach direkt eine iCalendar - Schnittstelle.</p> + 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 + 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ängliche - Seite wie Dualis - einfach auszuwerten.</p> + <p>Dies sind optimale Ausgangsbedingungen um eine schwer zugä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(); +WebClient webClient = new WebClient(); - loginPage = - webClient.getPage(DUALIS_URL); +loginPage = webClient.getPage(DUALIS_URL); - loginForm = - loginPage.getFormByName("cn_loginForm"); - usernameField = - loginForm.getInputByName("usrname"); - usernameField.type(username); +loginForm = loginPage.getFormByName("cn_loginForm"); +usernameField = loginForm.getInputByName("usrname"); +usernameField.type(username); - passwordField = loginForm.getInputByName("pass"); - passwordField.type(password); +passwordField = loginForm.getInputByName("pass"); +passwordField.type(password); - submitButton = - loginForm.getInputByValue("Anmelden"); - page = submitButton.click(); +submitButton = loginForm.getInputByValue("Anmelden"); +page = submitButton.click(); - HtmlAnchor anchorByText; - anchorByText = - page.getAnchorByText("Stundenplan"); - page = anchorByText.click(); +HtmlAnchor anchorByText = page.getAnchorByText("Stundenplan"); +page = anchorByText.click(); </pre></div> </div> <div class="section"><h3>iCalendar Datenschnittstelle<a name="iCalendar_Datenschnittstelle"></a></h3> - <p>TBD</p> - <p>Die gängige Methode zum Austausch von iCalendar Daten sind entweder lokale Files @@ -316,36 +288,39 @@ <p>Mit diesem Projekt wird der Zugriff über HTTP ermöglicht. Dabei entfällt zusätzlich der Bedarf eine Benutzerkonfiguration zu - pflegen. Der - Benutzer kann - über HTTP Basic - Authentication\footnote{RFC 1945 Sec. - 11.1}.</p> + pflegen, da der Benutzer ü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 übernimmt.</p> - <p>Bei der + <p> + Bei der Ansteurerung der Schnittstelle über einfache HTTP-Software - ist - zu beachten, dass das \texttt{@} im benutzername mit - \texttt{\%40} zu - escapen ist.</p> + 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ätzlich zur ICS-Schnittstelle existiert eine Schnittstelle für den Webbrowser. Sie ist mit dem Framework - vaadin\footnote{\url{http://vaadin.com}} + vaadin ( + <a class="externalLink" href="http://vaadin.com">vaadin.com</a> + ) umgesetzt und bietet die Funktionalität den Login durch eine Anmeldung zu testen sowie den - ,,Stundenplan'' in einer Tabelle zu Betrachten.</p> - </div> - <div class="section"><h3>Kompatibilität<a name="Kompatibilitt"></a></h3> - <p>to be copied from TeX</p> + ,,Stundenplan'' in einer Tabelle zu + Betrachten. + </p> </div> <div class="section"><h3>Sicherheit des Benutzers<a name="Sicherheit_des_Benutzers"></a></h3> @@ -356,7 +331,7 @@ <p>Hinsichtlich der Authentifizierungsinformationen die der Benutzer - DHBW~Calendar + DHBW Calendar übergibt sind mehrere Angriffspunkte auszumachen.</p> <table align="center" border="1" class="bodyTable"> @@ -377,12 +352,12 @@ <td align="left">Die Netzwerkverbindung zum DHBW Calendar</td> <td align="left">Die Netzwerkverbindung zum - DHBW~Calender + DHBW Calender sollte entweder als direkte Lokale Kommunikation ablaufen (der - DHBW~Calender arbeitet + DHBW Calender arbeitet lokal) oder eine sichere Verbindung (HTTPS) verwenden.</td> @@ -391,7 +366,7 @@ <td align="left">Die Verarbeitung im DHBW Calendar</td> <td align="left">Die Verarbeitung - im DHBW~Calender speichert + im DHBW Calender speichert die verarbeiteten Daten vorübergehend im @@ -428,7 +403,7 @@ </table> <p>Durch die quelloffenheit des - DHBW~Calendar ist die + DHBW Calendar ist die Verarbeitung der Daten transparent. Daher @@ -442,30 +417,30 @@ </div> <div class="section"><h2>Fazit<a name="Fazit"></a></h2> <p> - Die Entwicklung des DHBW~Calendar ermöglicht den Studenten in + Die Entwicklung des DHBW Calendar ermöglicht den Studenten in bezug auf die Organisierung ihres Studentalltags eine neue Dimension von Integration und Komfort.</p> - <p>Der Unzuverlässigkeit des Backend ,,Dualis'' wurde durch die - Verwendung einer - High-Level Schnittstelle begegnet. Anstatt regulärer - Ausdrücke (DHBW - Connector) + <p> + Die Unzulänglichkeit des ,,Dualis'' Backend wurde durch die + Verwendung einer High-Level Schnittstelle begegnet. Anstatt + regulärer + Ausdrücke ( + <a class="externalLink" href="http://dhbwconnector.sourceforge.net/">DHBW Connector</a> + ) werden die Eingabeelemente angesprochen - welche der Benutzer auch sehen - würde.</p> + welche der Benutzer auch + sehen würde. + </p> <p> - Die Veröffentlichung als Open-Source Projekt stellt das Vertrauen - der - Studenten - sowohl in Hinsicht auf ihre eigene Sicherheit, als auch - der - Zuverlässigkeit - hinsichtlich möglicherweise zukünftig nötiger - Anspassungen. - </p> + Die Verö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ässigkeit hinsichtlich + möglicherweise zukünftig nötiger Anspassungen. + </p> </div> |