"); $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"; } } ?>

\n"; // recup l'adresse IP de l'esclave dans la base sql if($replica== "1" || $replica_status=="1" || $replica == "3" || $replica_status=="3") { echo""; $resultat=mysql_query("SELECT * from params where name='replica_ip'"); if ($resultat) while ($r=mysql_fetch_array($resultat)) { $replica_ip=$r[2]; } } // recup l'adresse IP du maitre dans la base sql if($replica== "2" || $replica_status=="2" || $replica == "4" || $replica_status == "4") { echo""; $resultat=mysql_query("SELECT * from params where name='ldap_server'"); if ($resultat) while ($r=mysql_fetch_array($resultat)) { $replica_ip=$r[2]; } } // Pour vider l'adresse IP en cas de re-select if ($action=="SUB") { $replica_ip=""; } ?> \n"; echo "\n"; ?>
Il est vivement conseillé de faire une sauvegarde de celui-ci avant toute modification."); ?>




  :  Le but est de disposer d\'un second annuaire sur une seconde machine.
Pour cela vous avez quatre possibilités :

Serveur LDAP principal (ou maître)
Cette machine dispose de l\'annuaire de réferrence. Les autres machines, ne disposeront que d\'une réplique. Seule les modifications faites sur l\'annuaire de cette machine seront prises en compte.

Serveur LDAP secondaire (ou esclave)
Cette machine ne disposera que d\'une réplique de l\'annuaire du serveur principal.

Serveur principal (méthode syncrepl)
Même chose que pour le serveur LDAP principal, mais la méthode change. Celle-ci est plus performante que la précédente, mais ne peut fonctionner avec tous les serveurs. Voir la documentation.

Serveur secondaire (méthode syncrepl)
Idem, mais attention cette option détruit complétement l\'annuaire local (il est sauvegardé automatiquement dans /var/se3/save).

Attention
Toutes les entrées existant dans cet annuaire et n\'existant pas sur le maître seront perdues.

Si vous souhaitez déporter l\'annuaire sur une autre machine, il vous faut aller dans le mode sans échec, et indiquer l\'adresse IP du serveur disposant de votre annuaire.

Il est vivement conseillé de faire une sauvegarde de votre annuaire avant de faire des modifications. ')")."\">\n"; } else { echo "Pour le reconstruire complétement à partir de votre serveur LDAP actuel, placez vous en esclave méthode syncrepl et l\'autre serveur en maître. Il vous sera alors possible de le rebasculer en maître par la suite.
Attention : toute modification sur l\'annuaire peut avoir des conséquences importantes. Il est donc conseillé de le sauvegarder avant.')")."\">
\n"; } ?>
".gettext("Adresse IP du serveur esclave")." : ".gettext("Adresse IP du serveur maître")." : " size="20"> Adresse IP du serveur maître
Vous devez indiquer l\'adresse IP du serveur LDAP maître.

Adresse IP du serveur esclave
Vous devez indiquer l\'adresse IP du serveur esclave.

Attention Afin de pouvoir mettre en place la réplication, il faut que le serveur distant (maître ou esclve) soit joignable.')")."\">\n"; echo "
"; ?> ">

> >

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"; ?>
">