diff options
Diffstat (limited to 'src/analysis/db/protocol.h')
-rw-r--r-- | src/analysis/db/protocol.h | 131 |
1 files changed, 121 insertions, 10 deletions
diff --git a/src/analysis/db/protocol.h b/src/analysis/db/protocol.h index f673c4b..7707058 100644 --- a/src/analysis/db/protocol.h +++ b/src/analysis/db/protocol.h @@ -29,8 +29,12 @@ /** * Version de la définition courante du protocole. */ -#define CDB_PROTOCOL_VERSION 0xc0de0004 +#define CDB_PROTOCOL_VERSION 0xc0de0005 +/** + * 0xc0de0005 : + * - création des rôles d'aministrateur et d'analyste + */ @@ -43,34 +47,58 @@ -/* Comportement vis à vis des éléments */ -typedef enum _DBStorage -{ - DBS_ALL_LOCAL = 0x00, /* Enregistrements locaux */ - DBS_ALL_REMOTE = 0x01, /* Enregistrements distants */ - DBS_MAX = 0x01 - -} DBStorage; +/* Rôle à envoyer lors des présentations */ +typedef enum _ClientRole +{ + CRL_UNDEFINED = 0, /* Rôle non défini */ + CRL_ADMIN = 1, /* Rôle d'administrateur */ + CRL_ANALYST = 2, /* Rôle d'analyste */ +} ClientRole; +/* Niveaux de privilèges */ +typedef enum _ServerPrivLevels +{ + SPV_UNDEFINED = 0, /* Rôle non défini */ + SPV_ADMINISTRATOR = 1, /* Pleins pouvoirs */ + SPV_MANAGER = 2, /* Gestionnaire de comptes */ + SPV_CREATOR = 3, /* Gestionnaire d'analyses */ + SPV_ANALYST = 4, /* Analyste de binaires */ +} ServerPrivLevels; /** - * Une fois la connexion établie, les paquets ont tous la forme suivante : + * Précisions pour la commande DBC_LOADING_STATUS. + */ +/* Eléments de base nécessaires */ +typedef enum _LoadingStatusHint +{ + LSH_READY = 0, /* (Plus) rien n'est requis */ + LSH_ON_WAIT_LIST = 1, /* Concurrence des connexions */ + LSH_NEED_CONTENT = 2, /* Suppléments nécessaires */ + LSH_NEED_FORMAT = 3, /* Suppléments nécessaires */ + LSH_NEED_ARCH = 4, /* Suppléments nécessaires */ +} LoadingStatusHint; + + + + +/** + * Une fois la connexion établie, les paquets ont tous la forme suivante : * * [ type de collection visée ; cf. DBFeatures ] * [ action à mener ; cf. DBAction ] @@ -114,9 +142,91 @@ typedef enum _DBAction */ typedef enum _DBCommand { + /* ------------------------- Commandes à portée générale ------------------------- */ + + /** + * Le client envoie un tout premier paquet de la forme suivante : + * + * [ Ordre de sauvegarde : DBC_HELO ] + * [ Protocole supporté : CDB_PROTOCOL_VERSION ] + * [ Rôle visé ; cf ClientRole ] + * [ Compléments selon le rôle visé ] + * + * Le serveur effectue les validations et renvoie un bilan : + * + * [ Ordre de sauvegarde : DBC_WELCOME ] + * [ Statut d'exécution ; cf. DBError ] + * + */ + DBC_HELO, /* Connexion initiale C -> S */ DBC_WELCOME, /* Réponse initiale S -> C */ + + /* ------------------------ Commandes pour administrateur ------------------------ */ + + /** + * Le client envoie une requête pour lister les binaires de la forme suivante : + * + * [ Demande de liste : DBC_LIST_BINARIES ] + * + * Le serveur liste tous les répertoires présents et renvoie cette liste : + * + * [ Marqueur de liste : DBC_EXISTING_BINARIES ] + * [ Quantité d'éléments en ULEB128 ] + * [ Noms en chaîne RLE... ] + * + */ + + DBC_LIST_BINARIES, /* Fourniture des identifiants */ + DBC_EXISTING_BINARIES, /* Eléments présents */ + + + /* ------------------------ Commandes pour analyste ------------------------ */ + + /** + * Gestion de la commande 'DBC_LOADING_STATUS'. + * + * Le serveur envoie un statut de prise en charge au début d'une connexion : + * + * [ Indication du serveur : DBC_LOADING_STATUS] + * [ Statut courant ; cf. LoadingStatusHint ] + * + */ + + DBC_LOADING_STATUS, /* Indications initiales */ + + /** + * Gestion de la commande 'DBC_SET_CONTENT'. + * + * Le client connecté envoie un paquet de la forme suivante : + * + * [ Ordre de sauvegarde : DBC_SET_CONTENT ] + * [ Quantité des données suivantes ] + * [ Position du contenu + données de stockage ] + * + * Le serveur s'exécute et renvoie un bilan : + * + * [ Ordre de sauvegarde : DBC_SET_CONTENT ] + * [ Statut d'exécution ; cf. DBError ] + * + */ + + DBC_SET_CONTENT, + + + + + + + + + + + + + + /** * Gestion de la commande 'DBC_SAVE'. * @@ -329,6 +439,7 @@ typedef enum _DBError DBE_XML_VERSION_ERROR, /* Vieille archive présente */ DBE_DB_LOADING_ERROR, /* Erreur pendant le chargement*/ + DBE_WRONG_HASH, /* Empreinte inattendue */ DBE_XML_ERROR, /* Erreur lors d'une définition*/ DBE_SNAPSHOT_NOT_FOUND, /* Instantané non trouvé */ DBE_SNAPSHOT_RESTORE_FAILURE, /* Echec d'une restauration */ |