summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-07-11 15:15:42 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-07-11 15:15:42 +0200
commitdfd9a5fac3176cc223fb572f31d5892033936fd7 (patch)
tree3555de44b0823887fd07ef760cb91f7c82793672
parentbf4c6ec2b7694f1a844eef5989b77e83a8cab362 (diff)
downloadmad-dfd9a5fac3176cc223fb572f31d5892033936fd7.tar
mad-dfd9a5fac3176cc223fb572f31d5892033936fd7.zip
Konzept aktualisiert
-rw-r--r--Konzept/Design.txt22
-rw-r--r--Konzept/Klassen.txt138
-rw-r--r--Konzept/Netzwerk.txt78
3 files changed, 105 insertions, 133 deletions
diff --git a/Konzept/Design.txt b/Konzept/Design.txt
index 5bcb8ff..e1f1b96 100644
--- a/Konzept/Design.txt
+++ b/Konzept/Design.txt
@@ -3,12 +3,6 @@ Grundlegendes Design:
Netzwerk-Stack
* Server-Connection und Client-Connection-Klassen
* Server-Connections werden von einer Listener-Klasse erzeugt
-* Nicht-blockierende Sockets (Implementierung ohne Multithreading möglich)
-+ implementiert
-
-Initializable:
-* Verwaltet Informationen über die Reihenfolge der Initialisierungen von Objekten
-* Wird beim Beenden die Objekte in umgekehrter Reihenfolge deinitialisieren
+ implementiert
ConfigManager
@@ -26,7 +20,7 @@ RequestManager
ThreadManager:
* Erstellt einen Worker-Thread, der die meiste Arbeit übernimmt; bei längeren Arbeiten kann ein neuer Worker-Thread den alten ersetzen
-+ teilweise implementiert
++ implementiert
ModuleManager:
* Erlaubt es, Module zu laden
@@ -39,16 +33,20 @@ LogManager
* 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 (implementiert)
+* Wartet auf Verbindungen von Dämonen und Clients
* Verwaltet Liste mit Dämonen
++ implementiert
-UserManager
-* Stellt ein Backend-unabhängiges Interface zur Benutzer-Verwaltung zur Verfügung
-
-Backends (Module)
+User-Backends (Module)
- MySQL
- Dateisystem
- Kerberos-Verwaltung
diff --git a/Konzept/Klassen.txt b/Konzept/Klassen.txt
index 799ffc9..67d5c29 100644
--- a/Konzept/Klassen.txt
+++ b/Konzept/Klassen.txt
@@ -1,75 +1,85 @@
-M läuft im Main-Thread
-W läuft im Worker-Thread
T ist Thread-safe
D sind Datenstrukturen
-? TODO
+M läuft nur im Main-Thread
+? TODO/?
-? Client::CommandManager
-? Client::CommandParser
-? Client::InformationManager
-W Client::Requests::DaemonCommandRequest
-W Client::Requests::DaemonFSInfoRequest
-W Client::Requests::DaemonListRequest
-W Client::Requests::DaemonStatusRequest
+T Client::Application
+M Client::CommandParser
+T Client::InformationManager
+T Client::Requests::DaemonCommandRequest
+T Client::Requests::DaemonFSInfoRequest
+T Client::Requests::DaemonListRequest
+T Client::Requests::DaemonStatusRequest
+M Client::SystemCommands
+M Client::UserCommands
+T Common::Application
+T Common::Backends::NetworkUserBackend
+T Common::Base64Encoder
T Common::ClientConnection
-D Common::ConfigEntry
-? Common::ConfigManager
-? Common::Configurable
-T Common::Connection
-D Common::Exception
+? Common::Connection
+D Common::GroupInfo
D Common::HostInfo
-? Common::Initializable
-T Common::LoggerBase
-T Common::Logger
-T Common::LogManager
-? Common::ModuleManager
-T Common::RemoteLogger
-W Common::Request
-W Common::RequestHandler
-W Common::RequestHandlers::DisconnectRequestHandler
-W Common::RequestHandlers::FSInfoRequestHandler
-W Common::RequestHandlers::StatusRequestHandler
+D Common::Module
+T Common::ModuleManager
+? Common::Request
+? Common::RequestHandler
+T Common::RequestHandlerGroup
+T Common::RequestHandlers::DisconnectRequestHandler
+T Common::RequestHandlers::FSInfoRequestHandler
+T Common::RequestHandlers::SimpleRequestHandler
+T Common::RequestHandlers::SimpleRequestHandlerGroup
+T Common::RequestHandlers::StatusRequestHandler
? Common::RequestManager
-W Common::Requests::DisconnectRequest
-W Common::Requests::FSInfoRequest
-W Common::Requests::GSSAPIAuthRequest
-W Common::Requests::SimpleRequest
-W Common::Requests::StatusRequest
-W Common::Requests::UserInfoRequest
-W Common::Requests::UserListRequest
-W Common::SystemBackend
-W Common::SystemManager
-T Common::ThreadManager
-D Common::Tokenizer
+T Common::Requests::DisconnectRequest
+T Common::Requests::FSInfoRequest
+T Common::Requests::IdentifyRequest
+T Common::Requests::SimpleRequest
+T Common::Requests::StatusRequest
+T Common::SystemBackend
+T Common::SystemManager
+T Common::UserBackend
+T Common::UserCache
D Common::UserInfo
+T Common::UserManager
D Common::XmlPacket
-? Daemon::Backends::NetworkLogger
-W Daemon::RequestHandlers::CommandRequestHandler
-W Daemon::Requests::IdentifyRequest
-W Daemon::Requests::LogRequest
-? modules::FileLogger
-? modules::SystemBackendPosix
-? modules::SystemBackendProc
-? modules::UserBackendMysql
-? Net::ClientConnection
-? Net::Connection
-? Net::FdManager
-D Net::IPAddress
-? Net::Listener
+T Core::Application
+D Core::ConfigEntry
+? Core::ConfigManager
+T Core::Configurable
+D Core::Exception
+T Core::Logger
+T Core::LoggerBase
+T Core::LogManager
+T Core::RemoteLogger
+T Core::Signals::Connection
+T Core::Signals::GenericSignal
+T Core::Signals::Signal0
+T Core::Signals::Signal1
+T Core::Signals::Signal2
+T Core::Signals::SignalBase
+T Core::ThreadManager
+T Core::Tokenizer
+T Daemon::Application
+T Daemon::Backends::NetworkLogger
+T Daemon::RequestHandlers::CommandRequestHandler
+T Daemon::Requests::LogRequest
+? modules::FileLogger::FileLogger
+T modules::FileLogger::Module
+T modules::SystemBackendPosix::Module
+? modules::SystemBackendPosix::SystemBackendPosix
+T modules::SystemBackendProc::Module
+? modules::SystemBackendProc::SystemBackendProc
+T modules::UserBackendMysql::Module
+T modules::UserBackendMysql::UserBackendMysql
+T Net::ClientConnection
+T Net::Connection
+T Net::Listener
D Net::Packet
-? Net::ServerConnection
+T Server::Application
? Server::ConnectionManager
-W Server::RequestHandlers::DaemonCommandRequestHandler
-W Server::RequestHandlers::DaemonFSInfoRequestHandler
-W Server::RequestHandlers::DaemonListRequestHandler
-W Server::RequestHandlers::DaemonStatusRequestHandler
-W Server::RequestHandlers::GSSAPIAuthRequestHandler
-W Server::RequestHandlers::IdentifyRequestHandler
-W Server::RequestHandlers::LogRequestHandler
-W Server::RequestHandlers::UserInfoRequestHandler
-W Server::RequestHandlers::UserListRequestHandler
-W Server::Requests::CommandRequest
-W Server::Requests::DaemonStateUpdateRequest
-W Server::UserBackend
-W Server::UserManager
+T Server::RequestHandlers::ConnectionRequestHandlerGroup
+T Server::RequestHandlers::DaemonRequestHandlerGroup
+T Server::RequestHandlers::UserRequestHandlerGroup
+T Server::Requests::CommandRequest
+T Server::Requests::DaemonStateUpdateRequest
diff --git a/Konzept/Netzwerk.txt b/Konzept/Netzwerk.txt
index 53cd9a1..852316d 100644
--- a/Konzept/Netzwerk.txt
+++ b/Konzept/Netzwerk.txt
@@ -1,57 +1,21 @@
-Ideen zum Netzwerkstack:
-
-
-Alles TLS-verschlüsselt.
-
-
-Initalisierung der Verbindung:
-
-Client/Dämon -> Server
-+---+---+---+-------+-------+---------------------+---------------------+
-| 1 | 2 | 3 | 4 | 5 - 6 | 7 | 8 |
-+---+---+---+-------+-------+---------------------+---------------------+
-|'M'|'A'|'D'|'C'/'D'|Version|min. Protokollversion|max. Protokollversion|
-+---+---+---+-------+-------+---------------------+---------------------+
-
-Server -> Client/Dämon
-+---+---+---+---+-------+----------------+---+
-| 1 | 2 | 3 | 4 | 5 - 6 | 7 | 8 |
-+---+---+---+---+-------+----------------+---+
-|'M'|'A'|'D'| 0 |Version|Protokollversion| 0 |
-+---+---+---+---+-------+----------------+---+
-
-
-Datenpakete:
-
-+-------------------+----------+-------+-------------------+-----
-| 1 - 2 | 3 - 4 | 5 - 6 | 7 - 8 | 9 - ...
-+-------------------+----------+-------+-------------------+-----
-|Typ des Datenpakets|Request-ID| 0 |Größe der Nutzdaten|Nutzdaten
-+-------------------+----------+-------+-------------------+-----
-
-Jeder Client/Dämon und der Kern verwalten ihre eigenen Request-IDs, und insgesamt wird ein Request durch Quelle und ID identifiziert.
-Damit es nicht zu Konflikten zwischen vom Kern und von Clients/Dämonen generierten IDs kommt, ist bei Client/Dämon-IDs das letzte Bit gesetzt, bei Kern-IDs nicht.
-
-
-Implementierte Pakettypen:
-
-0000: OK (leeres Paket)
-0001: Error (Fehlerinformationen)
-0002: Disconnect (leeres Paket)
-0010: Identify request (bisher: enthält den Namen des identifizierenden Dämons)
-0011: Identify reply (bisher: leer)
-
-Mögliche Pakettypen:
-
-* Zertifikat-Anfrage
-* Zertifikat-Antwort
-* Login-Anfrage -> Übertragung von Kerberos-Daten
-* Login-Antwort
-* Dämon-Discovery
-* Status-Anfrage (an Kern/Dämon)
-* Status-Antwort
-* Kommando (Shutdown, etc.)
-* Kommando-Antwort
-* Verbindung trennen - Anfrage und Antwort (implementiert)
-+ weitere Anfragen und Antworten...
-
+Netzwerk-Protokoll:
+
+OpenSSL-verschlüsseltes XML-basiertes Protokoll
+
+Format:
+
+<packet type="PacketType">
+ <value type="Type" name="Name" value="Value" />
+ ...
+
+ <list name="Name">
+ <entry>
+ values/lists...
+ </entry>
+ ...
+ </list>
+ ...
+</packet>
+
+value-Typen:
+ int, uint, int64, uint64, float, double, longdouble, string, binary (base64-codierte Binärdaten)