Skip to content

Commit c6b55d8

Browse files
authored
Threat exception fixes (#77)
* Update import_objects.py Support threat exceptions * Update import_objects.py
1 parent a29b8cc commit c6b55d8

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

importing/import_objects.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,9 @@ def add_object(line, counter, position_decrement_due_to_rule, position_decrement
386386
payload["position"] = "bottom"
387387
else:
388388
if "position" in payload:
389-
if "rule" in api_type:
389+
if "rule" in api_type or api_type == "threat-exception":
390390
payload["position"] = str(int(payload["position"]) - position_decrement_due_to_rule)
391+
if "rule" in api_type:
391392
if payload["action"] == "Drop":
392393
if "action-settings" in payload:
393394
payload.pop("action-settings")
@@ -402,11 +403,7 @@ def add_object(line, counter, position_decrement_due_to_rule, position_decrement
402403
section_position_decrement = (position_decrements_for_sections[int(payload["position"]) - 1] if len(
403404
position_decrements_for_sections) > 0 else 0) + position_decrement_due_to_section
404405
payload["position"] = str(int(payload["position"]) - section_position_decrement)
405-
if "exception" in api_type and "rule-number" in payload:
406-
show_rule_rulebase = client.api_call("show-threat-rule-exception-rulebase", {"name": layer, "rule-number": payload["rule-number"]})
407-
if show_rule_rulebase.success and show_rule_rulebase.data and "to" in show_rule_rulebase.data:
408-
payload["position"] = str(int(show_rule_rulebase.data["to"]) + 1)
409-
406+
410407
if generic_type:
411408
payload["create"] = generic_type
412409
if "layer" in api_type:
@@ -430,6 +427,8 @@ def add_object(line, counter, position_decrement_due_to_rule, position_decrement
430427
payload["layer"] = layer
431428
if args is not None and args.objects_suffix != "":
432429
payload["layer"] += args.objects_suffix
430+
if payload["layer"] in changed_layer_names:
431+
payload["layer"] = changed_layer_names[payload["layer"]]
433432
if client.api_version != "1" and api_type == "access-rule" and "track-alert" in payload:
434433
payload["track"] = {}
435434
payload["track"]["alert"] = payload["track-alert"]
@@ -578,8 +577,8 @@ def add_object(line, counter, position_decrement_due_to_rule, position_decrement
578577
position_decrement_due_to_section, fields, api_type, generic_type, layer,
579578
layers_to_attach,
580579
changed_layer_names, api_call, num_objects, client, args, package)
581-
if "Invalid parameter for [position]" in api_reply.error_message:
582-
if "access-rule" in api_type or "https-rule" in api_type:
580+
if "Invalid parameter for [position]" in api_reply.error_message and "exception-group" not in api_type:
581+
if "access-rule" in api_type or "https-rule" or "threat-exception" in api_type:
583582
position_decrement_due_to_rule += adjust_position_decrement(int(payload["position"]),
584583
api_reply.error_message)
585584
elif "access-section" in api_type or "https-section" in api_type:
@@ -948,7 +947,9 @@ def add_suffix_to_objects(payload, api_type, objects_suffix):
948947
return
949948

950949
fields_to_change = ["name", "source", "destination", "service", "members", "inline-layer", "networks", "host",
951-
"protected-scope", "protection-or-site", "exception-group-name", "rule-name"]
950+
"protected-scope", "protection-or-site", "exception-group-name", "rule-name", "applied-threat-rules"]
951+
if api_type == "threat-exception" and "exception-group-name" in payload and "name" not in payload:
952+
payload.update({"name": ""})
952953
for field in fields_to_change:
953954
if field in payload:
954955
if field == "name":
@@ -958,7 +959,7 @@ def add_suffix_to_objects(payload, api_type, objects_suffix):
958959
changed_object_names_map[oldName] = newName
959960
elif field in ["source", "destination", "service", "members", "protected-scope", "protection-or-site"]:
960961
for i in range(len(payload[field])):
961-
if payload[field][i] in changed_object_names_map:
962+
if payload[field][i] in changed_object_names_map and payload[field][i] != "IPS":
962963
payload[field][i] = changed_object_names_map[payload[field][i]]
963964
elif field in ["inline-layer", "host", "exception-group-name", "rule-name"]:
964965
if payload[field] in changed_object_names_map:
@@ -967,3 +968,7 @@ def add_suffix_to_objects(payload, api_type, objects_suffix):
967968
for i in range(len(payload[field])):
968969
if payload[field][i]["name"] in changed_object_names_map:
969970
payload[field][i]["name"] = changed_object_names_map[payload[field][i]["name"]]
971+
elif field == "applied-threat-rules":
972+
for i in range(len(payload[field])):
973+
if payload[field][i]["layer"] in changed_object_names_map:
974+
payload[field][i]["layer"] = changed_object_names_map[payload[field][i]["layer"]]

0 commit comments

Comments
 (0)