1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/emailpoubelle_ynh.git synced 2024-09-03 18:26:29 +02:00
- 60% add database with PDO (remove plain text)
		support mysql, sqlite, postgresql...
  - 100% add multi-domain support
  - 100% add memory email (with cookies)
  - 50% add life for alias (optional)
  - 100% add comment for alias (optional)
  - 100% add javascript in form (noscript compatible)
This commit is contained in:
David 2013-11-05 17:23:47 +01:00
parent 77418b9121
commit f05d5714a3
5 changed files with 295 additions and 174 deletions

View file

@ -7,39 +7,33 @@
// Home : http://poubelle.zici.fr
//-----------------------------------------------------------
//error_reporting(0);
define('DEBUG', true);
// Domain email (separe with ;)
define('DOMAIN', 'exemple.com;zici.fr');
#define('DOMAIN', 'exemple.com');
// PDO stucture
// Exemple pour MYSQL :
// define('DB', 'mysql:host=127.0.0.1;dbname=baseMysql');
// define('DBUSER', 'utilisateurMysql');
// define('DBPASS', 'motdepassedefou');
// Exemple pour Sqlite :
// define('DB', 'sqlite:./data/emailPoubelle.sqlite');
define('DB', 'mysql:host=localhost;dbname=c1_demo');
#define('DB', 'sqlite:./database.sdb');
define('DBUSER', 'c1_demo');
define('DBPASS', 'sqdf2csd4rvn45548');
define('DBTABLEPREFIX', 'ep_');
// Domaine email
define('DOMAIN', 'zici.fr');
// Deux options :
// PLAIN : plaintext, pas de base, simple mais des fonctionnalités en moins
// DB : pdo usage
define('BACKEND', 'DB');
if (BACKEND == 'DB') {
// PDO stucture
// Exemple pour MYSQL :
// define('DB', 'mysql:host=127.0.0.1;dbname=baseMysql');
// define('DBUSER', 'utilisateurMysql');
// define('DBPASS', 'motdepassedefou');
// Exemple pour Sqlite :
// define('DB', 'sqlite:./data/emailPoubelle.sqlite');
define('DB', 'mysql:host=localhost;dbname=c1_demo');
#define('DB', 'sqlite:./database.sdb');
define('DBUSER', 'c1_demo');
define('DBPASS', 'sqdf2csd4rvn45548');
}
// writable for script
define('DATA', './data');
// Fichier d'alias postfix
define('FICHIERALIAS', './data/virtual');
define('FICHIERALIAS', DATA.'/virtual');
define('BIN_POSTMAP', '/usr/sbin/postmap');
define('URLPAGE', 'http://'.$_SERVER["SERVER_NAME"].'/'.$_SERVER["REQUEST_URI"]);
define('URLPAGE', 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]);
// A indiquer si vous utiliser les URL's rewriting
// Exemple avec un htaccess
@ -51,12 +45,9 @@ define('URLREWRITE_DEBUT', false);
define('URLREWRITE_FIN', false);
// - Email
// Sujet de l'email pour la confirmation
define('EMAIL_SUJET_CONFIRME', '[EmailPoubelle] Confirmation alias ');
// Sujet de l'email pour la liste des alias
define('EMAIL_SUJET_LISTE', '[EmailPoubelle] Liste des alias ');
define('EMAILTAGSUJET', '[EmailPoubelle]');
// From de l'email
define('EMAIL_FROM', '"NO REPLAY emailPoubelle" <emailpoubelle@exemple.com>');
define('EMAILFROM', '"NO REPLAY emailPoubelle" <emailpoubelle@exemple.com>');
// Alisas interdit : (regex ligne par ligne) - commenter pour désactiver
define('ALIASDENY', './aliasdeny.txt');
@ -73,4 +64,6 @@ if (CHECKMX) {
define('NS2', '8.8.8.8');
}
define('CHECKUPDATE', true);
?>

View file

@ -1,17 +1,17 @@
<?php
//-----------------------------------------------------------
// Email Poubelle
// Title : Email Poubelle
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
// Créateur : David Mercereau - david [aro] mercereau [.] info
// Author : David Mercereau - david [aro] mercereau [.] info
// Home : http://poubelle.zici.fr
// Date : 08/2013
// Version : 0.4
// Dépendance : Postifx
// Version : 1.0
// Depend : Postifx (postmap command) php-pdo
//-----------------------------------------------------------
include_once('./conf.php');
define('VERSION', '0.4');
define('VERSION', '1.0');
//////////////////
// Init & check
@ -24,6 +24,13 @@ if (DEBUG) {
print_r($_REQUEST);
}
if (defined(DOMAIN)) {
exit('<div class="highlight-1">Erreur : Problème de configuration</div>');
}
// check writable work directory
if (!is_writable(DATA)) {
exit('<div class="highlight-1">Erreur : le répertoire de travail ne peut pas être écrit. Merci de contacter l\'administrateur</div>');
}
// check alias file is_writable
if (!is_writable(FICHIERALIAS)) {
exit('<div class="highlight-1">Erreur : le fichier d\'alias ne peut pas être écrit. Merci de contacter l\'administrateur</div>');
@ -38,17 +45,32 @@ if (defined('ALIASDENY') && !is_readable(ALIASDENY)) {
}
// Connect DB
if (BACKEND == 'DB') {
try {
if (preg_match('/^sqlite/', DB)) {
$dbco = new PDO(DB);
} else {
$dbco = new PDO(DB, DBUSER, DBPASS);
}
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch ( PDOException $e ) {
die('Connexion à la base '.$e->getMessage());
}
try {
if (preg_match('/^sqlite/', DB)) {
$dbco = new PDO(DB);
} else {
$dbco = new PDO(DB, DBUSER, DBPASS);
}
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch ( PDOException $e ) {
die('Connexion à la base '.$e->getMessage());
}
// Create DB if not exists
try {
// status : 0=not verified - 3=disable - 5=active
$create = $dbco->query("CREATE TABLE IF NOT EXISTS ".DBTABLEPREFIX."alias (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
status INTEGER(1) NOT NULL,
alias CHAR(150) NOT NULL UNIQUE,
email CHAR(150) NOT NULL,
dateCreat DATETIME NOT NULL,
dateExpir DATETIME,
comment TEXT);");
} catch ( PDOException $e ) {
echo '<div class="highlight-1">Erreur à l\'initialisation des tables. Merci de contacter l\'administrateur ';
if (DEBUG) { $e->getMessage(); }
echo '</div>';
die();
}
//////////////////
@ -77,30 +99,51 @@ function VerifMXemail($email) {
// postmap command
function UpdateVirtualDB() {
echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return);
// @todo : créer le ficheir à partir de la base
//echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return);
}
//// A FAIRE (chian) :
// add new alias
function AjouterAlias($alias,$email) {
if (BACKEND == 'DB') {
// A faire mais $alais doît changer
} else {
$fichier=fopen(FICHIERALIAS,'a+');
fputs($fichier, $alias.'@'.DOMAIN.' '.$email."\n");
fclose($fichier);
}
function AjouterAlias($status, $alias,$email, $life, $comment) {
global $dbco;
$dateCreat=date('Y-m-d H:i:s');
if ($life == 0) {
$dateExpir=NULL;
} else {
$dateExpir=date('Y-m-d H:i:s', time()+$life);
}
$insertcmd = $dbco->prepare("INSERT INTO ".DBTABLEPREFIX."alias (status, alias, email, dateCreat, dateExpir, comment)
VALUES ($status, '$alias', '$email', '$dateCreat', '$dateExpir', '$comment')");
$insertcmd->execute();
if (!$insertcmd) {
echo '<div class="highlight-1">Erreur pendant l\'ajout dans la base. Merci de contacter l\'administrateur ';
if (DEBUG) {
print_r($dbco->errorInfo());
}
echo '</div>';
} else {
return $dbco->lastInsertId();
}
// @todo : a faire
UpdateVirtualDB();
}
//// A FAIRE :
// delete new alias
function SupprimerAlias($alias,$email) {
file_put_contents(FICHIERALIAS, preg_replace('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/));
file_put_contents(FICHIERALIAS, preg_replace('#\n'.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/));
# http://www.siteduzero.com/forum-83-542138-p1-supprimer-une-ligne-d-un-fichier-texte-avec-regex.html
// @todo : a faire
UpdateVirtualDB();
}
// update alias status
function UpdateStatusAlias($id, $alias_full, $status) {
global $dbco;
try {
$updatecmd = $dbco->prepare("UPDATE ".DBTABLEPREFIX."alias SET status = $status WHERE id = $id AND alias = '$alias_full'");
$updatecmd->execute();
} catch ( PDOException $e ) {
echo "DB error : ", $e->getMessage();
die();
}
UpdateVirtualDB();
}
@ -144,39 +187,58 @@ function AliasDeny($alias) {
// list alias
function ListeAlias($email) {
$handle = fopen(FICHIERALIAS, 'r');
while (!feof($handle)) {
$buffer = fgets($handle);
if ($buffer) {
$bufferExplode = explode(' ', $buffer);
if (!preg_match('/^(#|$|;)/', $buffer) && preg_match('/^'.$email.'$/', $bufferExplode[1])) {
$alias[]=$bufferExplode[0];
}
}
}
fclose($handle);
// @todo : a faire
return ($alias);
}
function SendEmail($recipient, $sujet, $message) {
$header = 'From: '.EMAILFROM.'\n';
$header.= 'MIME-Version: 1.0\n';
if (preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $recipient)) {
$header = str_replace('\n', '\r\n', $header);
$message = str_replace('\n', '\r\n', $header);
}
mail($recipient,EMAILTAGSUJET.' '.$sujet,$message,$header);
}
function urlGen($act,$id,$alias_full) {
$idUrl=base64_encode($id.';'.$alias_full);
if (URLREWRITE_DEBUT && URLREWRITE_FIN) {
return URLREWRITE_DEBUT.$idUrl.URLREWRITE_FIN;
} else {
return URLPAGE."?act=".$act."&value=".$idUrl;
}
}
//////////////////
// Admin function
//////////////////
function CheckUpdate() {
//$doc = file_get_contents('http://poubelle.zici.fr/ep_checkupdate');
//echo $doc;
}
//////////////////
// Start program
//////////////////
// Valid email process
if (isset($_REQUEST['Validemail'])) {
if (preg_match('/#'.$_REQUEST['Validemail'].' [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+ [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+/', file_get_contents(FICHIERALIAS),$res)) {
$data=explode(' ', $res[0]);
$aliasExplode=explode('@', $data[1]);
$alias=$aliasExplode[0];
$email=$data[2];
SupprimerAlias($alias,$email);
AjouterAlias($alias,$email);
echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.DOMAIN.' > '.$email.'</b> est maintenant actif</div>';
if (isset($_GET['act']) && $_GET['act'] == 'validemail' && isset($_GET['value'])) {
$idUrl = explode(';', base64_decode($_GET['value']));
echo $dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE id = '".$idUrl[0]."' AND status = 0")->fetchColumn();
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE id = '".$idUrl[0]."' AND status = 0")->fetchColumn() != 0) {
UpdateStatusAlias($idUrl[0], $idUrl[1], 5);
echo '<div class="highlight-3">Votre email poubelle <b>'.$idUrl[1].'</b> est maintenant actif</div>';
} else {
echo '<div class="highlight-1">Erreur : ID introuvable</div>';
echo '<div class="highlight-1">Erreur : ID introuvable ou déjà validé</div>';
}
} elseif (isset($_GET['dis'])) {
// @todo fa faire
} elseif (isset($_GET['del'])) {
// @todo fa faire
// list email process
} elseif (isset($_REQUEST['list'])) {
} elseif (isset($_GET['list'])) {
$email=strtolower($_REQUEST['email']);
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect</div>';
@ -185,100 +247,181 @@ if (isset($_REQUEST['Validemail'])) {
} else if (!preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) {
echo '<div class="highlight-1">Vous n\'avez encore aucun alias d\'actif</div>';
} else {
# send email with alias list
if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) {
$passage_ligne = "\r\n";
} else {
$passage_ligne = "\n";
}
$header = 'From: '.EMAIL_FROM.$passage_ligne;
$header.= 'MIME-Version: 1.0'.$passage_ligne;
$message= 'Liste de vos redirections poubelles : '.$passage_ligne;
$header = 'From: '.EMAIL_FROM.'\n';
$header.= 'MIME-Version: 1.0\n';
$message= 'Liste de vos redirections poubelles : \n';
foreach (ListeAlias($email) as $alias) {
$message.=' * '.$alias.$passage_ligne;
$message.=' * '.$alias.'\n';
}
$message.= 'Pour supprimer un email poubelle vous pouvez vous rendre sur le lien ci-dessou : '.$passage_ligne;
$message.= "\t * ".URLPAGE.$passage_ligne;
mail($email,EMAIL_SUJET_LISTE,$message,$header);
$message.= 'Pour supprimer un email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n';
$message.= "\t * ".URLPAGE.'\n';
SendEmail($email,'Liste des alias',$message);
echo '<div class="highlight-3">Un email vous a été adressé avec la liste de vos emails poubelles actifs.</div>';
}
//
} elseif (isset($_REQUEST['email']) && isset($_REQUEST['alias'])) {
$alias=strtolower($_REQUEST['alias']);
$email=strtolower($_REQUEST['email']);
// Form
} elseif (isset($_POST['email']) && isset($_POST['alias'])) {
$alias=strtolower($_POST['alias']);
$email=strtolower($_POST['email']);
$domain=$_POST['domain'];
$life=$_POST['life'];
$comment=$_POST['comment'];
// Check form
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect</div>';
} else if (! VerifMXemail($email)) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect (2)</div>';
} else if (! preg_match('#^[\w.-]+$#',$alias)) {
echo '<div class="highlight-1">Erreur : email poubelle incorrect</div>';
echo '<div class="highlight-1">Erreur : Format de l\'email poubelle incorrect</div>';
} else if (! preg_match('#'.$domain.'#',DOMAIN)) {
echo '<div class="highlight-1">Erreur : ce domain n\'est pas pris en charge</div>';
} else if (AliasDeny($alias)) {
echo '<div class="highlight-1">Erreur : email poubelle interdit</div>';
} else if (BlacklistEmail($email)) {
echo '<div class="highlight-1">Erreur : vous avez été blacklisté sur ce service</div>';
} elseif (isset($_REQUEST['add'])) {
if (preg_match('#\n'.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS))) {
// add
} elseif (isset($_POST['add'])) {
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE alias = '".$alias.'@'.$domain."'")->fetchColumn() != 0) {
echo '<div class="highlight-1">Erreur : cet email poubelle est déjà utilisé</div>';
} else {
if (preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) {
AjouterAlias($alias,$email);
echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.DOMAIN.' > '.$email.'</b> est maintenant actif</div>';
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."' AND status = 5")->fetchColumn() != 0) {
AjouterAlias(5, $alias.'@'.$domain, $email, $life, $comment);
echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.$domain.' > '.$email.'</b> est maintenant actif</div>';
} else {
$id=rand().date('U');
$alias_desactive='#'.$id.' '.$alias;
AjouterAlias($alias_desactive,$email,0);
# Envoi de l'email :
if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) {
$passage_ligne = "\r\n";
} else {
$passage_ligne = "\n";
}
$header = 'From: '.EMAIL_FROM.$passage_ligne;
$header.= 'MIME-Version: 1.0'.$passage_ligne;
$message= 'Confirmation de la création de votre redirection email poubelle : '.$passage_ligne;
$message= $alias.'@'.DOMAIN.' => '.$email.$passage_ligne;
$message= 'Cliquer sur le lien ci-dessous pour confirmer : '.$passage_ligne;
if (URLREWRITE_DEBUT && URLREWRITE_FIN) {
$message.= "\t * ".URLREWRITE_DEBUT.$id.URLREWRITE_FIN.$passage_ligne;
} else {
$message.= "\t * ".URLPAGE.'?Validemail='.$id.$passage_ligne;
}
$message.= 'Pour supprimer cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : '.$passage_ligne;
if (URLREWRITE_DEBUT && URLREWRITE_FIN) {
$message.= "\t * ".URLPAGE.$passage_ligne;
} else {
$message.= "\t * ".URLPAGE.'?sup=true&email='.$email.'&alias='.$alias.$passage_ligne;
}
mail($email,EMAIL_SUJET_CONFIRME.$alias,$message,$header);
$lastId=AjouterAlias(0, $alias.'@'.$domain, $email, $life, $comment);
$message= "Confirmation de la création de votre redirection email poubelle : ";
$message= $alias.'@'.$domain.' => '.$email."\n";
$message= "Cliquer sur le lien ci-dessous pour confirmer : \n";
$message.= "\t * ".urlGen('validemail',$lastId,$alias.'@'.$domain)."\n";
$message.= "Pour suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n";
$message.= "\t * ".urlGen('dis',$lastId,$alias.'@'.$domain)."\n";
$message.= "Pour supprimer cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n";
$message.= "\t * ".urlGen('del',$lastId,$alias.'@'.$domain)."\n";
SendEmail($email,'Confirmation alias '.$alias,$message);
echo '<div class="highlight-2">Votre email ('.$email.') nous étant inconnu, une confirmation vous a été envoyé par email.</div>';
}
}
} else if (isset($_REQUEST['del'])) {
if (preg_match('#\n'.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) {
SupprimerAlias($alias,$email);
echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.DOMAIN.'</b> est maintenant supprimé !</div>';
// delete
} else if (isset($_POST['del'])) {
if ($id = $dbco->query("SELECT id FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."' AND alias = '".$alias.'@'.$domain."'")->fetchColumn()) {
$message= "Confirmation de la création de votre redirection email poubelle : ";
$message= $alias.'@'.$domain.' => '.$email."\n";
$message= "Cliquer sur le lien ci-dessous pour confirmer la suppression : \n";
$message.= "\t * ".urlGen('del',$id,$alias.'@'.$domain)."\n\n";
$message.= "Sinon pour suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n";
$message.= "\t * ".urlGen('dis',$id,$alias.'@'.$domain)."\n";
SendEmail($email,'Suppression de l\'alias '.$alias,$message);
echo '<div class="highlight-2">Un email de confirmation vient de vous être envoyé.</div>';
} else {
echo '<div class="highlight-1">Erreur : l\'email poubelle n\'existe pas</div>';
echo '<div class="highlight-1">Erreur : impossible de trouver cet email poubelle</div>';
}
// disable
} else if (isset($_POST['dis'])) {
// @todo a faire
if ($return=DisableAlias($alias.'@'.$domain,$email)) {
echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.$domain.'</b> est maintenant suspendu !</div>';
} else {
echo '<div class="highlight-1">Erreur : '.$return.'</div>';
}
}
if (isset($_POST['memory'])) {
setcookie ("email", $email, time() + 31536000);
} else if (isset($_COOKIE['email'])) {
unset($_COOKIE['email']);
}
}
// Close connexion DB
if (BACKEND == DB) {
$dbco = null;
}
$dbco = null;
//////////////////
// Printing form
//////////////////
?>
<form action="<?= URLPAGE?>" method="post">
<label>Nom de l'email poubelle : </label>
<input type="text" name="alias" size="24" border="0" /> @<?= DOMAIN; ?>
<br />
<label>Votre email réel : </label>
<input type="text" name="email" size="24" border="0" /> <input class="" type="submit" name="list" value="Lister" />
<br />
<input class="button" type="submit" name="add" value="Créer" /> ou
<input class="button" type="submit" name="del" value="Supprimer" /> la redirection poubelle
<div id="form-email">
<label for="email">Votre email réel : </label>
<input type="text" name="email" <?php if (isset($_COOKIE['email'])) { echo 'value="'.$_COOKIE['email'].'"'; } ?> id="input-email" size="24" border="0" onkeyup="printForm()" onchange="printForm()" />
<input class="button2" type="submit" name="list" id="button-list" value="Lister" />
<input type="checkbox" name="memory" id="check-memory" <?php if (isset($_COOKIE['email'])) { echo 'checked="checked" '; } ?>/> Mémoriser
</div>
<div id="form-alias">
<label for="alias">Nom de l'email poubelle : </label>
<input type="text" name="alias" id="input-alias" size="24" border="0" onkeyup="printForm()" onchange="printForm()" placeholder="Ex : jean-petiteannonce" /> @<?php
$domains = explode(';', DOMAIN);
if (count($domains) == 1) {
echo DOMAIN.'<input type="hidden" value="'.DOMAIN.'" name="domain" id="input-domain" />';
} else {
echo '<select name="domain" id="input-domain">';
foreach ($domains as $one_domain) {
echo '<option value="'.$one_domain.'">'.$one_domain.'</option>';
}
echo '</select>';
}
?>
<select name="life" id="input-life">
<option value="0">Illimité</option>
<option value="7200">2 heure</option>
<option value="21600">6 heures</option>
<option value="86400">1 jour</option>
<option value="604800">7 jours</option>
<option value="1296000">15 jours</option>
<option value="2592000">30 jours</option>
<option value="7776000">90 jours</option>
</select>
</div>
<div id="form-comment">
<label for="comment">Un commentaire pour l'ajout ? (pour votre mémoire)</label>
<input type="text" name="comment" size="54" placeholder="Ex : Inscription sur zici.fr" />
</div>
<div id="form-submit">
<input class="button" type="submit" id="button-add" name="add" value="Activer" /> -
<input class="button" type="submit" id="button-dis" name="dis" value="Susprendre" /> -
<input class="button" type="submit" id="button-del" name="del" value="Supprimer" />
</div>
</form>
<script type="text/javascript">
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function printForm() {
console.log("appel de la fonction : " + document.getElementById('input-email').value + document.getElementById('input-alias').value);
if (validateEmail(document.getElementById('input-email').value) && document.getElementById('input-alias').value != '') {
console.log("Les 2 sont OK");
document.getElementById('input-alias').disabled = false;
document.getElementById('input-domain').disabled = false;
document.getElementById('button-list').disabled = false;
document.getElementById('button-add').disabled = false;
document.getElementById('button-dis').disabled = false;
document.getElementById('button-del').disabled = false;
document.getElementById('input-life').disabled = false;
document.getElementById('form-comment').style.display = "block" ;
} else if (validateEmail(document.getElementById('input-email').value)) {
console.log("email ok");
document.getElementById('input-alias').disabled = false;
document.getElementById('input-domain').disabled = false;
document.getElementById('button-list').disabled = false;
document.getElementById('input-life').disabled = false;
document.getElementById('form-comment').style.display = "display" ;
document.getElementById('button-add').disabled = true;
document.getElementById('button-dis').disabled = true;
document.getElementById('button-del').disabled = true;
document.getElementById('input-life').disabled = true;
document.getElementById('form-comment').style.display = "none" ;
} else {
console.log("rien OK");
document.getElementById('input-alias').disabled = true;
document.getElementById('input-domain').disabled = true;
document.getElementById('button-list').disabled = true;
document.getElementById('button-add').disabled = true;
document.getElementById('button-dis').disabled = true;
document.getElementById('button-del').disabled = true;
document.getElementById('input-life').disabled = true;
document.getElementById('form-comment').style.display = "none" ;
}
}
printForm();
</script>
<p>Version <?= VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3</p>
<p>Télécharger et utiliser ce script sur le site du projet <a target="_blank" href="http://forge.zici.fr/p/emailpoubelle-php/">emailPoubelle.php</a></p>

View file

@ -21,7 +21,7 @@
<div id="b">
<article>
<h1>Emails poubelle libre</h1>
<p>Générer des emails poubelle sans contrainte de durée de vie. </p>
<p>Générer des emails poubelle sans contrainte de durée de vie. </p>
<?php
// Intégration dans votre site :
include('emailPoubelle.php');

View file

@ -1,15 +0,0 @@
#!/bin/bash
# @todo : A adapter en php
FICHIERALIAS="./postfix/virtual"
echo
echo "#### Statistique emailJetable.php ####"
echo
echo "Nombre d'email validé : `grep -v "^#" $FICHIERALIAS | wc -l`
echo "Nombre d'email n'ayant pas été validé : `grep "^#" $FICHIERALIAS | wc -l`
echo
echo "Top 30 :"
grep -v "^#" $FICHIERALIAS | cut -d" " -f2 | sort | uniq -c | sort -nr | head -n 30
echo

View file

@ -35,7 +35,7 @@ A {
}
H1, H3, H4, H5, H6 {
background : url(../i/ai4.png) no-repeat 0 7px;
background : url(./ai4.png) no-repeat 0 7px;
border-bottom : 1px dotted #B5B3A9;
color : #333;
font-weight : bold;
@ -43,7 +43,7 @@ H1, H3, H4, H5, H6 {
padding : 0 0 0 25px;
}
H1 {
background : url(../i/ai4.png) no-repeat 0 6px;
background : url(./ai4.png) no-repeat 0 6px;
font-size : 15px;
}
H2 {
@ -51,7 +51,7 @@ H1, H3, H4, H5, H6 {
margin : 0 0 20px 0;
}
H3 {
background : url(../i/ai5.png) no-repeat 0 7px;
background : url(./ai5.png) no-repeat 0 7px;
}
H3, H4, H5, H6 {
font-size : 13px;
@ -65,7 +65,7 @@ SUP {
header {
-moz-border-radius : 4px;
-webkit-border-radius : 4px;
background : #006699 url(../i/hd.jpg) no-repeat top left;
background : #006699 url(./hd.jpg) no-repeat top left;
margin : 0 0 10px 0;
padding : 10px 10px;
position : relative;
@ -233,7 +233,7 @@ article form {
border : 1px solid #CCC;
font-size : 11px;
padding : 4px 5px;
width : 458px;
/*width : 458px;*/
}
article input {
margin : 0 0 10px;
@ -261,7 +261,7 @@ article ul, aside ul {
margin : 0 0 20px 23px;
}
article ul li {
background : url(../i/ai2.png) no-repeat 0 8px;
background : url(./ai2.png) no-repeat 0 8px;
padding : 0 0 0 17px;
}
@ -295,7 +295,7 @@ nav ul {
list-style : none;
}
nav li {
background : url(../i/ai1.png) no-repeat 0 8px;
background : url(./ai1.png) no-repeat 0 8px;
padding : 0 0 0 15px;
}
nav li ul, aside li ul li ul {
@ -308,10 +308,10 @@ nav ul {
font-size : 10px;
}
nav li li li, aside li.active li li {
background : url(../i/ai8.png) no-repeat 0 10px;
background : url(./ai8.png) no-repeat 0 10px;
}
nav li.active, aside li.active li {
background : url(../i/ai2.png) no-repeat 0 8px;
background : url(./ai2.png) no-repeat 0 8px;
}
/* Gallery */