SeVEN. Entwicklung eines sicheren Videoübertragungssystems. Softwareentwicklungspraktikum Sommersemester Feinentwurf

Ähnliche Dokumente
SeVEN. Entwicklung eines sicheren Videoübertragungssystems. Softwareentwicklungspraktikum Sommersemester Feinentwurf

SeVEN. Entwicklung eines sicheren Videoübertragungssystems. Softwareentwicklungspraktikum Sommersemester Testdokumentation

SeVEN. Entwicklung eines sicheren Videoübertragungssystems. Softwareentwicklungspraktikum Sommersemester Pichtenheft

SeVEN. Entwicklung eines sicheren Videoübertragungssystems. Softwareentwicklungspraktikum Sommersemester Grobentwurf

SeVEN. Entwicklung eines sicheren Videoübertragungssystems. Softwareentwicklungspraktikum Sommersemester Grobentwurf

Softwareentwicklungspraktikum

E n t w i c k l u n g e i n e s s i c h e r e n V i d e o ü b e r t r a g u n g s s y s t e m s. G r o b e n t w u r f

E n t w i c k l u n g e i n e s s i c h e r e n V i d e o ü b e r t r a g u n g s s y s t e m s. G r o b e n t w u r f

SeVEN. Entwicklung eines sicheren Videoübertragungssystems. Softwareentwicklungspraktikum Sommersemester Testdokumentation

Softwareentwicklungspraktikum Sommersemester Feinentwurf

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Das Termin-Vergabe- und Patienten-Zuweisungssystem für Praxen und Kliniken

NetSeal Online. Das Onlineportal für NetSeal Kunden. Bedienungsanweisung. Höns-Electronic GmbH & Co KG Bremen

NetUSE-SSH-Keymanager 2.12

Hierfür sind mit dem Content Management System (CMS) Joomla in Verbindung mit SIGE Pro Inhalte angelegt worden, die genau diesen Zweck erfüllen.

Erweiterte Konfiguration Agenda Anywhere

S.M. Hartmann GmbH IT Solutions

Admin-System zur Benutzerverwaltung

CargoDocs für Schiffsführer - Benutzeranleitung

Projektraum. new copy store

Benutzer- und Rechte-Verwaltung Teil 2

Bedienungsanleitung. 3. CMS Software. 3.1 Systemvoraussetzungen. 3.2 Installation der CMS Software. Hardware:

Bentley Anwender Registrierung

GoToMeeting & GoToWebinar Corporate Administrator-Anleitung. Chalfont Park House, Chalfont Park, Gerrards Cross Buckinghamshire, UK, SL9 0DZ

HylaFAX-Client Professional. Gruppen und Benutzerverwaltung

Externe Rechnungsprüfung in der KISCloud. Anleitung. KIS-REDIG: Digitales Freizeichnen

Ein Dienst für Hochschulen und Forschungsinstitutionen zum einfachen Synchronisieren und Teilen von Dokumenten

Projektraum USER GUIDE

BRL FileBox Anleitung online

bla bla Guard Benutzeranleitung

Versionen des Dokuments. Inhaltsverzeichnis: Erstelldatum Version

COPLANER - ERSTE SCHRITTE. Benutzerleitfaden. Verfasserin: Petra Hendrich COPLANER - ERSTE SCHRITTE!... 2 LOGIN UND EIGENE DATEN ÄNDERN!...

Kurzbedienungsanleitung. Canon Universal Login Manager

GEVITAS MobileCatalog

Consulting, Development, Deployment, Training and Support for Media-IT. Datum: Daniel Dimitrijevic

Business Connect ECSTA / TAPI. Installationsanleitung fw

aixstorage Ihr sicherer Datenspeicher in der privaten Cloud Benutzerhandbuch

Betriebssysteme - Benutzerverwaltung

1. Auflage Mai Kärntner Straße 311, A-8054 Graz, Austria Autor: Claudia Schwarz

Durch einen kleinen Geldbetrag kann mehr Speicher dazu gekauft werden. Eines der Systeme mit guten Referenzen ist mydrive.

Sie erhalten folgende Mail:

Anlegen von Nutzer mit der BSA (BenutzerSelbstAufnahme)

Administration von Benutzern und Sicherheit

Handbuch zu unserer Bildergalerie

Konfiguration Agenda Anywhere

Broadway FAQ. Copyright 2017 Hauppauge Computer Works

Handbuch WAS-Extension. Version 1.8.1

InfoRAUM Windows Client

P2P Kameras M-Sight und VMS Lite

Quickstart mds online für lokale Administratoren (Master) Das Nutzerportal Einrichten von Benutzerkonten und Zuweisung von Lizenzen

Kurzanleitung für den MyDrive Client

Neues System an der BO

Quick-Start Guide Android

Konfiguration Agenda Anywhere

1) Anmelden am System Als erstes musst du dich am System als Mitglied anmelden. Das geschieht im Menü unter:

EventPic.club. we share our moments with us

Gewerbekunden Onlineshop

Projektraum USER GUIDE

Sichere Datenü bermittlüng mit FTAPI Information fü r Externe

Knowledge Base Projektbeispiel Sip

Titelmasterformat durch IT Klicken bearbeiten

DLS.Touch Interface. Voraussetzungen. DLS.Touch Interface

datenlink-schnittstelle Version 1.0

SMARTentry Notification

Technical Note 0602 ewon

Forcepoint Secure Messaging Benutzerhilfe

Quick-Start Guide Web- und Desktop-Client

Kurzanleitung Microsoft Office365

LERNKARTEN / VOKABELTRAINER HANDREICHUNG (STAND: AUGUST 2013)

Bestellsoftware ASSA ABLOY Matrix II

Handbuch 1.4 ifilesystem Version 25. März 2012

IXARO Pager System Benutzeranleitung :::::

it4sport GmbH DOKUMENTATION PHOENIX II - VEREINSACCOUNT Version 1.0

Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface.

Anleitung für das Fotoarchiv des Qwan Ki Do Berlin-Köpenick e.v.

Quick-Start Guide ios

Schnellstart. Willkommen bei HiDrive. Erste Schritte in die Wolke! Dateien hochladen. Mailupload nutzen. Freigabelinks erzeugen. Gemeinsam zugreifen

Handbuch & FAQ für Payment Card Industry Data Security Standard (PCI)

Wie richtet man Outlook ein?

Welche personenbezogenen Daten wir sammeln und warum wir sie sammeln

Moodle Benutzerverwaltung Handbuch

Schnellstartanleitung

Video-Plattform (Panopto) der Hochschule Trier

Alle alltäglichen Aufgaben können auch über das Frontend durchgeführt werden, das in den anderen Anleitungen erläutert wird.

D O K U M E N T A T I O N. AdvoCenter VERSION 1.1

Microsoft Outlook 2013: Externe - Verschlüsselung

myjack Workshop Dokumentenverwaltung

SMARTentry Notification

Sicherheit von PDF-Dateien

CMSpro Version 2.2.0

Benutzerhandbuch. telegra WAM

ZeroFax Business Benutzerhandbuch

Kurzanleitung für den MyDrive Client

Aufsetzen des HIN Abos und des HIN Praxispakets

2019 PostFinance. Gruppenmanager

BUERGERMELDUNGEN.COM ANLEITUNG FÜR ADMINISTRATOREN

Transkript:

Entwicklung eines sicheren Videoübertragungssystems Softwareentwicklungspraktikum Sommersemester 2009 Feinentwurf Auftraggeber: Technische Universität Braunschweig Institut für Betriebssysteme und Rechnerverbund Prof. Dr.-Ing. Lars Wolf Mühlenpfordtstraÿe 23, 1. OG 38106 Braunschweig Betreuer: Kai Homeier, Timo Veit Auftragnehmer: Christoph Gröber Daniel Brüdigam Gregor Marek Hendrik Löbke Jan Laskowski (Phasenverantwortlicher) Marek Drogon christoph-groeber@gmx.de daniel@planetsserver.com gregor-m@hotmail.de hendrik.loebke@gmx.de j.laskowski@t-online.de MDrogon@gmx.de Braunschweig, 8. Mai 2009

Versionsübersicht Version Datum Autor Status Kommentar 01 08.05.09 Gruppe oen... 2

Inhaltsverzeichnis 1 Einleitung 6 2 Erfüllung der Kriterien 7 2.1 Musskriterien...................................... 7 2.1.1 M10 Server................................... 7 2.1.2 M20 Hochladen................................. 7 2.1.3 M30 Playersoftware.............................. 7 2.1.4 M40 Streamen................................. 8 2.1.5 M50 Dekodieren................................ 8 2.1.6 M60 Verwaltung................................ 8 2.1.7 M70 Kamera.................................. 8 2.1.8 M80 Abspielen................................. 8 2.2 Wunschkriterien.................................... 10 2.2.1 W10 Zugrisberechtigung........................... 10 2.2.2 W20 Video-Sharing.............................. 10 2.2.3 W30 Administration.............................. 10 2.3 Abgrenzungskriterien.................................. 11 2.3.1 A10 Echtzeitüberwachung........................... 11 2.3.2 A20 Kamera.................................. 11 2.3.3 A30 Streamen.................................. 11 2.3.4 A40 Ver- und Entschlüsselung......................... 11 3 Implementierungsentwurf 12 3.1 Gesamtsystem...................................... 12 3.2 Implementierung von Komponente Player...................... 13 3.2.1 Klassendiagramm................................ 21 3.2.2 Erläuterung................................... 21 3.3 Implementierung von Komponente Benutzerverwaltung............... 26 3.3.1 Klassendiagramm................................ 28 3.3.2 Erläuterung................................... 29 3.4 Implementierung von Komponente Upload...................... 30 3.4.1 Klassendiagramm................................ 31 3.4.2 Erläuterung................................... 32 3

3.5 Implementierung von Komponente Server...................... 33 3.5.1 Klassendiagramm................................ 34 3.5.2 Erläuterung................................... 34 3.6 Implementierung von Komponente Kamera..................... 36 4 Datenmodell 37 4.1 Diagramm........................................ 37 4.2 Erläuterung....................................... 37 5 Serverkonfiguration 39 4

Abbildungsverzeichnis 3.1 Komponentendiagramm................................ 12 3.2 Klassendiagramm der Komponente Player...................... 20 3.3 Klassendiagramm der Komponente Benutzerverwaltung.............. 28 3.4 Klassendiagramm der Komponente Upload..................... 31 3.5 Klassendiagramm der Komponente Server...................... 35 4.1 Datenmodell...................................... 37 5

1 Einleitung Im vorliegenden Dokument werden die Implementierungsdetails für das Softwareprojekt Entwicklung eines sicheren Videoübertragungssystems näher erläutert. Im zweiten Kapitel wird die Umsetzung der Muss-, Wunsch- und Abgrenzungskriterien, welche schon im Pichtenheft erwähnt wurden, ausführlich beschrieben. Im folgenden dritten Kapitel wird auf die einzelnen Komponenten, die im Grobentwurf deniert wurden, eingegangen. Jede Komponente wird durch ein Klassendiagramm beschrieben, in dem die entsprechenden Klassen und die zugehörigen und Attribute angegeben werden. In Kapitel Vier werden die dauerhaft zu speichernden Daten durch ein Datenmodell dargestellt und näher erläutert. Das abschlieÿenden Kapitel Fünf beschreibt die Serverkonguration und die notwendigen Einträge in die Kongurationsdateien. 6

2 Erfüllung der Kriterien 2.1 Musskriterien 2.1.1 M10 Server Auf dem Server werden alle Daten gespeichert, die sich das System 'merken' muss. Seien es die Videodaten oder die Benutzerdaten. Er empfängt alle eingehenden Uploads oder Kamerastreams und schickt auf Anfrage einen Videostream an Clients. Der Kamerastream muss zusätzlich noch auf dem Server verschlüsselt werden. Somit ist der Server ein zwingend notwendiges Bestandteil des Systems. 2.1.2 M20 Hochladen Um auf die Videos vom Server zugreifen zu können, müssen die Daten zunächst dort hin gebracht werden können. Dazu dient das 'Hochladen'. Gibt man den Befehl zum Hochladen eines Videos, wird das Video, für den Benutzer unsichtbar, erst verschlüsselt und anschlieÿend hochgeladen. 2.1.3 M30 Playersoftware Der Player soll über eine graphische Benutzeroberäche verfügen, die in Java mit der Swing- Bibliothek realisiert wird. Er soll eine Liste von Videos anzeigen, die vom Benutzer angesehen werden können, als auch eine Funktion zum Upload von Videos bereitstellen. Um diese Funktionen jedoch nutzen zu können, muss der Benutzer sich zunächst einmal mit einem gültigen Account über den Player am System anmelden. Dazu wird der Player ein eigenes Eingabefenster haben, bei dem man dann seinen Accountnamen und das dazugehörige Passwort eingeben muss. Wenn der Benutzer ein Video zum Ansehen ausgewählt hat, wird das Video vom Server gestreamt und vom Player dekodiert. Dies geschieht im Hintergrund, sodass der Benutzer davon nichts mitbekommt. Wenn er ein eigenes Video hochladen möchte, muss er den Pfad von dem Video, das auf seinem lokalen Rechner gespeichert ist, auswählen und auf 'Upload' klicken. Dazu wird wiederum ein eigenes Eingabefenster benötigt, welches einen kleinen veränderlichen Balken enthält, der den Fortschritt des Uploads angibt. Sobald der Upload beendet ist, bekommt der Benutzer eine kurze Mitteilung darüber und kann danach andere Aktionen mit dem Player durchführen. 7

2.1.4 M40 Streamen Der Server soll Videos bereitstellen und an den Player übertragen. Hierbei wird das Video nicht als Datei lokal auf dem Rechner von dem Benutzer gespeichert, sondern lediglich von dem Server gestreamt. Hierfür wollen wir das bereits vorhandene Paket für Java 'Freedom for Media in Java' benutzen, welches eine Alternative zum 'Java Media Framework' darstellt. Durch dieses Paket wird die Funktion für das Streamen bereitgestellt und kann in Java verwendet werden. 2.1.5 M50 Dekodieren Wenn der Server ein kodiertes Video an den Player streamt, ist das Video zunächst noch verschlüsselt. Der Player dekodiert das Video bevor es angesehen werden kann. Dieser Vorgang wird automatisch von der Software übernommen, ohne dass der Benutzer etwas davon mitbekommt. 2.1.6 M60 Verwaltung Damit das Projekt überhaupt für eine Gruppe oder Organisation benutzbar wird, muss eine Verwaltung geschaen werden. In dieser Verwaltung werden alle Benutzer und Benutzergruppen angelegt. Es wird 2 Typen von Benutzern geben, die normalen Benutzer, die ihre Videos hochladen, anschauen und Gruppen erstellen können, aber auch einen Administrator mit den bekannten Fähigkeiten der vollkommenen Kontrolle über das System. Die Benutzergruppen können von einem Benutzer erstellt werden und dieser hat die Kontrolle über die Gruppe, er kann somit Benutzer einladen und entfernen. Jedes Video, welches für die Gruppe gedacht ist, kann von jedem der Gruppenmitglieder angesehen und verbreitet werden. 2.1.7 M70 Kamera Die Kamera stellt in dieser Software eine sekundäre Komponente dar. Sie wird nicht entwickelt, sondern von Aussen an die Software angebunden. Die bereits vorhandenen Funktionen, die die Kamera mitbringen sollte, werden dem Server zur Verfügung gestellt und dahingehend benutzt um die Bewegungsaktivierung der Kamera zu realisieren. 2.1.8 M80 Abspielen Eine wichtige Funktion der Player Komponente ist das Abspielen der Videos auf die man Zugri hat. Da diese Videos verschlüsselt sind, braucht man einen Dekryption-Key. Dieser Dekryption- Key wird zur Verfügung gestellt und in den Player eingebunden, damit das Video dekodiert 8

werden kann. Gesendet wird das Video als Stream und dieses wird durch die FMJ Funktionen eingebunden. 9

2.2 Wunschkriterien 2.2.1 W10 Zugriffsberechtigung Die einzelnen Benutzer sollen nur auf ihren Benutzeraccount zugreifen können. Daher soll jeder Benutzer sein eigenes Passwort zu seinem Benutzernamen erhalten. Durch die jeweiligen Rechte ist es einem Benutzer nur möglich die Videos anzusehen, zu denen er berechtigt ist. 2.2.2 W20 Video-Sharing Ein Benutzerinterface soll implementiert werden. Dieses soll den Benutzern die Möglichkeit geben, die über einen Stream empfangenen Videos lokal auf ihrem PC zu speichern. 2.2.3 W30 Administration Administratoren sollen Benutzer mit erweiterten Rechten sein. Dazu wird ihnen eine Umgebung implementiert, mit der sie unkompliziert die Rechte einzelner Benutzer ändern können. Auch das Überwachen der Videoinhalte soll über so eine Umgebung realisiert werden. Die Umgebung soll dabei mit den Komponenten des Java Swing Paketes entwickelt werden. 10

2.3 Abgrenzungskriterien 2.3.1 A10 Echtzeitüberwachung Mit unserem Produkt wollen wir keine Echtzeitüberwachung erreichen. Sie soll nur einen Videostrom aufzeichnen, wenn sich etwas bewegt. Diese Daten werden dann an den Server geschickt und dort kann man sie dann abrufen und auf den Client Rechner streamen lassen. Dadurch ist es nicht möglich eine ständige Überwachung des Erfassungsgebietes der Kamera zu realisieren. 2.3.2 A20 Kamera Es ist möglich, zusätzlich zur Funktion des Video uploaden durch einen User, auch eine Kamera einzubinden. Diese wird direkt mit dem Server verbunden und überträgt die Videodaten unverschlüsselt. Auf dem Server werden die Daten dann verschlüsselt und gespeichert. Die Kamera sollte eventgesteuert sein und nicht dauerhaft Videodaten aufnehmen. Sie kann von einem beliebigen Hersteller sein, sofern sie den Datenstrom unverschlüsselt und in üblicher Weise überträgt. 2.3.3 A30 Streamen Das Streamen der Videos wird durch das FMJ-Framework (Freedom for Media in Java) realisiert. 2.3.4 A40 Ver- und Entschlüsselung Für die Ver- und Entschlüsselung benutzen wir die Bibliothek 'SunJCE', da diese verschiedene Chierierverfahren bereit stellt. 11

3 Implementierungsentwurf 3.1 Gesamtsystem Benutzer Video hochladen Upload Videostream (codiert) Player Administration Datentransfer {ODER} Kamerastream Server Kamera Registration / Login Benutzerverwaltung Abbildung 3.1: Komponentendiagramm Abbildung 3.1 zeigt das Komponentendiagramm des Gesamtsystems. In den folgenden Unterkapiteln wird auf jede Komponente näher eingegangen und es werden deren Klassen, und Attribute deniert. Die einzige Verbindung des Benutzers mit der Software läuft über die Player-Software. Dort hat er die Möglichkeit, über die Schnittstelle 'Registration/Login', mit der Komponente Benutzerverwaltung zu kommunizieren. Die Benutzerverwaltung hat durch die Schnittstelle 'Administration' die Möglichkeit auf den Player zuzugreifen. Weiterhin kann der Benutzer über den Player und dessen Schnittstelle 'Video hochladen' auf den Upload zugreifen. Dieser kann wiederum durch 'Datentransfer' mit dem Server kommunizieren. Auch die Kamera kann ihre Daten durch den 'Kamerastream' auf den Server senden. Schlieÿlich kann auch der Server über die Schnittstelle 'Videostream (codiert)' den geforderten Stream zum Player des Benutzers streamen. 12

3.2 Implementierung von Komponente Player Klasse: AdminForm Attribute userlist: UserList Hier werden die User in einer Liste gespeichert grouplist: GroupList Hier werden die Gruppen in einer Gruppenliste gespeichert videolist: VideoList Hier werden Videos der VideoList gespeichert adduser(user: User): void Fügt einen User hinzu addgroup(group: Group): void Fügt eine Gruppe hinzu edituser(user: User, userid: Integer): void Ändert einen Benutzer editgroup(group: Group, groupid: Integer): void Ändert eine Gruppe editvideo(video: Video): void Ändert ein Video deleteuser(userid: Integer): void Löscht einen Benutzer deletegroup(groupid: Integer): void Löscht eine Gruppe deletevideo(video: Video): void Löscht ein Video Klasse: User Attribute name: String Name des Benutzers 13

email: String E-Mail des Benutzers passwort: String Passwort des Benutzers userid: Integer User-ID des Benutzers im System level: Integer Berechtigungslevel eines Benutzers getname(): String Gibt den Namen aus getmail(): String Gibt die E-Mail aus getpasswort(): String Gibt das Passwort aus getid(): Integer Gibt die User-ID aus getlevel(): Integer Gibt das Berechtigungslevel aus setname(name: String): void Ändert den Namen setmail(email: String): void Ändert die E-Mail Adresse setpasswort(passwort: String): void Ändert das Passwort setlevel(level: Integer): void Ändert das Berechtigungslevel des Benutzers isinuserlist(userlist: UserList): Boolean Zeigt ob der Benutzer zu der Benutzerliste dazugehört isingroup(groupid: Integer): Boolean Zeigt an in welchen Gruppen der Benutzer ist Klasse: Group 14

Attribute groupid: Integer Gruppen-ID de Gruppe groupname: String Name der Gruppe verantwortlicher: Integer Verantwortlicher der Gruppe, der administrative Operationen zu der Gruppe ausführen darf beschreibung: String Beschreibung zu der Gruppe getid(): Integer Gibt die Gruppen-ID heraus getgroupname(): String Gibt den Gruppennamen heraus getverantwortlicher(): Integer Gibt den Gruppen-Verantwortlichen heraus getbeschreibung(): String Gibt die Gruppenbeschreibung heraus setgroupname(groupname: String): void Ändert den Gruppen Namen setverantwortlicher(verantwortlicher: Integer): void Ändert den Gruppen Verantwortlichen setbeschreibung(beschreibung: String): void Ändert die Gruppenbeschreibung users(): UserList Zeigt an welche User sich in der Gruppe benden Klasse: VideoList Attribute ausgewähltesvideo enthält ID des momentan gewählten Videos Klasse: Video 15

Attribute datum Hochladedatum titel Titel oder kurze Beschreibung des Inhalts size Dateigröÿe in Byte length Abspieldauer des Videos freigabe Enthält die GruppenID, d.h. welcher Gruppe das Video zugeordnet ist. userid BenutzerID des Hochladers getdatum() Liefert Attribut datum zurück. gettitel() Liefert Attribut titel zurück. getsize() Liefert Dateigröÿe des Videos zurück. getlength() Liefert Abspieldauer zurück. getfreigabe() Liefert GruppenID zurück, der das Video zugeordnet ist. getuserid() Liefert ID des Hochladers zurück. Klasse: PlayVideo start() Spielt das Video vom Anfang aus ab. stop() Beendet das Abspielen. 16

pause() Pausiert das Video oder fährt an der momentanen Position fort, wenn das Video schon pausiert war. Klasse: VideoStream (enthält zum Streamen des Videos, die durch FMJ zur Verfügung gestellt werden.) Klasse: DecryptionKey Attribute key Enthält den zum Entschlüsseln der Videos notwendigen Key. getkey() Liefert Schlüssel zurück. setkey() Setzt Schlüssel auf angegebenen Wert. Klasse: MainFrame showadminform() Ruft das AdminForm auf showloginform() Ruft das LoginForm auf showregform() Ruft das RegForm auf showvideolist() Ruft die VideoList auf showgroupform() Ruft das GroupForm auf showeditgroupform() Ruft das EditGroupForm auf showuploadvideoform() Ruft das UploadVideoForm auf showeditvideoform() Ruft das EditVideoForm auf 17

Klasse: RegForm Attribute Name Name des Users, der sich Registrieren will E-Mail E-Mail-Adresse des Users, der sich Registrieren will Passwort gewünschtes Passwort PasswortCheck zweite Eingabe des Passworts, zur Überprüfung sendreg() sendet das ausgefüllte RegForm an die Benutzerverwaltung Klasse: LoginForm Attribute Userlist enthält alle registrierten User Passwort zum User gehöriges Passwort Server Verbingung zum Server Port benutztes Port login() meldet den Benutzer am System an Klasse: GroupForm Attribute Name Name der Gruppe 18

Beschreibung Beschreibung für die Gruppe create() erstellt eine Gruppe Klasse: EditGroupForm delete() Löschen der Gruppe changebeschreibung() Beschreibung ändern Klasse: EditVideoForm delete() Löschen eines Videos changebeschreibung() Beschreibung ändern Klasse: UploadVideoForm Attribute lepath Pfad, wo das Video hin soll Beschreibung Videobeschreibung Gruppe zugehörige Gruppe upload() ladet das Video hoch 19

User -name : String -email : String -passwort : String -userid : Integer -level : Integer +getname() : String +getmail() : String +getpasswort() : String +getid() : Integer +getlevel() : Integer +setname(ein name : String) : void +setmail(ein email : String) : void +setpasswort(ein passwort : String) : void +setlevel(ein level : Integer) : void +isinuserlist(ein userlist : UserList) : Boolean +isingroup(ein groupid : Integer) : Boolean UserList AdminForm -userlist : UserList -grouplist : GroupList -videolist : VideoList +adduser(ein user : User) : void +addgroup(ein group : Group) : void +edituser(ein user : User, ein userid : Integer) : void +editgroup(ein group : Group, ein groupid : Integer) : void +editvideo(ein video : Video) : void +deleteuser(ein userid : Integer) : void +deletegroup(ein groupid : Integer) : void +deletevideo(ein video : Video) : void Group -groupid : Integer -groupname : String -verantwortlicher : Integer -beschreibung : String +getid() : Integer +getgroupname() : String +getverantworlicher() : Integer +getbeschreibung() : String +setgroupname(ein groupname : String) : void +setverantwortlicher(ein verantwortlicher : Integer) : void +setbeschreibung(ein beschreibung : String) : void +users() : UserList GroupList GUI PlayVideo +start() +stop() +pause() VideoStream DekryptionKey -Key +getkey() +setkey() 1 1 VideoList Video -datum -titel -size -length -freigabe -userid +getdatum() +gettitel() +getsize() +getlength() +getfreigabe() +getuserid() +setdatum() +settitel() +setsize() +setlength() +setfreigabe() +setuserui() 1 -AusgewähltesVideo LoginForm MainFrame -Userliste -Passwort -Server -Port +login() +showadminform() +showloginform() +showregform() +showvideolist() +showgroupform() +showeditgroupform() +showuploadvideoform() +showeditvideoform() UploadVideoForm -filepath -Beschreibung -Gruppe +upload() GroupForm Regform -Name -E-Mail -Passwort -PasswortCheck +sendreg() -Name -Beschreibung +create() EditGroupForm EditVideoForm +delete() +changebeschreibung() «signal»-delete() «signal»-changebeschreibung() Abbildung 3.2: Klassendiagramm der Komponente Player 20

3.2.1 Klassendiagramm 3.2.2 Erläuterung Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft User 01 isinuserlist Schaut ob name, email, UserList nein User in Userlist 02 isingroup Schaut ob User in Gruppe passwort, userid, level name, email, GroupList nein passwort, userid, level Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft Group 01 users Zeigt User groupid, groupname, ver- GroupList nein der Gruppen an antwortlicher, beschreibung 21

Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft AdminForm 01 AddUser Fügt User userlist User, User- nein hinzu List 02 AddGroup Fügt Gruppe grouplist Group, nein hinzu GroupList 03 AddVideo Fügt Video videolist VideoList nein hinzu 04 ChangeUser Ändert userlist User, User- nein Werte in List User 05 ChangeGroup Ändert grouplist Group, nein Werte in GroupList Group 06 ChangeVideo Ändert Werte eines Videos videolist VideoList nein 07 DeleteUser Löscht userlist User, User- nein einen User List 08 DeleteGroup Löscht eine Gruppe grouplist Group, GroupList nein 09 DeleteVideo Löscht ein videolist VideoList nein Video 22

Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft Video 01 getdatum() Liefert Hochladedatum zurück datum nein 02 gettitel() Liefert Beschreibung titel nein zurück 03 getlength() Liefert Abspieldauer zurück length nein 04 getfreigabe() Liefert, die Gruppe, welcher freigabe nein das Video zugeordnet ist, zurück 05 getuserid() Liefert UserID des Hochladers zurück userid nein Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft PlayVideo 01 start() Startet nein Videoabspielen 02 stop() Stoppt nein Videoabspielen 03 pause() Pausiert Videoabspielen nein Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft GUI 01 Grak grasche Oberäche MainFrame ja 23

Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft MainFrame 01 show AdminForm() 02 show Login- Form() 03 show Reg- Form() 04 show VideoList() 05 show Group- Form() 06 show Edit- Group- Form() 07 show Uplo- advideo- Form() 08 show Edit- Video- Form() Form aufrufen AdminForm nein Form aufrufen LoginForm nein Form aufrufen RegForm nein List aufrufen VideoList nein Form aufrufen GroupForm nein Form aufrufen EditGroup nein Form Form aufrufen UploadVideo nein Form Form aufrufen EditVideo nein Form Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft LoginForm 01 login() Benutzer Userliste, Passwort, MainFrame nein einloggen Server, Port Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner RegForm 01 sendreg() Benutzer Name, E-Mail, MainFrame nein registrieren Passwort, PasswortCheck Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner GroupForm 01 create() Gruppe erzeugen Name, Beschreibung MainFrame nein 24

Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner EditGroupForm 01 delete() Gruppe löschen MainFrame nein 02 change Beschreibung() Gruppen- Beschreibung ändern MainFrame nein Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner EditVideoForm 01 delete() Video MainFrame nein löschen 02 change Beschreibung() Video- Beschreibung ändern MainFrame nein Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner Upload Video- 01 upload() Video hochladeschreibung, lepath, Be- MainFrame nein Form Gruppe 25

3.3 Implementierung von Komponente Benutzerverwaltung Klasse: Benutzer Attribute name : String Speichert den Namen des Benutzers. email : String Speichert die E-Mail Adresse des Benutzers. passwort : String Speichert das Passwort des Benutzers. userid : Integer Speichert die Identikationsnummer des Benutzers. level : Integer Legt fest, ob Benutzer nicht freigeschaltet, freigeschaltet oder Admin ist. adduser(benutzer : Benutzer) : void Erstellt neuen Benutzer. deleteuser(benutzer : Benutzer) : void Löscht Benutzer. setname(name : String) Weist Benutzer Namen zu. setuserid(userid : Integer) Weist Benutzer userid zu. setemail(email : String) Weist Benutzer e-mail Adresse zu. setlevel(level : Integer) Weist Benutzer ein Level zu. Klasse: Admin Attribute name : String Speichert den Namen des Benutzers. 26

email : String Speichert die E-Mail Adresse des Benutzers. passwort : String Speichert das Passwort des Benutzers. userid : Integer Speichert die Identikationsnummer des Benutzers. level : Integer Legt fest, ob Benutzer nicht freigeschaltet, freigeschaltet oder Admin ist. adduser(benutzer : Benutzer, userid : Integer) : void Erstellt neuen Benutzer mit bestimmter UserId. deleteuser(benutzer : Benutzer, userid : Integer) : void Löscht Benutzer mit bestimmter UserId. setname(name : String, userid : Integer) : void Weist Benutzer mit bestimmter UserId Namen zu. setuserid(userid : Integer) : void Weist Benutzer userid zu. setemail(email : String, userid : Integer) : void Weist Benutzer mit bestimmter UserId e-mail Adresse zu. setlevel(level : Integer, userid : Integer) : void Weist Benutzer mit bestimmter UserId ein Level zu. Klasse: Gruppe Attribute gruppenname : String Speichert den Namen einer Gruppe. verantwortlicher : String Speichert den Verantwortlichen der jeweiligen Gruppe. beschreibung : String Speichert die Beschreibung der Gruppe. addgroup(gruppe : Gruppe) : void Erstellt neue Gruppe. 27

deletegroup(gruppe : Gruppe) : void Löscht eine Gruppe. setgruppenname(gruppenname : String) : void Weist Gruppe einen Gruppennamen zu. setverantwortlicher(verantwortlicher : String) : void Weist Gruppe einen Verantwortlichen zu. setbeschreibung(beschreibung : String) : void Legt Beschreibung für die Gruppe fest. 3.3.1 Klassendiagramm Verwaltung Benutzer -name : String -email : String -passwort : String -userid : Integer -level : Integer +adduser(ein benutzer : Benutzer) : void 1 1... +deleteuser(ein Benutzer : Benutzer) : void +setname(ein name : String) : void +setemail(ein email : String) : void +setuserid(ein userid : Integer) : void +setlevel(ein level : Integer) : void 0... 0... Admin -name : String -email : String -passwort : String -userid : Integer -level : Integer +adduser()(ein userid : Integer, ein benutzer : Benutzer) : void +deleteuser(ein userid : Integer, ein benutzer : Benutzer) : void +setname(ein name : String, ein userid : Integer) : void +setemail(ein email : String, ein userid : Integer) : void +setuserid(ein userid : Integer) : void +setlevel(ein level : Integer, ein userid : Integer) : void 0... Gruppe -gruppenname : String -verantwortlicher : String -beschreibung : String +addgroup(ein gruppe : Gruppe) : void +deletegroup(ein gruppe : Gruppe) : void +setgruppenname(ein gruppenname : String) : void +setverantwortlicher(ein verantwortlicher : String) : void +setbeschreibung(ein beschreibung : String) : void Abbildung 3.3: Klassendiagramm der Komponente Benutzerverwaltung 28

3.3.2 Erläuterung Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft Benutzer 01 Hinzufügen Hinzufügen name, email, Verwaltung nein eines BenutzerrId, passwort, use- level 02 Löschen Löschen eines name, passwort Verwaltung nein Benut- zers Admin 01 Hinzufügen Hinzufügen name, email, Benutzer nein eines BenutzerrId, passwort, use- level 02 Löschen Löschen eines name, userid Benutzer nein Benut- zers Gruppe 01 Hinzufügen Hinzufügen einer Gruppcher, gruppenname, verantwortli- Verwaltung und Benut- nein beschreizer bung 02 Löschen Löschen einer Gruppe gruppenname, verantwortlicher Verwaltung und Benutzer nein 29

3.4 Implementierung von Komponente Upload Klasse: SendVideo Attribute pfad: String Der Pfad beschreibt den Ort an dem das hochzuladende Video auf dem Client PC vorhanden ist. dateiname: String Das Attribut Dateiname steht für die Bezeichnung des Videos auf dem Client PC. beschreibung: String Mit der Beschreibung wird dem Video, dass hochgeladen werden soll, eine kurze Erklärung hinzugefügt. gruppen: String Das Attribut Gruppen zeigt an, welche einzelnen Gruppen auf dieses Video zugreifen können. server: String Mit dem Attribut Server wird der Name des Servers übergeben. port: String Der Port gibt die Kontaktadresse mit dem Server an. username: String Username steht für den Benutzer des Zuganges, welcher dieses Video auf den Server geladen hat. passwort: String Das Attribut Passwort ist das zu dem Benutzer zugehörige Passwort zum anmelden an den Server. uploadvideo(pfad: String, dateiname: String, beschreibung: String): void Mittels uploadvideo wird ein auf dem Client PC vorhandenes Video an den Server geschickt, wo es danach gespeichert wird. encryptvideo(): void Die Methode encryption beschreibt den Vorgang des Verschlüsseln eines Videos bevor es zu dem Server geschickt wird. Klasse: EncryptionKey 30

Attribute key: String Das Attribut Key steht für den Schlüssel mit dem Videos kodiert werden, bevor sie an den Server geschickt werden. setkey(key: String): void Mit der Methode setkey wird ein neuer Schlüssel für die Kodierung der Videos gewählt. Die Kodierung selbst wird mit dem SunJCE-Framework implementiert. 3.4.1 Klassendiagramm sendvideo -pfad : String -dateiname : String -beschreibung : String -gruppen : String -server : String -port : String -username : String -passwort : String +uploadvideo(ein pfad : String, ein dateiname : String, ein beschreibung : String) : void +encryptvideo() : void 1 1 -Key : String EncryptionKey +setkey(ein Key : String) : void Abbildung 3.4: Klassendiagramm der Komponente Upload 31

3.4.2 Erläuterung Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft sendvideo 01 Video hochladen 02 Video kodieren ein vorher verschlüsseltes Video wird an den Server geschickt pfad, dateiname, keine - be- schreibung, gruppen, server, port, username, passwort EncryptionKey nein ein hochzuladendes Video wird verschlüsselt 32

3.5 Implementierung von Komponente Server Klasse: Listener Attribute port: int Speichert den Port, an dem sich die Clients connecten. maxclients: int Speichert die Anzahl der maximal erlaubten Verbindungen zum Server. clientip: string Speichert die IP des verbundenen Clients. Klasse: Communicator Interface, um zu entscheiden, was der Client möchte: Entweder Video senden, oder Video streamen. Klasse: SendStream Attribute port: int Speichert den Port, über den die Kommunikation mit dem Client läuft. streamvideo(): void Streamt das Video an den Client. Klasse: GetStream Attribute port: int Speichert den Port, über den die Kommunikation mit dem Client läuft. destination: string Speichert den Zielort, wo die Videos gespeichert werden. savevideo(): void Speichert das Video. Klasse: Encrypted Erbt die Methode setvideo() und speichert ein schon verschlüsselte Video. 33

Klasse: Unencrypted Ruft zuerst encryptvideo() auf und speichert dann mit der geerbten Methode save- Video() das Video. encryptvideo(): void Verschlüsselt das Video mit dem Key aus der Klasse EncryptionKey. Hierzu importieren wir das SunJCE Packet. Klasse: EncryptionKey getkey(): string Gibt den gespeicherten Key zurück. setkey(key: string): void Speichert einen Key. 3.5.1 Klassendiagramm 3.5.2 Erläuterung Beteiligte Kl. Aufgabe Notw. Attribute Notwendige Partner ID Name Beschreibung Name dauerhaft Listener 01 Warten Warten auf port, maxclients, - - eine Verbindung clientip 02 Verteilen Client an - - - Thread/Port weiterleiten SendStream 01 Streamen Streamt das port Communicator nein Video an Client GetStream 01 Speichern Speichert port, destinatiocator Communi- nein das Video auf Server Unencrypted 01 Verschlüsseln Verschlüsselt das Video Encryption- Key nein 34

Listener -port : Integer -maxclients : Integer -clientip : String 1 1 «implements» Communicator SendStream -port : Integer +streamvideo() : void GetStream -port : Integer -destination : String +savevideo() : void Encrypted Unencrypted +encryptvideo() : void 1 1 EncryptionKey +getkey() : string +setkey(ein key : string) : void Abbildung 3.5: Klassendiagramm der Komponente Server 35

ï¾ 3.6 Implementierung von Komponente Kamera Die Kamera wird vorerst nicht implementiert. Serverseitig wird sie durch einen Benutzer simuliert, der unverschlüsselte Videos hochlädt. 36

4 Datenmodell 4.1 Diagramm User -Name -E-Mail -Passwort -UserID -UserLevel -besteht aus -ist Mitglied von Group -Name -Beschreibung -Verantwortlicher -GroupID 1 -wurde hochgeladen von -freigabe in -hat hochgeladen Video -Titel -Date -Size -Lenght -Freigabe -UserID -hat Zugriff auf Abbildung 4.1: Datenmodell 4.2 Erläuterung Das Diagramm 4.1 zeigt die dauerhaft gespeicherten Elemente in unserem System und ihre Beziehungen untereinander. Jeder User enthält als Attribute seine Daten. Ein Benutzer kann mehrere Videos auf den Server hochladen. Die Videos beinhalten dabei ihre einzelnen Attribute, die man dem Diagramm entnehmen kann. Desweiteren sind mehrere Benutzer Mitglieder in einzelnen Gruppen. Group beinhaltet dabei die Beschreibungen der jeweiligen Gruppe. Ein Video kann immer nur in den Gruppen angesehen werden, die zu dem Video zugehörige Freigabe besitzen. 37

Entität Name der Beziehung /E10/: ist Mitglied von User hat hochgeladen /E20/: besteht aus Group hat Zugri auf /E30/: wurde hochgeladen von Video freigabe in Beziehnungen Kardinalität 1 38

5 Serverkonfiguration Die ServerConguration ist eine Kongurationsdatei, die beim Starten des Servers gelesen wird. Sie enthält folgende Einträge: Port: Int Das ist der Port, auf dem der Server ankommende Packete entgegen nimmt. CacheDirectory: String Dies ist der Pfad, in dem die Videos gespeichert werden. Key: String Dieser Key wird zum Verschlüsseln benötigt. MaxClients: Int Anzahl der maximal angemeldeten Clients am Server. 39