diff options
Diffstat (limited to 'Konzept')
-rw-r--r-- | Konzept/Design.txt | 45 | ||||
-rw-r--r-- | Konzept/Konzept.txt | 57 | ||||
-rw-r--r-- | Konzept/Netzwerk.txt | 54 |
3 files changed, 156 insertions, 0 deletions
diff --git a/Konzept/Design.txt b/Konzept/Design.txt new file mode 100644 index 0000000..2b621b3 --- /dev/null +++ b/Konzept/Design.txt @@ -0,0 +1,45 @@ +Kern-Design: + +Netzwerk-Stack +- Von allen Teilen genutze Klasse + +Dämon-Manager +* Wartet auf Verbindungen von Dämonen +* Verwaltet Liste mit Dämonen +* Erlaubt die Abgabe von Befehlen an Dämonen + - sind Multi- bzw. Broadcast-Befehle möglich (z.B. Shutdown all), oder müssen die Clients einzeln Befehle an alle schicken? + +Client-Manager +* Wartet auf Verbindungen von Clients +* Nimmt Befehle von Clients entgegen + +Request-Manager +* Verwaltet die Request-Liste mit Quelle und Ziel jedes Requests + +User-Manager +* Stellt ein Backend-unabhängiges Interface zur Benutzer-Verwaltung zur Verfügung + +Logging-Manager +* Loggt alle Aktivitäten + +Backends +- MySQL +- Dateisystem +- Kerberos-Verwaltung + + +Dämon-Design: + +Netzwerk-Stack + +System-Backend +* Führt alle Befehle aus, die der Server schickt +* Schickt Logs an den Server + + +Client-Design: + +Netzwerk-Stack + +??? + diff --git a/Konzept/Konzept.txt b/Konzept/Konzept.txt new file mode 100644 index 0000000..5fe7480 --- /dev/null +++ b/Konzept/Konzept.txt @@ -0,0 +1,57 @@ +1. Dreiteilung in Kern, Per-Host-Dämon und Client +2. Kerberos-Authentifikation zwischen den Teilen + +Idee: Web-Interface statt Client? + + +Funktionen der Teile: + +1. Kern: +* Konfiguration (?) +* Benutzerverwaltung +* Verwaltung der Dämonen +* Verwaltung von Logdaten +* Status +* (Statistik) +* (Serververwaltung) +* (Webinterface) + +2. Dämon +* Verbindung zum Server zum Empfang von Befehlen +* Rechnerverwaltung (Herunterfahren, etc.) +* Bereitstellung von Statusinformationen (z.B. aktueller Benutzer) +* Weitergabe von Logdaten + +3. Client +* Bereitstellung aller Funktionen +* Authentifikation über Kerberos + + +Elemente, die von allen Teilen gebraucht werden: +* Netzwerkstack (siehe Netzwerk.txt) +* Kerberos +* Auslesen von Konfigurationsdateien + + +Elemente des Kerns: +* Benutzerverwaltung: + - Daten-Backend (MySQL, FS) + - Passwort-Backend (Kerberos) +* Kommando-Weiterleitung +* System-Backend (Server-Status) +* Log-Verwaltung (Backend: MySQL?) + - der Kern sollte alle größeren Aktivitäten loggen +* (Webinterface: PHP oder Mini-Server?) + +Elemente des Dämons: +* System-Backend (Verwaltung & Statusinformationen, Logging) + +Elemente des Clients: +* Frontend: Konsole (Shell-artig) +* (Frontend: Gtk) +* Einlesen von Benutzerlisten + + +Elemente, die noch nicht eingeordnet sind: +* Migration von Benutzerlisten (müssten Kern und Client gemeinsam machen) + diff --git a/Konzept/Netzwerk.txt b/Konzept/Netzwerk.txt new file mode 100644 index 0000000..4536e37 --- /dev/null +++ b/Konzept/Netzwerk.txt @@ -0,0 +1,54 @@ +Ideen zum Netzwerkstack: + + +Alles TLS-verschlüsselt? + + +Initalisierung der Verbindung: + +Client -> Server ++---+---+---+---+-------+---------------------+---------------------+ +| 1 | 2 | 3 | 4 | 5 - 6 | 7 | 8 | ++---+---+---+---+-------+---------------------+---------------------+ +|'M'|'A'|'D'| 0 |Version|min. Protokollversion|max. Protokollversion| ++---+---+---+---+-------+---------------------+---------------------+ + +Server -> Client ++---+---+---+---+-------+----------------+---+ +| 1 | 2 | 3 | 4 | 5 - 6 | 7 | 8 | ++---+---+---+---+-------+----------------+---+ +|'M'|'A'|'D'| 0 |Version|Protokollversion| 0 | ++---+---+---+---+-------+----------------+---+ + +8er Gruppen schön oder unnötig? + + +Datenpakete: + ++-------------------+--------------+-----------------------+----- +| 1 - 2 | 3 - 4 | 5 - 8 | 9 - ... ++-------------------+--------------+-----------------------+----- +|Typ des Datenpakets|Request-ID (*)|Größe der Nutzdaten (*)|Nutzdaten ++-------------------+--------------+-----------------------+----- + +* (könnte abhängig vom Typ auch weggelassen werden) + +Frage: Verwaltet der Server die Request-IDs? Sollten Clients also beim Server eine Request-ID erfragen, wenn sie was anderes schicken wollen? + + +Mögliche Pakettypen: + +* Keep-Alive (unnötig?) +* Request-ID-Anfrage? +* Login-Anfrage -> Übertragung von Kerberos-Daten +* Login-Antwort +* Dämon-Discovery +* Anfrage an Dämon (Kapselt anderes Paket?) -> wird weitergeleitet +* Antwort von Dämon (Kapselt anderes Paket?) -> zurück zum Client +* Status-Anfrage +* Status-Antwort +* Kommando (Shutdown, etc.) +* Kommando-Antwort +* Error ++ weitere Anfragen und Antworten... + |