1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
|
<!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>
| <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="devel/hacking.html" title="Hacking">Hacking</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ür viele Privatleute und in
vielen Unternehmen.</p>
<p>
Firmeninterne und -übergreifende Geschäfte nutzen in vielen die
Mö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ürttemberg
stellt den Studenten einen elektronischen
Vorlesungsplan zur Verfügung.
Eine
Schnittstelle zur Anbindung an
gängige Kalenderlösung 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ü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.
</p>
<p>
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
</p>
<p>
Studierende können über den Dualis Web-Client ihre Noten, eine
Leistungsübersicht ü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.</p>
<p>
Dabei gibt es Verschiedene Klassen wir Event, To-Do oder
Free/Busy-Information.
Im Rahmen dieses Projekts werden nur Events
genutzt.</p>
<p>
iCalendar Daten besitzen den MIME Content-Type
\texttt{text/calender}. Die
Daten
sind in einem einfachen, ASCII
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
</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
Textformatierung.</p>
<p>
Zeiten können in der UTC-Zone im Format
\texttt{YYYYMMDDTHHmmssZ}
dargestellt
werden. \texttt{T} ist ein
Trenner zwischen Datum und
Zeit, \texttt{Z}
zeigt an,
dass es sich um
einen UTC-Timestamp
handelt\footnote{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>
</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ü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
werden, um an die
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>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>
<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ä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("cn_loginForm");
usernameField =
loginForm.getInputByName("usrname");
usernameField.type(username);
passwordField = loginForm.getInputByName("pass");
passwordField.type(password);
submitButton =
loginForm.getInputByValue("Anmelden");
page = submitButton.click();
HtmlAnchor anchorByText;
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
oder der entfernte Zugriff über HTTP.</p>
<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>
<p>Hierzu wurde ein Java-Servlet erstellt welches die
Authentifizerung und
Steuerung der Dualis Abfrage übernimmt.</p>
<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>
</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}}
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>
</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ürdigkeit zu
untersuchen.</p>
<p>Hinsichtlich der Authentifizierungsinformationen die der
Benutzer
DHBW~Calendar
ü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ür die Sicherheit
auf seinem
Zugriffsgerä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übergehend im
Arbeitsspeicher des
darunterliegenden System.
</td>
</tr>
<tr class="a">
<td align="left">Die Netzwerkverbindung zu Dualis</td>
<td align="left">ist verschlüsselt (HTTPS)
%%TODO
check was bei
unügliten cets
passiert</td>
</tr>
<tr class="b">
<td align="left">Die Verarbeitung in Dualis</td>
<td align="left"> Über die
Verarbeitung
innerhalb von Dualis
existieren
keine
Informationen.</td>
</tr>
<tr class="a">
<td align="left">ggf. weitere Verbindungen von Dualis (AD o.ä.)</td>
<td align="left">Über
mö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ö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)
werden die Eingabeelemente angesprochen
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>
</div>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright © 2011.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>
|