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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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)
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
 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
Exemple #14
0
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
Exemple #15
0
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
Exemple #16
0
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
Exemple #17
0
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
Exemple #18
0
 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)
Exemple #19
0
 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
Exemple #20
0
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
Exemple #21
0
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
Exemple #22
0
        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
Exemple #25
0
    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
Exemple #27
0
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
Exemple #28
0
 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
Exemple #29
0
    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)