📄 zenmap
字号:
#!/usr/bin/env python# -*- coding: utf-8 -*-# Copyright (C) 2005 Insecure.Com LLC.## Authors: Adriano Monteiro Marques <py.adriano@gmail.com># Cleber Rodrigues <cleber.gnu@gmail.com># Frederico Silva Ribeiro <ribeiro.fsilva@gmail.com>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAimport osimport sysimport signalimport webbrowserfrom os.path import splitfrom zenmapCore.Name import APP_NAME, APP_DISPLAY_NAMEfrom zenmapCore.UmitOptionParser import option_parserDEVELOPMENT = os.environ.get(APP_NAME.upper() + "_DEVELOPMENT", False)if not DEVELOPMENT: from tempfile import mktemp # Generating temporary files names stdout_output = mktemp() stderr_output = mktemp() old_stdout = sys.stdout old_stderr = sys.stderr _stdout = open(stdout_output, "w") _stderr = open(stderr_output, "w") sys.stdout = _stdout sys.stderr = _stderr # This will catch exceptions and send them to bugzilla def excepthook(type, value, tb): # We want messages printed to the console in case any exceptions occur # in the exception hook itself (like if PyGTK is not present). sys.stdout = old_stdout sys.stderr = old_stderr import traceback import gtk from zenmapCore.I18N import _ from zenmapCore.Version import VERSION from higwidgets.higdialogs import HIGAlertDialog from zenmapGUI.CrashReport import CrashReport if type == ImportError: d = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Import error"), secondary_text=_("""\A required module was not found.""" + value.message)) d.run() d.destroy() else: traceback.print_tb(tb) sys.stdout.close() sys.stderr.close() sys.stdout = old_stdout sys.stderr = old_stderr hook = "Type: %s\nValue: %s\n" % (type, value) outputs = "CRASH REPORTED:\n\ SYS.PLATFORM: %s\n\ OS.NAME: %s\n\ %s Version: %s\n\ %s\nSTDOUT\n%s\n\n\ %s\nSTDERR\n%s\n\nHOOK:\n%s" % \ (sys.platform, os.name, APP_DISPLAY_NAME, VERSION, "-"*80, open(stdout_output).read(), "-"*80, open(stderr_output).read(), hook) report_result = False try: old_stdout.write("Bug reported!") c = CrashReport("%s Crash - '%s'" % (APP_DISPLAY_NAME, value), outputs) c.show_all() gtk.main() except: d = HIGAlertDialog(type=gtk.MESSAGE_ERROR, message_format=_("Bug not reported"), secondary_text=_("""A critical error \occourried during %s execution,and it was not properly reported to our bug tracker. Please,copy the error message bellow and report it on our bug tracker.The following error message was NOT reported:%s""") % (APP_DISPLAY_NAME, outputs)) d.run() d.destroy() else: # Showing a message on the terminal old_stdout.write("Bug reported!") old_stdout.write("\n") # Calling a browser to open the result from bug tracker if report_result: webbrowser.open("file://%s" % report_result) gtk.main_quit() sys.excepthook = excepthookif __name__ == '__main__': ###################################### # Setting the home directory from zenmapCore.Paths import Path Path.set_umit_conf(split(sys.argv[0])[0]) ###################################### from zenmapCore.UmitLogging import log from zenmapGUI.App import App app = App() if os.name == "posix": signal.signal(signal.SIGHUP, app.safe_shutdown) signal.signal(signal.SIGTERM, app.safe_shutdown) signal.signal(signal.SIGINT, app.safe_shutdown) try: app.run() except KeyboardInterrupt: sys.exit(signal.SIGINT)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -