Changeset 5388


Ignore:
Timestamp:
Jun 29, 2017, 12:19:59 PM (18 months ago)
Author:
hectorgh
Message:

this becomes pretty much version 0.1

Location:
n4d-shutdowner-server/trunk/fuentes
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • n4d-shutdowner-server/trunk/fuentes/debian/control

    r5387 r5388  
    44Maintainer: Equipo LliureX <lliurex@gva.es>
    55Uploaders: Angel Berlanas Vicente <lliurex_devel2@edu.gva.es>, Raul Rodrigo Segura <lliurex_devel3@edu.gva.es>,  David Montalva Furio <montalva_dav@gva.es>, Hector Garcia Huerta <lliurex_devel1@edu.gva.es>, Daniel Duran Vecino <daduve@gmail.com>, M.Angel Juan <m.angel.juan@gmail.com>
    6 Build-Depends: debhelper (>= 7.0), python-support,llxcfg-dev, zero-dev, llxsrchelper
     6Build-Depends: debhelper (>= 7.0)
    77Standards-Version: 3.9.5
    88
  • n4d-shutdowner-server/trunk/fuentes/debian/rules

    r497 r5388  
    1111
    1212%:
    13         dh $@ --with llxdev,llxsrc
     13        dh $@
    1414       
  • n4d-shutdowner-server/trunk/fuentes/install-files/etc/n4d/conf.d/Shutdowner

    r5240 r5388  
    77update_shutdown_signal=adm,admins,teachers
    88manual_client_list_check=adm,admins,teachers
     9save_variable=adm,admins,teachers
    910list_clients = admin,admins,adm,teachers
    1011shutdownlist = admin,admins,adm,teachers
  • n4d-shutdowner-server/trunk/fuentes/install-files/usr/share/n4d/python-plugins/Shutdowner.py

    r5240 r5388  
    88class Shutdowner:
    99       
    10         tcos_port="9779"
    11         clients_file="/run/clients"
    12        
     10
    1311        def __init__(self):
    14                 pass
     12               
     13                self.cron_file="/etc/cron.d/lliurexshutdown"
     14               
    1515        #def init
     16
    1617       
    1718        def startup(self,options):
     
    2728                        except Exception as e:
    2829                                print e
     30       
     31                self.check_server_shutodown()
    2932
    3033        #def startup
     34
    3135       
    3236        def initialize_variable(self):
     
    3438                self.internal_variable={}
    3539                self.internal_variable["cron_enabled"]=False
    36                 self.internal_variable["cron_content"]=None
    37                 self.internal_variable["shutdown_signal"]=0
     40                self.internal_variable["cron_content"]=""
     41                self.internal_variable["shutdown_signal"]=0.0
    3842                self.internal_variable["cron_values"]={}
    3943                self.internal_variable["cron_values"]["hour"]=0
    4044                self.internal_variable["cron_values"]["minute"]=0
    41                 self.internal_variable["cron_values"]["weekdays"]=[False,False,False,False,False]
     45                self.internal_variable["cron_values"]["weekdays"]=[True,True,True,True,True]
     46                self.internal_variable["cron_values"]["server_shutdown"]=False
    4247               
    4348        #def initialize_variable
     49
     50
     51        def check_variable(self,variable):
     52
     53                try:
     54                        if not type(variable)==dict:
     55                                return False
     56                        if not type(variable["cron_enabled"])==bool:
     57                                return False
     58                        if not type(variable["cron_content"])==str:
     59                                return False
     60                        if not type(variable["shutdown_signal"])==float:
     61                                return False
     62                        if not type(variable["cron_values"])==dict:
     63                                return False
     64                        if not type(variable["cron_values"]["hour"])==int:
     65                                return False
     66                        if not type(variable["cron_values"]["minute"])==int:
     67                                return False
     68                        if not type(variable["cron_values"]["server_shutdown"])==bool:
     69                                return False
     70                        if not type(variable["cron_values"]["weekdays"])==list:
     71                                if len(variable["cron_values"]["weekdays"])!=5:
     72                                        return False
     73                except:
     74                        return False
     75
     76                return True
     77
     78        #def check_variable
     79
    4480       
    4581        def manual_client_list_check(self):
    4682               
    4783                objects["VariablesManager"].manual_client_list_check()
    48                
    4984                return True
    5085               
    5186        #def manual_client_list_check
     87
    5288       
    5389        def is_cron_enabled(self):
     
    70106
    71107       
    72         def save_variable(self):
     108        def save_variable(self,variable=None):
     109
     110                if variable==None:
     111                        variable=copy.deepcopy(self.internal_variable)
     112                else:
     113                        if not self.check_variable(variable):
     114                                return {"status":False,"msg":"Variable does not have the expected structure"}
     115                        self.internal_variable=copy.deepcopy(variable)
    73116               
    74                 objects["VariablesManager"].set_variable("SHUTDOWNER",copy.deepcopy(self.internal_variable))
     117                objects["VariablesManager"].set_variable("SHUTDOWNER",variable)
     118                self.check_server_shutodown()
     119       
     120                return {"status":True,"msg":""}
    75121               
    76122        #def save_variable
     123
    77124       
     125        def check_server_shutodown(self):
     126                       
     127                if self.internal_variable["cron_enabled"] and self.internal_variable["cron_values"]["server_shutdown"]:
     128                        f=open(self.cron_file,"w")
     129                        f.write(self.internal_variable["cron_content"])
     130                        f.close()
     131                else:
     132                        if os.path.exists(self.cron_file):
     133                                os.remove(self.cron_file)
    78134       
    79         def list_clients(self):
    80                 try:   
    81                         # save_path, name_file, hdd_disk, final_action
    82                         environment_variables = {}
    83                        
    84                         # Get the values from free server
    85                         if  objects.has_key("VariablesManager"):
    86                                 environment_variables=objects["VariablesManager"].get_variable_list(["SRV_IP","INTERNAL_NETWORK","INTERNAL_MASK"])
    87                                 SRV_IP=environment_variables["SRV_IP"]
    88                                 INTERNAL_NETWORK=environment_variables["INTERNAL_NETWORK"]
    89                                 INTERNAL_MASK=environment_variables["INTERNAL_MASK"]
    90                         os.system('nmap -sS -p%s -oG %s %s' % (self.tcos_port,self.clients_file,str(INTERNAL_NETWORK)+'/'+str(INTERNAL_MASK)))
    91                         os.system("cat %s |grep open|egrep -o '[0-9]+([.][0-9]+){3}'|uniq|grep -v %s > %s" %(self.clients_file,str(SRV_IP),self.clients_file+'_tmp'))
    92                         os.system ('rm %s' %(self.clients_file))
    93                        
    94                                
    95                         COMMENT_END = "Clients in your internal network has been saved in: %s" %(self.clients_file+'_tmp')
    96                         return [True,str(COMMENT_END)]
     135                return True
    97136               
    98                 except Exception as e:
    99 
    100                         return [False,str(e)]   
    101                
    102         #def list_clients
    103        
    104         def shutdownlist(self,user,password,aux_clients_file=clients_file+'_tmp'):
    105        
    106                 try:
    107                        
    108                         with open(aux_clients_file) as f:
    109                                 for line in f:
    110                                        
    111                                         c=xmlrpclib.ServerProxy("https://%s:9779"%line.strip("\n"))
    112                                         u=(user,password)
    113                                         try:
    114                                                 c.shutdown(u,"ShutdownerClient")
    115                                         except Exception as e:
    116                                                 print e,line.strip("\n")
    117                                                
    118                                        
    119                                        
    120                         COMMENT_END = "The PC's in your internal network have been halted, you can review their address in: %s" %(aux_clients_file)                     
    121                         return [True,str(COMMENT_END)]
    122                        
    123                 except Exception as e:
    124 
    125                                 return [False,str(e)]
    126         #def shutdownlist
    127        
    128        
    129         def shutdowncronlist(self,user,password,minute,hour,monthday,month,weekday,aux_clients_file=clients_file+'_tmp'):
    130        
    131                 try:
    132                        
    133                         with open(aux_clients_file) as f:
    134                                 for line in f:
    135                                        
    136                                         c=xmlrpclib.ServerProxy("https://%s:9779"%line.strip("\n"))
    137                                         u=(user,password)
    138                                         try:
    139                                                 c.shutdown_cron(u,"ShutdownerClient",minute,hour,monthday,month,weekday)
    140                                         except Exception as e:
    141                                                 print e,line.strip("\n")
    142                                                
    143                                        
    144                                        
    145                         COMMENT_END = "The PC's in your internal network have been updated with new cron to shutdown at hour: %s, min: %s, weekday: %s, days of the month: %s and months: %s" %(hour,min,weekday,monthday,month)                       
    146                         return [True,str(COMMENT_END)]
    147                        
    148                 except Exception as e:
    149 
    150                                 return [False,str(e)]
    151         #def shutdowncronlist
    152        
    153         def noshutdowncronlist(self,user,password,aux_clients_file=clients_file+'_tmp'):
    154        
    155                 try:
    156                         with open(aux_clients_file) as f:
    157                                 for line in f:
    158                        
    159                                         c=xmlrpclib.ServerProxy("https://%s:9779"%line.strip("\n"))
    160                                         u=(user,password)
    161                                         try:
    162                                                 c.noshutdown_cron(u,"ShutdownerClient")
    163                                         except Exception as e:
    164                                                 print e,line.strip("\n")
    165                         COMMENT_END = "The PC's in your internal network have been updated, cron deactivated!"
    166                         return [True,str(COMMENT_END)]
    167                        
    168                 except Exception as e:
    169 
    170                                 return [False,str(e)]
    171         #def noshutdowncronlist
     137        #def check_server_shutdown
Note: See TracChangeset for help on using the changeset viewer.