{
"version": "3.0",
"name": "Rapid7 Nexpose Assets management",
"comment": "",
"type": "REST_EVENT",
"event_type": [
"LEASE",
"NETWORK_IPV4",
"RANGE_IPV4",
"FIXED_ADDRESS_IPV4",
"HOST_ADDRESS_IPV4",
"NETWORK_IPV6",
"RANGE_IPV6",
"FIXED_ADDRESS_IPV6",
"HOST_ADDRESS_IPV6"
],
"action_type": "Rapid7 Nexpose Assets management",
"content_type": "text/xml",
"vendor_identifier": "Rapid7",
"quoting": "XMLA",
"steps": [
{
"name": "skip object modification",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${E:A:operation_type}",
"op": "==",
"right": "MODIFY"
}
],
"condition_type": "AND",
"stop": true
}
},
{
"name": "defaultValues",
"operation": "NOP",
"body": "${XC:ASSIGN:{L:IPTo}:{S:}}${XC:ASSIGN:{L:Hostname}:{S:}}"
},
{
"name": "checkEType_Network",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${E::event_type}",
"op": "==",
"right": "LEASE"
}
],
"next": "checkEType_Lease"
}
},
{
"name": "skip if Site is not defined or sync not requested",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${E:A:values{extattrs}{R7_Site}{value}}",
"op": "==",
"right": ""
},
{
"left": "${E:A:values{extattrs}{R7_Sync}{value}}",
"op": "==",
"right": ""
},
{
"left": "${E:A:values{extattrs}{R7_Sync}{value}}",
"op": "==",
"right": "false"
}
],
"condition_type": "OR",
"stop": true
}
},
{
"name": "skip synced host",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${E:A:operation_type}",
"op": "==",
"right": "INSERT"
},
{
"left": "${E:A:values{extattrs}{R7_SyncedAt}{value}}",
"op": "!=",
"right": ""
}
],
"stop": true
}
},
{
"name": "assignLVarsNet",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:Site}:{E:values{extattrs}{R7_Site}{value}}}",
"${XC:COPY:{L:ScanTemplate}:{E:values{extattrs}{R7_ScanTemplate}{value}}}",
"${XC:COPY:{L:ScanOnAdd}:{E:values{extattrs}{R7_ScanOnAdd}{value}}}",
"${XC:COPY:{L:Obj_ref}:{E:values{_ref}}}",
"${XC:ASSIGN:{L:SaveEA}:{S:true}}"
]
},
{
"name": "Debug#a",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "SetR7_IPF_Network",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E::event_type}",
"op": "==",
"right": "NETWORK_IPV4"
},
{
"left": "${E::event_type}",
"op": "==",
"right": "NETWORK_IPV6"
}
],
"eval": "${XC:COPY:{L:Network}:{E:values{network}}}${XC:NETWORKTORANGE:{L:Network}:{L:RangeFromNet}}${XC:ASSIGN:{L:ObjType}:{S:NETWORK}}${XC:COPY:{L:IPFrom}:{L:RangeFromNet{{from}}}}${XC:COPY:{L:IPTo}:{L:RangeFromNet{{to}}}}"
}
},
{
"name": "Debug#b",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "SetR7_IPF_Range",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E::event_type}",
"op": "==",
"right": "RANGE_IPV4"
},
{
"left": "${E::event_type}",
"op": "==",
"right": "RANGE_IPV6"
}
],
"eval": "${XC:COPY:{L:IPFrom}:{E:values{start_addr}}}${XC:COPY:{L:IPTo}:{E:values{end_addr}}}${XC:ASSIGN:{L:ObjType}:{S:RANGE}}"
}
},
{
"name": "SetR7_IPF_Host_IPv4",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E::event_type}",
"op": "==",
"right": "HOST_ADDRESS_IPV4"
}
],
"eval": "${XC:COPY:{L:IPFrom}:{E:values{ipv4addr}}}${XC:COPY:{L:Hostname}:{E:values{host}}}${XC:ASSIGN:{L:IPv}:{S:ipv4addr}}${XC:ASSIGN:{L:ObjType}:{S:HOST}}"
}
},
{
"name": "SetR7_IPF_Host_IPv6",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E::event_type}",
"op": "==",
"right": "HOST_ADDRESS_IPV6"
}
],
"eval": "${XC:COPY:{L:IPFrom}:{E:values{ipv6addr}}}${XC:COPY:{L:Hostname}:{E:values{host}}}${XC:ASSIGN:{L:IPv}:{S:ipv6addr}}${XC:ASSIGN:{L:ObjType}:{S:HOST}}"
}
},
{
"name": "SetR7_IPF_Fixed_IPv4",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E::event_type}",
"op": "==",
"right": "FIXED_ADDRESS_IPV4"
}
],
"eval": "${XC:COPY:{L:IPFrom}:{E:values{ipv4addr}}}${XC:ASSIGN:{L:ObjType}:{S:FIXEDIP}}"
}
},
{
"name": "SetR7_IPF_Fixed_IPv6",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E::event_type}",
"op": "==",
"right": "FIXED_ADDRESS_IPV6"
}
],
"eval": "${XC:COPY:{L:IPFrom}:{E:values{ipv6addr}}}${XC:ASSIGN:{L:ObjType}:{S:FIXEDIP}}"
}
},
{
"name": "SetR7_NetToSite",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E:A:values{extattrs}{R7_NetToSite}{value}}",
"op": "==",
"right": ""
}
],
"eval": "${XC:ASSIGN:{L:NetToSite}:{S:false}}",
"else_eval": "${XC:COPY:{L:NetToSite}:{E:values{extattrs}{R7_NetToSite}{value}}}"
}
},
{
"name": "SetR7_RangeToSite",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E:A:values{extattrs}{R7_RangeToSite}{value}}",
"op": "==",
"right": ""
}
],
"eval": "${XC:ASSIGN:{L:RangeToSite}:{S:false}}",
"else_eval": "${XC:COPY:{L:RangeToSite}:{E:values{extattrs}{R7_RangeToSite}{value}}}"
}
},
{
"name": "SetR7_AddByHostname",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E:A:values{extattrs}{R7_AddByHostname}{value}}",
"op": "==",
"right": ""
}
],
"eval": "${XC:ASSIGN:{L:AddByHostname}:{S:false}}",
"else_eval": "${XC:COPY:{L:AddByHostname}:{E:values{extattrs}{R7_AddByHostname}{value}}}"
}
},
{
"name": "SetR7_SiteID",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E:A:values{extattrs}{R7_SiteID}{value}}",
"op": "==",
"right": ""
}
],
"eval": "${XC:ASSIGN:{L:SiteID}:{I:0}}",
"else_eval": "${XC:COPY:{L:SiteID}:{E:values{extattrs}{R7_SiteID}{value}}}"
}
},
{
"name": "findRef_Host",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L::ObjType}",
"op": "!=",
"right": "HOST"
}
],
"next": "Fin_Vars_Init"
}
},
{
"name": "findRef_Host_ch_Delete",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${E:A:operation_type}",
"op": "==",
"right": "DELETE"
}
],
"next": "Fin_Vars_Init"
}
},
{
"name": "Get Host _ref",
"operation": "GET",
"transport": {
"path": "record:host?_return_fields=name,extattrs&network_view=${E::values{network_view}}&name=${L::Hostname}&${L::IPv}=${L::IPFrom}"
},
"wapi": "v2.6"
},
{
"operation": "CONDITION",
"name": "wapi_response_get_ref",
"condition": {
"statements": [
{
"op": "==",
"right": "${P:A:PARSE[0]{_ref}}",
"left": ""
}
],
"condition_type": "AND",
"error": true,
"else_eval": "${XC:COPY:{L:Obj_ref}:{P:PARSE[0]{_ref}}}"
}
},
{
"name": "Debug P vars",
"operation": "NOP",
"body": "${XC:DEBUG:{P:}}"
},
{
"name": "check if host already synced",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${P:A:PARSE[0]{extattrs}{R7_SyncedAt}}",
"op": "!=",
"right": ""
}
],
"condition_type": "AND",
"stop": true
}
},
{
"name": "checkEType_Lease",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${E::event_type}",
"op": "!=",
"right": "LEASE"
}
],
"next": "Fin_Vars_Init"
}
},
{
"name": "skip if not defined for lease",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${E:A:ip.extattrs{R7_Site}}",
"op": "==",
"right": ""
},
{
"left": "${E:A:ip.extattrs{R7_Sync}}",
"op": "==",
"right": ""
},
{
"left": "${E:A:ip.extattrs{R7_Sync}}",
"op": "==",
"right": "false"
}
],
"condition_type": "OR",
"stop": true
}
},
{
"name": "Debug#0",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "SetR7_L_SiteID",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E:A:ip.extattrs{R7_SiteID}}",
"op": "==",
"right": ""
}
],
"eval": "${XC:ASSIGN:{L:SiteID}:{I:0}}",
"else_eval": "${XC:COPY:{L:SiteID}:{E:ip.extattrs{R7_SiteID}}}"
}
},
{
"name": "assignLVarsLease",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:Network}:{E:network}}",
"${XC:COPY:{L:IPFrom}:{E:address}}",
"${XC:COPY:{L:Site}:{E:ip.extattrs{R7_Site}}}",
"${XC:COPY:{L:Sync}:{E:ip.extattrs{R7_Sync}}}",
"${XC:COPY:{L:ScanTemplate}:{E:ip.extattrs{R7_ScanTemplate}}}",
"${XC:COPY:{L:ScanOnAdd}:{E:ip.extattrs{R7_ScanOnAdd}}}",
"${XC:COPY:{L:Hostname}:{E:client_hostname}}",
"${XC:ASSIGN:{L:SaveEA}:{S:false}}",
"${XC:ASSIGN:{L:ObjType}:{S:LEASE}}"
]
},
{
"name": "Debug#1",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "Fin_Vars_Init",
"operation": "NOP",
"body": "${XC:DEBUG:{L:}}"
},
{
"name": "Check if lease to avoid errors",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "LEASE",
"op": "!=",
"right": "${E:A:event_type}"
}
],
"condition_type": "AND",
"next": "handle delete"
}
},
{
"name": "handle delete for lease",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "FREE",
"op": "==",
"right": "${E:A:binding_state}"
}
],
"condition_type": "AND",
"next": "DeleteObject"
}
},
{
"name": "skip handle delete to avoid errors",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "1",
"op": "==",
"right": "1"
}
],
"condition_type": "AND",
"next": "Check SiteID"
}
},
{
"name": "handle delete",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "DELETE",
"op": "==",
"right": "${E:A:operation_type}"
}
],
"condition_type": "AND",
"next": "DeleteObject"
}
},
{
"name": "Check SiteID",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:SiteID}",
"op": "!=",
"right": "0"
}
],
"next": "GetSiteConf"
}
},
{
"name": "Request R7 sites",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
""
]
},
{
"name": "Check sites request on errors",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "SiteListingResponse",
"op": "!=",
"right": "${P:A:PARSE[[name]]}"
},
{
"left": "${P:A:PARSE{{success}}}",
"op": "!=",
"right": "1"
}
],
"condition_type": "AND",
"else_eval": "${XC:COPY:{L:site_list}:{P:PARSE}}",
"error": true
}
},
{
"name": "Check if sites list is empty",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:L:site_list}",
"op": "==",
"right": "0"
}
],
"condition_type": "AND",
"stop": true
}
},
{
"name": "Pop site from the list",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "POP",
"type": "COMPOSITE",
"destination": "L:a_site",
"source": "L:site_list"
}
]
},
{
"name": "check_a_site",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:A:Site}",
"op": "!=",
"right": "${L:A:a_site{{name}}}"
}
],
"condition_type": "AND",
"next": "Check if sites list is empty",
"else_eval": "${XC:COPY:{L:SiteID}:{L:a_site{{id}}}}"
}
},
{
"name": "checkSaveSiteID",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L::SaveEA}",
"op": "!=",
"right": "true"
}
],
"next": "GetSiteConf"
}
},
{
"name": "Update SiteID",
"operation": "PUT",
"transport": {
"path": "${L:A:Obj_ref}"
},
"wapi": "v2.6",
"wapi_quoting": "JSON",
"body_list": [
"{",
"\"extattrs+\":{\"R7_SiteID\": { \"value\": \"${L:A:SiteID}\"}}",
"}"
]
},
{
"name": "GetSiteConf",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "NETWORK"
},
{
"left": "${L:A:NetToSite}",
"op": "!=",
"right": "true"
}
],
"stop": true
}
},
{
"name": "CheckSyncRanges",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "RANGE"
},
{
"left": "${L:A:RangeToSite}",
"op": "!=",
"right": "true"
}
],
"stop": true
}
},
{
"name": "GetSiteConf_R7",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
""
]
},
{
"name": "get_site_config(errorcheck)",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "SiteConfigResponse",
"op": "!=",
"right": "${P:A:PARSE[[name]]}"
},
{
"left": "${P:A:PARSE{{success}}}",
"op": "!=",
"right": "1"
}
],
"condition_type": "OR",
"else_eval": "${XC:COPY:{L:SiteConfig}:{P:PARSE{SiteConfigResponse}}}",
"error": true
}
},
{
"name": "add by host name",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:A:Hostname}",
"op": "==",
"right": ""
},
{
"left": "${L:A:ObjType}",
"op": "!=",
"right": "HOST"
},
{
"left": "${L:A:AddByHostname}",
"op": "==",
"right": "false"
}
],
"condition_type": "OR",
"next": "Net_to_Site_conf"
}
},
{
"name": "Hostname_to_Site_conf",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "PUSH",
"type": "COMPOSITE",
"name": "host",
"destination": "L:SiteConfig{Site}{Hosts}",
"composite_value": "${L:A:Hostname}"
}
]
},
{
"name": "save by hostname",
"operation": "CONDITION",
"condition": {
"statements": [
{
"right": "1",
"op": "==",
"left": "1"
}
],
"condition_type": "OR",
"next": "Save site config"
}
},
{
"name": "Net_to_Site_conf",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "!=",
"right": "NETWORK"
}
],
"next": "Other_to_Site_conf"
}
},
{
"name": "Push_Network_to_Site_conf",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "PUSH",
"type": "COMPOSITE",
"name": "host",
"destination": "L:SiteConfig{Site}{Hosts}",
"source": "L:RangeFromNet"
}
]
},
{
"name": "save network to site",
"operation": "CONDITION",
"condition": {
"statements": [
{
"right": "1",
"op": "==",
"left": "1"
}
],
"condition_type": "OR",
"next": "Save site config"
}
},
{
"name": "Other_to_Site_conf",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "PUSH",
"type": "COMPOSITE",
"name": "range",
"keys": [
"from",
"to"
],
"destination": "L:SiteConfig{Site}{Hosts}",
"composite_value": "",
"values": [
"${L:A:IPFrom}",
"${L:A:IPTo}"
]
}
]
},
{
"name": "Save site config",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
"",
"${L:x:SiteConfig}",
""
]
},
{
"name": "update_site(errorcheck)",
"operation": "CONDITION",
"condition": {
"statements": [
{
"op": "!=",
"right": "${P:A:PARSE[[name]]}",
"left": "SiteSaveResponse"
},
{
"op": "!=",
"right": "1",
"left": "${P:A:PARSE{{success}}}"
}
],
"condition_type": "OR",
"error": true
}
},
{
"name": "checkSaveSyncedAt",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L::SaveEA}",
"op": "!=",
"right": "true"
}
],
"next": "check_Scan_on_Add"
}
},
{
"name": "Update R7_SyncedAt",
"operation": "PUT",
"transport": {
"path": "${L:A:Obj_ref}"
},
"wapi": "v2.6",
"wapi_quoting": "JSON",
"body_list": [
"{",
"\"extattrs+\":{\"R7_SyncedAt\": { \"value\": \"${UT:U:TIME}\"}}",
"}"
]
},
{
"name": "check_Scan_on_Add",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${L::ScanOnAdd}",
"op": "==",
"right": "false"
},
{
"left": "${E::event_type}",
"op": "==",
"right": "NETWORK_IPV4"
},
{
"left": "${E::event_type}",
"op": "==",
"right": "NETWORK_IPV6"
},
{
"left": "${E::event_type}",
"op": "==",
"right": "RANGE_IPV4"
},
{
"left": "${E::event_type}",
"op": "==",
"right": "RANGE_IPV6"
}
],
"stop": true
}
},
{
"name": "assignScanVars",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:ScanDate}:{UT:TIME}}${XC:FORMAT:TRUNCATE:{L:ScanDate}:{10t}}",
"${XC:COPY:{L:R7ScanSchTime}:{UT:EPOCH}}${XC:FORMAT:DATE_STRFTIME:{L:R7ScanSchTime}:{%Y%m%dT%H%M59000Z}}"
]
},
{
"name": "Create a schedule",
"operation": "SERIALIZE",
"serializations": [
{
"destination": "L:R7ScanSch",
"content": " "
},
{
"destination": "L:R7ScanByHost",
"content": "${L:A:Hostname}"
},
{
"destination": "L:R7ScanByIP",
"content": ""
}
]
},
{
"name": "scanByHostname",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L::AddByHostname}",
"op": "==",
"right": "true"
},
{
"left": "${L::Hostname}",
"op": "!=",
"right": ""
}
],
"eval": "${XC:COPY:{L:R7ScanHostsRanges}:{L:R7ScanByHost}}",
"else_eval": "${XC:COPY:{L:R7ScanHostsRanges}:{L:R7ScanByIP}}"
}
},
{
"name": "skipSchedule",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${L::ScanTemplate}",
"op": "==",
"right": "default"
},
{
"left": "${L::ScanTemplate}",
"op": "==",
"right": ""
}
],
"eval": "${XC:ASSIGN:{L:R7ScanSch}:{S:}}"
}
},
{
"name": "RequestAssetScan",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
"",
"${L:A:R7ScanHostsRanges}",
"${L:A:R7ScanSch}",
""
]
},
{
"name": "scan_site(errorcheck)",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "SiteDevicesScanResponse",
"op": "!=",
"right": "${P:A:PARSE[[name]]}"
},
{
"left": "${P:A:PARSE{{success}}}",
"op": "!=",
"right": "1"
}
],
"condition_type": "OR",
"error": true
}
},
{
"name": "checkSaveLastScan",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L::SaveEA}",
"op": "!=",
"right": "true"
}
],
"next": "FinInsert"
}
},
{
"name": "Update R7_LastScan",
"operation": "PUT",
"transport": {
"path": "${L:A:Obj_ref}"
},
"wapi": "v2.6",
"wapi_quoting": "JSON",
"body_list": [
"{",
"\"extattrs+\":{\"R7_LastScan\": { \"value\": \"${L:U:ScanDate}\"}}",
"}"
]
},
{
"name": "FinInsert",
"operation": "NOP",
"body": "${XC:DEBUG:{L:}}${XC:DEBUG:{E:}}${XC:DEBUG:{S:}}"
},
{
"name": "StopInsert",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "1",
"op": "==",
"right": "1"
}
],
"stop": true
}
},
{
"name": "Debug#2",
"operation": "NOP",
"body": "${XC:DEBUG:{L:}}"
},
{
"name": "DeleteObject",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:SiteID}",
"op": "==",
"right": "0"
}
],
"stop": true
}
},
{
"name": "CheckIfNetSynced",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "NETWORK"
},
{
"left": "${L:A:NetToSite}",
"op": "!=",
"right": "true"
}
],
"stop": true
}
},
{
"name": "CheckIfRangeSynced",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "RANGE"
},
{
"left": "${L:A:RangeToSite}",
"op": "!=",
"right": "true"
}
],
"stop": true
}
},
{
"name": "GetSiteConf_R7_deletion",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
""
]
},
{
"name": "GetSiteConf_R7_deletion_errorcheck",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "SiteConfigResponse",
"op": "!=",
"right": "${P:A:PARSE[[name]]}"
},
{
"left": "${P:A:PARSE{{success}}}",
"op": "!=",
"right": "1"
}
],
"condition_type": "OR",
"else_eval": "${XC:COPY:{L:SiteConfig}:{P:PARSE{SiteConfigResponse}}}",
"error": true
}
},
{
"name": "CheckIfNetRangeSynced_delete",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "!=",
"right": "NETWORK"
},
{
"left": "${L:A:ObjType}",
"op": "!=",
"right": "RANGE"
},
{
"left": "${L:A:ObjType}",
"op": "!=",
"right": "HOST"
}
],
"next": "RemoveByIP"
}
},
{
"name": "CheckDeleteByHostname_delete",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "!=",
"right": "HOST"
},
{
"left": "${L:A:AddByHostname}",
"op": "!=",
"right": "true"
}
],
"next": "RemoveByIP"
}
},
{
"name": "assignEmptySiteVars_Delete",
"operation": "NOP",
"body_list": [
"${XC:ASSIGN:{L:SiteConfigDescription}:{S:}}${XC:ASSIGN:{L:SiteConfigHosts}:{S:}}${XC:ASSIGN:{L:SiteConfigCredentials}:{S:}}${XC:ASSIGN:{L:SiteConfigAlerting}:{S:}}${XC:ASSIGN:{L:SiteConfigScanConfig}:{S:}}${XC:ASSIGN:{L:SiteConfigTags}:{S:}}"
]
},
{
"name": "SiteConf_Description",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${P:A:PARSE{SiteConfigResponse}{Site}{Description}}",
"op": "==",
"right": ""
}
],
"next": "SiteConf_Hosts"
}
},
{
"name": "SiteConf_Description_Assign",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "ASSIGN",
"type": "COMPOSITE",
"name": "Description",
"destination": "L:SiteConfigDescription",
"source": "P:PARSE{SiteConfigResponse}{Site}{Description}"
}
]
},
{
"name": "SiteConf_Hosts",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${P:A:PARSE{SiteConfigResponse}{Site}{Hosts}}",
"op": "==",
"right": ""
}
],
"next": "SiteConf_Credentials"
}
},
{
"name": "SiteConf_Hosts_Assign",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "ASSIGN",
"type": "COMPOSITE",
"name": "Hosts",
"destination": "L:SiteConfigHosts",
"source": "P:PARSE{SiteConfigResponse}{Site}{Hosts}"
}
]
},
{
"name": "SiteConf_Credentials",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${P:A:PARSE{SiteConfigResponse}{Site}{Credentials}}",
"op": "==",
"right": ""
}
],
"next": "SiteConf_Alerting"
}
},
{
"name": "SiteConf_Credentials_Assign",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "ASSIGN",
"type": "COMPOSITE",
"name": "Credentials",
"destination": "L:SiteConfigCredentials",
"source": "P:PARSE{SiteConfigResponse}{Site}{Credentials}"
}
]
},
{
"name": "SiteConf_Alerting",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${P:A:PARSE{SiteConfigResponse}{Site}{Alerting}}",
"op": "==",
"right": ""
}
],
"next": "SiteConf_ScanConfig"
}
},
{
"name": "SiteConf_Alerting_Assign",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "ASSIGN",
"type": "COMPOSITE",
"name": "Alerting",
"destination": "L:SiteConfigAlerting",
"source": "P:PARSE{SiteConfigResponse}{Site}{Alerting}"
}
]
},
{
"name": "SiteConf_ScanConfig",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${P:A:PARSE{SiteConfigResponse}{Site}{ScanConfig}}",
"op": "==",
"right": ""
}
],
"next": "SiteConf_Tags"
}
},
{
"name": "SiteConf_ScanConfig_Assign",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "ASSIGN",
"type": "COMPOSITE",
"name": "ScanConfig",
"destination": "L:SiteConfigScanConfig",
"source": "P:PARSE{SiteConfigResponse}{Site}{ScanConfig}"
}
]
},
{
"name": "SiteConf_Tags",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${P:A:PARSE{SiteConfigResponse}{Site}{Tags}}",
"op": "==",
"right": ""
}
],
"next": "DeleteHostname"
}
},
{
"name": "SiteConf_Tags_Assign",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "ASSIGN",
"type": "COMPOSITE",
"name": "Tags",
"destination": "L:SiteConfigTags",
"source": "P:PARSE{SiteConfigResponse}{Site}{Tags}"
}
]
},
{
"name": "DeleteHostname",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "HOST"
}
],
"next": "RemoveByHostname"
}
},
{
"name": "Debug#3",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "check if DHCP range and if so skip to DHCP range removal ",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${E:A:event_type}",
"op": "==",
"right": "RANGE_IPV4"
},
{
"left": "${E:A:event_type}",
"op": "==",
"right": "RANGE_IPV6"
}
],
"next": "assign temporary holder for assets range"
}
},
{
"name": "copy network",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:Site}:{P:PARSE{SiteConfigResponse}}}",
"${XC:REMOVENET:{E:values{network}}:{L:Site{Hosts}}}"
]
},
{
"name": "assignHost variables for network",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:SiteConfigHosts}:{L:Site{Hosts}}}"
]
},
{
"name": "Bypass_RemoveByHostnameAndRemoveDHCPRange",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "1",
"op": "==",
"right": "1"
}
],
"next": "Delete_Save_site_config"
}
},
{
"name": "assign temporary holder for assets range",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:TempSite}:{P:PARSE{SiteConfigResponse}}}"
]
},
{
"name": "RemoveDHCPRange",
"operation": "NOP",
"body_list": [
"${XC:REMOVEIP:{L:IPFrom}:{L:TempSite{Hosts}}}"
]
},
{
"name": "increase the IPFrom by 1",
"operation": "NOP",
"body_list": [
"${XC:INC:{L:IPFrom}}"
]
},
{
"name": "check if all but the last ip has been removed",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:IPFrom}",
"op": "!=",
"right": "${L:A:IPTo}"
}
],
"next": "RemoveDHCPRange"
}
},
{
"name": "RemoveTheLastDHCPRange",
"operation": "NOP",
"body_list": [
"${XC:REMOVEIP:{L:IPFrom}:{L:TempSite{Hosts}}}"
]
},
{
"name": "save the deleted IPS",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:SiteConfigHosts}:{L:TempSite{Hosts}}}"
]
},
{
"name": "resetIPFrom to original value to avoid errors",
"operation": "NOP",
"body_list": [
"${XC:COPY:{L:IPFrom}:{E:values{start_addr}}}"
]
},
{
"name": "Bypass_RemoveByHostname",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "1",
"op": "==",
"right": "1"
}
],
"next": "Delete_Save_site_config"
}
},
{
"name": "RemoveByHostname",
"operation": "NOP",
"body": "${XC:DEBUG:{L:}}${XC:DEBUG:{E:}}${XC:DEBUG:{S:}}"
},
{
"name": "RemoveHostbyHostname",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "POP",
"type": "COMPOSITE",
"source": "L:SiteConfigHosts",
"destination": "L:TMP",
"values": [
"${L:A:Hostname}"
]
}
]
},
{
"name": "Delete_Save_site_config",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
"",
"",
"${L::SiteConfigDescription}",
"${L::SiteConfigHosts}",
"${L:x:SiteConfigCredentials}",
"${L:x:SiteConfigAlerting}",
"${L:x:SiteConfigScanConfig}",
"${L::SiteConfigTags}",
"",
""
]
},
{
"name": "Debug#4",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "DebugSiteRange_HSTS",
"operation": "NOP",
"body": "${XC:DEBUG:{L:SiteConfigHosts}}${XC:DEBUG:{L:SiteConfigAlerting}}${XC:DEBUG:{L:SiteConfigScanConfig}}"
},
{
"name": "CleanIPdevices",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "HOST"
}
],
"next": "assignLVars_Delete"
}
},
{
"name": "Save_NetRange_Site_Delete",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "1",
"op": "==",
"right": "1"
}
],
"stop": true
}
},
{
"name": "RemoveByIP",
"operation": "NOP",
"body": "${XC:DEBUG:{L:}}${XC:DEBUG:{E:}}${XC:DEBUG:{S:}}"
},
{
"name": "doNotRemoveHostIPfromNet",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "HOST"
},
{
"left": "${L:A:NetToSite}",
"op": "==",
"right": "true"
}
],
"next": "assignLVars_Delete"
}
},
{
"name": "doNotRemoveFixedIPfromNet",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "FIXEDIP"
},
{
"left": "${L:A:NetToSite}",
"op": "==",
"right": "true"
}
],
"next": "assignLVars_Delete"
}
},
{
"name": "doNotRemoveLeaseIPfromNet",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "LEASE"
},
{
"left": "${L:A:RangeToSite}",
"op": "==",
"right": "true"
}
],
"next": "assignLVars_Delete"
}
},
{
"name": "Debug#5",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "RemoveIPFromRanges",
"operation": "NOP",
"body_list": [
"${XC:REMOVEIP:{L:IPFrom}:{L:SiteConfig{Hosts}}}"
]
},
{
"name": "Debug#6",
"operation": "NOP",
"body": "${XC:DEBUG:{H:}}${XC:DEBUG:{E:}}${XC:DEBUG:{I:}}${XC:DEBUG:{L:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}${XC:DEBUG:{UT:}}${XC:DEBUG:{R:}}"
},
{
"name": "Save_IP_Site_Delete",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "1",
"op": "==",
"right": "1"
}
],
"next": "Save_Site_Config_Delete"
}
},
{
"name": "Save_Site_Config_Delete",
"operation": "NOP",
"body": "${XC:DEBUG:{L:}}${XC:DEBUG:{E:}}${XC:DEBUG:{S:}}"
},
{
"name": "Save site config Delete",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
"",
"${L:x:SiteConfig}",
""
]
},
{
"name": "Save_site_delete(errorcheck)",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${P:A:PARSE[[name]]}",
"op": "!=",
"right": "SiteSaveResponse"
},
{
"left": "${P:A:PARSE{{success}}}",
"op": "!=",
"right": "1"
}
],
"condition_type": "OR",
"error": true
}
},
{
"name": "StopDeleteNetRange",
"operation": "CONDITION",
"condition": {
"condition_type": "OR",
"statements": [
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "NETWORK"
},
{
"left": "${L:A:ObjType}",
"op": "==",
"right": "RANGE"
}
],
"stop": true
}
},
{
"name": "assignLVars_Delete",
"operation": "NOP",
"body_list": [
"${XC:ASSIGN:{L:DeviceID}:{S:}}"
]
},
{
"name": "GetSiteDeviceListR7_del",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
""
]
},
{
"name": "GetSiteDeviceListR7_del_errorcheck",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "SiteDeviceListingResponse",
"op": "!=",
"right": "${P:A:PARSE[[name]]}"
},
{
"left": "${P:A:PARSE{{success}}}",
"op": "!=",
"right": "1"
}
],
"condition_type": "AND",
"else_eval": "${XC:COPY:{L:site_list}:{P:PARSE}}",
"error": true
}
},
{
"name": "Check_site_list_empty",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:L:site_list}",
"op": "==",
"right": "0"
}
],
"condition_type": "AND",
"next": "FinDelete"
}
},
{
"name": "Pop_device_list",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "POP",
"type": "COMPOSITE",
"destination": "L:device_list",
"source": "L:site_list"
}
]
},
{
"name": "Check_device_list_empty",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:L:device_list}",
"op": "==",
"right": "0"
}
],
"condition_type": "AND",
"next": "Check_site_list_empty"
}
},
{
"name": "Pop_a_device",
"operation": "VARIABLEOP",
"variable_ops": [
{
"operation": "POP",
"type": "COMPOSITE",
"destination": "L:a_device",
"source": "L:device_list"
}
]
},
{
"name": "check_if_device_found",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:A:IPFrom}",
"op": "!=",
"right": "${L:A:a_device{{address}}}"
}
],
"condition_type": "AND",
"next": "Check_device_list_empty",
"else_eval": "${XC:COPY:{L:DeviceID}:{L:a_device{{id}}}}"
}
},
{
"name": "loop_sites",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:A:DeviceID}",
"op": "==",
"right": ""
}
],
"condition_type": "AND",
"next": "Check_site_list_empty"
}
},
{
"name": "Check_DeviceID",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "${L:A:DeviceID}",
"op": "==",
"right": ""
}
],
"condition_type": "AND",
"next": "FinDelete"
}
},
{
"name": "DeleteDeviceR7",
"parse": "XMLA",
"operation": "POST",
"body_list": [
"",
""
]
},
{
"name": "DeleteDeviceR7_errorcheck",
"operation": "CONDITION",
"condition": {
"statements": [
{
"left": "DeviceDeleteResponse",
"op": "!=",
"right": "${P:A:PARSE[[name]]}"
},
{
"left": "${P:A:PARSE{{success}}}",
"op": "!=",
"right": "1"
}
],
"condition_type": "AND",
"error": true
}
},
{
"name": "FinDelete",
"operation": "NOP",
"body": "${XC:DEBUG:{L:}}${XC:DEBUG:{E:}}${XC:DEBUG:{S:}}${XC:DEBUG:{P:}}"
},
{
"name": "StopDelete",
"operation": "CONDITION",
"condition": {
"condition_type": "AND",
"statements": [
{
"left": "1",
"op": "==",
"right": "1"
}
],
"stop": true
}
}
]
}