");
$texte_alert=gettext("Attention vous risquez de perdre le contrôle de votre serveur. Voir la documentation avant de mettre cela en oeuvre. Etes vous sure de vouloir continuer ?");
?>
".gettext("Réplication de l'annuaire LDAP")."";
// *******************************//
$action = $_POST['action'];
$replica = $_POST['replica'];
$ip = $_POST['ip'];
$syncrepl = $_POST['syncrepl'];
// ######################################################################
// ################### Creation du champ manquant #########################
$result=mysql_query("SELECT name from params where name='replica_status'");
$num = mysql_numrows( $result);
if ($num == "0" ) {
$resultat=mysql_query("INSERT into params set id='NULL', name='replica_status', value='0', srv_id='0',descr='Etat du serveur de réplication',cat='4'");
$resultat=mysql_query("UPDATE params set descr='Adresse du serveur Lcs ou Slis (optionnel)' where name='lcsIp'");
$resultat=mysql_query("INSERT into params set id='NULL', name='replica_ip', value='', srv_id='0',descr='Adresse IP du serveur de réplication',cat='4'");
}
// ###################### FIN #############################################
// Si replica est vide
if ($action != "") {
if ($replica == "") {
$result=mysql_query("SELECT * from params where name='replica_status'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$replica=$r[2];
}
}
}
// Validation de la page
if ($action == "Ok" || $replica=="0") {
// Test la connexion au serveur LDAP maitre ou esclave
if ($replica == "1" || $replica == "2" || $replica == "3" || $replica == "4") {
// test la validite de l'ip
if (!is_string($ip)) { $ok = 0;}
$ip_long = ip2long($ip);
$ip_revers = long2ip($ip_long);
if ($ip != $ip_revers) { $ok = 0; }
$result=mysql_query("SELECT * from params where name='adminRdn'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$adminRdn=$r[2];
}
$result=mysql_query("SELECT * from params where name='adminPw'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$adminPw=$r[2];
}
$result=mysql_query("SELECT * from params where name='ldap_base_dn'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$basedn=$r[2];
}
$admin_dn="$adminRdn,$basedn";
$ldapconn = ldap_connect("$ip");
if ($ldapconn) { //Connexion au serveur LDAP
$ldapbind = @ldap_bind($ldapconn, $admin_dn, $adminPw); // Identification
if ($ldapbind) {
$ldap_ok="1"; // Connexion LDAP reussie
} else {
$ldap_ok="0"; // Connexion LDAP echouee
}
} else {
$ldap_ok="0";
}
}
//Si pas d'erreurs on peut modifier dans la table et lancer le script
if ($ok != "0" && $ldap_ok != "0") {
//Lance le script mkslapd
$resultat=mysql_query("SELECT * from params where name='ldap_server'");
if ($resultat)
while ($r=mysql_fetch_array($resultat)) {
$IP_ldap=$r[2];
}
//On verifie l'etat anterieur avant de modifier
$result=mysql_query("SELECT * from params where name='replica_status'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$maitre=$r[2];
}
if ($maitre=="2" || $maitre=="4") { // etait en esclave avant on recupere l'adresse ip du maitre
$result=mysql_query("SELECT * from params where name='replica_ip'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$ip_maitre=$r[2];
}
} else { // sinon son adresse IP
$result=mysql_query("SELECT * from params where name='ldap_server'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$ip_maitre=$r[2];
}
}
if ($replica == "0") {
$ip = "";
$options = "-e";
$resultat=mysql_query("UPDATE params set cat='2' where name='ldap_server'");
//Si on etait esclave avant on doit changer l'IP
if ($maitre == $replica) {
$resultat=mysql_query("UPDATE params set value='' where name='replica_ip'");
// }
// elseif ($maitre=="1" || $maitre=="3") {
// $resultat=mysql_query("UPDATE params set value='$ip_maitre' where name='ldap_server'");
// $resultat=mysql_query("UPDATE params set value='$ip' where name='replica_ip'");
} else {
$resultat=mysql_query("UPDATE params set value='$ip_maitre' where name='ldap_server'");
$resultat=mysql_query("UPDATE params set value='$ip' where name='replica_ip'");
}
}
if ($replica == "1" || $replica == "3") {
//si pas de compte indique on utilise le compte AdmRdn et le MdP AdmPw
$options = "-c -m";
$resultat=mysql_query("UPDATE params set cat='4' where name='ldap_server'");
if ($maitre == $replica) {
$resultat=mysql_query("UPDATE params set value='$ip' where name='replica_ip'");
}
elseif ($maitre=="2") {
$resultat=mysql_query("UPDATE params set value='$ip_maitre' where name='ldap_server'");
$resultat=mysql_query("UPDATE params set value='$ip' where name='replica_ip'");
} else {
$resultat=mysql_query("UPDATE params set value='$ip' where name='replica_ip'");
$resultat=mysql_query("UPDATE params set value='$ip_maitre' where name='ldap_server'");
}
}
if ($replica == "2" || $replica == "4") {
//si pas de compte indique on utilise le compte AdmRdn et le MdP AdmPw
$options = "-c -s";
$resultat=mysql_query("UPDATE params set cat='4' where name='ldap_server'");
if ($maitre == $replica) {
$resultat=mysql_query("UPDATE params set value='$ip' where name='ldap_server'");
} else {
$resultat=mysql_query("UPDATE params set value='$ip_maitre' where name='replica_ip'");
$resultat=mysql_query("UPDATE params set value='$ip' where name='ldap_server'");
}
}
$resultat=mysql_query("UPDATE params set value='$replica' where name='replica_status'");
// Lancement des scripts
exec ("/usr/bin/sudo /usr/share/se3/scripts/mkSlapdConf.sh");
} else {
if ($ok == "0") {
echo "".gettext("L'adresse IP n'est pas conforme ou absente")."
";
}
if ($ldap_ok == "0") {
echo "".gettext("Impossible de se connecter au serveur LDAP distant")."";
}
}
}
// Interface
$replica_status="$replica";
if ($replica == "") {
$result=mysql_query("SELECT * from params where name='replica_status'");
if ($result)
while ($r=mysql_fetch_array($result)) {
$replica_status=$r[2];
}
}
// Verification si l'annuaire est deporte
$nom_se3=exec('/bin/hostname');
$ip_se3=gethostbyname($nom_se3);
if (($ip_se3 == $ldap_server) || ($ldap_server == "localhost") || ($ldap_server == "127.0.0.1")) {
$ldap_deport = "no";
} else {
//cas ou il est en esclave
if($replica_ip!="") {
$ldap_deport = "no";
} else {
$ldap_deport = "yes";
}
}
?>
Cette fonction ne modifie aucun des deux annuaires. ')")."\">\n"; ?> |
||
Les entrées du serveur secondaire (esclave) seront modifiées.')")."\">\n"; ?> | ||
Les entrées du serveur secondaire (esclave) seront modifiées, voire supprimées.')")."\">\n"; ?> |
||
"> |