From 52c627bc3f119997d4b2b60ea5aca88e2c69c35e Mon Sep 17 00:00:00 2001 From: David Date: Sun, 18 Mar 2018 12:54:28 +0100 Subject: [PATCH] V1.2 #1 #4 #3 --- conf-dist.php | 2 ++ emailPoubelle.php | 6 +++++- lib/ep_function.php | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/conf-dist.php b/conf-dist.php index 96a064e..8bf7807 100644 --- a/conf-dist.php +++ b/conf-dist.php @@ -20,6 +20,8 @@ define('DEBUG', false); // Domain email (separe with ; exemple : exemple.com;zici.fr;exemple.fr) define('DOMAIN', 'exemple.fr'); //define('DOMAIN', 'exemple.com;zici.fr;exemple.fr'); +// Nombre d'alias poubelle limite par email +define('ALIASLIMITBYMAIL', 30); // PDO stucture // Exemple pour MYSQL : diff --git a/emailPoubelle.php b/emailPoubelle.php index 463d8fb..8de3060 100644 --- a/emailPoubelle.php +++ b/emailPoubelle.php @@ -157,8 +157,10 @@ if (isset($_POST['username']) && $_POST['username'] != '') { // minimal anti-spa echo '
Erreur : Adresse email incorrect (2)
'; } else if (! preg_match('#^[\w.-]+$#',$alias)) { echo '
Erreur : Format de l\'email poubelle incorrect
'; - } else if (! preg_match('#'.$domain.'#',DOMAIN)) { + } else if (!domainePresent($domain)) { echo '
Erreur : ce domain n\'est pas pris en charge
'; + } else if (emailIsAlias($email)) { + echo '
Erreur : votre email ne peut pas contenir un domaine "poubelle"
'; } else if (AliasDeny($alias)) { echo '
Erreur : email poubelle interdit
'; } else if (BlacklistEmail($email)) { @@ -167,6 +169,8 @@ if (isset($_POST['username']) && $_POST['username'] != '') { // minimal anti-spa } elseif (isset($_POST['add'])) { if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE alias = '".$alias_full."'")->fetchColumn() != 0) { echo '
Erreur : cet email poubelle est déjà utilisé
'; + } else if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."'")->fetchColumn() > ALIASLIMITBYMAIL) { + echo '
Erreur : Vous avez atteind votre quota limite de '.ALIASLIMITBYMAIL.' alias sur cette application. Vous pouvez installer ce script sur un serveur personnel si vous voulez plus de quota.
'; } else { if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."' AND status > 0")->fetchColumn() != 0) { AjouterAlias(5, $alias_full, $email, $life, $comment); diff --git a/lib/ep_function.php b/lib/ep_function.php index c07ddb9..4a3eb3e 100644 --- a/lib/ep_function.php +++ b/lib/ep_function.php @@ -326,4 +326,39 @@ function LifeExpire() { die(); } } + +// Vérifie que le domaine de l'alias est bien dans la configuration +function domainePresent($postDom) { + $domains = explode(';', DOMAIN); + $return=true; + if (count($domains) == 1) { + if (!preg_match('#'.$postDom.'#',DOMAIN)) { + $return=false; + } + } else { + foreach ($domains as $one_domain) { + if (!preg_match('#'.$postDom.'#',$one_domain)) { + $return=false; + } + } + } + return $return; +} +// Vérifie que l'email n'est pas un alias avec un domain "poubelle" (éviter boucle forward) +function emailIsAlias($postemail) { + $domains = explode(';', DOMAIN); + $return=false; + if (count($domains) == 1) { + if (preg_match('#'.DOMAIN.'$#',$postemail)) { + $return=true; + } + } else { + foreach ($domains as $one_domain) { + if (preg_match('#'.$one_domain.'$#',$postemail)) { + $return=true; + } + } + } + return $return; +} ?>