*** Settings *** Library json Library Collections Resource ../../../03-Variable/BifangApiVariable.txt Resource ../../../03-Variable/PolicyObjectDefault.txt Resource ../../tsg_common/ManageObjectBody.robot *** Variables *** *** Keywords *** ObjectListOperation [Documentation] ... 描述:入口,opAction参数可为'add','update','disable','enable' ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。 ... objectList: 必传,字典类型。字典内可选参数信息: ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt ... 多个对象处理 [Arguments] ${returnData} ${objectList} ${opAction} Log Call ObjectListOperation ${objectListJson} Set Variable [ FOR ${object} IN @{objectList} ${json} ObjectOrganize ${object} ${opAction} ${objectListJson} Set Variable ${objectListJson}${json}, END ${objectListJson}= Replace String Using Regexp ${objectListJson} ,$ ] # 转为json结构并返回 ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList ${bodyJson} json.Dumps ${dict} ensure_ascii=False ${json} Replace String ${bodyJson} "replace:objectList" ${objectListJson} Log Object_Request_Body-${json} [Return] ${json} ObjectOperation [Documentation] ... 描述:入口,opAction参数可为'add','update','disable','enable' ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。 ... object: 必传,字典类型。字典内可选参数信息: ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt ... 单个策略处理 [Arguments] ${returnData} ${object} ${opAction} Log Call ObjectOperation ${json} ObjectOrganize ${object} ${opAction} # 转为json结构并返回 ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList ${bodyJson} json.Dumps ${dict} ensure_ascii=False ${json} Replace String ${bodyJson} "replace:objectList" ${json} Log Object_Request_Body-${json} [Return] ${json} listorone [Arguments] ${object} ${addItemList} Evaluate str('addItemList'in${object}.keys()) log ${addItemList} ${subObjectIds} Evaluate str('subObjectIds'in${object}.keys()) log ${subObjectIds} ${objectparm} set variable ${addItemList} ${subObjectIds} should contain x times ${objectparm} True 1 # Should Not Be Empty ${object}[addItemList] or Should Not Be Empty ${object}[subObjectIds] ObjectOrganize [Documentation] ... 描述:入口,opAction参数可为'add','update','disable','enable' ... object: 必传,字典类型。字典内可选参数信息: ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt ... 单个策略转换为json [Arguments] ${object} ${opAction} Log Call ObjectOrganize ${emptyList} Create List ${returnDict} Create Dictionary # 断言必传参数 # Should Not Be Empty ${object}[objectType] # Set To Dictionary ${returnDict} objectType=${object}[objectType] #新增时addItemList不能为空 Run Keyword If "${opAction}"=="add" listorone ${object} Run Keyword If "${opAction}"=="update" Should Not Be Empty ${object}[objectId] Run Keyword If "${opAction}"=="enable" Should Not Be Empty ${object}[objectId] Run Keyword If "${opAction}"=="disable" Should Not Be Empty ${object}[objectId] ${return} ${objectId} Run Keyword And Ignore Error Get From Dictionary ${object} objectId Run Keyword If "${return}"=="FAIL" or "${objectId}"=="${EMPTY}" Set To Dictionary ${returnDict} objectId=${EMPTY} ... ELSE Set To Dictionary ${returnDict} objectId=${objectId} ${return} ${objectType} Run Keyword And Ignore Error Get From Dictionary ${object} objectType ${objectTypeV} Run Keyword If "${return}"!="FAIL" and "${objectType}"!="${EMPTY}" Evaluate '${objectType}'.lower() ... ELSE Evaluate '${Default_ObjectType}'.lower() Set To Dictionary ${returnDict} objectType=${objectTypeV} #enable disable直接返回json Run Keyword And Return If "${opAction}"=="enable" or "${opAction}"=="disable" ManageEnableAndDisable ${object} ${returnDict} ${opAction} # 取可选参数,为传入设置默认值 Set To Dictionary ${returnDict} objectType=${objectTypeV} ${return} ${objectSubType} Run Keyword And Ignore Error Get From Dictionary ${object} objectSubType Run Keyword If "${return}"!="FAIL" and "${objectSubType}"!="${EMPTY}" Set To Dictionary ${returnDict} objectSubType=${objectSubType} ... ELSE Set To Dictionary ${returnDict} objectSubType=${Default_ObjectSubType} ${return} ${isValid} Run Keyword And Ignore Error Get From Dictionary ${object} isValid Run Keyword If "${return}"=="FAIL" or "${isValid}"=="${EMPTY}" Set To Dictionary ${returnDict} isValid=${Default_IsValid} ... ELSE Set To Dictionary ${returnDict} isValid=${isValid} ${return} ${isInitialize} Run Keyword And Ignore Error Get From Dictionary ${object} isInitialize Run Keyword If "${return}"=="FAIL" or "${isInitialize}"=="${EMPTY}" Set To Dictionary ${returnDict} isInitialize=${Default_IsInitialize} ... ELSE Set To Dictionary ${returnDict} isInitialize=${isInitialize} ${return} ${isExclusion} Run Keyword And Ignore Error Get From Dictionary ${object} isExclusion Run Keyword If "${return}"=="FAIL" or "${isExclusion}"=="${EMPTY}" Set To Dictionary ${returnDict} isExclusion=${Default_IsExclusion} ... ELSE Set To Dictionary ${returnDict} isExclusion=${isExclusion} ${return} ${objectName} Run Keyword And Ignore Error Get From Dictionary ${object} objectName Run Keyword If "${return}"=="FAIL" or "${objectName}"=="${EMPTY}" Set To Dictionary ${returnDict} objectName=${Default_ObjectName} ... ELSE Set To Dictionary ${returnDict} objectName=${objectName} ${return} ${objectDesc} Run Keyword And Ignore Error Get From Dictionary ${object} objectDesc Run Keyword If "${return}"!="FAIL" and "${objectDesc}"!="${EMPTY}" Set To Dictionary ${returnDict} objectDesc=${objectDesc} ... ELSE Set To Dictionary ${returnDict} objectDesc=${Default_ObjectDesc} ${return} ${subObjectIds} Run Keyword And Ignore Error Get From Dictionary ${object} subObjectIds Run Keyword If "${return}"!="FAIL" and "${subObjectIds}"!="${EMPTY}" and "${subObjectIds}"!="${None}" Set To Dictionary ${returnDict} subObjectIds=${subObjectIds} ... ELSE Set Variable ${emptyList} ${return} ${iconColor} Run Keyword And Ignore Error Set Variable ${object['iconColor']} Run Keyword If "${return}"!="FAIL" Set To Dictionary ${returnDict} iconColor=${iconColor} #补充ip learning对象 ${return} ${fromFqdns} Run Keyword And Ignore Error Get From Dictionary ${object} fromFqdns Run Keyword If "${return}"!="FAIL" Set To Dictionary ${returnDict} fromFqdns=${fromFqdns} #... ELSE Set To Dictionary ${returnDict} fromFqdns=${emptyList} log ${fromFqdns} ${return} ${fromProtocol} Run Keyword And Ignore Error Get From Dictionary ${object} fromProtocol Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} fromProtocol=${fromProtocol} #... ELSE Set To Dictionary ${returnDict} fromProtocol=${Default_fromProtocol} ${return} ${learningDepth} Run Keyword And Ignore Error Get From Dictionary ${object} learningDepth Run Keyword If "${return}"!="FAIL" and "${learningDepth}"!="${EMPTY}" Set To Dictionary ${returnDict} learningDepth=${learningDepth} #... ELSE Set To Dictionary ${returnDict} learningDepth=${Default_learningDepth} ${return} ${agingTime} Run Keyword And Ignore Error Get From Dictionary ${object} agingTime Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} agingTime=${agingTime} #... ELSE Set To Dictionary ${returnDict} agingTime=${Default_agingTime} ${return} ${voteClientNum} Run Keyword And Ignore Error Get From Dictionary ${object} voteClientNum Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} voteClientNum=${voteClientNum} #... ELSE Set To Dictionary ${returnDict} voteClientNum=${Default_voteClientNum} ${return} ${learnedIpLimit} Run Keyword And Ignore Error Get From Dictionary ${object} learnedIpLimit Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} learnedIpLimit=${learnedIpLimit} #... ELSE Set To Dictionary ${returnDict} learnedIpLimit=${Default_learnedIpLimit} # 处理AddItemList ${return} ${addItemList} Run Keyword And Ignore Error Get From Dictionary ${object} addItemList Run Keyword If "${return}"!="FAIL" and "${addItemList}"!="${EMPTY}" ManageAddItemListNew ${addItemList} ${returnDict} ${objectTypeV} ${objectSubType} # 处理UpdateItemList ${return} ${updateItemList} Run Keyword And Ignore Error Get From Dictionary ${object} updateItemList Run Keyword If "${opAction}"=="update" and "${return}"!="FAIL" and "${updateItemList}"!="${EMPTY}" ManageUpdateItemList ${updateItemList} ${returnDict} ${objectTypeV} ${objectSubType} # 处理deleteItemIds ${return} ${deleteItemIds} Run Keyword And Ignore Error Get From Dictionary ${object} deleteItemIds Run Keyword If "${opAction}"=="update" and "${return}"!="FAIL" and "${deleteItemIds}"!="${EMPTY}" ManageDeleteItemIds ${deleteItemIds} ${returnDict} # 转为json结构并返回 ${json} json.Dumps ${returnDict} ensure_ascii=False Log Object-${json} [Return] ${json} ManageEnableAndDisable [Documentation] ... 启用与禁用时调用 [Arguments] ${object} ${returnDict} ${opAction} Run Keyword If "${opAction}"=="enable" Set To Dictionary ${returnDict} isValid=1 Run Keyword If "${opAction}"=="disable" Set To Dictionary ${returnDict} isValid=0 ${json} json.Dumps ${returnDict} ensure_ascii=False Log Object-${json} [Return] ${json} ManageAddItemListNew # 处理addItemList数组 [Arguments] ${addItemList} ${returnDict} ${type} ${subType} Log Call ManageAddItemListNew ${itemList} Create List FOR ${item} IN @{addItemList} ${itemNew} Run Keyword If '${type}'=='ip' ManageIpItem ${item} ${subType} add ... ELSE IF '${type}'=='url' or '${type}'=='fqdn' or '${type}'=='keywords' or '${type}'=='subscriberid' or '${type}'=='fqdn_category' or '${type}'=='account' or '${type}'=='app_id' ... ManageStrItem ${item} ${type} add ... ELSE IF '${type}'=='file_type' ManageFileItem ${item} ${type} add ... ELSE IF '${type}'=='http_signature' ManageExtensionStrItem ${item} ${type} add ... ELSE IF '${type}'=='file_size' or '${type}'=='file_integrity_rate' ManageNumberItem ${item} ${type} add ... ELSE Fail Append To List ${itemList} ${itemNew} END Set To Dictionary ${returnDict} addItemList=${itemList} ManageUpdateItemList [Documentation] ... 处理updateItemList [Arguments] ${updateItemList} ${returnDict} ${type} ${subType} ${itemList} Create List FOR ${item} IN @{updateItemList} ${itemId} Get From Dictionary ${item} itemId ${itemNew} Run Keyword If '${type}'=='ip' ManageIpItem ${item} ${subType} update ... ELSE IF '${type}'=='url' or '${type}'=='fqdn' or '${type}'=='keywords' or '${type}'=='subscriberid' or '${type}'=='fqdn_category' or '${type}'=='account' or '${type}'=='app_id' ... ManageStrItem ${item} ${type} update ... ELSE IF '${type}'=='file_type' ManageFileItem ${item} ${type} update ... ELSE IF '${type}'=='http_signature' ManageExtensionStrItem ${item} ${type} update ... ELSE IF '${type}'=='file_size' or '${type}'=='file_integrity_rate' ManageNumberItem ${item} ${type} update ... ELSE Fail Set To Dictionary ${itemNew} itemId=${itemId} #由于接口更新时是否内置字段会导致40014001,策略对象单元不可改是否为内置(isInitialize)参数状态,这里去掉是否内置字段 Remove From Dictionary ${itemNew} isInitialize Append To List ${itemList} ${itemNew} END Set To Dictionary ${returnDict} updateItemList=${itemList} ManageIpItem [Documentation] ... ip item处理 [Arguments] ${item} ${subType} ${action} Log Call ManageIpItem ${return} ${isSession} Run Keyword And Ignore Error Get From Dictionary ${item} isSession ${isSession} Run Keyword If "${return}"!="FAIL" Set Variable ${isSession} ELSE Set Variable ${EMPTY} Run Keyword If "${action}"=="add" Should Not Be Empty ${isSession} ${return} ${ip} Run Keyword And Ignore Error Get From Dictionary ${item} ip ${ip} Run Keyword If "${return}"!="FAIL" Set Variable ${ip} ELSE Set Variable ${EMPTY} Run Keyword If "${action}"=="add" Should Not Be Empty ${ip} ${return} ${port} Run Keyword And Ignore Error Get From Dictionary ${item} port Run Keyword If "${action}"=="add" Should Not Be Empty ${port} #Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} direction #${return} ${direction} Run Keyword And Ignore Error Get From Dictionary ${item} direction #${direction} Run Keyword If "${return}"!="FAIL" Set Variable ${direction} ELSE Set Variable ${EMPTY} #Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} protocol ${return} ${protocol} Run Keyword And Ignore Error Get From Dictionary ${item} protocol ${protocol} Run Keyword If "${return}"!="FAIL" Set Variable ${protocol} ELSE Set Variable ${EMPTY} ${return} ${isInitialize} Run Keyword And Ignore Error Set Variable ${item['isInitialize']} ${isInitialize} Run Keyword If "${return}"!="FAIL" Set Variable ${isInitialize} ... ELSE Set Variable ${EMPTY} ${return} ${itemName} Run Keyword And Ignore Error Set Variable ${item['itemName']} ${itemName} Run Keyword If "${return}"!="FAIL" Set Variable ${itemName} ... ELSE Set Variable ${EMPTY} ${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${item['itemDesc']} ${itemDesc} Run Keyword If "${return}"!="FAIL" Set Variable ${itemDesc} ... ELSE Set Variable ${EMPTY} ${itemNew} Create Dictionary Run Keyword If "${isSession}"!="${EMPTY}" Set To Dictionary ${itemNew} isSession=${isSession} Run Keyword If "${ip}"!="${EMPTY}" Set To Dictionary ${itemNew} ip=${ip} Run Keyword If "${port}"!="${EMPTY}" Set To Dictionary ${itemNew} port=${port} #Run Keyword If "${direction}"!="${EMPTY}" Set To Dictionary ${itemNew} direction=${direction} Run Keyword If "${protocol}"!="${EMPTY}" Set To Dictionary ${itemNew} protocol=${protocol} Run Keyword If "${isInitialize}"!="${EMPTY}" Set To Dictionary ${itemNew} isInitialize=${isInitialize} Run Keyword If "${itemName}"!="${EMPTY}" Set To Dictionary ${itemNew} itemName=${itemName} Run Keyword If "${itemDesc}"!="${EMPTY}" Set To Dictionary ${itemNew} itemDesc=${itemDesc} [Return] ${itemNew} ManageStrItem [Documentation] ... 字符串item处理 [Arguments] ${item} ${type} ${action} Log Call ManageStrItem ${return} ${keywordArray} Run Keyword And Ignore Error Set Variable ${item['keywordArray']} ${keywordArray} Run Keyword If "${return}"!="FAIL" Set Variable ${keywordArray} ELSE Set Variable ${EMPTY} Run Keyword If "${action}"=="add" Should Not Be Empty ${keywordArray} ${array} Evaluate re.split('[,]', '${keywordArray}') re Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} isHexbin ${return} ${isHexbin} Run Keyword And Ignore Error Get From Dictionary ${item} isHexbin ${isHexbin} Run Keyword If "${return}"!="FAIL" Set Variable ${isHexbin} ... ELSE Set Variable ${EMPTY} ${return} ${isInitialize} Run Keyword And Ignore Error Set Variable ${item['isInitialize']} ${isInitialize} Run Keyword If "${return}"!="FAIL" Set Variable ${isInitialize} ... ELSE Set Variable ${EMPTY} ${return} ${itemName} Run Keyword And Ignore Error Set Variable ${item['itemName']} ${itemName} Run Keyword If "${return}"!="FAIL" Set Variable ${itemName} ... ELSE Set Variable ${EMPTY} ${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${item['itemDesc']} ${itemDesc} Run Keyword If "${return}"!="FAIL" Set Variable ${itemDesc} ... ELSE Set Variable ${EMPTY} ${itemNew} Create Dictionary Run Keyword If "${keywordArray}"!="${EMPTY}" Set To Dictionary ${itemNew} keywordArray=${array} Run Keyword If "${isHexbin}"!="${EMPTY}" Set To Dictionary ${itemNew} isHexbin=${isHexbin} Run Keyword If "${isInitialize}"!="${EMPTY}" Set To Dictionary ${itemNew} isInitialize=${isInitialize} Run Keyword If "${itemName}"!="${EMPTY}" Set To Dictionary ${itemNew} itemName=${itemName} Run Keyword If "${itemDesc}"!="${EMPTY}" Set To Dictionary ${itemNew} itemDesc=${itemDesc} [Return] ${itemNew} ManageFileItem [Documentation] ... 接口未说明,待接口说明字段类型之后再完善 [Arguments] ${item} ${type} ${action} Log Call ManageFileItem [Return] ${item} ManageExtensionStrItem [Documentation] ... http_signature参数说明 [Arguments] ${item} ${type} ${action} Log Call ManageExtensionStrItem ${return} ${district} Run Keyword And Ignore Error Get From Dictionary ${item} district ${district} Run Keyword If "${return}"!="FAIL" Set Variable ${district} ELSE Set Variable ${EMPTY} Run Keyword If "${action}"=="add" Should Not Be Empty ${district} ${itemNew} ManageStrItem ${item} ${type} ${action} Run Keyword If "${district}"!="${EMPTY}" Set To Dictionary ${itemNew} district=${district} [Return] ${itemNew} ManageNumberItem [Documentation] ... 接口未说明,待接口说明字段类型之后再完善 [Arguments] ${item} ${type} ${action} Log Call ManageNumberItem [Return] ${item} ManageDeleteItemIds [Documentation] ... 处理deleteItemIds ... ${1},${2},${3} -> [1,2,3] [Arguments] ${deleteItemIds} ${returnDict} ${list} Evaluate re.split('[,]', '${deleteItemIds}') re ${list1} Create List FOR ${var} IN @{list} ${var} Run Keyword If '${var}'.isdigit() Evaluate int('${var}') ... ELSE Set Variable ${var} Append To List ${list1} ${var} END Set To Dictionary ${returnDict} deleteItemIds=${list1} Get-ObjectIds [Documentation] ... 获取结果中的对象ID [Arguments] ${value} Log Call Get-ObjectIds ${objectIds} Create List ${objectIdsTemp} Set Variable ${EMPTY} ${return} ${data} Run Keyword And Ignore Error Get From Dictionary ${value} data Return From Keyword If "${return}"=="FAIL" ${objectIdsTemp} FOR ${object} IN @{value['data']['objectList']} Append To List ${objectIds} ${object['objectId']} END ${json} json.Dumps ${objectIds} ensure_ascii=False ${json} Remove String ${json} [ ${json} Remove String ${json} ] [Return] ${json}