def skip_term(term, reason): print(ruler("*") + "\n\tIgnoring TERM:\t " + term.name + "\t\t" + reason + "\n" + ruler("*") + "\n")
def handle_term(configdata, term): print(ruler("*") + "\n\tProcessing TERM:\t " + term.name + "\n" + ruler("*") + "\n") if term.__contains__("from"): root = term.__getattr__("from") if root._attrs.__contains__("source_address"): tree = root.__getattr__("source_address") for node in tree: print("\t\tSource address\t\t: " + node.__getattr__("name")) elif root._attrs.__contains__("source_prefix_list"): tree = root.__getattr__("source_prefix_list") for node in tree: print("\t\tSource prefix-list\t: " + node.__getattr__("name")) print("\t\t\t\tPrefixes:") for list in configdata.policy_options.prefix_list: if node.__getattr__("name") == list.__getattr__("name"): for item in list.__getattr__("prefix_list_item"): print("\t\t\t\t\t* " + item.__getattr__("name")) elif root._attrs.__contains__("destination_address"): tree = root.__getattr__("destination_address") for node in tree: print("\t\tDestination address\t: " + node.__getattr__("name")) elif root._attrs.__contains__("destination_prefix_list"): tree = root.__getattr__("destination_prefix_list") for node in tree: print("\t\tDestination prefix-list\t: " + node.__getattr__("name")) print("\t\t\t\tPrefixes:") for list in configdata.policy_options.prefix_list: if node.__getattr__("name") == list.__getattr__("name"): for item in list.__getattr__("prefix_list_item"): print("\t\t\t\t\t* " + item.__getattr__("name")) if root._attrs.__contains__("port"): tree = root.__getattr__("port") if not hasattr(tree, "strip"): for node in tree: if node.isdigit(): try: print("\t\tPort\t\t\t: " + revportmap[node] + " (" + node + ")") except: print("\t\tPort\t\t\t: " + node) else: try: print("\t\tPort\t\t\t: " + node + " (" + portmap[node] + ")") except: print("\t\tPort\t\t\t: " + node) else: if node.isdigit(): try: print("\t\tPort\t\t\t: " + revportmap[tree] + " (" + node + ")") except: print("\t\tPort\t\t\t: " + tree) else: try: print("\t\tPort\t\t\t: " + tree + " (" + portmap[tree] + ")") except: print("\t\tPort\t\t\t: " + tree) if root._attrs.__contains__("protocol"): tree = root.__getattr__("protocol") if not hasattr(tree, "strip"): for node in tree: print("\t\tProtocol\t\t: " + node) else: print("\t\tProtocol\t\t: " + tree) if term.__contains__("then"): root = term.__getattr__("then") if root._attrs.__contains__("accept"): print("\t\tTerminating action\t: ACCEPT") elif root._attrs.__contains__("reject"): print("\t\tTerminating action\t: REJECT") elif root._attrs.__contains__("discard"): print("\t\tTerminating action\t: DISCARD") else: print("\t\tTerminating action\t: NOT FOUND")
#!/usr/bin/env python import lib.xml2datacustom as xml2datacustom from lib.hephaestus_utils import ruler from lib.hephaestus_utils import get_port_mapping_dicts config = 'cache/routerconfigs/62.40.96.2_config' configdata = xml2datacustom.xml_jcfg2data(config) portmap, revportmap = get_port_mapping_dicts() ruler("*") print("Using config\t\t: " + config) numfilters = 0 for filter in configdata.firewall.family.inet.filter: numfilters += 1 print("Number of filters\t: " + str(numfilters)) ruler("*") def is_terminating_term(term): if term.__contains__("then"): thenaction = term.__getattr__("then") if thenaction.__contains__("accept") or thenaction.__contains__("reject") or thenaction.__contains__("discard"): return True else: return False def is_active_term(term): if term.__contains__("inactive"): return False else: return True def skip_term(term, reason):