def generate(dst_format, parsed_data): logger.log( 2, "DirectFire.Converter.generate: loading generator module for " + dst_format) if dst_format == "ciscoasa": ## Cisco ASA post 8.3 from DirectFire.Converter.generators.ciscoasa import generate elif dst_format == "data": ## JSON Data from DirectFire.Converter.generators.data import generate elif dst_format == "fortigate": ## Fortinet FortiGate from DirectFire.Converter.generators.fortigate import generate else: logger.log( 2, "DirectFire.Converter.parse: failed to load generator module for " + dst_format, ) print( f"{Fore.RED}Error: failed to load generator module.{Style.RESET_ALL}" ) exit() logger.log( 2, "DirectFire.Converter.generate: loaded generator module for " + dst_format) logger.log( 2, "DirectFire.Converter.generate: starting generation of destination output" ) dst_config = generate(logger, parsed_data) logger.log( 2, "DirectFire.Converter.generate: completed generation of destination output" ) return dst_config
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")