def SubHandle_OPMonitor_Post_DisplayContent(ustrDisplayContent, ustrMonitorID, ustrDataType): ustrDisplayContent = CTYLB_MainSys_MiscFunc.SafeGetUnicode( ustrDisplayContent) ustrMonitorID = CTYLB_MainSys_MiscFunc.SafeGetUnicode( ustrMonitorID) #{ "RunTypeID" : 902,"TaskRecID" : 24 } ustrDataType = CTYLB_MainSys_MiscFunc.SafeGetUnicode( ustrDataType) #"ShowNetworkAssets" replyJson = json.loads(ustrMonitorID) iRunType = replyJson["RunTypeID"] iTaskRecID = replyJson["TaskRecID"] targetData = json.loads(ustrDisplayContent) res = '' if iRunType == g_i_ExecTypeID_Monitor_ShowNetworkSituation: #请求API提交数据 res = MonitorApiHandler.AddNetworkSituation( target=targetData['target'], target_type=targetData['type']) elif iRunType == g_i_ExecTypeID_Monitor_ShowNetworkAssets: #请求API提交数据 res = MonitorApiHandler.AddNetworkAssets( target=targetData['target'], target_type=targetData['type']) retCommCTUnit = CTYBot_CTUnit_CommonData() retCommCTUnit.SetIntData(g_i_OpMonitor_SubCmd_Reply_Post_DisplayContent) retCommCTUnit.SetStrData(res) #strOrigParamRunParam retCommCTUnit.SetParam(str(iRunType), str(iTaskRecID)) #strRunType strTaskRecID return retCommCTUnit
def SubHandle_OPActionBrain_RequestExec(strPeerName, strRequestTaskType): retCTUnitArray = [] # 搜索记录表中,某个类型的任务 iExecTaskTypeID = int(strRequestTaskType) iExecRecIDArray = CSkLBDB_ea_brain_exec_task.GetRecList_By_TaskTypeID_ExecStatus( g_mainOperate_RealActionDB.s_DbConn, iExecTaskTypeID, CTYOp_ReActBrain_Store.s_g_iStatus_Free) for iEachExecRecID in iExecRecIDArray: iExecBelongEnviruID, iExecTaskTypeID, strExecContent, strExecParam, strExecWhoRequestName, execCreateTime,\ execRequestExecTime, iExecRequestExecStatus, iExecTaskRunAlways, execLastCheckTime, strExecTaskRunParam =\ CSkLBDB_ea_brain_exec_task.ReadByRecID( g_mainOperate_RealActionDB.s_DbConn, iEachExecRecID) valueCollect = { g_str_TotalParam_OrigParam: strExecParam, g_str_TotalParam_RunTimeParam: strExecTaskRunParam } strRunValue = json.dumps(valueCollect) # 构建单元数据包 sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpAction_SubCmd_Reply_RequestExec) sendCTUnit.SetStrData(strRunValue) sendCTUnit.SetParam(strRequestTaskType, str(iEachExecRecID)) retCTUnitArray.append(sendCTUnit) # 搜索到,分配,设置正在执行的状态 CSkLBDB_ea_brain_exec_task.Update_ExStatus( g_mainOperate_RealActionDB.s_DbConn, iEachExecRecID, CTYOp_ReActBrain_Store.s_g_iStatus_Running) CSkLBDB_ea_brain_exec_task.Update_RequestName( g_mainOperate_RealActionDB.s_DbConn, iEachExecRecID, strPeerName) CSkLBDB_ea_brain_exec_task.Update_LastCheckTime( g_mainOperate_RealActionDB.s_DbConn, iEachExecRecID) return retCTUnitArray
def HandleRecvCTUnit_OPResult(hlSockMang, iEachAcceptSock, ctUnitArray): retDataArray = [] iReplyAddResultCount = 0 for eachCTUnit in ctUnitArray: eachRetCommCTUnit = None eachRetCommCTUnitArray = [] if( eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): if( eachCTUnit.s_iValue == g_i_OpResult_SubCmd_AddResult): SubHandle_OPResult_AddResult( eachCTUnit.s_strValue, eachCTUnit.s_strParam1, eachCTUnit.s_strParam2) iReplyAddResultCount += 1 if( eachRetCommCTUnit): retDataArray.append(eachRetCommCTUnit) if( eachRetCommCTUnitArray): retDataArray.extend( eachRetCommCTUnitArray) if( iReplyAddResultCount>0): CTYLB_Log.ShowLog(0, u'result-write', u'write %d result count' % iReplyAddResultCount) retCommCTUnit = CTYBot_CTUnit_CommonData() retCommCTUnit.SetIntData( g_i_OpResult_SubCmd_ReplyAddResult) retCommCTUnit.SetStrData( str(iReplyAddResultCount).encode()) retDataArray.append(retCommCTUnit) hlSockMang.PassiveSend_To_AcceptSock(iEachAcceptSock, retDataArray) pass
def SubHandle_OPParam_GetUnHandleRecCount( bstrObjName): iExecNotExecedRecCount, iExecTotalRecCount = CTYF_OpDB_OperateParamBlock.GetUnHandleRecID( g_mainOperateDB.s_DbConn, bstrObjName) retCommCTUnit = CTYBot_CTUnit_CommonData() retCommCTUnit.SetIntData( g_i_OpParamBlock_SubCmd_Reply_GetUnExecRecCount) retCommCTUnit.SetStrData( str(iExecNotExecedRecCount)) retCommCTUnit.SetParam(bstrObjName, str(iExecTotalRecCount)) return retCommCTUnit
def HandleSend_OpWeiXin_Srv(): retSendUnitArray = [] sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpWeiXin_SubCmd_Get_ChatContent) retSendUnitArray.append(sendCTUnit) return retSendUnitArray
def Viul_FinishParamBlock(self, bstrOrigParamBlockSign, iResultCode): bstrOrigParamBlockSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrOrigParamBlockSign) sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpParamBlock_SubCmd_Finish_ParamBlock) sendCTUnit.SetStrData( bstrOrigParamBlockSign) sendCTUnit.SetParam(self.s_bstrObjParamName, str(iResultCode)) self.s_midStore_NeedSend_FinishParamBlockArray.append(sendCTUnit)
def SubHandle_OPActionBrain_ReplyExecResult(strPeerName, strTaskValue, strTaskTypeIDRecID, strTaskResultParam): strPeerName = CTYLB_MainSys_MiscFunc.SafeGetUnicode(strPeerName) strTaskValue = CTYLB_MainSys_MiscFunc.SafeGetUnicode(strTaskValue) strTaskTypeIDRecID = CTYLB_MainSys_MiscFunc.SafeGetUnicode( strTaskTypeIDRecID) strTaskResultParam = CTYLB_MainSys_MiscFunc.SafeGetUnicode( strTaskResultParam) # 提取参数结果内容 paramCollect = json.loads(strTaskValue) iExecResultCode = paramCollect[g_str_Alarm_Reply_V_ResultCode] strRunResult = paramCollect[g_str_Alarm_Reply_V_RunResult] strNeedUpdateRunParam = paramCollect[ g_str_Alarm_Reply_V_NeedUpdateRunParam] strNeedSendUserContent = paramCollect[g_str_Alarm_Reply_V_SendUserContent] paramCollect = json.loads(strTaskTypeIDRecID) iRunTaskTypeID = paramCollect[g_str_Alarm_Reply_P1_RunTypeID] iTaskRecID = paramCollect[g_str_Alarm_Reply_P1_TaskRecID] iExecBelongEnviruID, iExecTaskTypeID, strExecContent, strExecParam, strExecWhoRequestName, execCreateTime, \ execRequestExecTime, iExecRequestExecStatus, iExecTaskRunAlways, execLastCheckTime, strExecTaskRunParam = \ CSkLBDB_ea_brain_exec_task.ReadByRecID(g_mainOperate_RealActionDB.s_DbConn, iTaskRecID) iDestSetStatus = CTYOp_ReActBrain_Store.s_g_iStatus_Finish if (iExecResultCode == g_i_Code_Finish_Stop_Task): # 0 –完成,可以停止本次任务; pass elif (iExecResultCode == g_i_Code_Finish_Need_Run_Update_RunParam): # 1-本次完成,下次还要继续运行,需要更新运行时参数 iDestSetStatus = CTYOp_ReActBrain_Store.s_g_iStatus_Free CSkLBDB_ea_brain_exec_task.Update_RunParam( g_mainOperate_RealActionDB.s_DbConn, iTaskRecID, strNeedUpdateRunParam) pass elif (iExecResultCode == g_i_Code_Finish_Need_Run): # 2-本次完成,还要继续运行,不修改参数内容 iDestSetStatus = CTYOp_ReActBrain_Store.s_g_iStatus_Free pass # 发送内容用户,提交到微信输出表 if (strNeedSendUserContent): CTYReActBrainBot_Track_Checker.AddReplyTextInfoToUser( g_mainOperate_RealActionDB.s_DbConn, iExecBelongEnviruID, strNeedSendUserContent) # 更新任务状态 CSkLBDB_ea_brain_exec_task.Update_ExStatus( g_mainOperate_RealActionDB.s_DbConn, iTaskRecID, iDestSetStatus) CSkLBDB_ea_brain_exec_task.Update_LastCheckTime( g_mainOperate_RealActionDB.s_DbConn, iTaskRecID) # 构建返回数据包 sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpAction_SubCmd_Reply_ReplyExecResult) retCTUnitArray = [sendCTUnit] return retCTUnitArray
def SubHandle_OPWeiXin_GetLoginCode(): # 执行,让机器人生成二维码链接,再读取数据库记录内容 ustrURL, ustrImgData, createTime = CSkLBDB_ow_bot_out_logincode.ReadByRecID( g_mainOperateWeiXinDB.s_DbConn, 1) retCommCTUnit = CTYBot_CTUnit_CommonData() retCommCTUnit.SetIntData(g_i_OpWeiXin_SubCmd_Reply_GetLoginCode) retCommCTUnit.SetStrData(ustrImgData) retCommCTUnit.SetParam(ustrURL, createTime.strftime(u'%Y-%m-%d %H:%M:%S')) return retCommCTUnit
def HandleRecvSockCTUnit(hlSockMang, iEachAcceptSock, ctUnitArray): retDataArray = [] for eachCTUnit in ctUnitArray: if( eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): retCommData = CTYBot_CTUnit_CommonData() retCommData.SetStrData( eachCTUnit.s_strValue) CTYLB_Log.ShowLog(0, u'recv & reply', eachCTUnit.s_strValue) retDataArray.append(retCommData) hlSockMang.PassiveSend_To_AcceptSock(iEachAcceptSock, retDataArray) pass
def HandleSendDataToEchoSrv(): curExecTime = datetime.now() newCTUnit = CTYBot_CTUnit_CommonData() strLarge = 'xxsseefa' iLargeRandCount = random.randint(5200, 18000) for iSub in range(iLargeRandCount): strLarge += 'xx11223344xqwe333dd3xx11223344xqwe3333xx11223344xqwe3333xx11223344xqwe3333xx11223344xqwe3333xx11223344xqwe3333' strContent = '1 hello %s, huge:%d, mid-huge-size:%d,' % ( curExecTime.strftime('%H:%M:%S'), iLargeRandCount, len(strLarge)) strContent += strLarge newCTUnit.SetStrData(strContent) global g_strLastSendContent g_strLastSendContent = strContent CTYLB_Log.ShowLog( 0, 'send', "send huge count:%d total size:%d" % (iLargeRandCount, len(strContent))) newCTUnit1 = CTYBot_CTUnit_CommonData() strContent = '2 hello %s, I am %s' % (curExecTime.strftime('%H:%M:%S'), g_strSelfID) newCTUnit1.SetStrData(strContent) newCTUnit2 = CTYBot_CTUnit_CommonData() strContent = '3 hello %s, I am %s' % (curExecTime.strftime('%H:%M:%S'), g_strSelfID) newCTUnit2.SetStrData(strContent) retCTArray = [newCTUnit, newCTUnit1, newCTUnit2] return retCTArray
def make_package(command_id, value="", param1="", param2=""): ''' 生成需要发送的数据包 :param command_id: 整型值,一般用于填写指令ID :param value: 用户可自定义参数1,默认为"" :param param1: 用户可自定义参数2,默认为"" :param param2: 用户可自定义参数3,默认为"" :return: 按照指定数据生成的数据包对象 ''' packageCTUnit = CTYBot_CTUnit_CommonData() packageCTUnit.SetIntData(command_id) packageCTUnit.SetParam(param1, param2) packageCTUnit.SetStrData(value) return packageCTUnit
def Viul_Notify_Recv_RunResult(self, bstrParamSign, iReplyPluginID, bstrOrigTitleDomain, bstrResult): bstrParamSign = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrParamSign) bstrOrigTitleDomain = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrOrigTitleDomain) bstrResult = CTYLB_MainSys_MiscFunc.SafeGetUTF8(bstrResult) contentArray = [self.s_bstrResultAppName, self.s_bstrResultSubTaskName, bstrParamSign] bstrParam2Content = g_bstr_ResultContentSplit.join(contentArray) sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpResult_SubCmd_AddResult) sendCTUnit.SetStrData( bstrResult) sendCTUnit.SetParam(bstrOrigTitleDomain, bstrParam2Content) self.s_midStore_NeedSend_ResultData.append(sendCTUnit) pass
def HandleSend_OpReActBrain_Srv(): retSendUnitArray = [] sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpAction_SubCmd_RequestExec) sendCTUnit.SetParam(str(g_i_ExecTypeID_LifeSupport_AlarmRing), '') retSendUnitArray.append(sendCTUnit) global g_wait_ToBeSend_CTUnitArray if( g_wait_ToBeSend_CTUnitArray): retSendUnitArray.extend(g_wait_ToBeSend_CTUnitArray) g_wait_ToBeSend_CTUnitArray = [] return retSendUnitArray
def HandleSend_OpWeiXin_Srv(): retSendUnitArray = [] sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpWeiXin_SubCmd_Get_ChatContent) retSendUnitArray.append(sendCTUnit) # 有需要发送的内容吗?提交进行发送 while (True): strExecMsgContent, strExecToUser, iExecUserType, iExecContentType, strToGroupName = CTYOp_ReActBrain_Store.PopNextNeedSendWeiXinMsg( g_mainOperate_RealActionDB.s_DbConn) if (strExecMsgContent): sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpWeiXin_SubCmd_Send_ChatContent) # 输入: strValue = 要发送的内容,iValue = 705,strParam1 = 要发送对象的ID或者群名,strParam2 = 内容类型 - 文字 - 图片 < 分割 > 是个人,还是群 sendCTUnit.SetStrData(strExecMsgContent) strParam2Array = [ str(iExecContentType), str(iExecUserType), strToGroupName ] sendCTUnit.SetParam(strExecToUser, g_str_ContentSplit.join(strParam2Array)) retSendUnitArray.append(sendCTUnit) else: break return retSendUnitArray
def HandleRecvCTUnit_OPActionBrain(hlSockMang, iEachAcceptSock, ctUnitArray): strPeerName, iPeerPort = hlSockMang.GetSockPeerAddr(iEachAcceptSock) retDataArray = [] for eachCTUnit in ctUnitArray: eachRetCommCTUnit = None eachRetCommCTUnitArray = [] if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): if (eachCTUnit.s_iValue == g_i_OpAction_SubCmd_RequestExec): eachRetCommCTUnitArray = SubHandle_OPActionBrain_RequestExec( strPeerName, eachCTUnit.s_strParam1) elif (eachCTUnit.s_iValue == g_i_OpAction_SubCmd_ReplyExecResult): eachRetCommCTUnitArray = SubHandle_OPActionBrain_ReplyExecResult( strPeerName, eachCTUnit.s_strValue, eachCTUnit.s_strParam1, eachCTUnit.s_strParam2) if (eachRetCommCTUnit): retDataArray.append(eachRetCommCTUnit) if (eachRetCommCTUnitArray): retDataArray.extend(eachRetCommCTUnitArray) # 如果没有内容,那么,放一个空单元 if (not retDataArray): sendCTUnit = CTYBot_CTUnit_CommonData() retDataArray.append(sendCTUnit) hlSockMang.PassiveSend_To_AcceptSock(iEachAcceptSock, retDataArray) pass
def SubHandle_OPWeiXin_GetChatContent(): retCTUnitArray = [] iFinishStatus = 2 iNotExecIDArray = CSkLBDB_ow_bot_out_chatcontent.GetRecList_By_StatusNotEquValue( g_mainOperateWeiXinDB.s_DbConn, iFinishStatus) if (iNotExecIDArray): for iEachRecID in iNotExecIDArray: ustrExecContent, iExecTypeS, ustrExecFromS, iExecFromType, ustrExecFromGroupName, iExecExStatus, execCreateTime =\ CSkLBDB_ow_bot_out_chatcontent.ReadByRecID( g_mainOperateWeiXinDB.s_DbConn, iEachRecID) # 格式化输出记录 eachRetCommCTUnit = CTYBot_CTUnit_CommonData() eachRetCommCTUnit.SetIntData( g_i_OpWeiXin_SubCmd_Reply_Get_ChatText) eachRetCommCTUnit.SetStrData(ustrExecContent) strRecvTime = execCreateTime.strftime(u'%Y-%m-%d %H:%M:%S') paramContentArray = [ strRecvTime, str(iExecTypeS), str(iExecFromType), ustrExecFromGroupName ] ustrParam2 = g_ustr_ContentSplit.join(paramContentArray) eachRetCommCTUnit.SetParam(ustrExecFromS, ustrParam2) retCTUnitArray.append(eachRetCommCTUnit) # 记录状态修改 CSkLBDB_ow_bot_out_chatcontent.Update_ExStatus( g_mainOperateWeiXinDB.s_DbConn, iEachRecID, iFinishStatus) else: # 如果为空,加入临时空单元 eachRetCommCTUnit = CTYBot_CTUnit_CommonData() retCTUnitArray.append(eachRetCommCTUnit) return retCTUnitArray
def SubHandle_OPWeiXin_SendChatContent(ustrContent, ustrDestUserName, ustrCombParam): ustrTypeS = u'1' ustrToStatus = u'0' # 分解获得参数 ustrParamSubArray = ustrCombParam.split(g_ustr_ContentSplit) ustrToS, ustrToType, ustrToGroupName, ustrStatusS = u'', u'', u'', u'' if (len(ustrParamSubArray) >= 3): ustrToType = ustrParamSubArray[0] ustrIsGroup = ustrParamSubArray[1] ustrToGroupName = ustrParamSubArray[2] CSkLBDB_ow_bot_in_sendchatcontent.AddNewdRec( g_mainOperateWeiXinDB.s_DbConn, ustrContent, ustrTypeS, ustrDestUserName, ustrToType, ustrToGroupName, ustrToStatus) retCommCTUnit = CTYBot_CTUnit_CommonData() retCommCTUnit.SetIntData(g_i_OpWeiXin_SubCmd_Reply_SendChatContent) retCommCTUnit.SetStrData(u'1') return retCommCTUnit
def __Handle_PromptRequestor_Recv_CommCTUnit(self, requestorHost, commDataCTUnit): if (commDataCTUnit.s_iType == CTYBot_CTUnit_CommonData.s_g_iType_int): if (commDataCTUnit.s_iValue == CTYBot_CTUnit_CommonData. s_g_iIntValue_Request_TaskCenter_Send_Promptor_Result_Count ): # 请求报告管理端状态 pass elif (commDataCTUnit.s_iValue == CTYBot_CTUnit_CommonData. s_g_iIntValue_Query_PluginID_Run_ParamBlock_Count): # 请求 插件可运行个数 iQueryPluginID = int(commDataCTUnit.s_bstrParam1) iCanRunCount = self.Query_PluginID_CanRunCount(iQueryPluginID) replyCommCTUnit = CTYBot_CTUnit_CommonData() replyCommCTUnit.SetIntData( CTYBot_CTUnit_CommonData. s_g_iIntValue_Reply_PluginID_Run_ParamBlock_Count) replyCommCTUnit.SetParam(str(iQueryPluginID), str(iCanRunCount)) requestorHost.s_toBeSendReplyCTUnitArray.append( replyCommCTUnit)
def __AssignFreeParamToExecPluginHost(self, execPluginHost): if (execPluginHost.s_lastClientStatusData and execPluginHost.s_lastClientStatusData.s_iCanRecvTaskCount > 0): # 找有空闲请求,而且等待时间最长的任务 freeRequestHost = self.__Query_RequestCanRunParam_MostWaitTime() if (freeRequestHost): freeParam = freeRequestHost.PopFrom_WaitArray_StoreSign_To_ExecParamArray( ) if (freeParam): # 分配,发送 iExecPluginID = CTYLB_TaskCenter_HostMang.GetParamUnit_PluginID( freeParam) if (iExecPluginID): # 完成发送,执行删除参数,放到运行队列. # 发送到远程执行主机 CTYLB_Log.ShowLog( 0, 'TRC_host_mang', "send param [%s] to [%s]" % (freeParam.s_bstrUniqueSign, execPluginHost.s_bstrHostIDName)) execPluginHost.s_toBeSendCTUnitArray.append(freeParam) # 加入到主机的执行队列 execPluginHost.s_bstrTaskParamSignArray.append( freeParam.s_bstrUniqueSign) # 分配一个,减少一个值 if (execPluginHost.s_lastClientStatusData): execPluginHost.s_lastClientStatusData.s_iCanRecvTaskCount -= 1 else: # 回复失败,设置任务完成。 freeRequestHost.SetTaskFinish( freeParam.s_bstrUniqueSign) # set task finish & failure. replyCommUnit = CTYBot_CTUnit_CommonData() replyCommUnit.SetIntData( CTYBot_CTUnit_CommonData. s_g_iIntValue_Task_BCast_Fail_No_Host) replyCommUnit.SetParam(freeParam.s_bstrUniqueSign, '') freeRequestHost.s_clientResultCTUnitArray.append( replyCommUnit) # 加入到结果队列 pass pass
def SubHandle_OPParam_GetNextParamBlock( bstrObjName, bstrNeedCount, bstrEachBlockCount): iNeedExCount = int(bstrNeedCount) iEachBlockCount = int(bstrEachBlockCount) retCommCTUnitArray = [] for i in range(iNeedExCount): strExecParamSignID, execParamContentArray = CTYF_OpDB_OperateParamBlock.RequestParamBlockContent( g_mainOperateDB.s_DbConn, bstrObjName, iEachBlockCount) bstrExecParamSignID = strExecParamSignID.encode() bstrParamContentArray = CTYLB_MainSys_MiscFunc.SafeGetUTF8Array(execParamContentArray) if( strExecParamSignID and bstrParamContentArray): eachRetCTUnit = CTYBot_CTUnit_CommonData() eachRetCTUnit.SetIntData(g_i_OpParamBlock_SubCmd_Reply_GetRunParamBlock) bstrExTotalContent = b'\n'.join(bstrParamContentArray) eachRetCTUnit.SetStrData(bstrExTotalContent) eachRetCTUnit.SetParam( bstrObjName, bstrExecParamSignID) retCommCTUnitArray.append(eachRetCTUnit) else: # 数据库没有内容了 break return retCommCTUnitArray
def SubHandle_OPParam_Regiest( bstrInputTotalParam): iRetRecID = 0 bstrObjName = b'' bstrParamArray = bstrInputTotalParam.split(b';') if( len(bstrParamArray) >= 6): bstrObjName = bstrParamArray[0] bstrDbName = bstrParamArray[1] bstrTableName = bstrParamArray[2] bstrFieldName = bstrParamArray[3] bstrSignIDFieldName = bstrParamArray[4] try: iLastExecID = int(bstrParamArray[5]) except Exception as e: iLastExecID = 0 iRetRecID = CTYF_OpDB_OperateParamBlock.RequestDbOperate( g_mainOperateDB.s_DbConn, bstrObjName, bstrDbName, bstrTableName, bstrFieldName, bstrSignIDFieldName, iLastExecID) retCommCTUnit = CTYBot_CTUnit_CommonData() retCommCTUnit.SetIntData( g_i_OpParamBlock_SubCmd_Reply_RegiestDbTableField_Param) retCommCTUnit.SetStrData( str(iRetRecID)) retCommCTUnit.SetParam(bstrObjName, b'') return retCommCTUnit
def connect_request_exec_request_callback(value, param1, param2, is_last_package): retSendUnitArray = [] sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(OP_ACTION_BRAIN_SUB_CMD_REQUEST_EXEC) sendCTUnit.SetParam( str(self.__connect_to_socks[ TYFBOT_STATUS_MANAGER_IDENTIFY_NAME][0]), '') retSendUnitArray.append(sendCTUnit) if self.__connect_wait_to_send_arrays[ TYFBOT_STATUS_MANAGER_IDENTIFY_NAME][ LISTEN_SOCK_FBOT_ACTION_BRAIN_OPERATE]: retSendUnitArray.extend( self.__connect_wait_to_send_arrays[ TYFBOT_STATUS_MANAGER_IDENTIFY_NAME] [LISTEN_SOCK_FBOT_ACTION_BRAIN_OPERATE]) self.__connect_wait_to_send_arrays[ TYFBOT_STATUS_MANAGER_IDENTIFY_NAME][ LISTEN_SOCK_FBOT_ACTION_BRAIN_OPERATE] = [] return retSendUnitArray
def HandleSend_OpMonitorCtrl_Srv(): retSendUnitArray = [] global g_wait_ToBeSend_To_MonitorCtrl_CTUnitArray if (g_wait_ToBeSend_To_MonitorCtrl_CTUnitArray): retSendUnitArray.extend(g_wait_ToBeSend_To_MonitorCtrl_CTUnitArray) g_wait_ToBeSend_To_MonitorCtrl_CTUnitArray = [] #保证每次都会发送数据到屏幕控制端,避免等待 if (not retSendUnitArray): sendCTUnit = CTYBot_CTUnit_CommonData() retSendUnitArray.append(sendCTUnit) return retSendUnitArray
def HandleSend_OpReActBrain_Srv(): retSendUnitArray = [] #查询申请新的可执行任务 安全态势 sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpAction_SubCmd_RequestExec) sendCTUnit.SetParam(str(g_i_ExecTypeID_Monitor_ShowNetworkSituation), '') retSendUnitArray.append(sendCTUnit) #查询申请新的可执行任务 网络资产 sendCTUnit = CTYBot_CTUnit_CommonData() sendCTUnit.SetIntData(g_i_OpAction_SubCmd_RequestExec) sendCTUnit.SetParam(str(g_i_ExecTypeID_Monitor_ShowNetworkAssets), '') retSendUnitArray.append(sendCTUnit) global g_wait_ToBeSend_CTUnitArray if (g_wait_ToBeSend_CTUnitArray): retSendUnitArray.extend(g_wait_ToBeSend_CTUnitArray) g_wait_ToBeSend_CTUnitArray = [] return retSendUnitArray
def __listen_basic_handle(self, sockManager, clientSock, ctUnitArray): strPeerName, iPeerPort = sockManager.GetSockPeerAddr(clientSock) if isinstance(strPeerName, bytes): strPeerName = strPeerName.decode() retDataArray = [] isNonePackageReply = True arrayLen = len(ctUnitArray) packageCount = 0 for eachCTUnit in ctUnitArray: packageCount += 1 eachRetCommCTUnitArray = [] if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): if eachCTUnit.s_iValue in self.__listen_callbacks.keys(): eachRetCommCTUnitArray = self.__listen_callbacks[ eachCTUnit.s_iValue]( CTYLB_MainSys_MiscFunc.SafeGetUnicode(strPeerName), CTYLB_MainSys_MiscFunc.SafeGetUnicode( eachCTUnit.s_strValue), CTYLB_MainSys_MiscFunc.SafeGetUnicode( eachCTUnit.s_strParam1), CTYLB_MainSys_MiscFunc.SafeGetUnicode( eachCTUnit.s_strParam2), packageCount == arrayLen) if (eachRetCommCTUnitArray): isNonePackageReply = False retDataArray.extend(eachRetCommCTUnitArray) # 如果没有内容,那么,放一个空单元 if isNonePackageReply: sendCTUnit = CTYBot_CTUnit_CommonData() retDataArray.append(sendCTUnit) sockManager.PassiveSend_To_AcceptSock(clientSock, retDataArray) if self.__report_status: if strPeerName in self.__node_status.SocksInfo['Socks'].keys(): self.__node_status.SocksInfo['Socks'][strPeerName][ 'Status'] = "Up" self.__node_status.SocksInfo['Socks'][strPeerName][ 'TotalSend'] += len(ctUnitArray) self.__node_status.SocksInfo['Socks'][strPeerName][ 'LastSendTime'] = NodeStatus.get_now_timestamp() self.__node_status.SocksInfo['TotalSend'] += len(ctUnitArray)
def HandleRecvCTUnit_OPMonitor(hlSockMang, iEachAcceptSock, ctUnitArray): retDataArray = [] for eachCTUnit in ctUnitArray: eachRetCommCTUnit = None eachRetCommCTUnitArray = [] if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): if (eachCTUnit.s_iValue == g_i_OpMonitor_SubCmd_Post_DisplayContent ): eachRetCommCTUnit = SubHandle_OPMonitor_Post_DisplayContent( eachCTUnit.s_strValue, eachCTUnit.s_strParam1, eachCTUnit.s_strParam2) if (eachRetCommCTUnit): retDataArray.append(eachRetCommCTUnit) if (eachRetCommCTUnitArray): retDataArray.extend(eachRetCommCTUnitArray) if (not retDataArray): sendCTUnit = CTYBot_CTUnit_CommonData() retDataArray.append(sendCTUnit) hlSockMang.PassiveSend_To_AcceptSock(iEachAcceptSock, retDataArray) pass
def HandleRecvCTUnit_OPWeiXin(hlSockMang, iEachAcceptSock, ctUnitArray): retDataArray = [] for eachCTUnit in ctUnitArray: eachRetCommCTUnit = None eachRetCommCTUnitArray = [] if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): if (eachCTUnit.s_iValue == g_i_OpWeiXin_SubCmd_GetLoginCode): eachRetCommCTUnit = SubHandle_OPWeiXin_GetLoginCode() elif (eachCTUnit.s_iValue == g_i_OpWeiXin_SubCmd_Get_ChatContent): eachRetCommCTUnitArray = SubHandle_OPWeiXin_GetChatContent() elif (eachCTUnit.s_iValue == g_i_OpWeiXin_SubCmd_Send_ChatContent): eachRetCommCTUnit = SubHandle_OPWeiXin_SendChatContent( eachCTUnit.s_strValue, eachCTUnit.s_strParam1, eachCTUnit.s_strParam2) if (eachRetCommCTUnit): retDataArray.append(eachRetCommCTUnit) if (eachRetCommCTUnitArray): retDataArray.extend(eachRetCommCTUnitArray) if (not retDataArray): retDataArray.append(CTYBot_CTUnit_CommonData()) hlSockMang.PassiveSend_To_AcceptSock(iEachAcceptSock, retDataArray) pass
def Handle_ExecPlugin_RecvSockCTUnit(self, hlSockMang, iExecPluginSock, ctUnitArray): execPluginHost = self.SearchHostUnitBySockIndex(iExecPluginSock, False) if (execPluginHost): execPluginHost.UpdateLastActiveTime() lastOrigReqHostUnit = None # 上次查询的主机单元值 for eachCTUnit in ctUnitArray: bUnitHandled = False if (not bUnitHandled): # 向任务中心报告当前状态 if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef. s_g_iDataType_TaskRegCenter_sk_v1): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_TaskRegCenter_ReportMyStatus) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_TaskRegCenter_ReportMyStatus_None)): bUnitHandled = True execPluginHost.s_lastClientStatusData = eachCTUnit pass if (not bUnitHandled): # 结果报告的命令 if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef. s_g_iDataType_TaskRegCenter_sk_v1): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_TaskRegCenter_ReportResult) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_TaskRegCenter_ReportResult_PingTraceWebCrawl )): bUnitHandled = True taskUnitReportResult = eachCTUnit bOrigParamExist, origReqHostUnit = self.Search_OrigTaskSign_ReqHostUnit_By_UniqueSign( taskUnitReportResult.s_bstrOrigTaskUniqueSign, lastOrigReqHostUnit) if (bOrigParamExist and origReqHostUnit): origReqHostUnit.s_clientResultCTUnitArray.append( taskUnitReportResult) lastOrigReqHostUnit = origReqHostUnit pass if (not bUnitHandled): # 结果报告单元V2 if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef. s_g_iDataType_TaskRegCenter_sk_v1): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_TaskRegCenter_ReportResult_V2) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_TaskRegCenter_ReportResult_V2_PingTraceWebCrawl )): bUnitHandled = True taskUnitReportV2Result = eachCTUnit bOrigParamExist, origReqHostUnit = self.Search_OrigTaskSign_ReqHostUnit_By_UniqueSign( taskUnitReportV2Result. s_bstrOrigTaskUniqueSign, lastOrigReqHostUnit) if (bOrigParamExist and origReqHostUnit): origReqHostUnit.s_clientResultCTUnitArray.append( taskUnitReportV2Result) lastOrigReqHostUnit = origReqHostUnit pass if (not bUnitHandled): # 结果通用单元 if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_CommonTask_SingleData) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_CommonTask_SingleData)): bUnitHandled = True lastOrigReqHostUnit = self.__Handle_ExecPluginHost_Recv_CommCTUnit( execPluginHost, eachCTUnit, lastOrigReqHostUnit) # 把主机空闲的参数块,分配到该主机。 self.__AssignFreeParamToExecPluginHost(execPluginHost) # 发送数据包。发送后,清除 if (len(execPluginHost.s_toBeSendCTUnitArray) > 0): toBeSendArray = execPluginHost.s_toBeSendCTUnitArray else: tmpCommCTUnit = CTYBot_CTUnit_CommonData() tmpCommCTUnit.SetIntData(0) toBeSendArray = [tmpCommCTUnit] hlSockMang.PassiveSend_To_AcceptSock(iExecPluginSock, toBeSendArray) execPluginHost.s_toBeSendCTUnitArray = [] else: CTYLB_Log.ShowLog( 1, 'TRC_host_mang', "Invalid ExecPluginSocket HL_Socket %d not exist" % (iExecPluginSock)) pass
def Handle_PromptorRequester_RecvSockCTUnit(self, hlSockMang, iPromptorSock, ctUnitArray): requestorHost = self.SearchHostUnitBySockIndex(iPromptorSock, True) if (requestorHost): for eachCTUnit in ctUnitArray: bUnitHandled = False if (not bUnitHandled): # 单个参数块分配 if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef. s_g_iDataType_TaskRegCenter_sk_v1): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_TaskRegCenter_AssignTask) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_TaskRegCenter_AssignTask_Param)): bUnitHandled = True requestorHost.s_waitExecParamArray.append( eachCTUnit) pass if (not bUnitHandled): # 广播参数块分配 if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef. s_g_iDataType_TaskRegCenter_sk_v1): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_TaskRegCenter_AssignTask) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_TaskRegCenter_AssignTask_BroadCast_Param )): bUnitHandled = True requestorHost.s_waitBroadCastParamArray.append( eachCTUnit) pass if (not bUnitHandled): # 域名参数块分配 if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef. s_g_iDataType_TaskRegCenter_sk_v1): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_TaskRegCenter_Assign_WebNameBlock) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_TaskRegCenter_Assign_WebNameBlock)): bUnitHandled = True requestorHost.s_waitExecParamArray.append( eachCTUnit) pass if (not bUnitHandled): if (eachCTUnit.s_iMyDataType == CTYLB_Bot_BaseDef.s_g_iDataType_CommonTask): if ((eachCTUnit.s_iBotCmd_Main == CTYLB_Bot_BaseDef. s_g_iMainCmd_CommonTask_SingleData) and (eachCTUnit.s_iBotCmd_Sub == CTYLB_Bot_BaseDef. s_g_iSubCmd_CommonTask_SingleData)): bUnitHandled = True self.__Handle_PromptRequestor_Recv_CommCTUnit( requestorHost, eachCTUnit) # 调度数据包发送回去。 totalNeedSend = [] # 把最多某个个长度的数组存入 # 发送 回复单元 iCanSendCount = CTYLB_TaskCenter_HostMang.s_g_iMaxSendTotalCTUnitCount iArrayLen = len(requestorHost.s_toBeSendReplyCTUnitArray) if (iArrayLen > 0): iHaveSendCount = iArrayLen if ( iCanSendCount > iArrayLen) else iCanSendCount totalNeedSend.extend( requestorHost.s_toBeSendReplyCTUnitArray[:iHaveSendCount]) stillSaveArray = requestorHost.s_toBeSendReplyCTUnitArray[ iHaveSendCount:] requestorHost.s_toBeSendReplyCTUnitArray = stillSaveArray # 发送结果单元 iArrayLen = len(requestorHost.s_clientResultCTUnitArray) iCanSendCount = CTYLB_TaskCenter_HostMang.s_g_iMaxSendTotalCTUnitCount - len( totalNeedSend) if (iArrayLen > 0 and iCanSendCount > 0): iHaveSendCount = iArrayLen if ( iCanSendCount > iArrayLen) else iCanSendCount totalNeedSend.extend( requestorHost.s_clientResultCTUnitArray[:iHaveSendCount]) stillSaveArray = requestorHost.s_clientResultCTUnitArray[ iHaveSendCount:] requestorHost.s_clientResultCTUnitArray = stillSaveArray if (not totalNeedSend): # 如果为空的队列,增加临时单元,保证队列不为空 replyCommUnit = CTYBot_CTUnit_CommonData() totalNeedSend.append(replyCommUnit) hlSockMang.PassiveSend_To_AcceptSock(iPromptorSock, totalNeedSend) else: CTYLB_Log.ShowLog( 1, 'TRC_host_mang', "Invalid Promptor HL_Socket %d not exist" % (iPromptorSock)) pass
def SubHandle_Act_Brain_Reply_RequestExec(strOrigParamRunParam, strRunType, strTaskRecID): strOrigParamRunParam = CTYLB_MainSys_MiscFunc.SafeGetUnicode( strOrigParamRunParam) strRunType = CTYLB_MainSys_MiscFunc.SafeGetUnicode(strRunType) strTaskRecID = CTYLB_MainSys_MiscFunc.SafeGetUnicode(strTaskRecID) iExRetCode = g_i_Code_Finish_Need_Run strSendUserContent = '' strNeedRunUpdateParam = '' strRunResult = '' try: iRunType = int(strRunType) iTaskRecID = int(strTaskRecID) except: iRunType = 0 iTaskRecID = 0 if (iRunType == g_i_ExecTypeID_Monitor_ShowNetworkSituation): #安全态势任务 # 提取json参数内容 paramCollect = json.loads(strOrigParamRunParam) # ==================构建回复用户微信的内容================================= iExRetCode = g_i_Code_Finish_Stop_Task strSendUserContent = "任务已经下发到屏幕控制机器人,渲染完成后将通知你哦。。。" print("[*]处理安全态势任务到显示屏:{}".format(strOrigParamRunParam)) valueCollect = { "code": iExRetCode, "RunResult": strRunResult, "NeedUpdateRunParam": strNeedRunUpdateParam, "SendUserContent": strSendUserContent } strRetValue = json.dumps(valueCollect) param1Collect = { "RunTypeID": g_i_ExecTypeID_Monitor_ShowNetworkSituation, "TaskRecID": iTaskRecID } strRetParam1 = json.dumps(param1Collect) # ==================构建发送给Monitor控制的内容=========================== ustrDisplayContent = paramCollect[ "OrigParam"] # "{\"area\": \"\u5e7f\u5dde\u5e02\"}" ustrMonitorID = strRetParam1 #回复微信时需要 ustrDataType = "ShowNetworkSituation" elif (iRunType == g_i_ExecTypeID_Monitor_ShowNetworkAssets): #网络资产任务 # 提取json参数内容 paramCollect = json.loads(strOrigParamRunParam) #==================构建回复用户微信的内容================================= iExRetCode = g_i_Code_Finish_Stop_Task strSendUserContent = "任务已经下发到屏幕控制机器人,渲染完成后将通知你哦。。。" print("[*]处理网络资产关联任务到显示屏:{}".format(strOrigParamRunParam)) valueCollect = { "code": iExRetCode, "RunResult": strRunResult, "NeedUpdateRunParam": strNeedRunUpdateParam, "SendUserContent": strSendUserContent } strRetValue = json.dumps(valueCollect) param1Collect = { "RunTypeID": g_i_ExecTypeID_Monitor_ShowNetworkAssets, "TaskRecID": iTaskRecID } strRetParam1 = json.dumps(param1Collect) # ==================构建发送给Monitor控制的内容=========================== #'{"OrigParam": "{\\"target\\": \\"\\u5357\\u65b9\\u7535\\u7f51\\"}", "RunTimeParam": null}' ustrDisplayContent = paramCollect[ "OrigParam"] #"{\"target\": \"\u5e7f\u5dde\u5e02\"}" ustrMonitorID = strRetParam1 #回复微信时需要 ustrDataType = "ShowNetworkAssets" retCommCTUnitToBrain = CTYBot_CTUnit_CommonData() retCommCTUnitToBrain.SetIntData(g_i_OpAction_SubCmd_ReplyExecResult) retCommCTUnitToBrain.SetStrData(strRetValue) retCommCTUnitToBrain.SetParam(strRetParam1, '') retCommCTUnitToMonitor = CTYBot_CTUnit_CommonData() retCommCTUnitToMonitor.SetIntData(g_i_OpMonitor_SubCmd_Post_DisplayContent) retCommCTUnitToMonitor.SetStrData(ustrDisplayContent) retCommCTUnitToMonitor.SetParam(ustrMonitorID, ustrDataType) #TODO:同时构造两个回复包,一个发送给用户提示提交成功,另一个发送到屏幕控制 global g_wait_ToBeSend_CTUnitArray g_wait_ToBeSend_CTUnitArray.append(retCommCTUnitToBrain) global g_wait_ToBeSend_To_MonitorCtrl_CTUnitArray g_wait_ToBeSend_To_MonitorCtrl_CTUnitArray.append(retCommCTUnitToMonitor)