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)
|
config_obj.remove_option(this_section, key)
|
||||||
|
|
||||||
|
|
||||||
def gen_fw_rule_xml(ip_addresses: dict[str, list]) -> lxml.builder.ElementMaker:
|
def has_child_elem(elem_name: str, attr_value: str) -> bool:
|
||||||
len_ipv4_addresses = len(ip_addresses["ipv4"])
|
global arg_fw_rule_data
|
||||||
len_ipv6_addresses = len(ip_addresses["ipv6"])
|
attr_name = "ipv"
|
||||||
data = lxml.builder.ElementMaker()
|
|
||||||
|
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
|
direct_tag = data.direct
|
||||||
chain_tag = data.chain
|
chain_tag = data.chain
|
||||||
|
Loading…
x
Reference in New Issue
Block a user