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

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

wip

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