diff --git a/outils/postfix_données.sql b/outils/postfix_données.sql index 8b98754..5d00b70 100644 --- a/outils/postfix_données.sql +++ b/outils/postfix_données.sql @@ -28,7 +28,5 @@ INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("roland@tata.fr",554,"Parle à ma main, ma tête est malade.",1); -- Listes utilisateurs -INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,active) VALUES ("toto@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto -Dupont","exemple.fr/toto/",3000,3000,"administrateur",1); -INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES ("tata@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto -Dupont","exemple.fr/tata/",3000,3000,"utilisateur","ta.",1) +INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,active) VALUES ("toto@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto Dupont","exemple.fr/toto/",3000,3000,"administrateur",1); +INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES ("tata@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Tata Dupuis","exemple.fr/tata/",3000,3000,"utilisateur","ta.",1); diff --git a/services/fonctions/bdd/import_export.php b/services/fonctions/bdd/import_export.php index 3dce5f2..1c7916c 100644 --- a/services/fonctions/bdd/import_export.php +++ b/services/fonctions/bdd/import_export.php @@ -59,7 +59,7 @@ function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { $liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC); - echo "#~// Alias vituels\n"; + echo "#~// Alias_vituels\n"; foreach ($liste_alias_virtuels as $alias_virtuel => $champ_alias_virtuel) { echo implode(":", $champ_alias_virtuel)."\n"; } @@ -83,7 +83,7 @@ function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { $liste_liste_noire_destinataires = $sql->fetchAll(PDO::FETCH_ASSOC); - echo "#~// Liste noire destinataires\n"; + echo "#~// Liste_noire_destinataires\n"; foreach ($liste_liste_noire_destinataires as $liste_noire_destinataire => $champ_liste_noire_destinataire) { echo implode(":", $champ_liste_noire_destinataire)."\n"; } @@ -95,7 +95,7 @@ function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { $liste_liste_noire_expediteurs = $sql->fetchAll(PDO::FETCH_ASSOC); - echo "#~// Liste noire expéditeur\n"; + echo "#~// Liste_noire_expéditeur\n"; foreach ($liste_liste_noire_expediteurs as $liste_noire_expediteur => $champ_liste_noire_expediteur) { echo implode(":", $champ_liste_noire_expediteur)."\n"; } @@ -167,5 +167,157 @@ function importAliasVirtuelsUtilisateur($pdo,$alias_virtuel,$utilisateur,$active } } +/** + * Fonction important les données sauvegardées dans un fichier CSV par un administrateur avec la fonction exportDonneesMessagerie(). + */ +function importDonneesMessagerie($pdo,$type_donnees_csv,$donnees_csv) { + try { + switch ($type_donnees_csv) { + case "alias_virtuels": + $req = 'INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:destination,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':alias_virtuel',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':destination',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':active',$donnees_csv[3]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "domaines": + $req = 'INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,:defaut,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':domaine',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':defaut',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':active',$donnees_csv[3]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "liste_noire_destinataires": + $req = 'INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES (:courriel,:action,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':courriel',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':action',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':active',$donnees_csv[3]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "liste_noire_expediteurs": + $req = 'INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES (:courriel,:code_retour,:message,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':courriel',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':code_retour',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':message',htmlspecialchars($donnees_csv[3])); + $sql->bindValue(':active',$donnees_csv[4]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "utilisateurs": + $req = 'INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES (:utilisateur,:mot_de_passe,:nom_complet,:rep_perso,:uid,:gid,:privilege,:prefixe,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':utilisateur',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':mot_de_passe',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':nom_complet',htmlspecialchars($donnees_csv[3])); + $sql->bindValue(':rep_perso',$donnees_csv[4]); + $sql->bindValue(':uid',$donnees_csv[5]); + $sql->bindValue(':gid',$donnees_csv[6]); + $sql->bindValue(':privilege',$donnees_csv[7]); + $sql->bindValue(':prefixe',$donnees_csv[8]); + $sql->bindValue(':active',$donnees_csv[9]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + } + } + catch (\Exception $e) { + die ("Erreur de requête d'export des données de la base en CSV : ".$e->getMessage()); + } +} + +/** + * Fonction de purge des tables permettant une importation fidèle des données contenues dans un ficher d'export CSV généré par la fonction exportDonneesMessagerie(). + */ +function purgeTable($pdo,$table) { + try { + switch ($table) { + case "postfix_alias_virtuels": + $sql = $pdo->prepare('DELETE FROM postfix_alias_virtuels'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_alias_virtuels"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_domaines": + $sql = $pdo->prepare('DELETE FROM postfix_domaines'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_domaines"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_liste_noire_destinataires": + $sql = $pdo->prepare('DELETE FROM postfix_liste_noire_destinataires'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_liste_noire_destinataires"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_liste_noire_expediteurs": + $sql = $pdo->prepare('DELETE FROM postfix_liste_noire_expediteurs'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_liste_noire_expediteurs"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_utilisateurs": + $sql = $pdo->prepare('DELETE FROM postfix_utilisateurs'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_utilisateurs"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + } + } + catch (\Exception $e) { + die ("Erreur de requête de purge d'une table : ".$e->getMessage()); + } +} ?> \ No newline at end of file diff --git a/services/fonctions/messages/messages.php b/services/fonctions/messages/messages.php index f44bbd7..8e3a998 100644 --- a/services/fonctions/messages/messages.php +++ b/services/fonctions/messages/messages.php @@ -58,7 +58,8 @@ function retourneMessage($type_message,$num_message) { 20 => "
Restauration de la base de données
+Attention, toutes les données non sauvegardés dans chaque section sélectionnée et présente dans votre fichier de restauration seront écrasées !
+ +_HEREDOC_; +} + ?> \ No newline at end of file diff --git a/services/traitements/import_export/importAliasVirtuelsUtilisateur.php b/services/traitements/import_export/importAliasVirtuelsUtilisateur.php index 8c479ed..121162c 100644 --- a/services/traitements/import_export/importAliasVirtuelsUtilisateur.php +++ b/services/traitements/import_export/importAliasVirtuelsUtilisateur.php @@ -19,9 +19,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels. $types_donnees_a_exporter=array(); if (isset($_FILES['import_alias_virtuels_csv']) && !empty($_FILES['import_alias_virtuels_csv']['name']) && $_FILES['import_alias_virtuels_csv']['type']=="text/csv" && $_FILES['import_alias_virtuels_csv']['error']===0) { if ($_FILES['import_alias_virtuels_csv']['size']<2000000) { - if (file_exists($_FILES['import_alias_virtuels_csv']['tmp_name'])) { - echo "Le fichier ".$_FILES['import_alias_virtuels_csv']['tmp_name']." existe.\n"; if (($fichier_csv = fopen($_FILES['import_alias_virtuels_csv']['tmp_name'], "r")) !== FALSE) { while (($donnees_csv = fgetcsv($fichier_csv, 1000, ":")) !== FALSE) { // Vérification de la légitimité des alais virtuels importés @@ -30,7 +28,7 @@ if (isset($_FILES['import_alias_virtuels_csv']) && !empty($_FILES['import_alias_ // Vérification de l'existence du domaine de l'alias virtuel soumis $domaine_alias_virtuel_csv=explode('@', $donnees_csv[1]); if (in_array($domaine_alias_virtuel_csv[1],array_column($liste_domaines,'domaine'))) { - // Vérification de la coérence de l'état d'activation de l'alias virtuel soumis + // Vérification de la cohérence de l'état d'activation de l'alias virtuel soumis if ($donnees_csv[3]==0 || $donnees_csv[3]==1) { // Omission des doublons $liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo); diff --git a/services/traitements/import_export/importDonneesBdd.php b/services/traitements/import_export/importDonneesBdd.php index e69de29..baa05dc 100644 --- a/services/traitements/import_export/importDonneesBdd.php +++ b/services/traitements/import_export/importDonneesBdd.php @@ -0,0 +1,148 @@ + \ No newline at end of file