mise au point doc et support multi branche

This commit is contained in:
2019-10-24 15:14:22 +02:00
parent f58797b35e
commit 917365b9a0
4 changed files with 68 additions and 24 deletions

BIN
.add_attribute.pl.swp Normal file

Binary file not shown.

BIN
.doc.md.swp Normal file

Binary file not shown.

View File

@@ -8,6 +8,9 @@ my $ldapserver = "localhost";
my $binddn = "cn=manager,o=od";
my $bindpw = "123Soleil" ;
my $isPeople=0 ;
my $isEnt=0;
my $ldap = Net::LDAP->new( $ldapserver ) or die "$@" ;
my $mesg = $ldap->bind( $binddn,
@@ -18,17 +21,21 @@ $mesg->code and die $mesg->error; # check for errors
my $csv = Text::CSV->new({ sep_char => ';' }) ;
my $file = $ARGV[0] or die "Need to get CSV file on the command line\n" ;
if( $file =~ /entreprise/i ) {
$isEnt=1 ;
}elsif( $file =~ /particulier/i ) {
$isPeople=1 ;
}
else{
die "Unknown branch\n" ;
}
open(my $data, '<', $file) or die "Could not open '$file' $!\n";
my @cols = @{$csv->getline ($data)};
foreach my $c (@cols){
print "column: ". $c ."\t" ;
}
print "\n" ;
my $row = {} ;
$csv->bind_columns (\@{$row}{@cols});
while ($csv->getline ($data)) {
my $dn = $row->{dn} ;
if ( $dn =~ /^dn / ) { next ; }
if ( $dn =~ /^dn / ) { next ; }
my $idTechnique = $row->{idTechnique} ? $row->{idTechnique} : "UNDEFINED" ;
my $question1 = $row->{question1} ? $row->{question1} : "UNDEFINED" ;
my $question2 = $row->{question2} ? $row->{question2} : "UNDEFINED" ;
@@ -38,6 +45,8 @@ while ($csv->getline ($data)) {
my $reponse3 = $row->{reponse3} ? $row->{reponse3} : "UNDEFINED" ;
my $siren = $row->{siren} ? $row->{siren} : "UNDEFINED" ;
my $civilite = $row->{civilite} ? $row->{civilite} : "UNDEFINED" ;
my $phoneNumber = $row->{phoneNumber} ? $row->{phoneNumber} : "UNDEFINED" ;
my $birthDate = $row->{birthDate} ? $row->{birthDate} : "UNDEFINED" ;
my $userPassword = $row->{userPassword} ;
my $userPassword = `slappasswd -n -s $userPassword` ;
@@ -52,21 +61,43 @@ while ($csv->getline ($data)) {
add => {
objectClass => 'klesiaentreprise',
});
}else{
warn $dn . " already of type klesia\n" ;
my $mesg = $ldap-> modify( $dn,
}
# add common attributes
my $mesg = $ldap-> modify( $dn,
changes=> [
replace => [ 'idTechnique' => $idTechnique ],
replace => [ 'question1' => $question1 ],
replace => [ 'question2' => $question2 ],
replace => [ 'question3' => $question3 ],
replace => [ 'reponse1' => $reponse1 ],
replace => [ 'reponse2' => $reponse2 ],
replace => [ 'reponse3' => $reponse3 ],
replace => [ 'idTechnique' => $idTechnique ],
replace => [ 'question1' => $question1 ],
replace => [ 'question2' => $question2 ],
replace => [ 'question3' => $question3 ],
replace => [ 'reponse1' => $reponse1 ],
replace => [ 'reponse2' => $reponse2 ],
replace => [ 'reponse3' => $reponse3 ],
replace => [ 'civilite' => $civilite],
replace => [ 'userPassword' => $userPassword ],
]
) ;
$mesg->code and warn $dn."\t".$mesg->error;
# add entreprise specific attributes
if( $isEnt ){
my $mesg = $ldap-> modify( $dn,
changes=> [
replace => [ 'siren' => $siren],
replace => [ 'civilite' => $civilite],
replace => [ 'userPassword' => $userPassword ],
]
) ;
$mesg->code and warn $dn."\t".$mesg->error; }
}
$mesg->code and warn $dn."\t".$mesg->error;
}
# add people specific attributes
if( $isPeople ){
my $mesg = $ldap-> modify( $dn,
changes=> [
replace => [ 'birthDate' => $birthDate],
replace => [ 'phoneNumber' => $phoneNumber],
]
) ;
$mesg->code and warn $dn."\t".$mesg->error;
}
}

23
doc.md
View File

@@ -1,14 +1,18 @@
##### Documentation
#### Prérequis
les scripts mis au point nécessite un interpréteur perl et les blibiothèques
Net::LDAP ( paquet perl-LDAP sur RHEL / CentOS ) et Text::CSV ( paquet
perl-Text-CSV )
#### Définition des nouveaux attributs
Avant de pouvoir ajouter les nouveaux attributs aux objets ldap existants, il
faut rajouter leur définition auprès du serveur LDAP.
Cela se fait en injectant le fichier **klesia_entreprise_schema.ldif** via la
commande:
```bash
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f klesia_entreprise_schema.ldif
Il faut copier le fichier dans le sous -répertoire schema du répertoire
d'installation ldap et relancer le service
Il faut ensuite rajouter l'attribut objectClass avec la valeur klesiaentreprise
à tous les objets à qui on souhaite ajouter les attributs.
@@ -19,6 +23,9 @@ Il faut ensuite rajouter l'attribut objectClass avec la valeur klesiaentreprise
Ce script est responsable de l'ajout de la classe d'objet décrit ci-dessus d'une
part, et de l'ajout des attributs supplémentaires d'autre part.
À noter les paramètres de connexion et d'authentification en début de fichier. (
$ldapserver, $binddn et $bindpw).
Il attend en entrée un fichier csv ayant la structure suivante:
dn de l'entrée à modifier
nom attribut 1
@@ -29,13 +36,16 @@ valeur attribut n
Chaque champ étant séparé par un ;
Pour chaque ligne du fichier csv:
- vérification de la présence de l'attribut objectClass=klesiaEntreprise
- rajout de cet attribut le cas échéant.
- pour chaque attribut:
- mise à jour de l'attribut avec la valeur correspondante
Ex d'utilisation
```
perl add_attribute.pl entreprises.csv
```
#### Script 2 : password.pl
@@ -44,6 +54,9 @@ attribut **userPassword** non déjà hashé.
Il prend en entrée le dn de la branche à modifier.
À noter les paramètres de connexion et d'authentification en début de fichier. (
$ldapserver, $binddn et $bindpw).
Ex d'utilisation:
```
perl password.pl ou=PeopleEnt,o=od