Ajout de la fonctionnalité de gestion des listes noires + refonte du système d'affichage des messages à l'utilisateur + création de la notion de page d'accueil + modification des paramètres de certaines fonctions + contôle de l'entrée d'informations utilisateurs sur les ajouts (faille XSS) + contrôle de l'existence d'un domaine lors de la création d'un alias virtuel + renommage de quelques variables

pull/5/head
ycharbi 3 years ago
parent 4651df9c62
commit 2f75db187a

@ -8,7 +8,7 @@ echo <<<_HEREDOC_
<div>
<table>
<tr>
<td><span>Courtail</span></td>
<td><a href="/pages/gestion/administration.php?page=accueil">Courtail</a></td>
<td><a href="/pages/gestion/administration.php?page=alias">Alias</a></td>
_HEREDOC_;
if (testPrivileges()=="administrateur") {

@ -11,64 +11,16 @@ testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.php");
/**
* Affichage d'une bannière d'état sur l'action précedemment effectuée.
*/
if (isset($_GET['erreur']) && !empty($_GET['erreur'])) {
switch ($_GET['erreur']) {
case 1:
echo "<p class=\"message_suppr_ko\">Erreur : aucun alias virtuel supprimé.</p>";
break;
case 2:
echo "<p class=\"message_ajout_ko\">Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.</p>";
break;
case 3:
echo "<p class=\"message_ajout_ko\">Erreur : L'alias virtuel est déjà existant.</p>";
break;
case 4:
echo "<p class=\"message_ajout_ko\">Erreur : Code d'erreur générique (HY000) signifiant probablement que la base SQLite n'est pas accessible en écriture. Il faut que la base et le répertoire <i>bdd</i> appartiennent à <i>www-data</i>.</p>";
break;
case 5:
echo "<p class=\"message_suppr_ko\">Erreur : aucun domaine supprimé.</p>";
break;
case 6:
echo "<p class=\"message_ajout_ko\">Erreur : aucun domaine créé car une donnée est erronée ou manquante.</p>";
break;
case 7:
echo "<p class=\"message_ajout_ko\">Erreur : Le domaine est déjà existant.</p>";
break;
case 8:
echo "<p class=\"message_ajout_ko\">Erreur : Le domaine par défaut n'a pas été modifié.</p>";
break;
}
retourneMessage('erreurs',$_GET['erreur']);
}
elseif (isset($_GET['succes']) && !empty($_GET['succes'])) {
switch ($_GET['succes']) {
case 1:
echo "<p class=\"message_ajout_ok\">Succès : alias virtuel créé avec succès.</p>";
break;
case 2:
echo "<p class=\"message_modif_ok\">Succès : alias virtuel modifiés avec succès.</p>";
break;
case 3:
echo "<p class=\"message_suppr_ok\">Succès : alias virtuel supprimé avec succès.</p>";
break;
case 4:
echo "<p class=\"message_ajout_ok\">Succès : utilisateur changé en ".$_SESSION['pseudo_utilisateur']." avec succès.</p>";
break;
case 5:
echo "<p class=\"message_ajout_ok\">Succès : domaine créé avec succès.</p>";
break;
case 6:
echo "<p class=\"message_modif_ok\">Succès : domaine modifiés avec succès.</p>";
break;
case 7:
echo "<p class=\"message_suppr_ok\">Succès : domaine supprimé avec succès.</p>";
break;
case 8:
echo "<p class=\"message_suppr_ok\">Succès : domaine défini par défaut avec succès.</p>";
break;
}
retourneMessage('succes',$_GET['succes']);
}
/**
@ -76,6 +28,9 @@ elseif (isset($_GET['succes']) && !empty($_GET['succes'])) {
*/
if (isset($_GET['page']) && !empty($_GET['page'])) {
switch ($_GET['page']) {
case 'accueil':
require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/alias_virtuels.php");
break;
case 'alias':
require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/alias_virtuels.php");
break;
@ -85,8 +40,14 @@ if (isset($_GET['page']) && !empty($_GET['page'])) {
case 'listes_noires':
require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/listes_noires.php");
break;
default:
echo "<h1>Cette page n'existe pas.</h1>";
break;
}
}
else {
echo "<h1>Cette page n'existe pas.</h1>";
}
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php");

@ -48,14 +48,14 @@ function listeAliasVirtuelsPostfix($pdo) {
/**
* Fonction d'ajout d'un alias virtuel.
*/
function ajoutAliasVirtuelsPostfix($pdo) {
function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_virtuel) {
try {
// Insertion de l'alias virtuel entré par l'utilisateur et lié avec son adresse
$req='INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:courriel,1)';
$sql=$pdo->prepare($req);
$sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']);
$sql->bindValue(':alias_virtuel',retournePrefixeUtilisateurPostfix($pdo).$_POST['nom_alias']."@".$_POST['choix_domaine_alias']);
$sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurPostfix($pdo).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,49));
$sql->execute();
if ($sql->rowCount() == 1){
@ -92,10 +92,10 @@ function ajoutAliasVirtuelsPostfix($pdo) {
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des alias virtuels d'un utilisateur.
* Elle occasionnera peut-être des baisses de performance si un très grand nombre d'alias virtuels existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée).
*/
function modifEtatAliasVirtuelsPostfix($pdo) {
function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
try {
$compteModifs=0;
foreach ($_POST as $id_alias_virtuel => $etat_alias_virtuel) {
foreach ($retour_form as $id_alias_virtuel => $etat_alias_virtuel) {
$req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
$sql=$pdo->prepare($req);
@ -124,12 +124,12 @@ function modifEtatAliasVirtuelsPostfix($pdo) {
/**
* Fonction de suppression d'un alias virtuel.
*/
function supprAliasVirtuelsPostfix($pdo) {
function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) {
try {
$req='DELETE FROM postfix_alias_virtuels WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_alias_virtuel',$_GET['supprAliasVirtuel']);
$sql->bindValue(':id_alias_virtuel',$suppr_alias_virtuel);
$sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']);
$sql->execute();

@ -73,14 +73,14 @@ function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) {
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de modification d'état pour les alias virtuels : ".$e->getMessage());
die ("Erreur de requête de modification de préférence pour le domaine par défaut : ".$e->getMessage());
}
}
}
/**
* Fonction d'ajout d'un alias virtuel.
* Fonction d'ajout d'un domaine.
*/
function ajoutDomainePostfix($pdo,$nom_domaine) {
try {
@ -88,7 +88,7 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
$req='INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,0,1)';
$sql=$pdo->prepare($req);
$sql->bindValue(':domaine',$nom_domaine);
$sql->bindValue(':domaine',substr(htmlspecialchars($nom_domaine),0,49));
$sql->execute();
if ($sql->rowCount() == 1){
@ -105,7 +105,7 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
if ($code_retour[0]=="23000") {
// Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "domaine" de la table "postfix_domaines" est violée. Le domaine envoyé via le formulaire par l'administrateur a déjà été renseigné dans la base
header ("Location: /pages/gestion/administration.php?page=domaines&erreur=3");
header ("Location: /pages/gestion/administration.php?page=domaines&erreur=7");
die();
}
elseif ($code_retour[0]=="HY000") {
@ -115,7 +115,7 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête d'ajout d'alias virtuel : ".$e->getMessage());
die ("Erreur de requête d'ajout d'un domaine : ".$e->getMessage());
}
}
}
@ -125,10 +125,10 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des domaines d'un utilisateur.
* Elle occasionnera peut-être des baisses de performance si un très grand nombre de domaines existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée).
*/
function modifEtatDomainesPostfix($pdo) {
function modifEtatDomainesPostfix($pdo,$retour_form) {
try {
$compteModifs=0;
foreach ($_POST as $id_domaine => $etat_domaine) {
foreach ($retour_form as $id_domaine => $etat_domaine) {
$req='UPDATE postfix_domaines SET active=:etat_domaine WHERE id=:id_domaine AND defaut!=1';
$sql=$pdo->prepare($req);
@ -148,7 +148,7 @@ function modifEtatDomainesPostfix($pdo) {
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de modification d'état pour les alias virtuels : ".$e->getMessage());
die ("Erreur de requête de modification d'état pour les domaines : ".$e->getMessage());
}
}
}
@ -156,12 +156,12 @@ function modifEtatDomainesPostfix($pdo) {
/**
* Fonction de suppression d'un domaine.
*/
function supprDomainesPostfix($pdo) {
function supprDomainesPostfix($pdo,$suppr_domaine) {
try {
$req='DELETE FROM postfix_domaines WHERE id=:id_domaine AND defaut!=1';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_domaine',$_GET['supprDomaine']);
$sql->bindValue(':id_domaine',$suppr_domaine);
$sql->execute();
if($sql->rowCount() == 1){
@ -182,7 +182,7 @@ function supprDomainesPostfix($pdo) {
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de suppression d'un alias virtuel : ".$e->getMessage());
die ("Erreur de requête de suppression d'un domaine : ".$e->getMessage());
}
}
}

@ -0,0 +1,261 @@
<?php
/**
* Page de fonctions concernant les entrées de la liste noire des destinataires.
*/
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
/**
* Fonction listant les entrées de la liste noire des destinataires.
*/
function listeEntreeListeNoireDstPostfix($pdo) {
try {
$req = 'SELECT * FROM postfix_liste_noire_destinataires';
$sql=$pdo->prepare($req);
$sql->execute();
$liste_entree_liste_noire_dst = $sql->fetchAll();
return $liste_entree_liste_noire_dst;
}
catch (\Exception $e) {
die ("Erreur de requête de selection des entrées de liste noire destinataires pour \"$base\" : ".$e->getMessage());
}
}
/**
* Fonction listant les entrées de la liste noire des expéditeurs.
*/
function listeEntreeListeNoireExpPostfix($pdo) {
try {
$req = 'SELECT * FROM postfix_liste_noire_expediteurs';
$sql=$pdo->prepare($req);
$sql->execute();
$liste_entree_liste_noire_exp = $sql->fetchAll();
return $liste_entree_liste_noire_exp;
}
catch (\Exception $e) {
die ("Erreur de requête de selection des entrées de liste noire expéditeurs pour \"$base\" : ".$e->getMessage());
}
}
/**
* Fonction d'ajout d'une entrée de liste noir destinataire.
*/
function ajoutEntreeListeNoireDstPostfix($pdo,$courriel_entree_liste_noire_dst,$action_entree_liste_noire_dst) {
try {
// Insertion de l'entrée de liste noire de destinataires renseignée par l'administrateur
$req='INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES (:courriel,:action,1)';
$sql=$pdo->prepare($req);
$sql->bindValue(':courriel',substr(htmlspecialchars($courriel_entree_liste_noire_dst),0,49));
$sql->bindValue(':action',$action_entree_liste_noire_dst);
$sql->execute();
if ($sql->rowCount() == 1){
return true;
}
else {
return false;
}
}
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="23000") {
// Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "courriel" de la table "postfix_liste_noire_destinataires" est violée. L'adresse de destination envoyé via le formulaire par l'utilisateur a déjà été renseignée dans la base
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=12");
die();
}
elseif ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base de données n'est accessible qu'en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=4");
die();
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête d'ajout de l'entrée de liste noire de destinataires : ".$e->getMessage());
}
}
}
/**
* Fonction d'ajout d'une entrée de liste noir expéditeurs.
*/
function ajoutEntreeListeNoireExpPostfix($pdo,$courriel_entree_liste_noire_exp,$code_retour_entree_liste_noire_exp) {
try {
// Insertion de l'entrée de liste noire d'expéditeurs renseignée par l'administrateur
$req='INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES (:courriel,:code_retour,"Votre message a été rejeté par le serveur car votre adresse est en liste noire.",1)';
$sql=$pdo->prepare($req);
$sql->bindValue(':courriel',substr(htmlspecialchars($courriel_entree_liste_noire_exp),0,49));
$sql->bindValue(':code_retour',$code_retour_entree_liste_noire_exp);
$sql->execute();
if ($sql->rowCount() == 1){
return true;
}
else {
return false;
}
}
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="23000") {
// Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "courriel" de la table "postfix_liste_noire_expediteurs" est violée. L'adresse de destination envoyé via le formulaire par l'utilisateur a déjà été renseignée dans la base
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=16");
die();
}
elseif ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base de données n'est accessible qu'en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=4");
die();
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête d'ajout de l'entrée de liste noire d'expéditeurs : ".$e->getMessage());
}
}
}
/**
* Fonction d'activation/désactivation d'une entrée dans la liste noire des destinataires.
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des entrées de la liste noire des destinataires du serveur.
* Elle occasionnera peut-être des baisses de performance si un très grand d'entrées existent (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée).
*/
function modifEntreeListeNoireDstPostfix($pdo,$retour_form) {
try {
$compteModifs=0;
foreach ($retour_form as $id_entree_liste_noire_dst => $etat_entree_liste_noire_dst) {
$req='UPDATE postfix_liste_noire_destinataires SET active=:etat_entree_liste_noire_dst WHERE id=:id_entree_liste_noire_dst';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_entree_liste_noire_dst',$etat_entree_liste_noire_dst);
$sql->bindValue(':id_entree_liste_noire_dst',$id_entree_liste_noire_dst);
$sql->execute();
}
}
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=10");
die();
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de modification d'état pour l'entrée de liste noire de destinataires : ".$e->getMessage());
}
}
}
/**
* Fonction d'activation/désactivation d'une entrée dans la liste noire des expéditeurs.
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des entrées de la liste noire des expéditeurs du serveur.
* Elle occasionnera peut-être des baisses de performance si un très grand d'entrées existent (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée).
*/
function modifEntreeListeNoireExpPostfix($pdo,$retour_form) {
try {
$compteModifs=0;
foreach ($retour_form as $id_entree_liste_noire_exp => $etat_entree_liste_noire_exp) {
$req='UPDATE postfix_liste_noire_expediteurs SET active=:etat_entree_liste_noire_exp WHERE id=:id_entree_liste_noire_exp';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_entree_liste_noire_exp',$etat_entree_liste_noire_exp);
$sql->bindValue(':id_entree_liste_noire_exp',$id_entree_liste_noire_exp);
$sql->execute();
}
}
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=14");
die();
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de modification d'état pour l'entrée de liste noire d'expéditeurs : ".$e->getMessage());
}
}
}
/**
* Fonction de suppression d'une entrée de liste noire de destinataires.
*/
function supprEntreeListeNoireDstPostfix($pdo) {
try {
$req='DELETE FROM postfix_liste_noire_destinataires WHERE id=:id_entree_liste_noire_dst';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_entree_liste_noire_dst',$_GET['supprEntreeListeNoireDst']);
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
else {
return false;
}
}
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=4");
die();
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de suppression d'une entrée de liste noire de destinataires : ".$e->getMessage());
}
}
}
/**
* Fonction de suppression d'une entrée de liste noire d'expéditeurs.
*/
function supprEntreeListeNoireExpPostfix($pdo) {
try {
$req='DELETE FROM postfix_liste_noire_expediteurs WHERE id=:id_entree_liste_noire_exp';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_entree_liste_noire_exp',$_GET['supprEntreeListeNoireExp']);
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
else {
return false;
}
}
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=4");
die();
}
else {
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de suppression d'une entrée de liste noire d'expéditeurs : ".$e->getMessage());
}
}
}
?>

@ -0,0 +1,46 @@
<?php
/**
* Fonction affichant les messages de retour des traitements site lorsqu'elle est interrogée.
*/
function retourneMessage($type_message,$num_message) {
$liste_messages = array (
"succes" => array(
1 => "<p class=\"message_succes\">Succès : alias virtuel créé avec succès.</p>",
2 => "<p class=\"message_succes\">Succès : alias virtuel modifiés avec succès.</p>",
3 => "<p class=\"message_succes\">Succès : alias virtuel supprimé avec succès.</p>",
4 => "<p class=\"message_succes\">Succès : utilisateur changé en ".$_SESSION['pseudo_utilisateur']." avec succès.</p>",
5 => "<p class=\"message_succes\">Succès : domaine créé avec succès.</p>",
6 => "<p class=\"message_succes\">Succès : domaine modifiés avec succès.</p>",
7 => "<p class=\"message_succes\">Succès : domaine supprimé avec succès.</p>",
8 => "<p class=\"message_succes\">Succès : domaine défini par défaut avec succès.</p>",
9 => "<p class=\"message_succes\">Succès : l'entrée de liste noire destiataires a été créée avec succès.</p>",
10 => "<p class=\"message_succes\">Succès : l'état de l'entrée de liste noire destiataires a été modifié avec succès.</p>",
11 => "<p class=\"message_succes\">Succès : l'entrée de liste noire destinataires a été supprimée avec succès.</p>",
12 => "<p class=\"message_succes\">Succès : l'entrée de liste noire expéditeurs a été créée avec succès.</p>",
13 => "<p class=\"message_succes\">Succès : l'état de l'entrée de liste noire expéditeurs a été modifié avec succès.</p>",
14 => "<p class=\"message_succes\">Succès : l'entrée de liste noire expéditeurs a été supprimée avec succès.</p>"),
"erreurs" => array(
1 => "<p class=\"message_erreur\">Erreur : aucun alias virtuel supprimé.</p>",
2 => "<p class=\"message_erreur\">Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.</p>",
3 => "<p class=\"message_erreur\">Erreur : L'alias virtuel est déjà existant.</p>",
4 => "<p class=\"message_erreur\">Erreur : Code d'erreur générique (HY000) signifiant probablement que la base SQLite n'est pas accessible en écriture. Il faut que la base et le répertoire <i>bdd</i> appartiennent à <i>www-data</i>.</p>",
5 => "<p class=\"message_erreur\">Erreur : aucun domaine supprimé.</p>",
6 => "<p class=\"message_erreur\">Erreur : aucun domaine créé car une donnée est erronée ou manquante.</p>",
7 => "<p class=\"message_erreur\">Erreur : le domaine est déjà existant.</p>",
8 => "<p class=\"message_erreur\">Erreur : le domaine par défaut n'a pas été modifié.</p>",
9 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire destinataires n'a pas été ajouté car une donnée est erronée ou manquante.</p>",
10 => "<p class=\"message_erreur\">Erreur : l'état de l'entrée de liste noire destinataires n'a pas été modifié.</p>",
11 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire destinataires n'a pas été supprimée.</p>",
12 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire destinataires n'a pas été ajouté car elle est déjà existante.</p>",
13 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire expéditeurs n'a pas été ajouté car une donnée est erronée ou manquante.</p>",
14 => "<p class=\"message_erreur\">Erreur : l'état de l'entrée de liste noire expéditeurs n'a pas été modifié.</p>",
15 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire expéditeurs n'a pas été supprimée.</p>",
16 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire expéditeurs n'a pas été ajouté car elle est déjà existante.</p>")
);
echo $liste_messages[$type_message][$num_message];
}
?>

@ -61,11 +61,10 @@ _HEREDOC_;
echo "<span>$prefixe_utilisateur</span>";
}
?>
<input type="text" id="nom_pour_filtre" name="nom_alias" placeholder="alias*" onkeyup="filtreValeurs();" required>
<input type="text" id="nom_pour_filtre" name="nom_alias_virtuel" placeholder="alias*" onkeyup="filtreValeurs();" required>
<span>@</span>
<select name="choix_domaine_alias">
<select name="choix_domaine_alias_virtuel">
<?php
var_dump($liste_domaines);
try {
foreach ($liste_domaines as $domaine_bdd => $domaine) {
echo "<option value=\"".$domaine['domaine']."\">".$domaine['domaine']."</option>\n";

@ -46,6 +46,7 @@ $liste_domaines = listeDomainesPostfix($pdo);
}
?>
</select>
<!-- Définition du domaine sélectionné comme étant par défaut -->
<input type="submit" value="Définir par défaut">
</form>

@ -4,15 +4,112 @@
* Page de gestion importé par la page d'administration centrale permettant la gestion des listes noires.
*/
/*
session_start();
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_entete.php");
*/
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
if (testPrivileges()!="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2");
die();
}
?>
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
$liste_entrees_liste_noires_dst=listeEntreeListeNoireDstPostfix($pdo);
$liste_entrees_liste_noires_exp=listeEntreeListeNoireExpPostfix($pdo);
/**
* Permet d'inclure la page d'administration des listes noires déstinataires ou expéditeurs dédiée.
*/
echo <<<_heredoc_
<div>
<h1>Choisissez un type de liste noire à éditer :</h1>
<a href="/pages/gestion/administration.php?page=listes_noires&sousPage=destinataires">Destinataires</a>
<a href="/pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs">Expéditeurs</a>
_heredoc_;
if (isset($_GET['sousPage']) && !empty($_GET['sousPage'])) {
switch ($_GET['sousPage']) {
case 'destinataires':
echo <<<_HEREDOC_
<h1>Ajouter une entrée dans la liste noire des destinataires</h1>
<form action="/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php" method="post">
<input type="text" id="nom_pour_filtre" name="courriel_entree_liste_noire_dst" placeholder="utilisateur@domaine.tld*" onkeyup="filtreValeurs();" required>
<select name="choix_action_entree_liste_noire_dst">
<option value="REJECT">REJECT</option>
<option value="DEFER">DEFER</option>
</select>
<input type="submit" value="Ajouter">
</form>
<h1>Entrées de la liste noire des destinataires du serveur de messagerie</h1>
<form class="" action="/services/traitements/liste_noire_dst/editEntreeListeNoireDst.php" method="post">
<ul id="liste_pour_filtre">
_HEREDOC_;
/**
* Liste des entrées de la liste noire des destinataires.
*/
try {
foreach ($liste_entrees_liste_noires_dst as $liste_entrees_liste_noires_dst_cles => $liste_entrees_liste_noires_dst_valeurs) {
echo "<li><input type=\"radio\" name=\"".$liste_entrees_liste_noires_dst_valeurs['id']."\" value=\"1\"";
if (isset($liste_entrees_liste_noires_dst_valeurs['active']) && !empty($liste_entrees_liste_noires_dst_valeurs['active']) && $liste_entrees_liste_noires_dst_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$liste_entrees_liste_noires_dst_valeurs['id']."\" value=\"0\"";
if (isset($liste_entrees_liste_noires_dst_valeurs['active']) && $liste_entrees_liste_noires_dst_valeurs['active']=="0") echo " checked";
echo "><table><tr><td><p>".$liste_entrees_liste_noires_dst_valeurs['courriel']."</p></td><td><p>".$liste_entrees_liste_noires_dst_valeurs['action']."</p></td></tr></table><label class=\"input-label-supprimer-valeur\" for=\"supprimer-valeur-".$liste_entrees_liste_noires_dst_valeurs['id']."\">Supprimer</label><input type=\"checkbox\" class=\"input-checkbox-supprimer-valeur visuellement-cache\" id=\"supprimer-valeur-".$liste_entrees_liste_noires_dst_valeurs['id']."\"><a class=\"confirmation-suppression\" href=\"/services/traitements/liste_noire_dst/supprEntreeListeNoireDst.php?supprEntreeListeNoireDst=".$liste_entrees_liste_noires_dst_valeurs['id']."\">Confirmer la suppression</a></li>\n";
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
echo <<<_HEREDOC_
</ul>
<input type="submit" value="Appliquer">
</form>
_HEREDOC_;
break;
case 'expediteurs':
echo <<<_HEREDOC_
<h1>Ajouter une entrée dans la liste noire des expéditeurs</h1>
<form action="/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php" method="post">
<input type="text" id="nom_pour_filtre" name="courriel_entree_liste_noire_exp" placeholder="utilisateur@domaine.tld*" onkeyup="filtreValeurs();" required>
<select name="choix_code_retour_entree_liste_noire_exp">
<option value="554">REJECT</option>
</select>
<input type="submit" value="Ajouter">
</form>
<h1>Entrées de la liste noire des expéditeurs du serveur de messagerie</h1>
<form class="" action="/services/traitements/liste_noire_exp/editEntreeListeNoireExp.php" method="post">
<ul id="liste_pour_filtre">
_HEREDOC_;
/**
* Liste des entrées de la liste noire des destinataires.
*/
try {
foreach ($liste_entrees_liste_noires_exp as $liste_entrees_liste_noires_exp_cles => $liste_entrees_liste_noires_exp_valeurs) {
echo "<li><input type=\"radio\" name=\"".$liste_entrees_liste_noires_exp_valeurs['id']."\" value=\"1\"";
if (isset($liste_entrees_liste_noires_exp_valeurs['active']) && !empty($liste_entrees_liste_noires_exp_valeurs['active']) && $liste_entrees_liste_noires_exp_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$liste_entrees_liste_noires_exp_valeurs['id']."\" value=\"0\"";
if (isset($liste_entrees_liste_noires_exp_valeurs['active']) && $liste_entrees_liste_noires_exp_valeurs['active']=="0") echo " checked";
echo "><table><tr><td><p>".$liste_entrees_liste_noires_exp_valeurs['courriel']."</p></td><td><p>".$liste_entrees_liste_noires_exp_valeurs['code_retour']."</p></td></tr></table><label class=\"input-label-supprimer-valeur\" for=\"supprimer-valeur-".$liste_entrees_liste_noires_exp_valeurs['id']."\">Supprimer</label><input type=\"checkbox\" class=\"input-checkbox-supprimer-valeur visuellement-cache\" id=\"supprimer-valeur-".$liste_entrees_liste_noires_exp_valeurs['id']."\"><a class=\"confirmation-suppression\" href=\"/services/traitements/liste_noire_exp/supprEntreeListeNoireExp.php?supprEntreeListeNoireExp=".$liste_entrees_liste_noires_exp_valeurs['id']."\">Confirmer la suppression</a></li>\n";
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
echo <<<_HEREDOC_
</ul>
<input type="submit" value="Appliquer">
</form>
_HEREDOC_;
break;
default:
echo " <h1>Cette page n'existe pas.</h1>";
break;
}
}
?>
<?php //require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php"); ?>
<script src="/fichiers/js/filtre.js"></script>
</div>

@ -11,8 +11,15 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
if (isset($_POST['nom_alias']) && isset($_POST['choix_domaine_alias']) && !empty($_POST['nom_alias']) && !empty($_POST['choix_domaine_alias'])) {
ajoutAliasVirtuelsPostfix($pdo);
// Permet le contrôle du domaine renseigné par l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo);
var_dump($liste_domaines,$_POST);
//die();
if (isset($_POST['nom_alias_virtuel']) && isset($_POST['choix_domaine_alias_virtuel']) && !empty($_POST['nom_alias_virtuel']) && !empty($_POST['choix_domaine_alias_virtuel']) && in_array($_POST['choix_domaine_alias_virtuel'],array_column($liste_domaines,'domaine'))) {
ajoutAliasVirtuelsPostfix($pdo,$_POST['nom_alias_virtuel'],$_POST['choix_domaine_alias_virtuel']);
header ("Location: /pages/gestion/administration.php?page=alias&succes=1");
die();
}

@ -9,7 +9,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
modifEtatAliasVirtuelsPostfix($pdo);
modifEtatAliasVirtuelsPostfix($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=alias&succes=2");
?>

@ -9,7 +9,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
if(isset($_GET['supprAliasVirtuel']) && !empty($_GET['supprAliasVirtuel']) && supprAliasVirtuelsPostfix($pdo)) {
if(isset($_GET['supprAliasVirtuel']) && !empty($_GET['supprAliasVirtuel']) && supprAliasVirtuelsPostfix($pdo,$_GET['supprAliasVirtuel'])) {
header ("Location: /pages/gestion/administration.php?page=alias&succes=3");
}
else {

@ -9,7 +9,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
modifEtatDomainesPostfix($pdo);
modifEtatDomainesPostfix($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=domaines&succes=6");
?>

@ -9,7 +9,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
if(isset($_GET['supprDomaine']) && !empty($_GET['supprDomaine']) && supprDomainesPostfix($pdo)) {
if(isset($_GET['supprDomaine']) && !empty($_GET['supprDomaine']) && supprDomainesPostfix($pdo,$_GET['supprDomaine'])) {
header ("Location: /pages/gestion/administration.php?page=domaines&succes=7");
}
else {

@ -0,0 +1,31 @@
<?php
/**
* Page de traitement permettant l'ajout d'une entrée dans la liste noire des destinataires.
* C'est elle qui effectue les bons tests et appel la fonction adéquate.
* Elle est appelée par un formulaire de la page de gestion des listes noires elle-même appelée par la page d'administration centrale.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if (isset($_POST['courriel_entree_liste_noire_dst']) && isset($_POST['choix_action_entree_liste_noire_dst']) && !empty($_POST['courriel_entree_liste_noire_dst']) && !empty($_POST['choix_action_entree_liste_noire_dst'])) {
if ($_POST['choix_action_entree_liste_noire_dst']=="REJECT" || $_POST['choix_action_entree_liste_noire_dst']=="DEFER") {
ajoutEntreeListeNoireDstPostfix($pdo,$_POST['courriel_entree_liste_noire_dst'],$_POST['choix_action_entree_liste_noire_dst']);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=9");
die();
}
else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=9");
die();
}
}
else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=9");
die();
}
?>

@ -0,0 +1,22 @@
<?php
/**
* Page de traitement permettant l'activation et la désactivation d'un ou plusieurs domaines.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if (isset($_POST) && !empty($_POST)) {
modifEntreeListeNoireDstPostfix($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=10");
die();
}
else {
header ("Location: /pages/gestion/administration.php?listes_noires&sousPage=destinataires");
die();
}
?>

@ -0,0 +1,19 @@
<?php
/**
* Page de traitement permettant la suppression d'un alias virtuel.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if(isset($_GET['supprEntreeListeNoireDst']) && !empty($_GET['supprEntreeListeNoireDst']) && supprEntreeListeNoireDstPostfix($pdo,$_GET['supprEntreeListeNoireDst'])) {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=11");
}
else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=11");
}
?>

@ -0,0 +1,30 @@
<?php
/**
* Page de traitement permettant l'ajout d'une entrée dans la liste noire des expéditeurs.
* C'est elle qui effectue les bons tests et appel la fonction adéquate.
* Elle est appelée par un formulaire de la page de gestion des listes noires elle-même appelée par la page d'administration centrale.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if (isset($_POST['courriel_entree_liste_noire_exp']) && isset($_POST['choix_code_retour_entree_liste_noire_exp']) && !empty($_POST['courriel_entree_liste_noire_exp']) && !empty($_POST['choix_code_retour_entree_liste_noire_exp'])) {
if ($_POST['choix_code_retour_entree_liste_noire_exp']==554) {
ajoutEntreeListeNoireExpPostfix($pdo,$_POST['courriel_entree_liste_noire_exp'],$_POST['choix_code_retour_entree_liste_noire_exp']);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=12");
die();
}
else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=13");
die();
}
}
else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=13");
die();
}
?>

@ -0,0 +1,22 @@
<?php
/**
* Page de traitement permettant l'activation et la désactivation d'un ou plusieurs domaines.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if (isset($_POST) && !empty($_POST)) {
modifEntreeListeNoireExpPostfix($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=13");
die();
}
else {
header ("Location: /pages/gestion/administration.php?listes_noires&sousPage=expediteurs");
die();
}
?>

@ -0,0 +1,19 @@
<?php
/**
* Page de traitement permettant la suppression d'un alias virtuel.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if(isset($_GET['supprEntreeListeNoireExp']) && !empty($_GET['supprEntreeListeNoireExp']) && supprEntreeListeNoireExpPostfix($pdo,$_GET['supprEntreeListeNoireExp'])) {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=14");
}
else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=15");
}
?>
Loading…
Cancel
Save