[resolu] LDAP et SME 6.0

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

[resolu] LDAP et SME 6.0

Messagepar svart » 15 Avr 2004 17:27

Bonjour,

Je souhaiterais modifier certains champs et en ajouter d'autres sur la base LDAP de ma SME 6.0

D'une part, j'ai un domaine par defaut masociete.net et les emails sont automatiquement : users@masociete.net
Or mes emails sont user@masociete.fr
D'autre part, j'ai besoin d'ajouter certaines informations pour que ma base soit cohérente.
Enfin, un léger bug fait que la zone 'department' contient toujours la valeur par defaut (Main) même lorsque je la modifie user par user avec l'interface. (en fait, si on reboot, les modifs sont bien prises, mais à la volée, le fichier /home/e-smith/db/ldap/masociete.net.ldif n'est pas modifiée, à moins qu'un paramètre de temps n'intervienne ?)

* Comment sont crées ces fichiers ldif ? je n'en ai pas trouvé trace dans les templates d'e-smith. On voit bien comment sont crée les fichiers ldap.conf et lsapd.conf, qui déterminent la base et les dc=masociete,dc=net mais point de ldif. Or c'est dans ce fichier que tout se fabrique.

* Les données sont-elles stockées dans une base ? La modifiant, je pourrais modifier le contenu des ldif

* Ou bien, c'est phpldap qui fabrique ce fichier à coup de lignes de commande ldapadd et ldapmodify, et du coup, je n'a qu'à tout faire à la minine ?

Je me documente, mais si quelqu'un savait... :)
Dernière édition par svart le 27 Avr 2004 09:56, édité 2 fois au total.
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar svart » 20 Avr 2004 10:19

Quelques remarques pour ceux qui essaieraient de faire comme moi ou se poseraient les mêmes question (attention, je ne suis pas spécialiste, j'ai juste passé quelques heures dessus. Pour vraiment comprendre, à mon avis, faut un bon bouquin ou un site et y passer du temps. D'ailleurs si je dis des aneries n'hésitez pas à les pointer) :

* Le fichier ldif n'est pas celui interrogé par la recherche, il semble plutôt être là pour la sauvegarde. Les données sont stockées dans une base, dans /var/lib/

* Les attributs dépendent des fichiers de structure définis dans le fichier slapd.conf (schema) lesquels sont plutôt (très) pointus. Les modifier pour un débutant relève de l'expédition montagnarde en espadrilles.

* Si vous etes comme moi, cad inexpérimenté et peu désireux de vous impliquer dans cette délicate configuration, quelques outils :

l'excellent RPM de MasterSleepy permettant d'installer PhpLdapAdmin, une interface de gestion de base LDAP. Pour plus d'infos se reporter au site de PhpLdapAdmin et aussi au site de MasterSleepy, bein sûr !

Un outil en java pour tester et afficher et éventuellement intervenir sur votre base : LDAP Browser Editor

Un lien vers la page d'installation et configuration de OpenLdap sur funix.org

http://www.teaser.fr/docs/php/php4/ref.ldap.html (inclus les commande ldap)
http://www-sop.inria.fr/semir/personnel ... /LDAP.html (pour plus d'infos..)

Voilà, je donne les quelques pistes que j'ai glané en cherchant, dans l'idée que ça serve à d'autres plus têtus que moi !
Dernière édition par svart le 20 Avr 2004 10:45, édité 1 fois au total.
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar MasterSleepy » 20 Avr 2004 10:32

Salut,

Il y a deux scripts qui font des dump de la base Ldap.
/etc/e-smith/events/actions/gentle-ldap-dump
/etc/e-smith/events/actions/ldap-dump

Ces scripts font appelle à la commande slapcat , mais je n'ai pas regardé plus loin que ça.

A+
"Microsoft fera quelque chose qui ne plantera jamais quand ils commenceront à fabriquer des clous "
http://www.vanhees.cc
Avatar de l’utilisateur
MasterSleepy
Amiral
Amiral
 
Messages: 2625
Inscrit le: 24 Juil 2002 00:00
Localisation: Belgique

Messagepar svart » 20 Avr 2004 11:54

Merci, c'est donc ça les ldif.

J'ai tout de même une petite question :

La slapd.conf inclut tout ça :
Code: Tout sélectionner
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/redhat/rfc822-MailMember.schema
include         /etc/openldap/schema/redhat/autofs.schema
include         /etc/openldap/schema/redhat/kerberosobject.schema


Mais seulement quelques champs sont disponibles : description, givenName, mail, ou...

A priori, beaucoup d'autres champs prédefinis sont possibles (fax, mobile, seconde adresse...)

Où se trouve le "filtre" qui définit les champs accessibles ? Est-ce que c'est dans ces lignes là :

Code: Tout sélectionner
#index  objectClass                             eq
index   objectClass,uid,uidNumber,gidNumber     eq
index   cn,mail,surname,givenname               eq,subinitial


Je sens que j'ai raté un truc quelque part...
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

LDAP SME

Messagepar svart » 20 Avr 2004 12:06

J'ai surtout parlé trop vite... Il suffit de changer le Objectclass de person à organizationalPerson... ou à un autre module !

C'est bête comme chou !

Et c'est assez génial cette hiérarchie d'objets...

J'ai changé le sujet du post qui ne me semblait plus correspondre.

:)
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar svart » 20 Avr 2004 12:34

Bon je complète et continue : tant qu'on y est il devrait y avoir moyen d'afficher le contenu de l'annuaire, pour les utilisateurs, via le navigateur web ? Comme phpldapadmin, mais en mode affichage ?
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar MasterSleepy » 20 Avr 2004 12:40

Oui il y a moyen, j'avais trouvé il y a qq temps de ça maintenant une petit page php qui faisait ça très bien.
Si je la retrouve, je t'envoie le lien.
"Microsoft fera quelque chose qui ne plantera jamais quand ils commenceront à fabriquer des clous "
http://www.vanhees.cc
Avatar de l’utilisateur
MasterSleepy
Amiral
Amiral
 
Messages: 2625
Inscrit le: 24 Juil 2002 00:00
Localisation: Belgique

Messagepar svart » 20 Avr 2004 16:19

C'est marrant je trouve plus de solutions pour administrer les bases via un navigateur que pour simplement les afficher ! Ce doit être parce que qui peut le plus peut le moins...

L'idéal serait en installant phpldapadmin installer deux sites :

/phpldapadmin/ # accès mode administrateur
/phpldap/ # accès utilisateur

Bon au pire je ferais un peu de php les fonctions sont bien documentées.
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar MasterSleepy » 20 Avr 2004 16:44

Ca y est je l'ai retrouvé.

Code: Tout sélectionner
<?php

$LDAP_NAME[0] = " SME Server ";
$LDAP_SERVER[0] = "127.0.0.1";
$LDAP_ROOT_DN[0] = "";

//If no server chosen set it to 0
if(!$SERVER_ID)
$SERVER_ID=0;

//Create Query
$ldap_query = "cn=*$common*";

//Connect to LDAP
$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]);

if($connect_id)
{
//Authenticate
$bind_id = ldap_bind($connect_id);

//Perform Search
$search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query);

//Assign Result Set to an Array
$result_array = ldap_get_entries($connect_id, $search_id);
}
else
{
//Echo Connection Error
echo "Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]";
}

//Sort results if search was successful
if($result_array)
{
for($i=0; $i<count($result_array); $i++)
{
$format_array[$i][0] = strtolower($result_array[$i]["cn"][0]);
$format_array[$i][1] = $result_array[$i]["dn"];
$format_array[$i][2] = strtolower($result_array[$i]["givenname"][0]);
$format_array[$i][3] = strtolower($result_array[$i]["sn"][0]);
$format_array[$i][4] = strtolower($result_array[$i]["mail"][0]);
}

//Sort array
sort($format_array, "SORT_STRING");

for($i=0; $i<count($format_array); $i++)
{
$cn = $format_array[$i][0];
$dn = $format_array[$i][1];
$fname = ucwords($format_array[$i][2]);
$lname = ucwords($format_array[$i][3]);
$email = $format_array[$i][4];

if($dn && $fname && $lname && $email)
{
$result_list .= "<A HREF=\"ldap://$LDAP_SERVER[$SERVER_ID]/$dn\">$fname $lname</A>";
$result_list .= " &lt;<A HREF=\"mailto:$email\">$email</A>&gt;<BR>\n";
}
elseif($dn && $cn && $email)
{
$result_list .= "<A HREF=\"ldap://$LDAP_SERVER[$SERVER_ID]/$dn\">$cn</A>";
$result_list .= " &lt;<A HREF=\"mailto:$email\">$email</A>&gt;<BR>\n";
}
}
}
else
{
echo "Result set empty for query: $ldap_query";
}

//Close Connection
ldap_close($connect_id);

//Make Form
echo "<CENTER><IMG SRC=\"/server-common/server-manager.jpg\"></CENTER>";
echo "<CENTER><FORM ACTION=\"$PHP_SELF\" METHOD=\"GET\">";
echo "Search in: <SELECT NAME=\"SERVER_ID\">";

//Loop Through and Create SELECT OPTIONs
for($i=0; $i<count($LDAP_NAME); $i++)
echo "<OPTION VALUE=\"$i\">".$LDAP_NAME[$i]."</OPTION>";

echo "</SELECT><BR>";
echo "Search for: <INPUT TYPE=\"text\" NAME=\"common\">";
echo "<INPUT TYPE=\"submit\" NAME=\"lookup\" VALUE=\" Search \"><BR>";
echo "(All records containing this string will be displayed.)<BR>";
echo "</FORM></CENTER>";

//Echo Results
if($result_list)
{
echo "<CENTER><TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"10\"
BGCOLOR=\"#FFFFEA\" WIDTH=\"450\"><TR><TD>$result_list</TD></TR>
</TABLE></CENTER>";
}
else
echo "<CENTER><B>No matches found. Please try again.</B></CENTER>";

?>


Désolé c'est un peu long.
"Microsoft fera quelque chose qui ne plantera jamais quand ils commenceront à fabriquer des clous "
http://www.vanhees.cc
Avatar de l’utilisateur
MasterSleepy
Amiral
Amiral
 
Messages: 2625
Inscrit le: 24 Juil 2002 00:00
Localisation: Belgique

Messagepar svart » 20 Avr 2004 17:02

Merci ! ça fonctionne :)


Sinon, en copiant les fichiers de PhpLdapAdmin dans une ibay, en en modifiant le fichier config.php
Code: Tout sélectionner
$servers[$i]['login_dn'] = 'cn=anonymous,dc=eurokapi,dc=net';
$servers[$i]['login_pass'] = '';
$servers[$i]['read_only'] = true; 


On peut accéder à une version non modifiable des infos de la base (avec l'arborescence).

Avec quelques modifs ça doit même pouvoir être rendu joli !
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar svart » 21 Avr 2004 13:56

rebonjour,

J'ai trouvé un petit bug pas grave (les image d'identité sont semble-t-il stockés dans le mauvais repertoire) que je voudrais éventuellement faire remonter, aussi-je voulais-je te demander, MasterSleepy, sur quelle version de phpLdapAdmin tu t'étais basé ?
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar MasterSleepy » 21 Avr 2004 14:02

Salut,

J'ai utilisé la dernière version que j'ai trouvé sur leur site.
Càd 0.9.3.

A+
"Microsoft fera quelque chose qui ne plantera jamais quand ils commenceront à fabriquer des clous "
http://www.vanhees.cc
Avatar de l’utilisateur
MasterSleepy
Amiral
Amiral
 
Messages: 2625
Inscrit le: 24 Juil 2002 00:00
Localisation: Belgique

Messagepar svart » 21 Avr 2004 14:09

Bon je vais m'atteler à un petit souci :

Si on change la structure par defaut (objectClass=person) ou qu'on rajoute des valeurs (par ex. deux numeros de telephone), toutes ces infos sont réinitalisées :

- Pour tout le monde si on utilise le panneau Directory de server-manager (meme en choisissant Leave as they are)
- Pour l"utilisateur modifié si on utilise l'option Modify du panneau user.

Les attributs ajoutés ne sont pas supprimés. Les attributs par defaut supprimés sont restaurés.

On peut donc supposer que la base LDAP est regénérée par un script - je suis allé faire un tour du coté des repertoires horde (j'ai trouvé un horde.schema prometteur mais c'est pas ça), du coté de /etc/e-smith/web/functions...

J'ai fini par tomber sur un fichier /etc/e-smith/events/ldap-update/S80ldap-update qui se rapproche de mes désirs... Maintenant pour modifier ça...

J'ai donc trois options :
sauvegarder puis manipuler ce fichier en espérant soit le modifier suffisamment bien pour qu'il reagisse comme je le souhaite ;
couper les liens entre l'interface web et la base ldap pour gérer la base entièrement via phpLdapAdmin;
laisser tout en l'état et utiliser la fonction import/export pour remettre ma base ldap en l'état quand elle est modifiée par l'interface. Si j'y avais pensé avant, je n'aurais pas perdu toute mes modifs de ce matin :oops:

Je vais peut-être tester/utiliser auparavant l'utilitaire de sauvegarde de HaM...
:lol:

Commentaires bienvenus !
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar svart » 26 Avr 2004 13:09

Suite de mon post, on ne sait jamais ça peut intéresser quelqu'un :

- les évenements gérés par la SME sont stockés dans /etc/e-smith/events/
Les évènements impliquants des modifications sur la base ldap sont les suivants :

/etc/e-smith/events/post-install/S60ldap-startup

/etc/e-smith/events/post-upgrade/S05conf-migrate-ldap-variables
/etc/e-smith/events/post-upgrade/S60ldap-startup

/etc/e-smith/events/bootstrap-console-save/S60ldap-conf
/etc/e-smith/events/bootstrap-console-save/S80ldap-rebuild

/etc/e-smith/events/console-save/S60ldap-conf

/etc/e-smith/events/group-create/S25ldap-update
/etc/e-smith/events/group-delete/S25ldap-delete
/etc/e-smith/events/group-modify/S25ldap-update

/etc/e-smith/events/ldap-update
/etc/e-smith/events/ldap-update/S50conf-security
/etc/e-smith/events/ldap-update/S45conf-mod_ssl
/etc/e-smith/events/ldap-update/S50conf-masq
/etc/e-smith/events/ldap-update/S95imap-pem-cert
/etc/e-smith/events/ldap-update/S80ldap-update
/etc/e-smith/events/ldap-update/S90adjust-masq

/etc/e-smith/events/user-create/S25ldap-update
/etc/e-smith/events/user-delete/S25ldap-delete
/etc/e-smith/events/user-modify/S25ldap-update

/etc/e-smith/events/pre-backup/S25gentle-ldap-dump
/etc/e-smith/events/pre-restore/S25ldap-delete-dumps


Tous ces évenements font appels à des scripts (au moyen de liens symboliques) communs :

/etc/e-smith/events/actions/conf-migrate-ldap-variables
/etc/e-smith/events/actions/gentle-ldap-dump
/etc/e-smith/events/actions/ldap-conf
/etc/e-smith/events/actions/ldap-delete-dumps
/etc/e-smith/events/actions/ldap-dump
/etc/e-smith/events/actions/ldap-startup
/etc/e-smith/events/actions/ldap-delete
/etc/e-smith/events/actions/ldap-update
/etc/e-smith/events/actions/ldap-rebuild


Pour supprimer les modifications sur la base j'ai renommé les actions
ldap-delete
ldap-update
ldap-rebuild

De façon à rompre les liens symboliques, que j'ai retabli pour les actions :

- user-create
- user-delete
- group-create
- group-delete

de façon à avoir les utilisateurs automatiquement crées et supprimés via l'interface web - mais pas modifiés. On pourrait modifier complètement le script pour le faire correspondre à 100% à ses besoins, mais ce serait assez long et demanderait plus de test que je n'en peux fournir !

Je vais tester tout ça dans les conditions du réel.
Si l'on ne fait que ce que l'on sait faire, on n'apprend jamais rien.
Avatar de l’utilisateur
svart
Vice-Amiral
Vice-Amiral
 
Messages: 853
Inscrit le: 04 Sep 2003 00:00
Localisation: Finistère

Messagepar mad_dog » 14 Mai 2004 08:43

Salut SVart, j'viens de tomber sur ton post, donc dans ton idée de modifier les scripts de la SME afin d'intégrer les users dans le LDAP, je te propose de te joindre à nous sur le projet SMERP, l'on part sur ce projet !! notre URL :: http://smerp.societeg.com
Le savoir n'est bon que s'il est partagé.
http://www.societeg.com/
Image
Solution d'hébergement WEB Open-source
Avatar de l’utilisateur
mad_dog
Vice-Amiral
Vice-Amiral
 
Messages: 997
Inscrit le: 05 Fév 2003 01:00
Localisation: Nantes

Suivant

Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité