filenames = option_parser.get_open_results() if len(filenames) == 0: # Open up a blank window. window = new_window() window.show_all() else: for filename in filenames: window = new_window() if os.path.isdir(filename): window._load_directory(window.scan_interface, filename) else: window._load(window.scan_interface, filename) window.show_all() nmap = option_parser.get_nmap() target = option_parser.get_target() profile = option_parser.get_profile() if nmap: # Start running a scan if given by the -n option. page = window.get_empty_interface() page.command_toolbar.command = " ".join(nmap) page.start_scan_cb() elif target or profile: # Set up target and profile according to the -t and -p options. page = window.get_empty_interface() if target: page.toolbar.selected_target = target if profile: page.toolbar.selected_profile = profile if target and profile:
def run(): if os.name == "posix": signal.signal(signal.SIGHUP, safe_shutdown) signal.signal(signal.SIGTERM, safe_shutdown) signal.signal(signal.SIGINT, safe_shutdown) DEVELOPMENT = os.environ.get(APP_NAME.upper() + "_DEVELOPMENT", False) if not DEVELOPMENT: install_excepthook() zenmapCore.I18N.install_gettext(Path.locale_dir) try: # Create the ~/.zenmap directory by copying from the system-wide # template directory. create_user_config_dir(Path.user_config_dir, Path.config_dir) except (IOError, OSError) as e: error_dialog = HIGAlertDialog( message_format=_( "Error creating the per-user configuration directory"), secondary_text=_("""\ There was an error creating the directory %s or one of the files in it. \ The directory is created by copying the contents of %s. \ The specific error was %s %s needs to create this directory to store information such as the list of \ scan profiles. Check for access to the directory and try again.""") % (repr(Path.user_config_dir), repr(Path.config_dir), repr( str(e)), APP_DISPLAY_NAME)) error_dialog.run() error_dialog.destroy() sys.exit(1) try: # Read the ~/.zenmap/zenmap.conf configuration file. zenmapCore.UmitConf.config_parser.read(Path.user_config_file) except six.moves.configparser.ParsingError as e: # ParsingError can leave some values as lists instead of strings. Just # blow it all away if we have this problem. zenmapCore.UmitConf.config_parser = zenmapCore.UmitConf.config_parser.__class__( ) error_dialog = HIGAlertDialog( message_format=_("Error parsing the configuration file"), secondary_text=_("""\ There was an error parsing the configuration file %s. \ The specific error was %s %s can continue without this file but any information in it will be ignored \ until it is repaired.""") % (Path.user_config_file, str(e), APP_DISPLAY_NAME)) error_dialog.run() error_dialog.destroy() global_config_path = os.path.join(Path.config_dir, APP_NAME + '.conf') repair_dialog = HIGAlertDialog( type=gtk.MESSAGE_QUESTION, message_format=_("Restore default configuration?"), secondary_text=_("""\ To avoid further errors parsing the configuration file %s, \ you can copy the default configuration from %s. Do this now? \ """) % (Path.user_config_file, global_config_path), ) repair_dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) repair_dialog.set_default_response(gtk.RESPONSE_CANCEL) if repair_dialog.run() == gtk.RESPONSE_OK: shutil.copyfile(global_config_path, Path.user_config_file) log.debug(">>> Copy %s to %s." % (global_config_path, Path.user_config_file)) repair_dialog.destroy() # Display a "you're not root" warning if appropriate. if not is_root(): non_root = NonRootWarning() non_root.run() non_root.destroy() # Load files given as command-line arguments. filenames = option_parser.get_open_results() if len(filenames) == 0: # Open up a blank window. window = new_window() window.show_all() else: for filename in filenames: window = new_window() if os.path.isdir(filename): window._load_directory(window.scan_interface, filename) else: window._load(window.scan_interface, filename) window.show_all() nmap = option_parser.get_nmap() target = option_parser.get_target() profile = option_parser.get_profile() if nmap: # Start running a scan if given by the -n option. page = window.get_empty_interface() page.command_toolbar.command = " ".join(nmap) page.start_scan_cb() elif target or profile: # Set up target and profile according to the -t and -p options. page = window.get_empty_interface() if target: page.toolbar.selected_target = target if profile: page.toolbar.selected_profile = profile if target and profile: page.start_scan_cb() if main_is_frozen(): # This is needed by py2exe gtk.gdk.threads_init() gtk.gdk.threads_enter() gtk.main() if main_is_frozen(): gtk.gdk.threads_leave()