1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-06 20:51:30 +00:00

Merge #2088: Update Zenmap to Python 3 and PyGObject

Note: Ndiff build will be broken until subsequent changes are made.
Deprecation warnings will need to be addressed in future changes.
Closes #2088
This commit is contained in:
dmiller
2022-12-07 20:34:03 +00:00
parent e2e55660c3
commit 24b26317c7
104 changed files with 5381 additions and 4383 deletions

View File

@@ -1,5 +1,4 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
# ***********************IMPORTANT NMAP LICENSE TERMS************************
# * *
@@ -58,7 +57,10 @@
# * *
# ***************************************************************************/
import gtk
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
from zenmapGUI.higwidgets.higboxes import HIGVBox
from zenmapGUI.Icons import get_os_icon
@@ -71,14 +73,16 @@ def treemodel_get_addrs_for_sort(model, iter):
# Used to sort hosts by address.
def cmp_treemodel_addr(model, iter_a, iter_b):
def cmp_treemodel_addr(model, iter_a, iter_b, *_):
def cmp(a, b):
return (a > b) - (a < b)
addrs_a = treemodel_get_addrs_for_sort(model, iter_a)
addrs_b = treemodel_get_addrs_for_sort(model, iter_b)
return cmp(addrs_a, addrs_b)
class ScanHostsView(HIGVBox, object):
HOST_MODE, SERVICE_MODE = range(2)
class ScanHostsView(HIGVBox):
HOST_MODE, SERVICE_MODE = list(range(2))
def __init__(self, scan_interface):
HIGVBox.__init__(self)
@@ -103,31 +107,31 @@ class ScanHostsView(HIGVBox, object):
def _create_widgets(self):
# Mode buttons
self.host_mode_button = gtk.ToggleButton(_("Hosts"))
self.service_mode_button = gtk.ToggleButton(_("Services"))
self.buttons_box = gtk.HBox()
self.host_mode_button = Gtk.ToggleButton.new_with_label(_("Hosts"))
self.service_mode_button = Gtk.ToggleButton.new_with_label(_("Services"))
self.buttons_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0)
# Main window vbox
self.main_vbox = HIGVBox()
# Host list
self.host_list = gtk.ListStore(object, str, str)
self.host_list = Gtk.ListStore.new([object, str, str])
self.host_list.set_sort_func(1000, cmp_treemodel_addr)
self.host_list.set_sort_column_id(1000, gtk.SORT_ASCENDING)
self.host_view = gtk.TreeView(self.host_list)
self.pic_column = gtk.TreeViewColumn(_('OS'))
self.host_column = gtk.TreeViewColumn(_('Host'))
self.os_cell = gtk.CellRendererPixbuf()
self.host_cell = gtk.CellRendererText()
self.host_list.set_sort_column_id(1000, Gtk.SortType.ASCENDING)
self.host_view = Gtk.TreeView.new_with_model(self.host_list)
self.pic_column = Gtk.TreeViewColumn(title=_('OS'))
self.host_column = Gtk.TreeViewColumn(title=_('Host'))
self.os_cell = Gtk.CellRendererPixbuf()
self.host_cell = Gtk.CellRendererText()
# Service list
self.service_list = gtk.ListStore(str)
self.service_list.set_sort_column_id(0, gtk.SORT_ASCENDING)
self.service_view = gtk.TreeView(self.service_list)
self.service_column = gtk.TreeViewColumn(_('Service'))
self.service_cell = gtk.CellRendererText()
self.service_list = Gtk.ListStore.new([str])
self.service_list.set_sort_column_id(0, Gtk.SortType.ASCENDING)
self.service_view = Gtk.TreeView.new_with_model(self.service_list)
self.service_column = Gtk.TreeViewColumn(title=_('Service'))
self.service_cell = Gtk.CellRendererText()
self.scrolled = gtk.ScrolledWindow()
self.scrolled = Gtk.ScrolledWindow()
def _pack_widgets(self):
self.main_vbox.set_spacing(0)
@@ -138,8 +142,8 @@ class ScanHostsView(HIGVBox, object):
self.host_mode_button.set_active(True)
self.buttons_box.set_border_width(5)
self.buttons_box.pack_start(self.host_mode_button)
self.buttons_box.pack_start(self.service_mode_button)
self.buttons_box.pack_start(self.host_mode_button, True, True, 0)
self.buttons_box.pack_start(self.service_mode_button, True, True, 0)
def _connect_widgets(self):
self.host_mode_button.connect("toggled", self.host_mode)
@@ -173,14 +177,14 @@ class ScanHostsView(HIGVBox, object):
def _set_scrolled(self):
self.scrolled.set_border_width(5)
self.scrolled.set_size_request(150, -1)
self.scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
def _set_service_list(self):
self.service_view.set_enable_search(True)
self.service_view.set_search_column(0)
selection = self.service_view.get_selection()
selection.set_mode(gtk.SELECTION_MULTIPLE)
selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.service_view.append_column(self.service_column)
self.service_column.set_resizable(True)
@@ -194,7 +198,7 @@ class ScanHostsView(HIGVBox, object):
self.host_view.set_search_column(1)
selection = self.host_view.get_selection()
selection.set_mode(gtk.SELECTION_MULTIPLE)
selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.host_view.append_column(self.pic_column)
self.host_view.append_column(self.host_column)
@@ -228,7 +232,7 @@ class ScanHostsView(HIGVBox, object):
# Treeview?"
sort_column_id = self.host_list.get_sort_column_id()
self.host_list.set_default_sort_func(lambda *args: -1)
self.host_list.set_sort_column_id(-1, gtk.SORT_ASCENDING)
self.host_list.set_sort_column_id(-1, Gtk.SortType.ASCENDING)
self.host_view.freeze_child_notify()
self.host_view.set_model(None)
@@ -275,8 +279,10 @@ class ScanHostsView(HIGVBox, object):
self.service_list.append([service])
if __name__ == "__main__":
w = gtk.Window()
w = Gtk.Window()
h = ScanHostsView(None)
w.add(h)
w.connect("delete-event", lambda x, y: Gtk.main_quit())
w.show_all()
gtk.main()
Gtk.main()