"; } $grrSettings['ldap_statut'] = $_POST['ldap_statut']; } } //Chargement des valeurs de la table settingS if (!loadSettings()) die("Erreur chargement settings"); if (isset($_POST['submit'])) { if (isset($_POST['login']) && isset($_POST['password'])) { $sql = "select upper(login) login, password, prenom, nom, statut from grr_utilisateurs where login = '" . $_POST['login'] . "' and password = md5('" . $_POST['password'] . "') and etat != 'inactif' and statut='administrateur' "; $res_user = sql_query($sql); $num_row = sql_count($res_user); if ($num_row == 1) { $valid='yes'; } else { $message = $vocab["wrong_pwd"]; } } } if ((!resumeSession()) and $valid!='yes') { ?> GRR

Configuration de l'accès à LDAP

" . $message . "

"); } ?>
" style="font-variant: small-caps;">
GRR ".$titre_ldap.""; echo "

Enregistrement de la configuration.

"; if (!$base_ldap) $base_ldap = $base_ldap_autre; $ds = @ldap_connect("$adresse", "$port"); // On dit qu'on utilise LDAP V3, sinon la V2 par défaut est utilisé et le bind ne passe pas. if (!(ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))) echo "Impossible d'utiliser la norme LDAP V3
\n"; // Accès non anonyme if ($login_ldap) { // On tente un bind $b = @ldap_bind($ds, "$login_ldap", "$pwd_ldap"); } // On verifie le chemin fourni $result = @ldap_search($ds, $base_ldap, "objectClass=*"); if ($result) { $ok = 'yes'; $nom_fic = "config_ldap.inc.php"; if (@file_exists($nom_fic)) @unlink($nom_fic); $f = @fopen($nom_fic, "wb"); if (!$f) { $ok = 'no'; } else { $conn = "<"."?php\n"; $conn .= "# Les quatres lignes suivantes sont à modifier selon votre configuration\n"; $conn .= "# ligne suivante : l'adresse de l'annuaire LDAP.\n"; $conn .= "# Si c'est le même que celui qui heberge les scripts, mettre \"localhost\"\n"; $conn .= "\$ldap_adresse=\"$adresse\";\n"; $conn .= "# ligne suivante : le port utilisé\n"; $conn .= "\$ldap_port=\"$port\";\n"; $conn .= "# ligne suivante : l'identifiant et le mot de passe dans le cas d'un accès non anonyme\n"; $conn .= "\$ldap_login=\"$login_ldap\";\n"; $conn .= "\$ldap_pwd=\"$pwd_ldap\";\n"; $conn .= "# ligne suivante : le chemin d'accès dans l'annuaire\n"; $conn .= "\$ldap_base=\"$base_ldap\";\n"; $conn .= "?".">"; @fputs($f, $conn); if (!@fclose($f)) $ok='no'; } if ($ok == 'yes') { echo "Les données concernant l'accès à l'annuaire LDAP sont maintenant enregistrées dans le fichier \"".$nom_fic."\"."; } else { echo "

Le fichier \"".$nom_fic."\" n'est pas accessible en écriture.

"; echo "

Vous devez changer les droits sur ce fichier afin de donner le droit d'écriture sur ce fichier puis recharger cette page.

"; } if ($ok == 'yes') { echo "
"; echo ""; echo ""; echo "
"; echo "
"; } } else { echo "Problème : Le chemin que vous avez choisi ne semble pas valide. Retournez à la page précédente et vérifiez les informations fournies."; } } else if ($etape == 2) { echo "

".$titre_ldap."

"; echo "

Connexion à l'annuaire LDAP.

"; // Connexion à l'annuaire $ds = @ldap_connect("$adresse", "$port"); if ($ds) { $connexion_ok = 'yes'; // On dit qu'on utilise LDAP V3, sinon la V2 par défaut est utilisé et le bind ne passe pas. if (!(ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))) echo "Impossible d'utiliser la norme LDAP V3
\n"; // Accès non anonyme if ($login_ldap) { // On tente un bind $b = @ldap_bind($ds, $login_ldap, $pwd_ldap); if ($b) { $connexion_ok = 'yes'; } else { $connexion_ok = 'no'; } } else { // Accès anonyme $b = @ldap_bind($ds); if ($b) { $connexion_ok = 'yes'; } else { $connexion_ok = 'no'; } } } else { $connexion_ok = 'no'; } if ($connexion_ok == 'yes') { echo "La connexion LDAP a réussi."; echo "
"; // On lit toutes les infos (objectclass=*) dans le dossier // Retourne un identifiant de résultat ($result), ou bien FALSE en cas d'erreur. $result = @ldap_read($ds, "", "objectclass=*", array("namingContexts")); $info = @ldap_get_entries($ds, $result); // Retourne un tableau associatif multi-dimensionnel ou FALSE en cas d'erreur. : // $info["count"] = nombre d'entrées dans le résultat // $info[0] : sous-tableau renfermant les infos de la première entrée // $info[n]["dn"] : dn de la n-ième entrée du résultat // $info[n]["count"] : nombre d'attributs de la n-ième entrée // $info[n][m] : m-ième attribut de la n-ième entrée // info[n]["attribut"]["count"] : nombre de valeur de cet attribut pour la n-ième entrée // $info[n]["attribut"][m] : m-ième valeur de l'attribut pour la n-ième entrée $checked = false; if (is_array($info) AND $info["count"] > 0) { echo "

Sélectionnez ci-dessous le chemin d'accès dans l'annuaire :

"; echo "Ou bien "; } echo ""; echo " "; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
"; echo "
"; } else { echo "La connexion au serveur LDAP a échoué.
"; echo "Revenez à la page précédente et vérifiez les informations fournies."; } } else if ($etape == 1) { echo "

".$titre_ldap."

"; echo "

Informations de connexion à l'annuaire LDAP.

"; echo "
"; $adresse = 'localhost'; $port = 389; echo ""; echo ""; echo "

Adresse de l'annuaire

Laissez «localhost» si l'annuaire est installé sur la même machine que GRR. Sinon, indiquez l'adresse du serveur.
"; echo ""; echo "

Numéro de port de l'annuaire

Dans le doute, laissez la valeur par défaut : 389
"; echo ""; echo "

Type d'accès

Si le serveur LDAP n'accepte pas d'accès anonyme, veuillez préciser un identifiant (par exemple « cn=jean, o=lycée, c=fr »). Dans le doute, laissez les champs suivants vides pour un accès anonyme.
Identifiant :
"; echo "
"; echo "Mot de passe :
"; echo "
"; echo "
"; echo "
"; } else if ($etape == 0) { if (!(function_exists("ldap_connect"))) { echo "

".$titre_ldap."

"; echo "

Attention : les fonctions liées à l'authentification LDAP ne sont pas activées sur votre serveur PHP.
La configuration LDAP est donc actuellement impossible.

"; die(); } echo "

".$titre_ldap."

"; echo "Si vous avez accès à un annuaire LDAP, vous pouvez configurer GRR afin que cet annuaire soit utilisé pour importer automatiquement des utilisateurs."; echo "
"; echo ""; echo ""; echo ""; if (getSettingValue("ldap_statut") != '') { echo "

L'authentification LDAP est activée.

"; echo "

Statut par défaut des utilisateurs importés

"; echo "Choisissez le statut qui sera attribué aux personnes présentes dans l'annuaire LDAP lorsqu'elles se connectent pour la première fois. Vous pourrez par la suite modifier cette valeur pour chaque utilisateur.
"; echo "Visiteur
"; echo "Usager
"; echo "Ou bien
"; echo "Désactiver l'authentification LDAP
"; echo "
"; echo "
"; } else { echo "

L'authentification LDAP n'est pas activée.

"; echo "L'authentification LDAP est donc pour le moment impossible. Activez l'authentification LDAP en choisissant le statut qui sera attribué aux personnes présentes dans l'annuaire LDAP lorsqu'elles se connectent pour la première fois. Vous pourrez par la suite modifier cette valeur pour chaque utilisateur.
"; echo "Visiteur
"; echo "Usager
"; echo "Ne pas activer
"; echo "
"; echo ""; } echo "
"; if (@file_exists("config_ldap.inc.php")) { include("config_ldap.inc.php"); echo "

Configuration actuelle

(Informations contenues dans le fichier \"config_ldap.inc.php\") :
Vous pouvez procéder à une nouvelle configuration LDAP.
Attention : les données actuelles seront effacées.
"; } else { echo "

L'accès à l'annuaire LDAP n'est pas configuré.

L'authentification LDAP est donc pour le moment impossible."; } echo "
"; echo ""; echo ""; echo "
"; if (@file_exists("config_ldap.inc.php")) { if (($ldap_adresse != '') and ($ldap_port != '') and ($ldap_base != '')) { $ok = "OK"; $failed = "Echec"; echo "
"; echo "

Test de connexion

"; $ds = @ldap_connect($ldap_adresse, $ldap_port); // On dit qu'on utilise LDAP V3, sinon la V2 par défaut est utilisé et le bind ne passe pas. if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) { echo "Norme LDAP utilisée : LDAP v3"; } else { echo "Norme LDAP : impossible d'utiliser LDAP V3"; } echo "
"; // Accès non anonyme if ($ldap_login) { // On tente un bind $b = @ldap_bind($ds, $login_ldap, $pwd_ldap); if ($b) { echo "Connexion à la base - utilisateur ".$ldap_login." : ".$ok; } else { echo "Connexion à la base - utilisateur ".$ldap_login." : ".$failed; } } else { // Accès anonyme $b = @ldap_bind($ds); if ($b) { echo "Connexion à la base - accès anonyme : ".$ok; } else { echo "Connexion à la base - accès anonyme : ".$failed; } } } } } // fin de l'affichage de la colonne de droite if ($valid == 'no') echo ""; ?>