Automatisierte Benutzerverwaltung Diplomarbeit HTL-Wels 2006/2007 Etzlstorfer Andreas Roland Kretschmer
Agenda Teil 1 Teil 2 Teil 3 Ziele Anwendungsfall Ablauf Technologien Konfiguration Teil 3 Codebeispiele
Ziele Massenimport von Schülerlogins Logineinstellungen Gruppenzugehörigkeiten Platzbeschränkungen Homeverzeichnisse (+Filerechte) Unixattribute Loginskript
Importdaten CSV Datei aus SAS-II Schema der CSV Datei einstellbar Schulverwaltungsprogramm St. Pölten Schema der CSV Datei einstellbar auch andere Schulverwaltungsprogramme möglich Konfigurationsfile einfache Textdatei Profile XML Datei
Beispiel: CSV-Datei aus SAS II ist im Prinzip nichts anderes als eine Excel Datei in Textform die meisten Schulverwaltungssysteme liefern Daten in so einer Form…
Verwendete Technologien Programmiersprache Java GUI durch SWING Bibliotheken LDAP-Zugriffe: JLDAP (v.2.16) Novellzugriffe: NJCL (v.2.0) Konfiguration: JDOM (v.1.0) Logging: LOG4J (v.1.2.14)
Verwendete Programme Programmierung Umgebung Server Eclipse CVS-Server Console One JXplorer VM-Ware Server Novell Netware 6.5 (SP3)
Ansicht GUI Menü Toolbar Registerkarten Konsole
Anwendungsfall I Schritt 1: Datei öffnen
Anwendungsfall II Schritt 2: CSV-Daten in Logins umwandeln Generierungsmuster vorkonfigurierte Muster Hier kann man schon einmal die Anpassung an das jeweilige CSV-File vornehmen…(Muster) Passwortlänge
Anwendungsfall III Schritt 3: Logins exportieren CSV Datei Sollte man tun, damit man die Passwörter gesichert hat… CSV Datei
Anwendungsfall IV Schritt 4: Profil zuordnen 1: Popupmenü 2: Panel 2 1 Man kann Standardprofile festlegen die sofort eingestellt sind, falls Logins generiert werden… Andernfalls kann man selbstständig die Profile erstellen und zuweisen (über Texteditor – XML oder über eigene GUI) Was ein Profil im Detail ist wird nachher noch erklärt…
Anwendungsfall V Schritt 5: Datenbestand vergleichen Schritt 5a: Aktionen wählen gefilterte Einträge weglassen…
Anwendungsfall VI Schritt 6: Vergleichsdaten ausführen
Resultat I Ist mit JXPlorer erstellt worden…
Resultat II Filerechte Serverpfad/Volume erwähnen Rechte mit Benutzer
Resultat III
Resultat IV
Teil 2 Ablauf Technologien Konfiguration
Ablauf I
Ablauf II
Anpassung über Muster aus Spalten -> Zeichenketten generieren besitzt Syntax, Zugriff: $spaltenname$ ganze Spalte $n.spaltenname$ n-Zeichen von vorne $n#.spaltenname$ n-Zeichen von hinten $n,m*spaltenname$ m-Zeichen vom n-ten Zeichen weg (Substring)
Beispiel für Muster Daten id vname name abteilung 01 Sepp Mair Verkauf Syntax Ergebnis $vname$ $name$ Sepp Mair Herr $name$ $vname$ ist in der Abteilung $abteilung$ Herr Mair Sepp ist in der Abteilung Verkauf Login: $abteilung$_$id$$2.vname$$2.name$ Login: verkauf_01SeMa
Einstellungen im Profil Sprache Gruppenzuweisungen Speicherplatzbeschränkungen Homeverzeichnis (NDS und Linux) Verzeichnisrechte Startskript
Beispiel eines Profiles (XML)
Profileinstellung (GUI) I
Profileinstellung (GUI) II
Profileinstellung (GUI) III Remark notwendig sonst nimmt der Server ein Defaultprofil.
Konfiguration csv2ldap.conf allg. Konfiguration filter.conf Filtereinstellungen log4jproperties Einstellungen für das Logging
Beispiel csv2ldap.conf name und verzeichnisdn sind unabhängig voneinander da sich der Server für die Spacerestrictions und der Server für die Homeverzeichnisse unterscheiden können… Passwort kann leer sein, GUI fragt nach falls Verbindung aufgebaut wird… Port 636, gesicherte Verbindungen sind noch nicht implementiert
Beispiel filter.conf ungewünschte Einträge ignorieren Problem an Schule: Schüler die noch nicht aufsteigen können… erst teilweise implementiert Einstellung im Konfigurationsfile Alle User deren Klasse ein Fragezeichen enthält werden herausgefiltert… REGEX…
Teil 3 - Codebeispiele
Codebeispiel Posix Account Posix Account muss mit „modify“ hinzugefügt werden!
Codebeispiel Spacerestriction Aufruf: addRestriction("cn=testuser,o=htl", "HOM_H1", 100); HOM_H1 cn=testuser,o=htl testuser.htl testuser.htl 100
Codebeispiel Gruppenzugehörigkeit zwei Zugriffe: Benutzer Gruppe Gruppe Benutzer
Homeverzeichnisse Problembeschreibung ca. 21 - 42 Zugriffe Das Problem ist, dass Verzeichnisse nur einzeln erstellt werden können und nicht ein gesamter Pfad als Ganzes. Mit ca. 1500 Homeverzeichnissen hat das ganze ca. 5min gedauert!
Homeverzeichnisse Lösung Ablegen der Struktur in hierarchischer Datenform rekursives Abarbeiten der Struktur erspart Zugriffe und somit Zeit
Codebeispiel Homeverzeichnis erstellen I
Codebeispiel Homeverzeichnis erstellen II hole das Volume Nr: 1…n hole erstes Verzeichnis des Volumes erstelle Verzeichnis hat Verzeichnis Kinder? ja: erstelle Kinder nein: fertig hole nächstes …
Codebeispiel Homeverzeichnis erstellen III Aufruf: erstelleVerzeichnis(“02“, altercontext); Informationen setzen über JNDI wird das Verzeichnis erstellt…
Zusammenfassung Massenimport aus CSV-Datei Flexible Einstellungsmöglichkeiten Vollständiges Login mit Homeverzeichnisse Platzbeschränkungen Gruppenzugehörigkeiten … weitere Wünsche?
Vielen Dank für ihre Aufmerksamkeit Fragen ? ¿ ? ¿ Kontaktadressen: a.etzlstorfer@gmx.at roli2@gmx.at g.elsinger@eduhi.at OpenSource