Grundlegendes Design: Netzwerk-Stack * Server-Connection und Client-Connection-Klassen * Server-Connections werden von einer Listener-Klasse erzeugt + implementiert ConfigManager * Liest Konfiguration aus Dateien und Datenbanken * Backends: - Server: Dateien, MySQL - Dämonen, Clients: Dateien, Server * siehe Config.txt + teilweise implementiert RequestManager * Verwaltet die Request-Liste mit Quelle und Ziel jedes Requests * Sendet und beantwortet Requests + implementiert ThreadManager: * Erstellt einen Worker-Thread, der die meiste Arbeit übernimmt; bei längeren Arbeiten kann ein neuer Worker-Thread den alten ersetzen + implementiert ModuleManager: * Erlaubt es, Module zu laden * Abhängigkeiten zwischen Modulen sind möglich * Module können sich an vielen Stellen in das Hauptprogramm einfügen + teilweise implementiert LogManager * Loggt alle Aktivitäten * Ausgabe in eigenem Thread + implementiert UserManager * Stellt ein Backend-unabhängiges Interface zur Benutzer-Verwaltung zur Verfügung * Auf den Clients leitet ein Network-Backend Anfragen an den UserManager des Servers weiter * Ein Cache speichert Benutzerlisten für die Backends + implementiert Server-Design: ConnectionManager * Wartet auf Verbindungen von Dämonen und Clients * Verwaltet Liste mit Dämonen + implementiert User-Backends (Module) - MySQL - Dateisystem - Kerberos-Verwaltung Dämon-Design: System-Backend * Führt alle Befehle aus, die der Server schickt * Schickt Logs an den Server Client-Design: * Shell-artige Eingabe von Befehlen