source: lliurex-shutdowner/trunk/fuentes/lliurex-shutdowner.install/usr/share/lliurex-shutdowner/N4dManager.py @ 5419

Last change on this file since 5419 was 5419, checked in by hectorgh, 2 years ago

wip

File size: 2.1 KB
Line 
1import xmlrpc.client
2import ssl
3import threading
4import time
5
6class N4dManager:
7       
8        def __init__(self,server=None):
9               
10                self.debug=True
11               
12                self.client=None
13                self.user_validated=False
14                self.user_groups=[]
15                self.detected_clients=0
16                self.validation=None
17               
18                if server!=None:
19                        self.set_server(server)
20               
21        #def init
22       
23        def dprint(self,msg):
24               
25                if self.debug:
26                        print(str(msg))
27                       
28        #def dprint
29               
30       
31        def set_server(self,server):
32                context=ssl._create_unverified_context()       
33                self.client=xmlrpc.client.ServerProxy("https://%s:9779"%server,allow_none=True,context=context)
34               
35        #def set_server
36       
37        def validate_user(self,user,password):
38               
39                ret=self.client.validate_user(user,password)
40                self.user_validated,self.user_groups=ret
41                       
42               
43                if self.user_validated:
44                        self.validation=(user,password)
45                        self.get_shutdowner_values()
46                        self.get_client_list()
47                       
48                        t=threading.Thread(target=self.update_client_list_thread)
49                        t.daemon=True
50                        t.start()
51               
52                return self.user_validated
53               
54               
55        #def
56       
57        def get_shutdowner_values(self):
58               
59                self.shutdowner_var=self.client.get_variable("","VariablesManager","SHUTDOWNER")
60               
61        #def get_shutdowner_values
62       
63       
64        def is_cron_enabled(self):
65               
66                return self.shutdowner_var["cron_enabled"]
67               
68        #def cron_enabled
69       
70       
71        def get_cron_values(self):
72               
73                if self.shutdowner_var["cron_content"]!=None:
74                        return self.shutdowner_var["cron_values"]
75                return None
76               
77        #def get_cron_values
78       
79       
80        def get_client_list(self):
81               
82                self.client.manual_client_list_check(self.validation,"ShutdownerManager")
83                ret=self.client.get_client_list("","VariablesManager")
84               
85                count=0
86                for item in ret:
87                        if ret[item]["missed_pings"]<1:
88                                count+=1
89                               
90                self.detected_clients=count
91               
92        #def get_client_list
93       
94       
95        def update_client_list_thread(self):
96               
97                while True:
98                        time.sleep(20)
99                        self.get_client_list()
100                       
101        #def update_client_list_thread
102       
103       
104        def set_shutdowner_values(self):
105               
106                self.client.save_variable(self.validation,"ShutdownerManager",self.shutdowner_var)
107               
108        #def set_shutdowner_values
109       
110        def shutdown_clients(self):
111               
112                self.client.update_shutdown_signal(self.validation,"ShutdownerManager")
113               
114        #def shutdown_clients
115       
116       
117#class N4dManager
Note: See TracBrowser for help on using the repository browser.