source: n4d-ldap/trunk/fuentes/install/usr/share/n4d-ldap/one-shots/ldap_update.py @ 149

Last change on this file since 149 was 149, checked in by hectorgh, 4 years ago

adding project files

  • Property svn:executable set to *
File size: 2.1 KB
Line 
1#!/usr/bin/env python
2import ldap
3import xmlrpclib
4import sys
5import os.path
6import lliurex.variables.sambasid as getsambasid
7
8class UpdateLdap:
9
10        def __init__(self,server,path_password):
11                self.n4d = xmlrpclib.ServerProxy('https://'+ server +':9779')
12                self.ldap_server = 'ldap://'+server+':389'
13                self.ldap_password = self.get_password(path_password)
14                self.n4d_password = self.get_password('/etc/n4d/key')
15                self.sid = self.n4d.get_variable(self.n4d_password,'VariablesManager','LDAP_SID')       
16
17        def check_centre_server(self):
18                if self.sid == '254':
19                        return True
20                else:
21                        return False
22        def get_password(self,path_password):
23                if os.path.exists(path_password):
24                        f=open(path_password)
25                        lines=f.readlines()
26                        f.close()
27                        password=lines[0].replace("\n","")
28                        return password
29                else:
30                        return None
31
32        def init_vars(self):
33                self.local_sambaSID = self.n4d.get_variable(self.n4d_password,'VariablesManager','SAMBASID')
34                self.ldap_basedn = self.n4d.get_variable(self.n4d_password,'VariablesManager','LDAP_BASE_DN')
35
36        def get_conection(self):
37
38                if self.ldap_password == None:
39                        return None
40                connect_ldap = ldap.initialize(self.ldap_server,trace_level=0)
41                connect_ldap.protocol_version=3
42                try:
43                        connect_ldap.bind_s("cn=admin," + self.ldap_basedn ,self.ldap_password)
44                except Exception, e:
45                        pass
46                return connect_ldap
47
48        def update(self):
49                connect_ldap = self.get_conection()
50                if connect_ldap == None:
51                        return None
52                items = connect_ldap.search_s(self.ldap_basedn,ldap.SCOPE_SUBTREE,'objectClass=sambaDomain')
53                list_update_dn = []
54                #get dn hasn't equal sambasid
55                for x in items:
56                        try:
57                                if x[1]['sambaSID'] != self.local_sambaSID:
58                                        list_update_dn.append(x[0])
59                        except:
60                                pass
61                #update dn
62                for dn in list_update_dn:
63                        update_sambasid = [(ldap.MOD_REPLACE,'sambaSID',self.local_sambaSID)]
64                        try:
65                                connect_ldap.modify_s(dn,update_sambasid)
66                        except:
67                                pass
68                return True
69
70        def run(self):
71                if self.check_centre_server():
72                        self.init_vars()
73                        self.update()
74
75
76if __name__ == '__main__':
77        update_ldap = UpdateLdap('localhost','/etc/lliurex-secrets/passgen/ldap.secret')
78        update_ldap.run()
Note: See TracBrowser for help on using the repository browser.