[*] Factorisation de la configuration LDAP
Ignore-this: a03d38134f839406206dc21026694d4d darcs-hash:20090414022624-ffbb2-6a5db51778c1494d92f9640b9711ee9e8700cd4d.gz
This commit is contained in:
parent
4b58822507
commit
0fea65cd45
7 changed files with 66 additions and 94 deletions
|
@ -1,7 +1,7 @@
|
|||
# -*- mode: python; coding: utf-8 -*-
|
||||
|
||||
include("mode/space")
|
||||
include("ip")
|
||||
include("ldap")
|
||||
|
||||
header("Acces a la base ldap")
|
||||
|
||||
|
@ -9,8 +9,5 @@ header("Acces a la base ldap")
|
|||
@# This file should be world readable but not world writable.
|
||||
|
||||
@BASE dc=crans, dc=org
|
||||
if has("db-server"):
|
||||
%URI "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
||||
%TLS_CACERT "/etc/ssl/certs/CAcrans.pem"
|
||||
else:
|
||||
%URI "ldap://%s/" % admipof("ldap")
|
||||
%URI "%s" % ldap_socket
|
||||
@#TLS_CACERT /etc/ssl/certs/CAcrans.pem
|
||||
|
|
|
@ -17,12 +17,8 @@ info["perms"] = 0644
|
|||
@# | Configuration de la communication avec le serveur |
|
||||
@# +---------------------------------------------------+
|
||||
|
||||
if has("db-server"):
|
||||
@# Socket unix du serveur
|
||||
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
||||
else:
|
||||
@# Addresse du serveur
|
||||
%uri "ldap://%s/" % admipof("ldap")
|
||||
@# Base LDAP
|
||||
%uri "%s" % ldap_socket
|
||||
|
||||
@# The distinguished name of the search base.
|
||||
%base "dc=crans,dc=org"
|
||||
|
@ -60,27 +56,12 @@ else:
|
|||
|
||||
# On n'utilise ldap pour résoudre les bases de données
|
||||
# passwd, group et shadow
|
||||
# Vert a besoin de tous les utilisateurs pour quelques trucs, genre les scripts de vérif des débris, etc.
|
||||
droits = []
|
||||
if has("users") or has("vert"):
|
||||
# Sur le serveur des adhérents, on veut que tout
|
||||
# les adhérents soit reconnus comme utilisateurs locaux
|
||||
%nss_base_passwd "ou=data,dc=crans,dc=org?one"
|
||||
else:
|
||||
# Sur les autres serveurs on filtre pour que seuls
|
||||
# les nounous et les apprentis le soit.
|
||||
# Il est important de mettre ce filtrage au niveau de
|
||||
# libnss-ldap et pam-ldap car ssh utilise pam pour les
|
||||
# mots de passe mais pour l'authentification par clés
|
||||
# il n'utilise que nss
|
||||
droits.append("nss_base_passwd ou=data,dc=crans,dc=org?one?|(droits=Nounou)(droits=Apprenti)")
|
||||
if has("imprimeurs"):
|
||||
droits.append("(droits=Imprimeur)")
|
||||
if has("webmasters"):
|
||||
droits.append("(droits=WebMaster)")
|
||||
if has("bureau"):
|
||||
droits.append("(droits=Bureau)")
|
||||
print ''.join(droits)
|
||||
|
||||
if ldap_filter:
|
||||
passwd_filter = "?%s" % ldap_filter
|
||||
else:
|
||||
passwd_filter = ""
|
||||
|
||||
%nss_base_passwd "ou=data,dc=crans,dc=org?one%s" % passwd_filter
|
||||
%nss_base_shadow "ou=data,dc=crans,dc=org?one"
|
||||
%nss_base_group "ou=Group,dc=crans,dc=org?one"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
include("mode/space")
|
||||
include("secrets")
|
||||
include("ip")
|
||||
include("ldap")
|
||||
|
||||
header("""
|
||||
Fichier de configuration pour libnss-ldapd.
|
||||
|
@ -25,12 +25,7 @@ info["perms"] = 0600
|
|||
@# | Configuration de la communication avec le serveur |
|
||||
@# +---------------------------------------------------+
|
||||
@
|
||||
if has("db-server"):
|
||||
@# Socket unix du serveur
|
||||
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
||||
else:
|
||||
@# Addresse du serveur
|
||||
%uri "ldap://%s/" % admipof("ldap")
|
||||
%uri "%s" % ldap_socket
|
||||
@
|
||||
@# Le distinguished name de la base de recherche
|
||||
%base "dc=crans,dc=org"
|
||||
|
@ -61,22 +56,7 @@ else:
|
|||
@base shadow ou=data,dc=crans,dc=org
|
||||
@base group ou=Group,dc=crans,dc=org
|
||||
|
||||
if not has('users'):
|
||||
# Sur les serveurs autres que zamok, on filtre pour que seuls
|
||||
# les nounous et les apprentis soient vus.
|
||||
# Il est important de mettre ce filtrage au niveau de
|
||||
# libnss-ldap et pam-ldap car ssh utilise pam pour les
|
||||
# mots de passe mais pour l'authentification par clés
|
||||
# il n'utilise que nss
|
||||
droits = ['(|']
|
||||
droits.append("(droits=Nounou)(droits=Apprenti)")
|
||||
if has("imprimeurs"):
|
||||
droits.append("(droits=Imprimeur)")
|
||||
if has("webmasters"):
|
||||
droits.append("(droits=WebMaster)")
|
||||
if has("bureau"):
|
||||
droits.append("(droits=Bureau)")
|
||||
droits.append(')')
|
||||
if ldap_filter:
|
||||
@
|
||||
@# Filtre de recherche
|
||||
print "filter passwd", ''.join(droits)
|
||||
print "filter passwd (%s)" % ldap_filter
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
include("mode/space")
|
||||
include("secrets")
|
||||
include("ip")
|
||||
include("ldap")
|
||||
|
||||
header("""
|
||||
Fichier de configuration de libpam-ldap.
|
||||
|
@ -17,13 +17,8 @@ Pour des informations détaillées voir pam_ldap.conf(5)
|
|||
@# The distinguished name of the search base.
|
||||
%base "dc=crans,dc=org"
|
||||
|
||||
if has("db-server"):
|
||||
# Le serveur principale ainsi que les réplica se connectent par
|
||||
# socket unix
|
||||
%uri "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
||||
else:
|
||||
# Les autres c'est par le réseau
|
||||
%uri "ldap://%s/" % admipof("ldap")
|
||||
@# Base LDAP
|
||||
%uri "%s" % ldap_socket
|
||||
|
||||
@# The LDAP version to use (defaults to 3
|
||||
@# if supported by client library)
|
||||
|
@ -71,26 +66,12 @@ if not has("db-main"):
|
|||
|
||||
# On n'utilise ldap pour résoudre les bases de données
|
||||
# passwd, group et shadow
|
||||
droits = []
|
||||
if has("users"):
|
||||
# Sur le serveur des adhérents, on veut que tout
|
||||
# les adhérents soit reconnus comme utilisateurs locaux
|
||||
%nss_base_passwd "ou=data,dc=crans,dc=org?one"
|
||||
else:
|
||||
# Sur les autres serveurs on filtre pour que seuls
|
||||
# les nounous et les apprentis le soit.
|
||||
# Il est important de mettre ce filtrage au niveau de
|
||||
# libnss-ldap et pam-ldap car ssh utilise pam pour les
|
||||
# mots de passe mais pour l'authentification par clés
|
||||
# il n'utilise que nss
|
||||
droits.append("nss_base_passwd ou=data,dc=crans,dc=org?one?|(droits=Nounou)(droits=Apprenti)")
|
||||
if has("imprimeurs"):
|
||||
droits.append("(droits=Imprimeur)")
|
||||
if has("webmasters"):
|
||||
droits.append("(droits=WebMaster)")
|
||||
if has("bureau"):
|
||||
droits.append("(droits=Bureau)")
|
||||
print ''.join(droits)
|
||||
|
||||
if ldap_filter:
|
||||
passwd_filter = "?%s" % ldap_filter
|
||||
else:
|
||||
passwd_filter = ""
|
||||
|
||||
%nss_base_passwd "ou=data,dc=crans,dc=org?one%s" % passwd_filter
|
||||
%nss_base_shadow "ou=data,dc=crans,dc=org?one"
|
||||
%nss_base_group "ou=Group,dc=crans,dc=org?one"
|
||||
|
|
|
@ -76,12 +76,3 @@ def onoff(b):
|
|||
def outl(line):
|
||||
out(line)
|
||||
out("\n")
|
||||
|
||||
# Le serveur qui gère la base de données
|
||||
if has("db-server"):
|
||||
# Pour ceux qui ont la base ou une copie en locale
|
||||
# on regarde dans celle-ci
|
||||
ldap_host = "ldap://localhost/"
|
||||
else:
|
||||
# Sinon on regarde dans la base principale
|
||||
ldap_host = "ldap://ldap.adm.crans.org/"
|
||||
|
|
41
etc/python/ldap.py
Normal file
41
etc/python/ldap.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Configuration du serveur LDAP
|
||||
#
|
||||
|
||||
from ip import admipof
|
||||
|
||||
# ldap_host correspond à l'adresse réseau de la base
|
||||
# ldap_socket à l'adresse physique de la base (donc physique si possible)
|
||||
|
||||
# Le serveur qui gère la base de données
|
||||
if has("db-server"):
|
||||
# Pour ceux qui ont la base ou une copie en locale
|
||||
# on regarde dans celle-ci
|
||||
ldap_host = "ldap://127.0.0.1/"
|
||||
ldap_socket = "ldapi://%2fvar%2frun%2fslapd%2fldapi/"
|
||||
elif has("new-db"):
|
||||
# On regarde dans la base de test
|
||||
ldap_host = "ldap://%s/" % admipof("newldap")
|
||||
ldap_socket = ldap_host
|
||||
else:
|
||||
# On regarde dans la base principale
|
||||
ldap_host = "ldap://%s/" % admipof("ldap")
|
||||
ldap_socket = ldap_host
|
||||
|
||||
# Filtre de droits pour la connexion
|
||||
if has("users") or has("vert"):
|
||||
# Sur le serveur des adhérents, on veut que tout
|
||||
# les adhérents soit reconnus comme utilisateurs locaux
|
||||
ldap_filter = ''
|
||||
else:
|
||||
# Sur les autres serveurs on filtre pour que seuls
|
||||
# les nounous et les apprentis le soit.
|
||||
droits = ["|(droits=Nounou)(droits=Apprenti)"]
|
||||
if has("imprimeurs"):
|
||||
droits.append("(droits=Imprimeur)")
|
||||
if has("webmasters"):
|
||||
droits.append("(droits=WebMaster)")
|
||||
if has("bureau"):
|
||||
droits.append("(droits=Bureau)")
|
||||
ldap_filter = ''.join(droits)
|
|
@ -6,6 +6,7 @@
|
|||
# result: le champ a recuperer dans le resultat
|
||||
|
||||
include("secrets")
|
||||
include("ldap")
|
||||
keysep = " = "
|
||||
|
||||
@# Connexion LDAP
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue