Simplification, peut-tre la fin des locks rsiduels.
darcs-hash:20051123185609-41617-74b288bf0adbbf86ae54dcab589795d6f68b1ac8.gz
This commit is contained in:
parent
b894f1867f
commit
c21e75fea8
1 changed files with 14 additions and 70 deletions
|
@ -28,25 +28,13 @@ except:
|
||||||
|
|
||||||
date_format='%d/%m/%Y %H:%M'
|
date_format='%d/%m/%Y %H:%M'
|
||||||
hostname = gethostname().split(".")[0]
|
hostname = gethostname().split(".")[0]
|
||||||
if hostname == "vert":
|
if hostname == 'egon' and not '/usr/scripts/gestion/' in sys.argv[0]:
|
||||||
anon_bind = 1 # Anonyme pour lecture seule
|
|
||||||
uri = 'ldapi://%2fvar%2frun%2fldapi/'
|
|
||||||
rw_uri = uri
|
|
||||||
elif hostname in [ 'sila' , 'pegase' ]:
|
|
||||||
anon_bind = 1 # Anonyme pour lecture seule
|
|
||||||
uri = 'ldapi://%2fvar%2frun%2fldapi/'
|
|
||||||
rw_uri = 'ldap://ldap.adm.crans.org/'
|
|
||||||
elif hostname == 'egon' and not '/usr/scripts/gestion/' in sys.argv[0]:
|
|
||||||
# pour les tests, les séminaires... sur egon
|
# pour les tests, les séminaires... sur egon
|
||||||
anon_bind = 1 # Anonyme pour lecture seule
|
|
||||||
uri = 'ldapi://%2fvar%2frun%2fldapi/'
|
uri = 'ldapi://%2fvar%2frun%2fldapi/'
|
||||||
rw_uri = uri
|
|
||||||
ldap_auth_dn='cn=admin,dc=crans,dc=org'
|
ldap_auth_dn='cn=admin,dc=crans,dc=org'
|
||||||
ldap_password='75bdb64f32'
|
ldap_password='75bdb64f32'
|
||||||
else:
|
else:
|
||||||
anon_bind = 0
|
|
||||||
uri = 'ldap://ldap.adm.crans.org/'
|
uri = 'ldap://ldap.adm.crans.org/'
|
||||||
rw_uri = uri
|
|
||||||
|
|
||||||
smtpserv = "rouge.crans.org"
|
smtpserv = "rouge.crans.org"
|
||||||
|
|
||||||
|
@ -239,62 +227,19 @@ class crans_ldap:
|
||||||
self.remove_lock(lock)
|
self.remove_lock(lock)
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
""" Initialisation des connexion vers le serveur LDAP """
|
""" Initialisation la connexion vers le serveur LDAP """
|
||||||
|
|
||||||
def bind(conn,anon_bind=0):
|
|
||||||
""" Authentification auprès du serveur ldap """
|
|
||||||
nbessais = 0
|
|
||||||
ok = False
|
|
||||||
while not ok:
|
|
||||||
try:
|
|
||||||
if anon_bind:
|
|
||||||
conn.bind_s('','',ldap.AUTH_SIMPLE)
|
|
||||||
else:
|
|
||||||
conn.bind_s(ldap_auth_dn,ldap_password,ldap.AUTH_SIMPLE)
|
|
||||||
ok = True
|
|
||||||
|
|
||||||
except ldap.SERVER_DOWN:
|
|
||||||
nbessais += 1
|
|
||||||
if nbessais > 2:
|
|
||||||
sys.stderr.write("ERREUR : serveur LDAP injoignable\n")
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
sleep(0.3)
|
|
||||||
|
|
||||||
def select_conn(methode_base, methode_alternative):
|
|
||||||
""" Retoune une fonction qui :
|
|
||||||
1) bind sur la connection self.conn si necessaire
|
|
||||||
2) fait ce que ferai methode_base
|
|
||||||
3) si échoue bind sur la connexion self.rw_conn
|
|
||||||
4) fait ce que ferai methode_alternative """
|
|
||||||
|
|
||||||
def new_methode(*args):
|
|
||||||
try:
|
|
||||||
if not self.__conn_binded:
|
|
||||||
bind(self.conn,anon_bind)
|
|
||||||
self.__conn_binded = True
|
|
||||||
return methode_base(*args)
|
|
||||||
except ldap.STRONG_AUTH_REQUIRED:
|
|
||||||
# On a pas les droits necessaires ici
|
|
||||||
if not self.__rw_conn_binded:
|
|
||||||
bind(self.rw_conn)
|
|
||||||
self.__rw_conn_binded = True
|
|
||||||
return methode_alternative(*args)
|
|
||||||
|
|
||||||
return new_methode
|
|
||||||
|
|
||||||
# Les objets ldap necessaires
|
|
||||||
self.conn = ldap.initialize(uri)
|
self.conn = ldap.initialize(uri)
|
||||||
self.__conn_binded = False
|
while True :
|
||||||
|
try:
|
||||||
self.rw_conn = ldap.initialize(rw_uri)
|
self.conn.bind_s(ldap_auth_dn,ldap_password,ldap.AUTH_SIMPLE)
|
||||||
self.__rw_conn_binded = False
|
break
|
||||||
|
except ldap.SERVER_DOWN:
|
||||||
# Modification des méthodes utilisées
|
nbessais += 1
|
||||||
self.conn.search_s = select_conn(self.conn.search_s,self.rw_conn.search_s)
|
if nbessais > 2:
|
||||||
self.conn.add_s = select_conn(self.conn.add_s,self.rw_conn.add_s)
|
sys.stderr.write("ERREUR : serveur LDAP injoignable\n")
|
||||||
self.conn.modify_s = select_conn(self.conn.modify_s,self.rw_conn.modify_s)
|
sys.exit(1)
|
||||||
self.conn.delete_s = select_conn(self.conn.delete_s,self.rw_conn.delete_s)
|
else:
|
||||||
|
sleep(0.3)
|
||||||
|
|
||||||
def exist(self,arg):
|
def exist(self,arg):
|
||||||
"""
|
"""
|
||||||
|
@ -1046,7 +991,6 @@ class base_classes_crans(crans_ldap):
|
||||||
t = str(self.__class__).split('.')[-1]
|
t = str(self.__class__).split('.')[-1]
|
||||||
fd = open('%s/%s/%s_%s' % (config.cimetiere, t, time.strftime('%Y-%m-%d-%H:%M'), self.nom()),'wb')
|
fd = open('%s/%s/%s_%s' % (config.cimetiere, t, time.strftime('%Y-%m-%d-%H:%M'), self.nom()),'wb')
|
||||||
self.conn = None # Fermeture des connexions à la base sinon cPickle ne marchera pas
|
self.conn = None # Fermeture des connexions à la base sinon cPickle ne marchera pas
|
||||||
self.rw_conn = None
|
|
||||||
cPickle.dump(self,fd,2)
|
cPickle.dump(self,fd,2)
|
||||||
fd.close()
|
fd.close()
|
||||||
index = u"%s, %s : %s %s # %s\n" % (time.strftime(date_format), script_utilisateur, t, self.Nom() , decode(comment))
|
index = u"%s, %s : %s %s # %s\n" % (time.strftime(date_format), script_utilisateur, t, self.Nom() , decode(comment))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue