Exemplo n.º 1
0
def main() -> int:
    """ Run app in FLask HTTP server if executed directly from command line """

    arguments = parse_arguments()
    netcat.SINGLE_PROCESS_MODE = arguments.single_process

    netcat.setup_logger(debug=arguments.debug)

    arguments.debug and netcat.LOGGER.opt(ansi=True).info("<magenta>Debug mode enabled</magenta>")
    arguments.single_process and netcat.LOGGER.opt(ansi=True).info("<magenta>Single process mode enabled</magenta>")

    print("\nNetCAT Network MAC Address to Switch / Port Lookup, ver {netcat.VERSION} ({netcat.DB_TYPE}) - {netcat.YEAR}, Sebastian Majewski\n")

    try:
        app.run(host="0.0.0.0", port=arguments.http_port)

    except PermissionError:
        print(f"\nERROR: Unable to start Flask Web Server on port {arguments.http_port}/TCP, port not permited...\n")
        return 1

    except OSError:
        print(f"\nERROR: Unable to start Flask Web Server on port {arguments.http_port}/TCP, port already in use...\n")
        return 2

    return 0
Exemplo n.º 2
0
def main() -> int:
    """ Main program """

    timestamp = int((datetime.datetime.utcnow() -
                     datetime.datetime(1970, 1, 1, 0, 0, 0)).total_seconds())

    arguments = parse_arguments()
    netcat.SINGLE_PROCESS_MODE = arguments.single_process

    print("\nNetCAT Upgrade, ver 5.5 - 2020, Sebastian Majewski\n")

    # Setup logger
    netcat.setup_logger("netcat_upgrade", debug=arguments.debug)
    netcat.LOGGER.info(f"Starting upgrade program, timestamp={timestamp}")

    arguments.debug and netcat.LOGGER.opt(
        ansi=True).info("<magenta>Debug mode enabled</magenta>")
    arguments.single_process and netcat.LOGGER.opt(
        ansi=True).info("<magenta>Single process mode enabled</magenta>")
    arguments.upgrade or netcat.LOGGER.opt(ansi=True).info(
        "<magenta>Download software only mode enabled</magenta>")

    # Read device info list file
    if not (device_info_list := netcat.read_info_list_file(
            netcat.FILENAME_DEVICE_INFO_LIST)):
        netcat.LOGGER.error(f"Device info list is empty, exiting...")
        sys.exit()
Exemplo n.º 3
0
def main() -> int:
    """ Main program """

    timestamp = int((datetime.datetime.utcnow() - datetime.datetime(1970,1,1,0,0,0)).total_seconds())

    arguments = parse_arguments()
    netcat.SINGLE_PROCESS_MODE = arguments.single_process

    print("\nNetCAT Backup, ver 5.5 - 2020, Sebastian Majewski\n")

    # Setup logger
    netcat.setup_logger("netcat_backup", debug=arguments.debug)
    netcat.LOGGER.info(f"Starting backup program, timestamp={timestamp}")

    arguments.test_run and netcat.LOGGER.opt(ansi=True).info("<magenta>Test mode enabled, no information will be saved to database</magenta>")
    arguments.debug and netcat.LOGGER.opt(ansi=True).info("<magenta>Debug mode enabled</magenta>")
    arguments.single_process and netcat.LOGGER.opt(ansi=True).info("<magenta>Single process mode enabled</magenta>")
    arguments.force_backup and netcat.LOGGER.opt(ansi=True).info("<magenta>Forced backup requested</magenta>")

    # Check if database tables exist, if not then create them
    db.create_tables()

    # Read device info list file
    if not (device_info_list := netcat.read_info_list_file(netcat.FILENAME_DEVICE_INFO_LIST)):
        netcat.LOGGER.error(f"Device info list is empty, exiting...")
        sys.exit()
Exemplo n.º 4
0
def main() -> int:
    """ Main program """

    arguments = parse_arguments()
    netcat.SINGLE_PROCESS_MODE = arguments.single_process

    print("\nNetCAT Deploy, ver 5.5 - 2020, Sebastian Majewski\n")

    timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S EDT")

    # Setup logger
    netcat.setup_logger("netcat_deploy", debug=arguments.debug)
    netcat.LOGGER.info(f"Starting deployment program at '{timestamp}'")

    arguments.debug and netcat.LOGGER.opt(ansi=True).info("<magenta>Debug mode enabled</magenta>")
    arguments.single_process and netcat.LOGGER.opt(ansi=True).info("<magenta>Single process mode enabled</magenta>")

    # Handle device passed by IP address (for PA Azure WAN upgrades from local management network)
    if arguments.ip_address:
        if not netcat.validate_ip_address(arguments.ip_address):
            netcat.LOGGER.error(f"Invalid IP address: {arguments.ip_address}")
            sys.exit()

        requested_device_name_list = [arguments.ip_address]

        device_info_list = [
            {
                "auth": "password",
                "device_name": arguments.ip_address,
                "device_type": "paloalto",
                "password": "******",
                "username": "******"
            },
        ]

    else:

        # Read device info list file
        if not (device_info_list := netcat.read_info_list_file(netcat.FILENAME_DEVICE_INFO_LIST)):
            netcat.LOGGER.error(f"Device info list is empty, exiting...")
            sys.exit()

        # Create all devices name list
        all_device_name_list = sorted([_["device_name"] for _ in device_info_list])

        # Create list of requested devices and check if there is any valid device name on it
        if not (requested_device_name_list := sorted(netcat.get_requested_device_name_list(device_info_list, arguments))):
            netcat.LOGGER.error(f"No valid device names requested, exiting...")
            sys.exit()
Exemplo n.º 5
0
def main() -> int:
    """ Main program """

    # Setup logger
    netcat.setup_logger("netcat_make_device_info_list")

    print("\nNetCAT Make Device Info List, ver 5.5 - 2020, Sebastian Majewski\n")

    # Get localhost hostname
    local_hostname = socket.gethostname()

    if (net_verifone_com := zone_transfer("vf1ns1.net.verifone.com")) is None:
        if (net_verifone_com := zone_transfer("vf1ns2.net.verifone.com")) is None:
            netcat.LOGGER.error(f"Unable to contact either one of 'net.verifone.com' DNS servers")
            sys.exit(1)
Exemplo n.º 6
0
def main() -> int:
    """ Run app in FLask HTTP server if executed directly from command line """

    arguments = parse_arguments()

    netcat.setup_logger()

    print("\nNetCat Web App, ver 5.5 - 2020, Sebastian Majewski\n")

    try:
        app.run(host="0.0.0.0", port=arguments.http_port)

    except PermissionError:
        print(f"\nERROR: Unable to start Flask Web Server on port {arguments.http_port}/TCP, port not permited...\n")
        return 1

    except OSError:
        print(f"\nERROR: Unable to start Flask Web Server on port {arguments.http_port}/TCP, port already in use...\n")
        return 2

    return 0
Exemplo n.º 7
0
async def main() -> int:
    """ Main program """

    timestamp = int((datetime.datetime.utcnow() -
                     datetime.datetime(1970, 1, 1, 0, 0, 0)).total_seconds())

    arguments = parse_arguments()

    print("\nNetCAT DNS Check, ver 5.5 - 2020, Sebastian Majewski\n")

    # Setup logger
    netcat.setup_logger("netcat_dnscheck",
                        process_name_length=15,
                        debug=arguments.debug)
    netcat.LOGGER.info(f"Starting DNS check program, timestamp={timestamp}")

    if arguments.test_run:
        netcat.LOGGER.opt(ansi=True).info(
            "<magenta>Test mode enabled, no information will be saved to database</magenta>"
        )

    if arguments.debug:
        netcat.LOGGER.opt(
            ansi=True).info("<magenta>Debug mode enabled</magenta>")

    dns_info_list = netcat.read_info_list_file(netcat.FILENAME_DNS_INFO_LIST)

    netcat.LOGGER.info(
        f"Executing DNS check for {len(dns_info_list)} server(s): '{', '.join([_['ip_address'] for _ in dns_info_list])}'"
    )

    # Check if database tables exist, if not then create them
    db.create_tables()

    # Time processes execution
    start_time = time.monotonic()

    dns_status_document = {
        "snapshot_name": "dns_status",
        "snapshot_timestamp": timestamp,
    }

    dns_status_document["dns_data"] = await asyncio.gather(
        *[dns_check(_) for _ in dns_info_list])

    netcat.LOGGER.info("Saving dns status document to database")

    # Cannot use netcat.exception_handler decorator due to its lack of compatibility with asyncio
    try:
        db.write(db.netcat.DBT_STATUS, dns_status_document)

    except netcat.CustomException as exception:
        netcat.LOGGER.error(f"{exception}")
        sys.exit()

    # Time processes execution
    end_time = time.monotonic()

    netcat.bind_logger("MAIN_PROG")
    netcat.LOGGER.info(
        f"DNS check ended, execution time: '{end_time - start_time:.2f}s'")

    return 0
Exemplo n.º 8
0
def _before_first_request() -> None:
    """ Initialize logger """

    netcat.LOGGER or netcat.setup_logger()  # type: ignore
Exemplo n.º 9
0
def _before_first_request() -> None:
    """ Initialize logger """

    netcat.LOGGER or netcat.setup_logger(process_name_length=17)  # type: ignore