def parse(src_format, src_config, routing_info=""): logger.log( 2, "DirectFire.Converter.parse: loading parser module for " + src_format) if src_format == "ciscoasa": ## Cisco ASA from DirectFire.Converter.parsers.ciscoasa import parse elif src_format == "ciscoasa_pre83": ## Cisco ASA pre 8.3 from DirectFire.Converter.parsers.ciscoasa_pre83 import parse elif src_format == "fortigate": ## Fortinet FortiGate from DirectFire.Converter.parsers.fortigate import parse elif src_format == "junipersrx": ## Juniper SRX (JunOS) from DirectFire.Converter.parsers.junipersrx import parse elif src_format == "watchguard": ## WatchGuard from DirectFire.Converter.parsers.watchguard import parse else: logger.log( 2, "DirectFire.Converter.parse: failed to load parser module for " + src_format, ) print( f"{Fore.RED}Error: failed to load parser module.{Style.RESET_ALL}") exit() logger.log( 2, "DirectFire.Converter.parse: loaded parser module for " + src_format) logger.log( 2, "DirectFire.Converter.parse: starting parse of source configuration") parsed_data = parse(logger, src_config, routing_info) logger.log( 2, "DirectFire.Converter.parse: completed parse of source configuration") return parsed_data
def main(src_format, dst_format, routing_info=""): # Load source configuration file logger.info( "DirectFire.Converter.main: loading source configuration from " + args.config) try: with open(args.config) as config_file: src_config = config_file.read() except: logger.error( "DirectFire.Converter.main: source file either not found or not readable " + args.config) print( f"{Fore.RED}Error: source file either not found or not readable.{Style.RESET_ALL}" ) exit() if routing_info: try: with open(args.routing) as routing_file: routing_info = routing_file.read() except: logger.error( "DirectFire.Converter.main: routing file either not found or not readable " + args.config) print( f"{Fore.RED}Error: routing file either not found or not readable.{Style.RESET_ALL}" ) exit() # Run configuration parser logger.info("DirectFire.Converter.main: running configuration parser") parsed_data = parse(src_format=src_format, src_config=src_config, routing_info=routing_info) logger.info("DirectFire.Converter.main: configuration parser finished") # Output logger.info("DirectFire.Converter.main: running configuration generator") dst_config = generate(dst_format=dst_format, parsed_data=parsed_data) for line in dst_config: print(line) ### add support for output to file logger.info("DirectFire.Converter.main: configuration generator finished") logger.info("DirectFire.Converter.main: converter exiting")