Refined firewall by adding resolved. Added dictionary vs list handling in resolved.
This commit is contained in:
@@ -2,6 +2,8 @@ import os
|
||||
import logging
|
||||
|
||||
from core.runtime.applyconditions import applyConditions
|
||||
from core.runtime.resolver import resolveItem
|
||||
|
||||
|
||||
def buildFirewall(listener, outputs):
|
||||
#firewall_log = os.environ.get("LOGS_FIREWALL", "false").lower() == "true"
|
||||
@@ -10,11 +12,17 @@ def buildFirewall(listener, outputs):
|
||||
status_code = 200
|
||||
outputs["firewall_allowed"] = []
|
||||
for item in outputs[listener.recursive["source"]]:
|
||||
resolved = resolveItem(listener, item)
|
||||
|
||||
match, filter = applyConditions(listener, item, outputs)
|
||||
match, filter = applyConditions(listener, resolved, outputs)
|
||||
|
||||
if match:
|
||||
status_code = filter.get("status_code", 200)
|
||||
|
||||
if filter.get("execute", False):
|
||||
from core.apirequest.execute import executeRequest
|
||||
response, outputs = executeRequest(filter["execute"], outputs, resolved)
|
||||
|
||||
if firewall_log:
|
||||
logging.info(filter.get("print"))
|
||||
logging.info(f"Returning status_code: {status_code}")
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
import os
|
||||
|
||||
def resolveItem(action, item):
|
||||
resolver_log = os.environ.get("LOGS_RESOLVER", "false").lower() == "true"
|
||||
#resolver_log = os.environ.get("LOGS_RESOLVER", "false").lower() == "true"
|
||||
resolver_log = True
|
||||
|
||||
resolved = {}
|
||||
if hasattr(action, "resolve"):
|
||||
for label, keys in action.resolve["get"].items():
|
||||
target = item
|
||||
try:
|
||||
for key in keys:
|
||||
target = target[key]
|
||||
for key in keys:
|
||||
if isinstance(target, dict):
|
||||
target = target.get(key)
|
||||
else:
|
||||
target = target[key]
|
||||
|
||||
except (KeyError, IndexError) as error:
|
||||
if resolver_log:
|
||||
|
||||
Reference in New Issue
Block a user