Utilitaire de suppression de comptes mail
1. But du programme
Cet utilitaire fait lui aussi partie des
utilitaires de gestion des comptes de GrAnd Site. Ce programme sera utilisé
pour la suppression de comptes utilisateur.
Il devra avoir accès à la base de données des comptes pour effectuer des recherches
et obtenir les informations relatives à un utilisateur.
La recherche de compte pourra se faire suivant
3 critères :
· le login du compte,
· le nom de l'utilisateur,
· la date de création du compte.
Une fois un compte trouvé, il faut se pencher
sur la manière dont on détruira ce dernier. Il ne faudra pas seulement se contenter
de détruire le compte utilisateur Linux (userdel), les entrées
dans les tables Comptes et Utilisateurs ainsi que le répertoire
utilisateur ;une sauvegarde des données relatives
au compte devra être effectuée :
· sauvegarde de la boîte aux lettres actuelle (contenue dans /var/spool/mail/),
· sauvegarde puis destruction du carnet d'adresses de l'utilisateur dans la
base de données (la sauvegarde du carnet d'adresse s'effectuera dans deux fichiers
: un fichier texte contenant toutes les informations du carnet et un autre contenant
ces mêmes informations, mais sous la forme de requêtes SQL pour permettre
une réinsertion rapide dans la table Carnets_Adresses),
· archivage du répertoire utilisateur dans un répertoire contenant tous les
comptes détruits (/home/oldaccounts).
Ce n'est qu'une fois ces opérations de sauvegardes effectuées que l'on pourra enfin détruire l'utilisateur, son répertoire et ses entrées dans la base de données.
Tout comme le programme précédent, ce programme est écrit en C en utilisateur les bibliothèques graphiques GTK++, et glade pour la conception de l'interface utilisateur.
2. Fonctionnement
a) Interface utilisateur
Comme pour le programme précédent, afin d'accéder à la fenêtre principale, il faudra que l'utilisateur entre le mot de passe de la base de données.
Une autre similitude avec l'utilitaire précédent
est que l'on est là aussi en présence d'une fenêtre divisée en deux zones :
· une zone d'informations sur le compte en cours (nom, prénom, login, mot de
passe et type de compte de l'utilisateur ; un bouton "Renseignements" permet
d'obtenir des renseignements plus précis sur le propriétaire du compte),
· une zone de contrôle permettant la recherche d'un compte (bouton "Rechercher"),
la destruction du compte en cours et la navigation entre les résultats obtenus
(si plusieurs comptes correspondent au critère de la recherche).
b) Recherche d'un compte
La
recherche d'un compte s'effectue par l'ouverture d'une boîte de dialogue permettant
la saisie du critère de recherche. Pour effectuer une recherche il faut choisir
parmi les trois critères de sélection mentionnés (le login, le nom, la date)
; pour cela, il suffit d'entrer les informations dans l'une des zones de texte
puis de sélectionner un critère.
Une fois que l'utilisateur clique sur le bouton "Lancer la recherche",
on ferme la boîte de dialogue de recherche, puis on teste le type de recherche
à effectuer.
Puis on soumet la requête. Si cette dernière est infructueuse, on affiche un message d'erreur et on efface les informations contenues dans les champs de la zone de gauche ; sinon on affiche dans la zone d'informations le compte trouvé (ou le premier des comptes trouvés) et on initialise les variables max (de type int) avec le nombre de résultats trouvés, début (de type MYSQL_ROW) avec le premier résultat de la recherche.
On peut alors naviguer parmi les résultats obtenus grâce aux boutons "Précédent" et "Suivant"...
c) Affichage des renseignements sur un compte
Si
un ou plusieurs comptes ont été trouvés lors d'une recherche, on peut alors
obtenir des renseignements supplémentaires le concernant en cliquant sur le
bouton "Renseignements".
L'événement produit par ce clic va faire appel
à la fonction on_renseignements_clicked.
Cette fonction est très simple : elle affiche une boîte de dialogue contenant
les champs correspondants au nom, au prénom, à l'adresse et au téléphone de
l'utilisateur, puis effectue une requête SQL sur la table Utilisateurs
pour pouvoir remplir ces champs.
d) Destruction d'un compte
Après avoir cliqué sur le bouton "Détruire
le compte", une boîte de dialogue s'ouvre pour demander confirmation.
Si l'utilisateur confirme la suppression, la fonction on_effacer_clicked
va effectuer plusieurs opérations :
· la sauvegarde du carnet d'adresses : une requête est envoyée pour demander
tous les enregistrements de la table Carnets_Adresses où l'utilisateur
est le login de compte en cours. Ensuite, elle va créer deux fichiers (carnet_login
et carnet_login.sql) dans le répertoire de l'utilisateur et va y placer
les informations contenues dans son carnet d'adresses:
carnet_login :
nom : Guillermet
prénom : Hervé
email : [email protected]
adresse : --
téléphone : --
----------
nom : Guironnet
prénom : Fabien
email : [email protected]
adresse : 78, rue du Rempart St-Claude
téléphone : 05-46-41-75-47
----------
carnet_login.sql :
insert into Carnets_Adresses values(NULL,'jtergal1','[email protected]','Guillermet','Hervé','--','--');
insert into Carnets_Adresses values(NULL,'jtergal1','[email protected]','Guironnet','Fabien','78, rue du Rempart St-Claude','05-46-41-75-47');
Ces deux échantillons montrent la différence entre les deux fichiers, le premier permet pour la visualisation rapide et le second une réinsertion rapide dans la base de données.
· le déplacement de la boîte aux lettres : on effectue une simple commande mv de la boîte contenue dans /var/spool/mail vers le répertoire utilisateur.
· archivage du compte : le répertoire utilisateur est archivé en tarball dans le répertoire /home/oldaccounts. Le nom de l'archive est élaboré à partir du login de l'utilisateur et de la date de suppression.
· destruction des entrées dans la base de données : on détruit tous les enregistrements relatifs au compte dans les tables Carnets_Adresses, Utilisateur et Comptes.
· destruction de l'utilisateur Linux : on détruit l'utilisateur dans la base de données utilisateurs de Linux, grâce à la commande userdel.
· destruction du répertoire utilisateur.
3. Conclusion
Cet utilitaire associé au précédent constituent les outils de maintenance des comptes mail de GrAnd Site et semblent remplir tout à fait leur rôle (aucun bogue décelé). Il reste désormais à étudier la conception d'un autre utilitaire nécessaire au bon fonctionnement de l'interface mail : la gestion des mailing-lists.