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
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()
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()
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()
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)
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
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
def _before_first_request() -> None: """ Initialize logger """ netcat.LOGGER or netcat.setup_logger() # type: ignore
def _before_first_request() -> None: """ Initialize logger """ netcat.LOGGER or netcat.setup_logger(process_name_length=17) # type: ignore