source: n4d-ldap/trunk/fuentes/install/usr/share/n4d-ldap/one-shots/modify_sambasid_users.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.4 KB
Line 
1#!/usr/bin/env python
2import ldap
3import xmlrpclib
4import sys
5import os.path
6import lliurex.variables.sambasid as getsambasid
7
8
9class UpdateLdapUsers:
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
16    def get_password(self, path_password):
17        if os.path.exists(path_password):
18            f = open(path_password)
19            lines = f.readlines()
20            f.close()
21            password = lines[0].replace("\n", "")
22            return password
23        else:
24            return None
25
26    def init_vars(self):
27        self.local_sambaSID = self.n4d.get_variable(self.n4d_password, 'VariablesManager', 'SAMBASID')
28        self.ldap_basedn = self.n4d.get_variable(self.n4d_password, 'VariablesManager', 'LDAP_BASE_DN')
29
30    def get_conection(self):
31
32        if self.ldap_password == None:
33            return None
34        connect_ldap = ldap.initialize(self.ldap_server, trace_level=0)
35        connect_ldap.protocol_version = 3
36        try:
37            connect_ldap.bind_s("cn=admin," + self.ldap_basedn, self.ldap_password)
38        except Exception as e:
39            pass
40        return connect_ldap
41
42    def update(self):
43        connect_ldap = self.get_conection()
44        if connect_ldap == None:
45            return None
46        items = connect_ldap.search_s(self.ldap_basedn, ldap.SCOPE_SUBTREE)
47        list_update_dn = []
48        #get dn hasn't equal sambasid
49        for x in items:
50            if x[1].has_key('sambaSID'):
51                sambasidsplit = x[1]['sambaSID'][0].split('-')
52                basesid = '-'.join(sambasidsplit[:-1])
53                aux = ''
54                if self.local_sambaSID != basesid:
55                    aux = self.local_sambaSID + '-' + sambasidsplit[-1]
56                    list_update_dn.append([x[0], aux])
57        #update dn
58        for dn in list_update_dn:
59            update_sambasid = [(ldap.MOD_REPLACE, 'sambaSID', dn[1])]
60            try:
61                connect_ldap.modify_s(dn[0], update_sambasid)
62            except:
63                pass
64        return True
65
66    def run(self):
67        self.init_vars()
68        self.update()
69
70
71if __name__ == '__main__':
72    update_ldap = UpdateLdapUsers('localhost', '/etc/lliurex-secrets/passgen/ldap.secret')
73    update_ldap.run()
Note: See TracBrowser for help on using the repository browser.