feat(xml): Add and detect XML rule elements
This commit is contained in:
parent
a4ff9aff4b
commit
ea344c8940
@ -233,10 +233,37 @@ def validate_config_sections(
|
||||
config_obj.remove_option(this_section, key)
|
||||
|
||||
|
||||
def gen_fw_rule_xml(ip_addresses: dict[str, list]) -> lxml.builder.ElementMaker:
|
||||
len_ipv4_addresses = len(ip_addresses["ipv4"])
|
||||
len_ipv6_addresses = len(ip_addresses["ipv6"])
|
||||
data = lxml.builder.ElementMaker()
|
||||
def has_child_elem(elem_name: str, attr_value: str) -> bool:
|
||||
global arg_fw_rule_data
|
||||
attr_name = "ipv"
|
||||
|
||||
for elem in arg_fw_rule_data.findall(elem_name):
|
||||
if elem.attrib[attr_name] == attr_value:
|
||||
log.debug(f"""XML has element '<{elem_name} {attr_name}="{attr_value}" .../>'""")
|
||||
return True
|
||||
log.debug(f"""No XML element '<{elem_name} {attr_name}="{attr_value}" .../>'""")
|
||||
return False
|
||||
|
||||
|
||||
def add_chain_elem(elem_name: str, addr_family: str) -> bool:
|
||||
global arg_fw_rule_data
|
||||
|
||||
log.debug(f"Adding new ...")
|
||||
for chain in ["FILTERS", "DOCKER-USER"]:
|
||||
try:
|
||||
lxml.etree.SubElement(arg_fw_rule_data, elem_name,
|
||||
ipv=f"{addr_family}",
|
||||
table="filter",
|
||||
chain=chain)
|
||||
except lxml.etree.LxmlError as le:
|
||||
log.error(f"""Failed to add XML '<{elem_name} ipv=f"{addr_family}" .../>'\n"""
|
||||
f"Verbatim exception was:\n"
|
||||
f"f{le}\n"
|
||||
f"Exiting 8 ...")
|
||||
sys.exit(8)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
direct_tag = data.direct
|
||||
chain_tag = data.chain
|
||||
|
Loading…
x
Reference in New Issue
Block a user