コード例 #1
0
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
コード例 #2
0
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")