def __del__(self): """ """ try: self.cur.close() except Exception,e: print_trace(e)
def send_msg(request, msg_rsp, obj): """ echo sender """ ret = ERR_FAIL str_dict_msg = "" ip = request.transport.client[0] port = request.transport.client[1] desc = "send %s(ip=%s, port=%s)" %(get_event_desc(msg_rsp), ip, port) log.app_info(desc) try: strio = StringIO() pickle.dump(obj, strio) try: dict1 = Worklist.get_user_dictmsg(request) seq = dict1.get(KEY_SEQUENCE) except Exception,e: print_trace(e) dict1 = {} dict1[KEY_MESSAGE] = msg_rsp dict1[KEY_OBJECT] = strio.getvalue() dict1[KEY_SENDER] = KEY_SENDER_WORKLIST str_dict_msg = str(dict1) Worklist.request_write(request, str_dict_msg) UsersMsgSeq.save_user_rsp_msg(seq, str_dict_msg) ret = ERR_SUCCESS
def start_monitor_worklist(cpe, obj_monitor): """ obj_alarm is MsgMonitorInform """ ret = ERR_FAIL err_message = "" sn = cpe.get_sn() for nwf in [1]: # physic worklist --------------- dict_data = { "parameterlist": obj_monitor.parameterlist, "timelist": obj_monitor.timelist } obj = MsgWorklistBuild("Inform_Monitor_Monitor_Start", dict_data) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) save_id2worklistid(obj_monitor.id_, obj_database.id_) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: desc = "start_monitor_worklist(id=%s) success." % ( obj_database.id_) log.app_info(desc) obj_monitor.dict_ret["str_result"] = desc else: # worklist(id=worklist_2014-07-08_11:48:15.781_82424709) status is not success(fail) # nwf 2014-07-08; +worklist fail obj_db = restore_acs_worklist(obj_database.id_) err_message = err_message + "\n" + obj_db.dict_ret[ "str_result"] log.app_err(err_message) obj_monitor.dict_ret["str_result"] = err_message break else: log.app_err(err_message) obj_monitor.dict_ret["str_result"] = err_message break except Exception, e: print_trace(e) obj_monitor.dict_ret["str_result"] = e break ret = ERR_SUCCESS
def bind_do_worklists(logic_worklists): """ """ ret = ERR_FAIL err_message = "" bool_logic_worklist = True # default success status_result = 1 # logic worklist --------------- for obj_database in logic_worklists: try: desc = "begin to exec worklist---name:%s time_bind:%s" % ( obj_database.worklist_name, obj_database.time_bind) log.app_info(desc) ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if (ret != ERR_SUCCESS): log.app_err(err_message) bool_logic_worklist = False else: log.app_err(err_message) bool_logic_worklist = False # continue, not break except Exception, e: print_trace(e) bool_logic_worklist = False
def dsl_mode_change_ct(cpe): """ in thread """ ret = ERR_FAIL cpe_device_type_new = "" for nwf in [1]: try: # ADSL_2LAN ADSL_4+1 ADSL_4LAN # VDSL_4+1 VDSL_4+2 VDSL_4LAN cpe_device_type_old = cpe.cpe_property.get_cpe_domain() type_ = cpe_device_type_old[:4] if (type_ == "ADSL"): cpe_device_type_new = "VDSL" + cpe_device_type_old[4:] elif (type_ == "VDSL"): cpe_device_type_new = "ADSL" + cpe_device_type_old[4:] # update cpe.cpe_property.set_cpe_domain(cpe_device_type_new) except Exception, e: print_trace(e) break ret = ERR_SUCCESS
def bind_set_result(cpe, status_result, node_name): """ in thread """ ret = ERR_FAIL err_message = "" for nwf in [1]: #rpc 3; path_name = "InternetGatewayDevice.X_CT-COM_UserInfo.Result" dict_data = { "ParameterList": [dict(Name=node_name, Value=status_result)] } obj = MsgWorklistBuild("Auto_SetParameterValue", dict_data) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if (ret != ERR_SUCCESS): log.app_err(err_message) break else: log.app_err(err_message) break except Exception, e: print_trace(e) break
def do_worklist_download(msg, obj): """ obj = MsgWorklistDownload """ ret = None # check if (not isinstance(obj, MsgWorklistDownload)): log.app_err("obj is not MsgWorklistDownload") msg_rsp = msg + 2 # fail return (ERR_FATAL, msg_rsp) msg_rsp = msg + 2 # default, fail for nwf in [1]: try: ret = Worklist.build_download_msg(obj) if (ret != ERR_SUCCESS): break except Exception,e: print_trace(e) obj.dict_ret["str_result"] = str(e) ret = ERR_FAIL break ret = ERR_SUCCESS msg_rsp = msg + 1
def auto_exec_worklist(worklist, cpe): """ """ ret = ERR_FAIL err_message = "" sn = cpe.get_sn() for nwf in [1]: # physic worklist --------------- obj = MsgWorklistBuild(worklist, {}) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: desc = "worklist(%s) execute success." % worklist log.app_info(desc) else: log.app_err(err_message) break else: desc = "worklist(%s) execute fail." % worklist log.app_err(desc) break except Exception, e: print_trace(e) break ret = ERR_SUCCESS
def stop_alarm_worklist(cpe, obj_alarm): """ obj_alarm is MsgAlarmInform """ ret = ERR_FAIL err_message = "" sn = cpe.get_sn() for nwf in [1]: # physic worklist --------------- start_worklist_id = get_id2worklistid(obj_alarm.id_) pop_id2worklistid(obj_alarm.id_) node_add_object = get_worklist_node_add_object(start_worklist_id) if (not node_add_object): desc = "node_add_object is None." log.app_err(desc) pop_worklist_node_add_object(obj_alarm.id_) dict_data = {"node_add_object": node_add_object} obj = MsgWorklistBuild("Inform_Monitor_Alarm_Stop", dict_data) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: desc = "stop_alarm_worklist success." log.app_info(desc) obj_alarm.dict_ret["str_result"] = desc else: log.app_err(err_message) obj_alarm.dict_ret["str_result"] = err_message break else: log.app_err(err_message) obj_alarm.dict_ret["str_result"] = err_message break except Exception, e: print_trace(e) obj_alarm.dict_ret["str_result"] = e break ret = ERR_SUCCESS
def handle_worklist(self, msg, obj): """ obj = MsgWorklistExecute """ ret = None ret_api = ERR_FAIL ret_data = "" ret_obj = None # event obj ret_out = "" # RF ret file_imp = None module_imp = None sn = obj.sn desc = "cpe(sn=%s) begin execute worklist(name=%s)" %( sn, obj.worklist_name) log.app_info(desc) for nwf in [1]: try: # nwf 2014-06-28; DB lost interface_version if (not obj.cpe_interface_version): ret_api, ret_data = user.query_cpe_interface_version(sn) if ret_api == ERR_SUCCESS: ret_obj = ret_data ret_out = ret_obj.dict_ret["str_result"] obj.cpe_interface_version = ret_out else: desc = "query CPE interface version fail." obj.dict_ret["str_result"] = desc break ret = self.check_dir_file(obj) if (ret != ERR_SUCCESS): break # nwf 2014-06-27; use full path, not sys.path[0] + module name name_imp = self.exec_script_modulename file_imp, imppath, description = imp.find_module(name_imp, [self.exec_script_dir]) module_imp =imp.load_module(name_imp, file_imp, imppath, description) entry = worklistcfg.DOMAIN_SCRIPT_FILE_ENTRY # entry (eg test_script(obj) x = "ret= %s.%s(obj)" %("module_imp", entry) desc = "cpe(sn=%s) execute worklist(name=%s)" %(obj.sn, obj.worklist_name) log.app_info(desc) exec x except Exception,e: print_trace(e) ret = ERR_FAIL obj.dict_ret["str_result"] = str(e) break finally:
def handle_agent(request): """ request = http.Request """ try: Worklist.dispatch_agent(request) except Exception,e: print_trace(e)
def process_operator_eventcodes(eventcodes, cpe): """ in thread """ ret = ERR_FAIL user_name = None user_id = None try: # nwf 2013-05-21; copy soap inform, maybe overwrite(0-boot + x_ct_com_bind in one inform) # step1:backup data cpe_operator = cpe.cpe_property.get_cpe_operator() soap_inform = cpe.cpe_soap.get_soap_inform() ParameterList = soap_inform.result.ParameterList for para in ParameterList: # ct if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserName" ): user_name = para.Value if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserId"): user_id = para.Value # cu if (para.Name == "InternetGatewayDevice.X_CU_UserInfo.UserName"): user_name = para.Value if (para.Name == "InternetGatewayDevice.X_CU_UserInfo.UserId"): user_id = para.Value # sys operator eventcode first, then user for eventcode in eventcodes: log.app_info("cpe(sn=%s), eventcode=%s" % (cpe.get_sn(), eventcode)) if (eventcode in [ "X CT-COM BIND", "X CT-COM DSLMODECHANGE", "X CU BIND" ]): if ("X CT-COM BIND" in eventcode): ret = bind_ct(cpe, user_name, user_id) elif ("X CT-COM DSLMODECHANGE" in eventcode): ret = dsl_mode_change_ct(cpe) elif ("X CU BIND" in eventcode): ret = bind_cu(cpe, user_name, user_id) else: ret = process_user_operator_eventcode(eventcode, cpe) except Exception, e: print_trace(e)
def accountchange_ct(cpe): """ """ ret = ERR_FAIL err_message = "" sn = cpe.get_sn() for nwf in [1]: # physic worklist --------------- password = random.randrange(10000000, 99999999) password = "******" + str(password) dict_data = { "ParameterList": [ dict( Name= "InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Enable", Value="1"), dict( Name= "InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password", Value=password) ] } obj = MsgWorklistBuild("Auto_SetParameterValue", dict_data) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: log.app_info( "update InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password success: %s" % password) else: log.app_err(err_message) break else: log.app_err(err_message) break except Exception, e: print_trace(e) break ret = ERR_SUCCESS
def test(): try: ip = worklistcfg.HTTP_IP port = worklistcfg.HTTP_PORT g_webserver=WorklistServer(port) log.app_info("worklist (ip=%s, port=%s) start." %(ip, port)) g_webserver.start() except Exception,e: print_trace(e)
def bootstrap_ct(cpe): """ in thread """ ret = ERR_FAIL err_message = "" sn = cpe.get_sn() for nwf in [1]: # nwf 2014-06-16; user config #update_interface_version(cpe) # 重置双向的DIGEST认证账号和电信维护账号密码 --added by lana 20131209 ret = reset_digest_account_and_telecom_account_ct(cpe) if ret != ERR_SUCCESS: break # physic worklist --------------- obj = MsgWorklistBuild("Auto_GetRPCMethods", {}) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: desc = "worklist(Auto_GetRPCMethods) execute success." log.app_info(desc) else: log.app_err(err_message) break else: desc = "worklist(Auto_GetRPCMethods) execute fail." log.app_err(desc) break except Exception, e: print_trace(e) break ret = ERR_SUCCESS
def process_ct_eventcodes(eventcodes, cpe): """ in thread """ ret = ERR_FAIL user_name = None user_id = None try: # nwf 2013-05-21; copy soap inform, maybe overwrite(0-boot + x_ct_com_bind in one inform) # step1:backup data cpe_operator = cpe.cpe_property.get_cpe_operator() soap_inform = cpe.cpe_soap.get_soap_inform() ParameterList = soap_inform.result.ParameterList for para in ParameterList: if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserName" ): user_name = para.Value if (para.Name == "InternetGatewayDevice.X_CT-COM_UserInfo.UserId"): user_id = para.Value # step2:do eventcodes in one inform for eventcode in eventcodes: log.app_info("cpe(sn=%s), eventcode=%s" % (cpe.get_sn(), eventcode)) # nwf 2013-05-21; skip eventcode fail if ("0 BOOTSTRAP" in eventcode): ret = bootstrap_ct(cpe) elif ("X CT-COM BIND" in eventcode): ret = bind_ct(cpe, user_name, user_id) elif ("X CT-COM ACCOUNTCHANGE" in eventcode): ret = accountchange_ct(cpe) elif ("X CT-COM DSLMODECHANGE" in eventcode): ret = dsl_mode_change_ct(cpe) except Exception, e: print_trace(e)
def run(self): from worklist import Worklist ret = None msg = self.msg obj = self.obj msg_rsp = msg + 2 # default # start log log_dir = self.log_path log.start_only_1file(name=obj.sn, file_name=obj.sn, directory=log_dir, level="DebugWarn") log.set_file_id(testcase_name="worklist") for nwf in [1]: try: msg_rsp = self.handle_worklist(msg, obj) except Exception,e: print_trace(e)
def process_user_operator_eventcode(eventcode, cpe): """ """ ret = ERR_FAIL err_message = "" try: cpe_operator = cpe.cpe_property.get_cpe_operator() interface_version = cpe.cpe_property.get_cpe_interface_version() interface_version = interface_version.lower() eventcode_map = CpeOperator.get_operator_eventcode_map( cpe_operator, interface_version) dict_worklist = eval(eventcode_map) worklist = dict_worklist.get(eventcode) if (worklist): ret = auto_exec_worklist(worklist, cpe) except Exception, e: print_trace(e)
def update_interface_version(cpe): """ 0 boot need update AUTO version """ ret = ERR_FAIL err_message = "" sn = cpe.get_sn() for nwf in [1]: # physic worklist --------------- obj = MsgWorklistBuild("Auto_UpdateInterfaceVersion", {}) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: desc = "worklist(Auto_UpdateInterfaceVersion) execute success." log.app_info(desc) else: log.app_err(err_message) break else: desc = "worklist(Auto_UpdateInterfaceVersion) execute fail." log.app_err(desc) break except Exception, e: print_trace(e) break ret = ERR_SUCCESS
def build_worklist_exec_rsp_rqst(self, obj, msg_rsp): """ obj is MsgWorklistExecute """ ret = ERR_FAIL # default msg = "" desc = "cpe(sn=%s), worklist id=%s, message=%s" %(obj.sn, obj.id_, get_event_desc(msg_rsp)) log.app_info(desc) for nwf in [1]: try: obj = MsgWorklistExecRsp(obj.id_, obj.sn, msg_rsp, obj.dict_ret) strio = StringIO() pickle.dump(obj, strio) dict1 = {} dict1[KEY_MESSAGE] = EV_WORKLIST_EXECUTE_RSP_RQST dict1[KEY_OBJECT] = strio.getvalue() dict1[KEY_SN] = obj.sn dict1[KEY_SENDER] = KEY_SENDER_WORKLIST dict1[KEY_MESSAGE_TYPE] = EVENT_WORKLIST_GROUP dict1[KEY_QUEUE] = QUEUE_WAIT dict1[KEY_SEQUENCE] = get_id("Seq") msg = str(dict1) except Exception,e: msg = e print_trace(e) break ret = ERR_SUCCESS
def set_worklist_status(obj_database, status, desc=""): """ monitor """ worklist_id = obj_database.worklist_id obj_database.status = status #update_acs_worklist(obj_database, "STATUS", obj_database.status) update_acs_worklist_by_id(worklist_id, "STATUS", obj_database.status) if (desc): insert_ex_acs_worklist_log(worklist_id, obj_database) if ((status == WORK_LIST_STATUS_SUCCESS) or (status == WORK_LIST_STATUS_FAIL)): try: event = get_worklist_event(obj_database.id_) if (event): log.app_info("worklist(id=%s) exec finish." % obj_database.id_) event.set() except Exception, e: print_trace(e)
def tx_worklist_exec(obj_database, timeout=webservercfg.ACS_WAIT_AGENT_WORKLIST_EXEC_RSP_TIMEOUT): """ in thread obj is MsgWorklist """ ret = ERR_FAIL err_message = "" try: cls1= obj_database strio = StringIO() pickle.dump(cls1, strio) v_msg = EV_WORKLIST_EXECUTE_RQST dict1 ={} dict1[KEY_MESSAGE] = int(v_msg) dict1[KEY_OBJECT] = strio.getvalue() dict1[KEY_SN] = obj_database.sn dict1[KEY_MESSAGE_TYPE] = EVENT_WORKLIST_GROUP dict1[KEY_QUEUE] = QUEUE_WAIT dict1[KEY_SENDER] = KEY_SENDER_ACS dict1[KEY_SEQUENCE] = get_id("Seq") msg = str(dict1) url = "http://%s:%s%s" %(webservercfg.AGENT_HTTP_IP, webservercfg.AGENT_HTTP_PORT, webservercfg.ACS2AGENT_PAGE) httpclient1 = HttpClient(url, timeout) ret, err_message = httpclient1.send_message(msg) except Exception, e: print_trace(e) err_message = e
class Database(object): """ """ def __init__(self, driver = webservercfg.DB_DRIVER, server = webservercfg.DB_SERVER, port = webservercfg.DB_PORT, database = webservercfg.DB_DATABASE, uid = webservercfg.DB_UID, pwd = webservercfg.DB_PWD, charset = webservercfg.DB_CHARSET): """ """ self.driver = driver self.server = server self.port = port self.database = database self.uid = uid self.pwd = pwd self.charset = charset self.conn = pyodbc.connect( driver = self.driver, server = self.server, port = self.port, database = self.database, uid = self.uid, pwd = self.pwd, charset = self.charset, autocommit = True) self.cur = self.conn.cursor() # auto def __del__(self): """ """ try: self.cur.close() except Exception,e: print_trace(e) try: self.conn.close() except Exception,e: print_trace(e)
print_trace(e) dict1 = {} dict1[KEY_MESSAGE] = msg_rsp dict1[KEY_OBJECT] = strio.getvalue() dict1[KEY_SENDER] = KEY_SENDER_WORKLIST str_dict_msg = str(dict1) Worklist.request_write(request, str_dict_msg) UsersMsgSeq.save_user_rsp_msg(seq, str_dict_msg) ret = ERR_SUCCESS except Exception,e: print_trace(e) return ret @staticmethod def process_user_message_seq_exist(request, msg): """ """ Worklist.request_write(request, msg) return None @staticmethod
def build_download_msg(obj): """ obj = MsgWorklistDownload """ ret = ERR_SUCCESS # default ret_api = None obj.cpe_interface_versions = [] # clear for nwf in [1]: try: root_dir = worklistcfg.SCRIPT_ROOT_DIR # tr069v3\lib\worklist\operator operator = obj.operator # tr069v3\lib\worklist\operator\CT dir_operator = os.path.join(root_dir, operator) ret_api = os.path.isdir(dir_operator) if (ret_api == False): desc = "%s is not dir in worklist server." %(dir_operator) obj.dict_ret["str_result"] = desc log.app_err(desc) break # v3.0 + v4.0 for root_operator,cpe_interface_versions,files_operator in os.walk(dir_operator): # travel interface_versions for cpe_interface_version in cpe_interface_versions: # tr069v3\lib\worklist\operator\CT\v3.0 dir_interface_version = os.path.join(dir_operator, cpe_interface_version) # save -------- cls_cpe_interface_version = MsgWorklistCpeInterfaceVersion(cpe_interface_version) obj.cpe_interface_versions.append(cls_cpe_interface_version) # tr069v3\lib\worklist\operator\CT\v3.0\business dir_business = os.path.join(dir_interface_version, worklistcfg.BUSINESS_DOMAINS) ret_api = os.path.isdir(dir_business) if (ret_api == False): desc = "%s is not dir in worklist server." %(dir_business) obj.dict_ret["str_result"] = desc log.app_err(desc) break # travel domain for root_domain,dirs_domain,files_domain in os.walk(dir_business): for dir_domain in dirs_domain: if (dir_domain in ["ADSL"]): # "ADSL is debug dir" continue # save -------- cls_domain = MsgWorklistDomain(name=dir_domain) cls_cpe_interface_version.domains.append(cls_domain) # travel cpe device type path_domain = os.path.join(root_domain, dir_domain) for root_worklist,dirs_worklist,files_worklist in os.walk(path_domain): for dir_worklist in dirs_worklist: # E:\____python\tr069\TR069_BS2_nwf\TR069\lib\worklists\operator\CT\v3.0\business\ADSL_2LAN\INTERNET_PPPoE_Disable worklist_name= dir_worklist dir_worklist = os.path.join(root_domain, dir_domain, worklist_name) # E:\____python\tr069\TR069_BS2_nwf\TR069\lib\worklists\operator\CT\v3.0\business\ADSL_2LAN\INTERNET_PPPoE_Disable\data.py file_data = os.path.join(dir_worklist, worklistcfg.SCRIPT_DATA_FILE_NAME+".py") ret_api = os.path.isfile(file_data) if (ret_api == False): desc = "%s is not file in worklist server." %(file_data) obj.dict_ret["str_result"] = desc log.app_err(desc) break # save -------- cls_datafile = MsgWorklistFile(worklist_name) cls_domain.wl_datafiles.append(cls_datafile) path1 = os.path.join(root_worklist, worklist_name) sys.path.insert(0, path1) import data dict_data = str(data.WORKLIST_ARGS) sys.path.pop(0) cls_datafile.dict_data = dict_data # 1 level device break #only 1 level(domain) break # only 1 level(operator) break except Exception,e: print_trace(e) ret = ERR_FAIL
class Worklist(object): """ """ def __init__(self): """ """ pass @staticmethod def set_user_dictmsg(request, user_dictmsg): # nwf 2013-03-13 cpe's property upgrade to request's request.user_dictmsg = user_dictmsg @staticmethod def get_user_dictmsg(request): return request.user_dictmsg # --------------------------- user msg entry -------------- @staticmethod def dispatch_agent(request): """ request = twisted.web.server.Request user """ ret = ERR_FAIL # default ret_api = None for nwf in [1]: # dict in? try: body = request.content.read() dict1 = eval(body) except Exception,e: log.app_err("request content read, isn't a dict(%s)." %(e)) break # save Worklist.set_user_dictmsg(request, dict1) # have message ? v_msg = dict1.get(KEY_MESSAGE) if (not v_msg): log.app_err("dict KEY_MESSAGE missing(%s)." %(KEY_MESSAGE)) break ip = request.transport.client[0] port = request.transport.client[1] log.app_info("receive user(ip=%s, port=%s) message=%s" %(ip, port, get_event_desc(v_msg))) # have message sequence ? v_seq = dict1.get(KEY_SEQUENCE) if (not v_seq): log.app_err("dict KEY_SEQUENCE missing(%s)." %(KEY_SEQUENCE)) break sender = dict1.get(KEY_SENDER, "") log.app_info("receive user(ip=%s, port=%s) sender=%s, sequence=%s" %(ip, port, sender, v_seq)) ret_api,msg = UsersMsgSeq.is_user_message_seq_exist(v_seq) if (ret_api): log.app_err("receive user(ip=%s, port=%s) sequence=%s is exist." %(ip, port, v_seq)) Worklist.process_user_message_seq_exist(request, msg) break # have obj? v_obj = dict1.get(KEY_OBJECT) if (not v_obj): log.app_err("dict KEY_OBJECT missing(%s)." %(KEY_OBJECT)) break try: strio = StringIO(v_obj) obj = pickle.load(strio) except Exception,e: log.app_err("dict KEY_OBJECT pick load fail.") break # dispatch try: msg_group = int(v_msg) & 0xFF00 if (msg_group == EVENT_WORKLIST_GROUP): ret = Worklist.handle_msg(request, v_msg, obj) elif (msg_group == EVENT_QUERY_GROUP): ret = Worklist.process_query(request, v_msg, obj) else: desc = "user message group(=%d) not support." %msg_group log.app_err(desc) break except Exception,e: print_trace(e) break
def check_dir_file(self, obj): """ obj(MsgWorklistExecute) is dir[domain] + file[worklist name] exist? """ ret = ERR_FAIL ret_api = None script_root_dir = worklistcfg.SCRIPT_ROOT_DIR desc = "cpe(sn=%s, cpe device type=%s) begin search worklist(name=%s)" %( obj.sn, obj.domain, obj.worklist_name) log.app_info(desc) for nwf in [1]: try: dir_root = script_root_dir # tr069v3\lib\worklist\operator ret_api = os.path.isdir(dir_root) if (ret_api == False): desc = "%s is not dir in worklist server." %(dir_root) obj.dict_ret["str_result"] = desc log.app_err(desc) break operator = obj.operator # tr069v3\lib\worklist\operator\CT dir_operator = os.path.join(dir_root, operator) ret_api = os.path.isdir(dir_operator) if (ret_api == False): desc = "%s is not dir in worklist server." %(dir_operator) log.app_err(desc) desc = u"cpe operator=%s 不支持(支持的有 CT CU)." %operator obj.dict_ret["str_result"] = desc break # V3.0 or V4.0? cpe_interface_version = obj.cpe_interface_version dir_interface_version = os.path.join(dir_operator, cpe_interface_version) ret_api = os.path.isdir(dir_interface_version) if (ret_api == False): desc = "%s is not dir in worklist server." %(dir_interface_version) log.app_err(desc) desc = u"CPE operator=%s, interface version=%s 不支持." %( operator, cpe_interface_version) obj.dict_ret["str_result"] = desc break # tr069v3\lib\worklist\operator\CT\V3.0\business dir_business = os.path.join(dir_interface_version, worklistcfg.BUSINESS_DOMAINS) ret_api = os.path.isdir(dir_business) if (ret_api == False): desc = "%s is not dir in worklist server." %(dir_business) obj.dict_ret["str_result"] = desc log.app_err(desc) break domain = obj.domain # tr069v3\lib\worklist\operator\CT\V3.0\business\ADSL dir_domain = os.path.join(dir_business, domain) ret_api = os.path.isdir(dir_domain) if (ret_api == False): desc = "%s is not dir in worklist server." %(dir_domain) log.app_err(desc) desc = u"CPE device type=%s 不支持." %domain obj.dict_ret["str_result"] = desc break # nwf 2013-07-02; support _COMMON(Auto) desc = "" dir_system = os.path.join(dir_interface_version, worklistcfg.SYSTEM_DOMAINS) for dir_domain in [dir_domain, dir_system]: # nwf 2013-04-10 ; support to pyc(publish) worklist_name= obj.worklist_name # tr069v3\lib\worklist\operator\CT\V3.0\business\ADSL exec_script_dir = os.path.join(dir_domain, worklist_name) file1 = os.path.join(exec_script_dir, worklistcfg.SCRIPT_FILE_NAME+".py") ret_api = os.path.isfile(file1) if (ret_api == False): # retry file2 = os.path.join(exec_script_dir, worklistcfg.SCRIPT_FILE_NAME + ".pyc") ret_api = os.path.isfile(file2) if (ret_api == False): desc += "warning:(%s) or (%s) is not file in worklist server.\n" %(file1, file2) log.app_err(desc) desc = u"CPE worklist name=%s 不支持." %worklist_name obj.dict_ret["str_result"] = desc else: # success break else: # success break if (ret_api == False): break # save E:\____python\tr069\TR069_BS2_nwf\TR069\lib\worklists\operator\CT\v3.0\business\ADSL_2LAN\QoS_DSCP self.exec_script_dir =exec_script_dir # script.py exec_script_modulename = worklistcfg.SCRIPT_FILE_NAME # no .py self.exec_script_modulename = exec_script_modulename except Exception,e: print_trace(e) obj.dict_ret["str_result"] = str(e) break desc = "cpe(sn=%s, cpe device type=%s) search worklist(name=%s) success." %(obj.sn, obj.domain, obj.worklist_name) log.app_info(desc) ret = ERR_SUCCESS
def reset_digest_account_and_telecom_account_cu(cpe): """ 重置联通双向的DIGEST认证账号和终端维护账号密码 """ ret = ERR_FAIL err_message = "" for i in [1]: # 新的双向的DIGEST认证账号的生成规则为:old+8为随机数 user_name = get_random_8str(cpe.cpe_property.get_cpe2acs_loginname()) password = get_random_8str( cpe.cpe_property.get_cpe2acs_loginpassword()) connection_request_user_name = get_random_8str( cpe.cpe_property.get_acs2cpe_loginname()) connection_request_password = get_random_8str( cpe.cpe_property.get_acs2cpe_loginpassword()) # 新的电信维护账号密码的生成规则为 “cutelecomadmin” + 8位随机数 tele_com_account_password = get_random_8str("cuadmin") # 组建所有要设置的节点参数 dict_data = { "ParameterList": [ dict(Name="InternetGatewayDevice.ManagementServer.Username", Value=user_name), dict(Name="InternetGatewayDevice.ManagementServer.Password", Value=password), dict( Name= "InternetGatewayDevice.ManagementServer.ConnectionRequestUsername", Value=connection_request_user_name), dict( Name= "InternetGatewayDevice.ManagementServer.ConnectionRequestPassword", Value=connection_request_password), dict(Name= "InternetGatewayDevice.X_CU_Function.Web.AdminPassword", Value=tele_com_account_password) ] } # 组建工单消息,下发工单执行命令 obj = MsgWorklistBuild("Auto_SetParameterValue", dict_data) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: cpe.cpe_property.set_cpe2acs_loginname(user_name) cpe.cpe_property.set_cpe2acs_loginpassword(password) cpe.cpe_property.set_acs2cpe_loginname( connection_request_user_name) cpe.cpe_property.set_acs2cpe_loginpassword( connection_request_password) log.app_info( "worklist(Auto_SetParameterValue) execute success.") log.app_info( "update InternetGatewayDevice.ManagementServer.Username success: %s" % user_name) log.app_info( "update InternetGatewayDevice.ManagementServer.Password success: %s" % password) log.app_info( "update InternetGatewayDevice.ManagementServer.ConnectionRequestUsername success: %s" % connection_request_user_name) log.app_info( "update InternetGatewayDevice.ManagementServer.ConnectionRequestPassword success: %s" % connection_request_password) log.app_info( "update InternetGatewayDevice.X_CU_Function.Web.AdminPassword success: %s" % tele_com_account_password) else: log.app_err(err_message) break else: desc = "worklist(Auto_SetParameterValue) execute fail." log.app_err(desc) break except Exception, e: print_trace(e) break ret = ERR_SUCCESS
def bootstrap_cu(cpe): """ in thread """ ret = ERR_FAIL err_message = "" sn = cpe.get_sn() for nwf in [1]: # 获取上网账号和密码 # 组建工单参数 dict_data = {} # 组建工单消息,下发工单执行命令 obj = MsgWorklistBuild("Auto_GetPPPConnectionAccount", dict_data) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: desc = "worklist(Auto_GetPPPConnectionAccount) execute success." log.app_info(desc) else: log.app_err(err_message) # 忽略查询结果 # break else: desc = "worklist(Auto_GetPPPConnectionAccount) execute fail." log.app_err(desc) break except Exception, e: print_trace(e) break # physic worklist --------------- obj = MsgWorklistBuild("Auto_GetRPCMethods", {}) obj_database = EventCode.auto_build_bind_physic_worklist(cpe, obj) try: ret, err_message = EventCode.tx_worklist_exec(obj_database) ret = EventCode.rx_worklist_exec(ret, err_message) if (ret == ERR_SUCCESS): ret, err_message = EventCode.wait_worklist_exec_finish( obj_database) if ret == ERR_SUCCESS: desc = "worklist(Auto_GetRPCMethods) execute success." log.app_info(desc) else: log.app_err(err_message) break else: desc = "worklist(Auto_GetRPCMethods) execute fail." log.app_err(desc) break except Exception, e: print_trace(e) break