* @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 "
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 "Erreur, alias inexistant
"; EvoLog::log("alias $cn unknown"); exit(1); } 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 "
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 "