diff --git a/CHANGELOG.md b/CHANGELOG.md index 6be31c9..4bc5219 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,13 @@ -## 2 (future) +## X (future) - support postfix-mysql (not plain text virtual file) - javascript checkupgrade in admin page +## 2.0 (2018-11) + + - Internationnalisation, traduction possible (fichier source dans lang/messages.pot) + - Traduction anglais / français (merci à https://github.com/matlink pour l'anglais) + ## 1.4 (2018-03-19) - Interface admin avec stats, top user, possibilité de nettoyer, blacklister... diff --git a/README.md b/README.md index 38a507a..4d81232 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,11 @@ Télécharger & décompresser les sources : mkdir -p /www/emailPoubelle/postfix cd /tmp - wget -O emailPoubelle.zip http://forge.zici.fr/p/emailpoubelle-php/source/download/master/ + wget -O emailPoubelle.zip https://framagit.org/kepon/emailPoubellePhp/-/archive/master/emailPoubellePhp-master.zip unzip emailPoubelle.zip cp -r emailpoubelle-php-master/* /var/www/emailPoubelle -Configure apache virtualhost +Configure apache virtualhost (ou autres serveur http) [...] DocumentRoot /var/www/emailPoubelle/www [...] diff --git a/conf-dist.php b/conf-dist.php index 3a6ea6b..9f0991d 100644 --- a/conf-dist.php +++ b/conf-dist.php @@ -11,9 +11,12 @@ define('DATA', '../var'); // include directory define('INC', '../lib'); +define('URLINC', './lib'); // or http://mondomaine.tld/lib +define('LANG', '../lang'); // include function include_once(INC.'/ep_function.php'); +include_once(INC.'/ep_header.php'); define('DEBUG', false); diff --git a/emailPoubelle.php b/emailPoubelle.php index 9208da3..93638eb 100644 --- a/emailPoubelle.php +++ b/emailPoubelle.php @@ -5,48 +5,49 @@ // Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html // Author : David Mercereau - david [aro] mercereau [.] info // Home : http://poubelle.zici.fr -// Date : 08/2013 -// Version : 1.0 -// Depend : Postifx (postmap command) php-pdo +// Date : 08/2018 +// Version : 2.0 +// Depend : Postifx (postmap command) php-pdo, http serveur //----------------------------------------------------------- ////////////////// // Init & check ////////////////// -define('VERSION', '1.4'); +define('VERSION', '2.0'); if (DEBUG) { error_reporting(E_ALL); ini_set('display_errors', 'On'); - echo '
Debug activé
'; + echo '
'._("Debug enabled") .'
'; echo print_r($_REQUEST); echo '
'; } if (!defined('DOMAIN') || !defined('DATA') || !defined('DEBUG') || !defined('FICHIERALIAS') || !defined('DB')) { - echo '
Erreur : Il ne semble pas que le fichier de configuration conf.php soit inclue car les constantes ne sont pas présentes.
'; + echo '
'._("Error : the configuration file conf.php might not be included because the constants are not declared").'.
'; // check writable work directory } else if (!is_writable(DATA)) { - echo '
Erreur : le répertoire de travail ne peut pas être écrit. Merci de contacter l\'administrateur
'; + echo '
'._("Error : the working directory cannot be written. Please contact the admin").'
'; // check alias file is_writable } else if (!is_writable(FICHIERALIAS)) { - echo '
Erreur : le fichier d\'alias ne peut pas être écrit. Merci de contacter l\'administrateur
'; + echo '
'._("Error : the alias file cannot be written. Please contact the admin").'
'; // check blacklist file is_writable } else if (defined('BLACKLIST') && !is_readable(BLACKLIST)) { - echo '
Erreur : un fichier de blacklist est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur
'; + echo '
'._("Error : the blacklist file cannot be read. Please contact the admin").'
'; // check aliasdeny file is_writable } else if (defined('ALIASDENY') && !is_readable(ALIASDENY)) { - echo '
Erreur : un fichier d\'alias interdit est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur
'; + echo '
'._("Error : the forbidden aliases file cannot be read. Please contact the admin").'
'; // maintenance mod } else if (MAINTENANCE_MODE == true && MAINTENANCE_IP != $_SERVER["REMOTE_ADDR"]) { - echo '
Le service est en maintenance.
'; + echo '
'._("Service under maintenance").'
'; } else { if (MAINTENANCE_MODE == true) { - echo '
Le service est en maintenance.
'; + echo '
'._("Service under maintenance").'
'; } + // Connect DB try { if (preg_match('/^sqlite/', DB)) { @@ -56,7 +57,7 @@ try { } $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch ( PDOException $e ) { - die('Connexion à la base '.$e->getMessage()); + die('._("Connexion à la base ").'.$e->getMessage()); } // Create DB if not exists try { @@ -81,7 +82,7 @@ try { comment TEXT);"); } } catch ( PDOException $e ) { - echo '
Erreur à l\'initialisation des tables. Merci de contacter l\'administrateur '; + echo '
'._("Error initializing tables. Please contact the admin"); if (DEBUG) { $e->getMessage(); } echo '
'; die(); @@ -98,9 +99,9 @@ switch ($action) { $get_value = urlUnGen($_GET['value']); if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE id = '".$get_value['id']."' AND status = 0")->fetchColumn() != 0) { UpdateStatusAlias($get_value['id'], $get_value['alias_full'], 5); - echo '
Votre email poubelle '.$get_value['alias_full'].' est maintenant actif
'; + echo '
'._("Your trash email address").' '.$get_value['alias_full'].' '._("is now enabled").'
'; } else { - echo '
Erreur : ID introuvable ou déjà validé
'; + echo '
'._("Error : unknown ID or already validated").'
'; } break; case "disable" : @@ -117,10 +118,10 @@ switch ($action) { break; case "cron" : if (CRON) { - echo '
La tâche planifié est lancé
'; + echo '
'._("The scheduled task is running").'
'; LifeExpire(); } else { - echo '
Vous n\'avez pas autorisé le lancement par tâche planifié
'; + echo '
'._("You didn't allow the scheduled job").'
'; } break; } @@ -130,13 +131,13 @@ if (isset($_POST['username']) && $_POST['username'] != '') { // minimal anti-spa } else if (isset($_POST['list'])) { $email=strtolower(StripCleanToHtml($_POST['email'])); if (! filter_var($email, FILTER_VALIDATE_EMAIL)) { - echo '
Erreur : Adresse email incorrect
'; + echo '
'._("Error : email address incorrect").'
'; } else if (! VerifMXemail($email)) { - echo '
Erreur : Adresse email incorrect (2)
'; + echo '
'._("Error : email address incorrect").' (2)
'; } else if (ListeAlias($email)) { - echo '
Un email vient de vous être envoyé
'; + echo '
'._("An email has been sent to you").'
'; } else { - echo '
Erreur : aucun email actif connu
'; + echo '
'._("Error : no known active trash email").'
'; } } else if (isset($_POST['email']) && isset($_POST['alias'])) { $alias=strtolower(StripCleanToHtml($_POST['alias'])); @@ -147,58 +148,58 @@ if (isset($_POST['username']) && $_POST['username'] != '') { // minimal anti-spa $alias_full=$alias.'@'.$domain; // Check form if (! filter_var($email, FILTER_VALIDATE_EMAIL)) { - echo '
Erreur : Adresse email incorrect
'; + echo '
'._("Error : email address incorrect").'
'; } else if (! VerifMXemail($email)) { - echo '
Erreur : Adresse email incorrect (2)
'; + echo '
'._("Error : email address incorrect").' (2)
'; } else if (! preg_match('#^[\w.-]+$#',$alias)) { - echo '
Erreur : Format de l\'email poubelle incorrect
'; + echo '
'._("Error : trash email address syntax incorrect").'
'; } else if (!domainePresent($domain)) { - echo '
Erreur : ce domain n\'est pas pris en charge
'; + echo '
'._("Error : this domain cannot be used").'
'; } else if (emailIsAlias($email)) { - echo '
Erreur : votre email ne peut pas contenir un domaine "poubelle"
'; + echo '
'._("Error : Your email can not contain a trash domain").'
'; } else if (AliasDeny($alias)) { - echo '
Erreur : email poubelle interdit
'; + echo '
'._("Error : trash email address forbidden").'
'; } else if (BlacklistEmail($email)) { - echo '
Erreur : vous avez été blacklisté sur ce service
'; + echo '
'._("Error : you have been blacklisted").'
'; // add } 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é
'; + echo '
'._("Error : this trash email already exists").'
'; } 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.
'; + echo '
'._("Error: You have reached your limit quota on this app. You can install this script on a personal server if you want more 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); - echo '
Votre email poubelle '.$alias_full.' > '.$email.' est maintenant actif
'; + echo '
'._("Your trash email address").' '.$alias_full.' > '.$email.' '._("is now enabled").'
'; } else { $lastId=AjouterAlias(0, $alias_full, $email, $life, $comment); - $message= "Confirmation de la création de votre redirection email poubelle : "; + $message= _("Confirmation of the creation of your trash email :")."\n"; $message= $alias_full.' => '.$email."\n"; - $message= "Cliquer sur le lien ci-dessous pour confirmer : \n"; + $message= _("Click on the link below to validate :")."\n"; $message.= "\t * ".urlGen('validemail',$lastId,$alias_full)."\n"; $message.= "\n"; - $message.= "Pour supprimer cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n"; + $message.= _("To delete this trash email, click on the link below :")."\n"; $message.= "\t * ".urlGen('delete',$lastId,$alias_full)."\n"; $message.= "\n"; - $message.= "Après confirmation, vous pourez suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n"; + $message.= _("After confirmation, you will be able to temporary suspend you trash email using the link below :")."\n"; $message.= "\t * ".urlGen('disable',$lastId,$alias_full)."\n"; - SendEmail($email,'Confirmation alias '.$alias,$message); - echo '
Votre email ('.$email.') nous étant inconnu, une confirmation vous a été envoyé par email.
'; + SendEmail($email,_("Alias confirmation")." ".$alias,$message); + echo '
'._("Your email address").' ('.$email.') '._("is unknown, a confirmation has been sent to you.").'
'; } } // delete } else if (isset($_POST['del'])) { if ($id = $dbco->query("SELECT id FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."' AND alias = '".$alias_full."'")->fetchColumn()) { - $message= "Confirmation de la création de votre redirection email poubelle : "; + $message= _("Confirmation of the removal of your trash email : ")."\n"; $message= $alias_full.' => '.$email."\n"; - $message= "Cliquer sur le lien ci-dessous pour confirmer la suppression : \n"; + $message= _("Click on the link below to validate the deletion :")."\n"; $message.= "\t * ".urlGen('delete',$id,$alias_full)."\n\n"; - $message.= "Sinon pour suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n"; + $message.= _("If you would like to temporary suspend this trash email, you can follow the link bellow :")."\n"; $message.= "\t * ".urlGen('disable',$id,$alias_full)."\n"; - SendEmail($email,'Suppression de l\'alias '.$alias,$message); - echo '
Un email de confirmation vient de vous être envoyé.
'; + SendEmail($email,_("Alias deletion")." ".$alias,$message); + echo '
'._("An email has been sent to you").'.
'; } else { - echo '
Erreur : impossible de trouver cet email poubelle
'; + echo '
'._("Error : unknown trash email").'
'; } // disable } else if (isset($_POST['disable'])) { @@ -221,25 +222,27 @@ if (isset($_POST['username']) && $_POST['username'] != '') { // minimal anti-spa ////////////////// ?> +
+
- + id="input-email" size="24" border="0" onkeyup="printForm()" onchange="printForm()" /> - /> Mémoriser + />
- - @ : + /> @'; @@ -252,25 +255,25 @@ if (isset($_POST['username']) && $_POST['username'] != '') { // minimal anti-spa } ?>
- - + + />
- - - - + /> + /> + /> + />