1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-08 05:31:31 +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
@@ -68,9 +70,9 @@ import zenmapCore.I18N # lgtm[py/unused-import]
def findout_service_icon(port_info):
if port_info["port_state"] in ["open", "open|filtered"]:
return gtk.STOCK_YES
return Gtk.STOCK_YES
else:
return gtk.STOCK_NO
return Gtk.STOCK_NO
def get_version_string(d):
@@ -90,42 +92,44 @@ def get_version_string(d):
def get_addrs(host):
if host is None:
return None
return []
return host.get_addrs_for_sort()
def cmp_addrs(host_a, host_b):
def cmp(a, b):
return (a > b) - (a < b)
return cmp(get_addrs(host_a), get_addrs(host_b))
def cmp_port_list_addr(model, iter_a, iter_b):
def cmp_port_list_addr(model, iter_a, iter_b, *_):
host_a = model.get_value(iter_a, 0)
host_b = model.get_value(iter_b, 0)
return cmp_addrs(host_a, host_b)
def cmp_port_tree_addr(model, iter_a, iter_b):
def cmp_port_tree_addr(model, iter_a, iter_b, *_):
host_a = model.get_value(iter_a, 0)
host_b = model.get_value(iter_b, 0)
return cmp_addrs(host_a, host_b)
def cmp_host_list_addr(model, iter_a, iter_b):
def cmp_host_list_addr(model, iter_a, iter_b, *_):
host_a = model.get_value(iter_a, 2)
host_b = model.get_value(iter_b, 2)
return cmp_addrs(host_a, host_b)
def cmp_host_tree_addr(model, iter_a, iter_b):
def cmp_host_tree_addr(model, iter_a, iter_b, *_):
host_a = model.get_value(iter_a, 2)
host_b = model.get_value(iter_b, 2)
return cmp_addrs(host_a, host_b)
class ScanOpenPortsPage(gtk.ScrolledWindow):
class ScanOpenPortsPage(Gtk.ScrolledWindow):
def __init__(self):
gtk.ScrolledWindow.__init__(self)
self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
Gtk.ScrolledWindow.__init__(self)
self.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
self.__create_widgets()
@@ -150,65 +154,65 @@ class HostOpenPorts(HIGVBox):
# host hostname icon port protocol state service version
# The hostname column is shown only when more than one host is selected
# (hence port_tree not port_list is used).
self.port_list = gtk.ListStore(
object, str, str, int, str, str, str, str)
self.port_tree = gtk.TreeStore(
object, str, str, int, str, str, str, str)
self.port_list = Gtk.ListStore.new([
object, str, str, int, str, str, str, str])
self.port_tree = Gtk.TreeStore.new([
object, str, str, int, str, str, str, str])
self.port_list.set_sort_func(1000, cmp_port_list_addr)
self.port_list.set_sort_column_id(1000, gtk.SORT_ASCENDING)
self.port_list.set_sort_column_id(1000, Gtk.SortType.ASCENDING)
self.port_tree.set_sort_func(1000, cmp_port_tree_addr)
self.port_tree.set_sort_column_id(1000, gtk.SORT_ASCENDING)
self.port_tree.set_sort_column_id(1000, Gtk.SortType.ASCENDING)
self.port_view = gtk.TreeView(self.port_list)
self.port_view = Gtk.TreeView.new_with_model(self.port_list)
self.cell_icon = gtk.CellRendererPixbuf()
self.cell_port = gtk.CellRendererText()
self.cell_icon = Gtk.CellRendererPixbuf()
self.cell_port = Gtk.CellRendererText()
self.port_columns['hostname'] = gtk.TreeViewColumn(_('Host'))
self.port_columns['icon'] = gtk.TreeViewColumn('')
self.port_columns['port_number'] = gtk.TreeViewColumn(_('Port'))
self.port_columns['protocol'] = gtk.TreeViewColumn(_('Protocol'))
self.port_columns['state'] = gtk.TreeViewColumn(_('State'))
self.port_columns['service'] = gtk.TreeViewColumn(_('Service'))
self.port_columns['version'] = gtk.TreeViewColumn(_('Version'))
self.port_columns['hostname'] = Gtk.TreeViewColumn(title=_('Host'))
self.port_columns['icon'] = Gtk.TreeViewColumn(title='')
self.port_columns['port_number'] = Gtk.TreeViewColumn(title=_('Port'))
self.port_columns['protocol'] = Gtk.TreeViewColumn(title=_('Protocol'))
self.port_columns['state'] = Gtk.TreeViewColumn(title=_('State'))
self.port_columns['service'] = Gtk.TreeViewColumn(title=_('Service'))
self.port_columns['version'] = Gtk.TreeViewColumn(title=_('Version'))
# Host services view
self.host_columns = {}
# service icon host hostname port protocol state version
# service is shown only when more than one service is selected (hence
# host_tree not host_list is used).
self.host_list = gtk.ListStore(
str, str, object, str, int, str, str, str)
self.host_tree = gtk.TreeStore(
str, str, object, str, int, str, str, str)
self.host_list = Gtk.ListStore.new([
str, str, object, str, int, str, str, str])
self.host_tree = Gtk.TreeStore.new([
str, str, object, str, int, str, str, str])
self.host_list.set_sort_func(1000, cmp_host_list_addr)
self.host_list.set_sort_column_id(1000, gtk.SORT_ASCENDING)
self.host_list.set_sort_column_id(1000, Gtk.SortType.ASCENDING)
self.host_tree.set_sort_func(1000, cmp_host_tree_addr)
self.host_tree.set_sort_column_id(1000, gtk.SORT_ASCENDING)
self.host_tree.set_sort_column_id(1000, Gtk.SortType.ASCENDING)
self.host_view = gtk.TreeView(self.host_list)
self.host_view = Gtk.TreeView.new_with_model(self.host_list)
self.cell_host_icon = gtk.CellRendererPixbuf()
self.cell_host = gtk.CellRendererText()
self.cell_host_icon = Gtk.CellRendererPixbuf()
self.cell_host = Gtk.CellRendererText()
self.host_columns['service'] = gtk.TreeViewColumn(_('Service'))
self.host_columns['icon'] = gtk.TreeViewColumn('')
self.host_columns['hostname'] = gtk.TreeViewColumn(_('Hostname'))
self.host_columns['protocol'] = gtk.TreeViewColumn(_('Protocol'))
self.host_columns['port_number'] = gtk.TreeViewColumn(_('Port'))
self.host_columns['state'] = gtk.TreeViewColumn(_('State'))
self.host_columns['version'] = gtk.TreeViewColumn(_('Version'))
self.host_columns['service'] = Gtk.TreeViewColumn(title=_('Service'))
self.host_columns['icon'] = Gtk.TreeViewColumn(title='')
self.host_columns['hostname'] = Gtk.TreeViewColumn(title=_('Hostname'))
self.host_columns['protocol'] = Gtk.TreeViewColumn(title=_('Protocol'))
self.host_columns['port_number'] = Gtk.TreeViewColumn(title=_('Port'))
self.host_columns['state'] = Gtk.TreeViewColumn(title=_('State'))
self.host_columns['version'] = Gtk.TreeViewColumn(title=_('Version'))
self.scroll_ports_hosts = gtk.ScrolledWindow()
self.scroll_ports_hosts = Gtk.ScrolledWindow()
def _set_host_list(self):
self.host_view.set_enable_search(True)
self.host_view.set_search_column(2)
selection = self.host_view.get_selection()
selection.set_mode(gtk.SELECTION_MULTIPLE)
selection.set_mode(Gtk.SelectionMode.MULTIPLE)
columns = ["service", "icon", "hostname", "port_number",
"protocol", "state", "version"]
@@ -247,14 +251,14 @@ class HostOpenPorts(HIGVBox):
self.host_columns['service'].set_visible(False)
self.scroll_ports_hosts.set_policy(
gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
def _set_port_list(self):
self.port_view.set_enable_search(True)
self.port_view.set_search_column(3)
selection = self.port_view.get_selection()
selection.set_mode(gtk.SELECTION_MULTIPLE)
selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.port_view.append_column(self.port_columns['hostname'])
self.port_view.append_column(self.port_columns['icon'])
@@ -297,7 +301,7 @@ class HostOpenPorts(HIGVBox):
self.port_columns['hostname'].set_visible(False)
self.scroll_ports_hosts.set_policy(
gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
def port_mode(self):
child = self.scroll_ports_hosts.get_child()
@@ -425,28 +429,29 @@ class HostOpenPorts(HIGVBox):
def clear_port_list(self):
for i in range(len(self.port_list)):
iter = self.port_list.get_iter_root()
iter = self.port_list.get_iter_first()
del(self.port_list[iter])
def clear_host_list(self):
for i in range(len(self.host_list)):
iter = self.host_list.get_iter_root()
iter = self.host_list.get_iter_first()
del(self.host_list[iter])
def clear_port_tree(self):
for i in range(len(self.port_tree)):
iter = self.port_tree.get_iter_root()
iter = self.port_tree.get_iter_first()
del(self.port_tree[iter])
def clear_host_tree(self):
for i in range(len(self.host_tree)):
iter = self.host_tree.get_iter_root()
iter = self.host_tree.get_iter_first()
del(self.host_tree[iter])
if __name__ == "__main__":
w = gtk.Window()
w = Gtk.Window()
h = HostOpenPorts()
w.add(h)
w.show_all()
gtk.main()
w.connect("delete-event", lambda x, y: Gtk.main_quit())
w.show_all()
Gtk.main()