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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user