* 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
* 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 *
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);
$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();
?>
* 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;
}
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);
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;
}
+++ /dev/null
-<?php
-/***************************************************************************
- * Copyright (C) 2003-2004 Polytechnique.org *
- * http://opensource.polytechnique.org/ *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
- ***************************************************************************
- $Id: mtic.inc.php,v 1.2 2004-08-31 11:16:48 x2000habouzit Exp $
- ***************************************************************************/
-
-$mtic_domains = "/etc/postfix/forward-domaines.conf";
-$mtic_mailforward = '"|/home/listes/mailforward ';
-
-
-
-/** nettoyage du champ email s'il contient la redirection
- * @param $email email
- * @return le email épuré
- * @see utilisée nulle part
- */
-function clean_mtic($email) {
- global $mtic_mailforward;
- $len = strlen($mtic_mailforward);
- if (strncmp($mtic_mailforward,$email,$len) == 0) {
- // on vire le debut (mtic_mailforward) et le dernier caractere
- $email = substr($email,$len, -1);
- }
- return $email;
-}
-
-
-
-/** on regarde l'adresse et on ajoute la redirection si necessaire
- * @param $email email
- * @return true || false
- * @see emails.php
- * @see step4.php
- */
-function check_mtic($email) {
- global $mtic_domains,$mtic_mailforward;
- list($local,$domain) = explode("@",$email);
- // lecture du fichier de configuration
- $tab = file($mtic_domains);
- foreach ($tab as $ligne) {
- if ($ligne{0} != '#') { // 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
- $a = explode(':',$ligne);
- $regexp = $a[0];
- if (eregi($regexp,$domain)) {
- // c'est le cas, on revoie true
- return true;
- }
- }
- }
- return false;
-}
-
-
-
-?>