source: n4d-matrix/trunk/install_server/usr/share/n4d/python-plugins/Matrix.py @ 1270

Last change on this file since 1270 was 1270, checked in by hectorgh, 5 years ago

update fucntion is now a thread

File size: 1.4 KB
Line 
1import ldap
2import ldap.sasl
3import ldap.modlist
4import xmlrpclib
5import os
6import json
7import threading
8
9class Matrix:
10       
11        def __init__(self):
12                self.first_run = True
13        #def __init__
14
15        def n4d_cron(self,minute):
16                if self.first_run or ( minute % 60 == 0 ) :
17                        if self.first_run:
18                                self.first_run = False
19                        self.update_from_matrix()
20        #def n4d_cron
21
22        def startup(self,options):
23               
24                try:
25                        self.update_from_matrix()
26                except:
27                        pass
28
29        def update_from_matrix(self):
30
31                t=threading.Thread(target=self.t_update_from_matrix)
32                t.daemon=True
33                t.start()
34
35        #def update_from_matrix
36
37        def t_update_from_matrix(self):
38                try:
39                        if not objects['SlapdManager'].test_ldap_connection():
40                                if not objects['SlapdManager'].connection_ldap():
41                                        return {"status":False,"msg":"Connection with ldap is not create"}
42                except:
43                        return 'Not initialized'
44                aux_file = open('/etc/matrix_config','r')
45                matrix_options = json.load(aux_file)
46                c = xmlrpclib.ServerProxy("https://" + matrix_options['server_ip'] + ":9779")
47                try:
48                        list_changes = c.get_users('','Matrix')
49                except:
50                        return "Server is down"
51                if list_changes[0][0] == 'ou=llxadmin,dc=ma5,dc=lliurex,dc=net':
52                        objects['SlapdManager'].recursive_delete(list_changes[0][0])
53               
54                for x in list_changes:
55                        aux_dic = {}
56                        aux_dic[x[0]]= x[1]
57                        objects['SlapdManager'].insert_dictionary(aux_dic)
58                return "Ok"
59                #return list_changes[0]
60
61
62if __name__ == '__main__':
63        a = Matrix()
64        a.update_from_matrix()
Note: See TracBrowser for help on using the repository browser.