From: x2000habouzit Date: Sat, 4 Sep 2004 20:14:30 +0000 (+0000) Subject: reworked emails class a little to improve it. X-Git-Tag: xorg/old~1587 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=919400f139db26a1ff2503689eaa14447d3181ce;p=platal.git reworked emails class a little to improve it. make utilisateurs.php use it. it will break step4.php snce mtic.inc.php does not exist anymore. TODO: make step4 use the Redirect class if possible --- diff --git a/htdocs/admin/utilisateurs.php b/htdocs/admin/utilisateurs.php index dc4cf00..60510a4 100644 --- a/htdocs/admin/utilisateurs.php +++ b/htdocs/admin/utilisateurs.php @@ -18,12 +18,12 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: utilisateurs.php,v 1.20 2004-09-04 14:40:02 x2000habouzit Exp $ + $Id: utilisateurs.php,v 1.21 2004-09-04 20:14:30 x2000habouzit Exp $ ***************************************************************************/ require("auto.prepend.inc.php"); new_admin_page('admin/utilisateurs.tpl', true); -require("xorg.misc.inc.php"); +require("email.classes.inc.php"); /* * LOGS de l'utilisateur @@ -51,100 +51,6 @@ if(isset($_REQUEST['suid_button']) and isset($_REQUEST['login']) and !isset($_SE * LE RESTE */ -$errors = Array(); - -if(isset($_REQUEST['password'])) $pass_clair = $_REQUEST['password']; - -// Check if there was a submission -foreach($_POST as $key => $val) { - switch ($key) { - case "add_fwd": - $email = $_REQUEST['email']; - if (!isvalid_email_redirection($email)) { - $errors[] = "invalid email $email"; - break; - } - $globals->db->query("INSERT INTO emails (uid,email,flags) - VALUES ({$_REQUEST['user_id']},'$email','active')"); - $errors[] = "Ajout de $email effectué"; - break; - - case "del_fwd": - if(empty($val)) break; - $globals->db->query("DELETE FROM emails WHERE uid='{$_REQUEST['user_id']}' AND email='$val'"); - break; - - case "del_alias": - if(empty($val)) break; - $globals->db->query("DELETE FROM aliases WHERE id='{$_REQUEST['user_id']}' AND alias='$val' AND type!='a_vie'"); - $errors[] = $val." a été supprimé"; - break; - - case "add_alias": - $globals->db->query("INSERT INTO aliases (id,alias,type) - VALUES ('{$_REQUEST['user_id']}','{$_REQUEST['email']}','alias')"); - break; - - // Editer un profil - case "u_edit": - $pass_md5B = $_REQUEST['newpass_clair'] != "********" ? md5($_REQUEST['newpass_clair']) : $_REQUEST['passw']; - - $query = "UPDATE auth_user_md5 SET - naissance='{$_REQUEST['naissanceN']}', - password='$pass_md5B', - perms='{$_REQUEST['permsN']}', - prenom='{$_REQUEST['prenomN']}', - nom='{$_REQUEST['nomN']}', - promo='{$_REQUEST['promoN']}' - WHERE user_id='{$_REQUEST['user_id']}'"; - $globals->db->query($query); - - // FIXME: recherche - $f = fopen("/tmp/flag_recherche","w"); - fputs($f,"1"); - fclose($f); - - $errors[] = "updaté correctement."; - // envoi du mail au webmaster - $HEADER="From: ADMINISTRATION\nReply-To: webmaster@polytechnique.org\nX-Mailer: PHP/" . phpversion(); - $MESSAGE="Intervention manuelle de l'administrateur login=".$_SESSION['forlife']." (UID=".$_SESSION['uid'].")\n\nOpérations effectuées\n\n\"".$query."\"\n\nCe rapport a été généré par le script d'administration"; - mail("web@polytechnique.org","INTERVENTION ADMIN",$MESSAGE,$HEADER); - break; - - // DELETE FROM auth_user_md5 - case "u_kill": - - $user_id = $_REQUEST['user_id']; - - $query = "DELETE FROM auth_user_md5 WHERE user_id='$user_id'"; - $globals->db->query($query); - $globals->db->query("delete from emails where uid=$user_id"); - $globals->db->query("delete from binets_ins where user_id=$user_id"); - $globals->db->query("delete from groupesx_ins where guid=$user_id"); - $globals->db->query("delete from photo where uid=$user_id"); - $globals->db->query("delete from perte_pass where uid=$user_id"); - $globals->db->query("delete from user_changes where user_id=$user_id"); - $globals->db->query("delete from aliases where id=$user_id and type in ('login','epouse','alias')"); - $globals->db->query("delete from listes_ins where idu=$user_id"); - $globals->db->query("delete from listes_mod where idu=$user_id"); - $globals->db->query("delete from applis_ins where uid=$user_id"); - $globals->db->query("delete from contacts where uid=$user_id"); - $globals->db->query("delete from contacts where contact=$user_id"); - // on purge les entrees dans logger - $res=$globals->db->query("select id from logger.sessions where uid=$user_id"); - while (list($session_id)=mysql_fetch_row($res)) - $globals->db->query("delete from logger.events where session=$session_id"); - $globals->db->query("delete from logger.sessions where uid=$user_id"); - - $errors[] = "'$user_id' a été supprimé !"; - $HEADER="From: ADMINISTRATION\nReply-To: webmaster@polytechnique.org\nX-Mailer: PHP/" . phpversion(); - $MESSAGE="Intervention manuelle de l'administrateur login=".$_SESSION['forlife']." (UID=".$_SESSION['uid'].")\n\nOpérations effectuées\n\n\"".$query."\"\n\nCe rapport a été généré par le script d'administration"; - mail("web@polytechnique.org","INTERVENTION ADMIN",$MESSAGE,$HEADER); - break; - } -} - - if (!empty($_REQUEST['login'])) { $login = $_REQUEST['login']; $r=$globals->db->query("SELECT * @@ -161,8 +67,104 @@ if (!empty($_REQUEST['user_id'])) { if($tmp = mysql_fetch_assoc($r)) $mr=$tmp; mysql_free_result($r); } - + if(isset($mr)) { + $redirect = new Redirect($mr['user_id']); + + $errors = Array(); + + if(isset($_REQUEST['password'])) $pass_clair = $_REQUEST['password']; + + // Check if there was a submission + foreach($_POST as $key => $val) { + switch ($key) { + case "add_fwd": + $email = $_REQUEST['email']; + if (!isvalid_email_redirection($email)) { + $errors[] = "invalid email $email"; + break; + } + $redirect->add_email(trim($email)); + $errors[] = "Ajout de $email effectué"; + break; + + case "del_fwd": + if(empty($val)) break; + $redirect->delete_email($val); + break; + + case "del_alias": + if(empty($val)) break; + $globals->db->query("DELETE FROM aliases WHERE id='{$_REQUEST['user_id']}' AND alias='$val' AND type!='a_vie'"); + $errors[] = $val." a été supprimé"; + break; + + case "add_alias": + $globals->db->query("INSERT INTO aliases (id,alias,type) + VALUES ('{$_REQUEST['user_id']}','{$_REQUEST['email']}','alias')"); + break; + + // Editer un profil + case "u_edit": + $pass_md5B = $_REQUEST['newpass_clair'] != "********" ? md5($_REQUEST['newpass_clair']) : $_REQUEST['passw']; + + $query = "UPDATE auth_user_md5 SET + naissance='{$_REQUEST['naissanceN']}', + password='$pass_md5B', + perms='{$_REQUEST['permsN']}', + prenom='{$_REQUEST['prenomN']}', + nom='{$_REQUEST['nomN']}', + promo='{$_REQUEST['promoN']}' + WHERE user_id='{$_REQUEST['user_id']}'"; + $globals->db->query($query); + + // FIXME: recherche + $f = fopen("/tmp/flag_recherche","w"); + fputs($f,"1"); + fclose($f); + + $errors[] = "updaté correctement."; + // envoi du mail au webmaster + $HEADER="From: ADMINISTRATION\nReply-To: webmaster@polytechnique.org\nX-Mailer: PHP/" . phpversion(); + $MESSAGE="Intervention manuelle de l'administrateur login=".$_SESSION['forlife']." (UID=".$_SESSION['uid'].")\n\nOpérations effectuées\n\n\"".$query."\"\n\nCe rapport a été généré par le script d'administration"; + mail("web@polytechnique.org","INTERVENTION ADMIN",$MESSAGE,$HEADER); + break; + + // DELETE FROM auth_user_md5 + case "u_kill": + + $user_id = $_REQUEST['user_id']; + + $query = "DELETE FROM auth_user_md5 WHERE user_id='$user_id'"; + $globals->db->query($query); + $globals->db->query("delete from emails where uid=$user_id"); + $globals->db->query("delete from binets_ins where user_id=$user_id"); + $globals->db->query("delete from groupesx_ins where guid=$user_id"); + $globals->db->query("delete from photo where uid=$user_id"); + $globals->db->query("delete from perte_pass where uid=$user_id"); + $globals->db->query("delete from user_changes where user_id=$user_id"); + $globals->db->query("delete from aliases where id=$user_id and type in ('login','epouse','alias')"); + $globals->db->query("delete from listes_ins where idu=$user_id"); + $globals->db->query("delete from listes_mod where idu=$user_id"); + $globals->db->query("delete from applis_ins where uid=$user_id"); + $globals->db->query("delete from contacts where uid=$user_id"); + $globals->db->query("delete from contacts where contact=$user_id"); + // on purge les entrees dans logger + $res=$globals->db->query("select id from logger.sessions where uid=$user_id"); + while (list($session_id)=mysql_fetch_row($res)) + $globals->db->query("delete from logger.events where session=$session_id"); + $globals->db->query("delete from logger.sessions where uid=$user_id"); + + $errors[] = "'$user_id' a été supprimé !"; + $HEADER="From: ADMINISTRATION\nReply-To: webmaster@polytechnique.org\nX-Mailer: PHP/" . phpversion(); + $MESSAGE="Intervention manuelle de l'administrateur login=".$_SESSION['forlife']." (UID=".$_SESSION['uid'].")\n\nOpérations effectuées\n\n\"".$query."\"\n\nCe rapport a été généré par le script d'administration"; + mail("web@polytechnique.org","INTERVENTION ADMIN",$MESSAGE,$HEADER); + break; + } + } + + + $r=$globals->db->query("SELECT alias FROM aliases WHERE ( id = {$mr['user_id']} AND type='a_vie' )"); list($forlife) = mysql_fetch_row($r); mysql_free_result($r); @@ -180,27 +182,15 @@ if(isset($mr)) { $page->assign('lastlogin', $lastlogin); $page->assign('host', $host); - $sql = "SELECT email, flags, panne - FROM emails - WHERE NOT FIND_IN_SET('filter',flags) AND uid = {$mr['user_id']}"; - $result=$globals->db->query($sql); - $xorgmails = Array(); - $email_panne = Array(); - while($l = mysql_fetch_assoc($result)) { - $xorgmails[] = $l; - if($l['panne']!="0000-00-00") - $email_panne[] = "Adresse {$l['email']} signalée comme HS le {$l['panne']}"; - } - mysql_free_result($result); - $page->mysql_assign("SELECT alias, type='a_vie' AS for_life FROM aliases WHERE id = {$mr["user_id"]} ORDER BY type!= 'a_vie'", 'aliases'); $page->assign_by_ref('xorgmails', $xorgmails); - $page->assign_by_ref('email_panne', $email_panne); + $page->assign_by_ref('email_panne', $email_panne); + $page->assign('emails',$redirect->emails); + $page->assign('errors',$errors); } -$page->assign('errors',$errors); $page->run(); ?> diff --git a/htdocs/antispam.php b/htdocs/antispam.php index 62357b7..c598e75 100644 --- a/htdocs/antispam.php +++ b/htdocs/antispam.php @@ -18,14 +18,12 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: antispam.php,v 1.8 2004-09-04 14:40:02 x2000habouzit Exp $ + $Id: antispam.php,v 1.9 2004-09-04 20:14:30 x2000habouzit Exp $ ***************************************************************************/ require("auto.prepend.inc.php"); new_skinned_page('antispam.tpl', AUTH_MDP); -require("mtic.inc.php"); - if (isset($_REQUEST['filtre']) and isset($_REQUEST['statut_filtre'])) { $new_filter = intval($_REQUEST['statut_filtre']); diff --git a/include/email.classes.inc.php b/include/email.classes.inc.php index d8dad85..c8a47b4 100644 --- a/include/email.classes.inc.php +++ b/include/email.classes.inc.php @@ -18,24 +18,40 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: email.classes.inc.php,v 1.4 2004-09-04 14:40:03 x2000habouzit Exp $ + $Id: email.classes.inc.php,v 1.5 2004-09-04 20:14:30 x2000habouzit Exp $ ***************************************************************************/ -require("xorg.misc.inc.php"); -require("mtic.inc.php"); +require_once("xorg.misc.inc.php"); define("SUCCESS", 1); define("ERROR_INACTIVE_REDIRECTION", 2); define("ERROR_INVALID_EMAIL", 3); define("ERROR_LOOP_EMAIL", 4); +define("MTIC_DOMAINS", "/etc/postfix/forward-domaines.conf"); + +function check_mtic($email) { + list($local,$domain) = explode("@",$email); + // lecture du fichier de configuration + $tab = file(MTIC_DOMAINS); + foreach ($tab as $ligne) { + if ($ligne{0} == '#') continue; // on saute les commentaires + // pour chaque ligne, on regarde si la première partie qui correspond au domaine du destinataire + // matche le domaine de l'email donnée + list($regexp) = explode(':',$ligne); + if (eregi($regexp,$domain)) return true; // c'est le cas, on revoie true + } + return false; +} + class Email { var $email; var $active; var $rewrite; var $mtic; + var $panne; function Email($row) { - list($this->email,$this->active,$this->rewrite,$this->mtic) + list($this->email,$this->active,$this->rewrite,$this->mtic,$this->panne) = $row; } @@ -80,7 +96,7 @@ class Redirect { global $globals; $this->uid=$_uid; $result = $globals->db->query(" - SELECT email, FIND_IN_SET('active',flags), rewrite, FIND_IN_SET('mtic',flags) + SELECT email, FIND_IN_SET('active',flags), rewrite, FIND_IN_SET('mtic',flags),panne FROM emails WHERE uid = $_uid AND NOT FIND_IN_SET('filter',flags)"); while ($row = mysql_fetch_row($result)) { $this->emails[] = new Email($row); @@ -129,7 +145,7 @@ class Redirect { foreach($this->emails as $mail) { if($mail->email == $email_stripped) return SUCCESS; } - $this->emails[] = new Email(array($email,1,'',$mtic)); + $this->emails[] = new Email(array($email,1,'',$mtic,'0000-00-00')); return SUCCESS; } diff --git a/include/mtic.inc.php b/include/mtic.inc.php deleted file mode 100644 index dddf1f6..0000000 --- a/include/mtic.inc.php +++ /dev/null @@ -1,75 +0,0 @@ - diff --git a/templates/admin/utilisateurs.tpl b/templates/admin/utilisateurs.tpl index 2fb93ca..46e105a 100644 --- a/templates/admin/utilisateurs.tpl +++ b/templates/admin/utilisateurs.tpl @@ -17,7 +17,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: utilisateurs.tpl,v 1.13 2004-09-02 23:06:11 x2000habouzit Exp $ + $Id: utilisateurs.tpl,v 1.14 2004-09-04 20:14:31 x2000habouzit Exp $ ***************************************************************************} @@ -225,16 +225,17 @@ function del_fwd(fwd) { Redirections - {foreach item=mail from=$xorgmails} + {foreach item=mail from=$emails} - n°{$mail.num} ({$mail.flags}) + {if $mail->active}active{/if} + {if $mail->mtic}(mtic){/if} - {$mail.email} + {$mail->email} - delete + delete {/foreach} @@ -248,19 +249,20 @@ function del_fwd(fwd) { - +{foreach from=$emails item=mail} +{if $email->panne && $email->panne neq "0000-00-00"}

-{foreach from=$email_panne item=e} -{$p}
-{/foreach} +Panne pour l'email "{$mail->email}" le {$mail->panne|date_format:"%d %b %Y"}

{/if} +{/foreach} +{/if} {/if} {/dynamic}