def insert_command_reboot(self, device_id): init = Init.Init() device_command = db.DeviceCommand.DeviceCommand(device_id=device_id, command='reboot', status='wait') init.database.session.add(device_command) init.database.session.commit()
def do(self): init = Init.Init() ret_values = [] try: for param_name_key in self.params.keys(): if param_name_key.lower() == 'parameterpath': print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") param_name = self.params[param_name_key] print(param_name) query_params = init.database.session.query( db.Param.Param).filter( db.Param.Param.name.like(param_name + '%')) params = query_params.all() ret_values = ret_values + params except: pass get_parameter_names_str = open( init.config['TEMPLATERS']['templater_dir'] + '/' + init.config['TEMPLATERS']['templater_get_parameter_names']).read() templater = Template(get_parameter_names_str) content = templater.render(params=ret_values, leng=len(ret_values), cwmp_id=1) self.http_client.request(content) return
def do(self): init = Init.Init() inform_str = open( init.config['TEMPLATERS']['templater_dir'] + '/' + init.config['TEMPLATERS']['templater_inform']).read() templater = Template(inform_str) query_params = init.database.session.query(db.Param.Param) params = query_params.all() params_hash = {} for param in params: params_hash[param.name] = param query_param_tr69 = init.database.session.query( db.Param.Param).filter(db.Param.Param.tr69_interface == 'Y') param_tr69_interface = query_param_tr69.one() param_tr69_interface.value = '192.168.206.3' inform_str_parse = templater.render( params=params_hash, cwmp_id=1, event='1 BOOT', date='2014-10-29T16:24:21+00:00', param_tr69_interface=param_tr69_interface) self.http_client.request(inform_str_parse) ret = self.http_client.response() self.http_client.request("") return
def do(self): init = Init.Init() try: if self.params['ParameterList']['ParameterValueStruct']: print( type(self.params['ParameterList']['ParameterValueStruct'])) if type(self.params['ParameterList'] ['ParameterValueStruct']) == list: for p in self.params['ParameterList'][ 'ParameterValueStruct']: self.save_param(p) else: p = self.params['ParameterList']['ParameterValueStruct'] self.save_param(p) except: pass set_parameter_values_str = open( init.config['TEMPLATERS']['templater_dir'] + '/' + init.config['TEMPLATERS']['templater_set_parameter_values']).read( ) templater = Template(set_parameter_values_str) content = templater.render(cwmp_id=1) self.http_client.request(content) return
def do(self, command): init = Init.Init() query_device = init.database.session.query( db.Device.Device).filter_by(id=1) devices = query_device.all() if len(devices) < 1: command.status = 'error' init.database.session.commit() return if len(devices) > 1: command.status = 'error' init.database.session.commit() return device = devices[0] if command.command == 'power_on': self.power_on(device, command) return if command.command == 'power_off': self.power_off(device, command) return if command.command == 'connect_request': self.connect_request(device, command) return command.status = 'error' init.database.session.commit()
def get_acs_url(self): init = Init.Init() url = None try: query_param = init.database.session.query( db.Param.Param).filter_by( name='InternetGatewayDevice.ManagementServer.URL') param_url = query_param.one() url = param_url.value self.acs_full_url = url except BaseException: pass if url: port = None ip = None if len(re.findall(r'\d+.\d+.\d+.\d+', url)) > 0: ip = re.findall(r'\d+.\d+.\d+.\d+', url)[0] if len(re.findall(r':\d+', url)) > 0: port = re.findall(r'\d+', re.findall(r':\d+', param_url)[0]) else: port = 80 self.acs_ip = ip self.acs_port = port return (ip, port) return (None, None)
def erase_dump(self): init=Init.Init() dump_path=init.config['DUMP']['dump_dir'] self.index=1 self.dump_path=dump_path files=os.listdir(path=dump_path) for file in files: if len(re.findall(r'listner',file))>0: os.remove(dump_path+'/'+file)
def do(self): init = Init.Init() factory_reset_str = open( init.config['TEMPLATERS']['templater_dir'] + '/' + init.config['TEMPLATERS']['templater_factory_reset']).read() templater = Template(factory_reset_str) factory_reset_parse = templater.render(cwmp_id=1) self.http_client.request(factory_reset_parse) self.insert_command_factory_reset(1) return
def save_param(self, data): init = Init.Init() name = data['Name'] value = data['Value']['#text'] query_param = init.database.session.query( db.Param.Param).filter_by(name=name) try: param = query_param.one() param.value = value init.database.session.commit() except: pass
def start_tr069_client(self, device): init = Init.Init() try: client = Client.Client() client.start() device.client_TR069_status = "Link to ACS ip:" + str( client.acs_ip) + " port " + str(client.acs_port) + " ...OK" return True except: device.client_TR069_status = "Fail connect to ACS ip" + str( client.acs_ip) + " port " + str(client.acs_port) return False return True
def do(self): init=Init.Init() download_str = open(init.config['TEMPLATERS']['templater_dir']+'/'+init.config['TEMPLATERS']['templater_download']).read() templater=Template(download_str) download_parse=templater.render(cwmp_id=1) self.http_client.request(download_parse) try: for key in self.params.keys(): if key.lower()=='url': self.insert_command_download(1,self.params['URL']) except: pass return
def do(self): init = Init.Init() ret_values = [] get_parameter_values_str = open( init.config['TEMPLATERS']['templater_dir'] + '/' + init.config['TEMPLATERS']['templater_get_rpc_method']).read() templater = Template(get_parameter_values_str) content = templater.render(leng=len(ret_values), cwmp_id=1) self.http_client.request(content) return
def __init__(self): self.shema_dir="" self.database=db.DB() init=Init.Init() self.database.set_shema_dir(init.config['ORM']['shema_files']) self.database.initDataBaseEngine(init.config['DATABASE']['host'],init.config['DATABASE']['driver'],init.config['DATABASE']['database'],init.config['DATABASE']['login'],init.config['DATABASE']['password'],False) self.logger=logging.getLogger() self.logger.setLevel(int(init.config['CONNECT_REQUEST']['log_level'])) formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s') handler = logging.FileHandler(init.config['CONNECT_REQUEST']['log_file']) handler.setFormatter(formatter) self.logger.addHandler(handler) self.logger.info (u'Connection request ..... init' ) self.index=1 self.dump_path=''
def power_off(self, device, command): init = Init.Init() device.status = "off" try: if int(device.connect_request_pid) > 0: os.kill(int(device.connect_request_pid), signal.SIGTERM) except: pass device.connect_request_pid = "0" device.client_TR069_status = "Offline" device.listner_connect_request = "Offline" init.database.session.commit() command.status = 'done' init.database.session.commit()
def power_on(self, device, command): pid = os.fork() if pid == 0: # дочерний процесс try: listner = Listner.ConnectRequestListner() listner.deviced_id = device.id listner.start() sys.exit() except: pass # родитель init = Init.Init() device.status = "on" device.connect_request_pid = str(pid) init.database.session.commit() command.status = 'done' self.start_tr069_client(device) init.database.session.commit()
def do(self): init = Init.Init() ret_values = [] param_names = self.params['ParameterNames'] for param_name in param_names: if param_name == 'string': if type(self.params['ParameterNames'][param_name]) == str: query_params = init.database.session.query( db.Param.Param).filter( db.Param.Param.name.like( self.params['ParameterNames'][param_name] + '%')) params = query_params.all() ret_values = ret_values + params else: for find_param in self.params['ParameterNames'][ param_name]: query_params = init.database.session.query( db.Param.Param).filter( db.Param.Param.name.like(find_param + '%')) params = query_params.all() ret_values = ret_values + params get_parameter_values_str = open( init.config['TEMPLATERS']['templater_dir'] + '/' + init.config['TEMPLATERS']['templater_get_parameter_values']).read( ) templater = Template(get_parameter_values_str) content = templater.render(params=ret_values, leng=len(ret_values), cwmp_id=1) self.http_client.request(content) return
def insert_command_download(self,device_id,url): init=Init.Init() device_command=db.DeviceCommand.DeviceCommand(device_id=device_id,command='download',status='wait',download_url=url) init.database.session.add(device_command) init.database.session.commit()
def connect_request(self, device, command): init = Init.Init() command.status = 'done' init.database.session.commit() self.start_tr069_client(device)
# -*- coding: utf-8 -*- import socket import sys import re import pprint import requests, base64 import logging import lib.init as Init import lib.ORM.db as db import lib.ConnectionRequest.ConnectRequestListner as Listner init=Init.Init() init.config_file='/home/leo/emualator/etc/device.conf' init.read_config() init.init_database() listner=Listner.ConnectRequestListner() listner.deviced_id=1 listner.start() sys.exit()