* @version 1.0 */ /** * Path */ define('EVOADMIN_BASE','./'); /** * PHP cookies session */ session_name('EVOADMIN_SESS'); session_start(); if (isset($_SESSION['login'])) { require_once EVOADMIN_BASE . 'common.php'; include EVOADMIN_BASE . 'haut.php'; $login = $_SESSION['login']; $rdn = $_SESSION['rdn']; include EVOADMIN_BASE . 'debut.php'; if (isset($_GET['view'])) { $cn = Html::clean($_GET['view']); $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); $filter="(cn=$cn)"; $sr=ldap_search($ldapconn, $rdn, $filter); $info = ldap_get_entries($ldapconn, $sr); if ( (isset($_GET['modif'])) && ($_GET['modif'] == 'yes')) { print "
"; print "

Modification en cours...

"; // on obtient une table avec les nouveaux champs mailacceptinggeneralid // TODO : if onlyone = false, verifier le domaine !! $count = array_shift($info[0]["mailacceptinggeneralid"]); // in multi-domains mode, we force @domain if (!$conf['domaines']['onlyone']) { // add @domain for each element array_walk($_POST['mailaccept'],'adddomain'); } $newmailaccept[0] = array_pop($_POST['mailaccept']); $newmailaccept[1] = array_pop($_POST['mailaccept']); $newmailaccept[2] = array_pop($_POST['mailaccept']); if ( ($newmailaccept[0] != NULL) || ($newmailaccept[1] != NULL) || ($newmailaccept[2] != NULL) || array_diff($info[0]["mailacceptinggeneralid"],$_POST['mailaccept']) ) { $new["mailacceptinggeneralid"] = $_POST['mailaccept']; $new["mailacceptinggeneralid"][$count]= $newmailaccept[0]; $new["mailacceptinggeneralid"][$count+1]= $newmailaccept[1]; $new["mailacceptinggeneralid"][$count+2]= $newmailaccept[2]; // on vire les valeurs nulles sort($new["mailacceptinggeneralid"]); while ( $new["mailacceptinggeneralid"][0] == NULL ) { array_shift($new["mailacceptinggeneralid"]); // on evite une boucle infinie if ( count($new["mailacceptinggeneralid"]) == 0 ) { print "Erreur, vous devez avoir au moins un mail entrant\n"; exit(1); } } } // idem avec maildrop $count = array_shift($info[0]["maildrop"]); $newmaildrop[0] = array_pop($_POST['maildrop']); $newmaildrop[1] = array_pop($_POST['maildrop']); $newmaildrop[2] = array_pop($_POST['maildrop']); if ( ($newmaildrop[0] != NULL) | ($newmaildrop[1] != NULL) | ($newmaildrop[2] != NULL) | array_diff($info[0]["maildrop"],$_POST['maildrop']) ) { $new["maildrop"] = $_POST['maildrop']; $new["maildrop"][$count]= $newmaildrop[0]; $new["maildrop"][$count+1]= $newmaildrop[1]; $new["maildrop"][$count+2]= $newmaildrop[2]; // on vire les valeurs nulles sort($new["maildrop"]); while ( $new["maildrop"][0] == NULL ) { array_shift($new["maildrop"]); // on evite une boucle infinie if ( count($new["maildrop"]) == 0 ) { print "Erreur, vous devez avoir au moins une redirection.\n"; exit(1); } } } $postisactive = (isset($_POST['isactive']) ? 'TRUE' : 'FALSE'); // Compatibilite anciens schemas LDAP //if ($conf['evoadmin']['version'] == 1) { // if ( $info[0]["accountactive"][0] != $postisactive ) { // $new["accountActive"] = $postisactive; // } //} else { if ( $info[0]["isactive"][0] != $postisactive ) { $new["isActive"] = $postisactive; } //} // if $new not null, set modification if ( (isset($new)) && ($new != NULL) ) { $sr=ldap_modify($ldapconn,"cn=" .$cn. ",".$rdn,$new); // Si LDAP est content, c'est bon :) if ( $sr ) { print "

Modifications effectuées.

"; print "Voir l'alias modifié

"; } else { print "

Erreur, envoyez le message d'erreur suivant a votre administrateur :

"; var_dump($new); Evolog::log("Modify error of $cn by $login"); } } else { print "

Aucune modification nécessaire.

"; } print "
"; } else { $filter="(&(cn=$cn)(objectClass=mailAlias))"; $sr=ldap_search($ldapconn, $rdn, $filter); $info = ldap_get_entries($ldapconn, $sr); // On verifie que le compte existe bien if ( $info['count'] != 1 ) { print "

Erreur, alias inexistant

"; EvoLog::log("alias $cn unknown"); exit(1); } print "
\n"; print "

Modification de l'alias $cn

\n"; print "
\n"; print "\n"; print ""; // compteur pour les tabindex $tab=1; for ($i=0;$i<$info[0]["mailacceptinggeneralid"]['count'];$i++) { if (!$conf['domaines']['onlyone']) { $info[0]['mailacceptinggeneralid'][$i] = preg_replace("/".@$_SESSION['domain']."/",'',$info[0]['mailacceptinggeneralid'][$i]); } print "\n"; } print "\n"; print "\n"; print "\n"; for ($i=0;$i<$info[0]["maildrop"]['count'];$i++) { print "\n"; } print "\n"; print "\n"; print "\n"; print ""; // Compatibilite anciens schemas LDAP //if ($conf['evoadmin']['version'] == 1) { // $isactive= ($info[0]["accountactive"][0] == 'TRUE') ? 'checked' : ''; //} else { $isactive= ($info[0]["isactive"][0] == 'TRUE') ? 'checked' : ''; //} print "\n"; print ""; print "
"; print "

Ajoutez/modifiez/supprimez les mails acceptés en entrée).
Un minimum d'un mail est requis. Mêmes instructions
pour les redirections (compte(s) dans le(s)quel(s) est/sont délivré(s) les mails).

"; print "
Mail accepté en entrée : \n"; if (!$conf['domaines']['onlyone']) { print "@" .$_SESSION['domain']; } print "
Création d'un nouveau mail accepté en entrée : \n"; if (!$conf['domaines']['onlyone']) { print "@" .$_SESSION['domain']; } print "
Création d'un nouveau mail accepté en entrée : \n"; if (!$conf['domaines']['onlyone']) { print "@" .$_SESSION['domain']; } print "
Création d'un nouveau mail accepté en entrée : \n"; if (!$conf['domaines']['onlyone']) { print "@" .$_SESSION['domain']; } print "
Mails entrants redirigés vers :
Nouvelle redirection vers :
Nouvelle redirection vers :
Nouvelle redirection vers :
"; print "

Activer/désactiver l'alias

"; print "
Alias actif :
 ,"; print "

\n"; print "
\n"; print '
'; } } elseif ( isset($_GET['del']) ) { $cn = Html::clean($_GET['del']); if ( (isset($_GET['modif'])) && ($_GET['modif'] == 'yes')) { print "
"; print "

Suppression $cn en cours...

"; // TODO : Verifier que l'objet existe avant sa suppression $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); $sr = Ldap::lda_del($ldapconn,"cn=" .$cn. "," .$rdn); if ( $sr ) { print "

Suppression $cn effectuée.

"; EvoLog::log("Del alias ".$cn); } else { print "

$cn...
"; print "
Confirmer la suppression"; print "

"; } } else { if ( (isset($_GET['modif'])) && ($_GET['modif'] == 'yes')) { $cn = Html::clean(Html::purgeaccents(utf8_decode($_POST['cn']))); $aliases = $_POST['alias']; // in multi-domains mode, we force @domain if (!$conf['domaines']['onlyone']) { // add @domain for each element array_walk($aliases,'adddomain'); } $maildrop = $_POST['maildrop']; print '
'; print "

Ajout en cours

"; // on vire les valeurs nulles sort($aliases); sort($maildrop); // TODO : if driver = ldap, verifier le domaine !! while ( $aliases[0] == NULL ) { array_shift($aliases); // on evite une boucle infinie if ( count($aliases) == 0 ) { print "Erreur, vous devez avoir au moins un alias.\n"; exit(1); } } while ( $maildrop[0] == NULL ) { array_shift($maildrop); // on evite une boucle infinie if ( count($maildrop) == 0 ) { print "Erreur, vous devez avoir au moins une redirection.\n"; exit(1); } } $info["cn"]=$cn; $info["objectclass"][0] = "mailAlias"; $info["isActive"] = ($_POST['isactive']) ? "TRUE" : "FALSE"; // Compatibilite anciens schemas LDAP if ($conf['evoadmin']['version'] == 1) { $info["objectclass"][1] = "inetOrgPerson"; $info["onlyAlias"] = "TRUE"; $info["sn"]=$cn; //$info["accountActive"] = ($_POST['isactive']) ? "TRUE" : "FALSE"; } $info["mailacceptinggeneralid"] = $aliases; $info["maildrop"] = $maildrop; $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); $sr=ldap_add($ldapconn,"cn=" .$cn. "," .$rdn, $info); // on teste si LDAP est content if ( $sr ) { print "

Ajout effectué.

"; print "Voir l'alias ajouté

"; EvoLog::log("Add alias ".$cn); } else { print "

Erreur, envoyez le message d'erreur suivant a votre administrateur :

"; var_dump($info); EvoLog::log("Add alias $cn failed"); } print "
"; } else { ?>

Ajout d'un alias

Remplissez lez champs.

Nom (unique) de l'alias :
Alias :
Alias :
Alias :
Alias :
Alias :
Redirection :
Redirection :
Redirection :
Redirection :
Redirection :

Activer/désactiver l'alias

Alias actif :