Exemplo n.º 1
0
def skip_term(term, reason):
  print(ruler("*") + "\n\tIgnoring TERM:\t " + term.name + "\t\t" + reason + "\n" + ruler("*") + "\n")
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
#!/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):