import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GObject
from zenmapGUI.higwidgets.higboxes import HIGHBox
from zenmapGUI.higwidgets.higlabels import HintWindow
class FilterBar(HIGHBox):
"""This is the bar that appears while the host filter is active. It allows
entering a string that restricts the set of visible hosts."""
__gsignals__ = {
"changed": (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, ())
}
def __init__(self):
HIGHBox.__init__(self)
self.information_label = Gtk.Label()
self.entry = Gtk.Entry()
self.pack_start(self.information_label, False, True, 0)
self.information_label.show()
label = Gtk.Label.new(_("Host Filter:"))
self.pack_start(label, False, True, 0)
label.show()
self.pack_start(self.entry, True, True, 0)
self.entry.show()
help_button = Gtk.Button()
icon = Gtk.Image()
icon.set_from_stock(Gtk.STOCK_INFO, Gtk.IconSize.BUTTON)
help_button.add(icon)
help_button.connect("clicked", self._help_button_clicked)
self.pack_start(help_button, False, True, 0)
help_button.show_all()
self.entry.connect("changed", lambda x: self.emit("changed"))
def grab_focus(self):
self.entry.grab_focus()
def get_filter_string(self):
return self.entry.get_text()
def set_filter_string(self, filter_string):
return self.entry.set_text(filter_string)
def set_information_text(self, text):
self.information_label.set_text(text)
def _help_button_clicked(self, button):
hint_window = HintWindow(HELP_TEXT)
hint_window.show_all()
HELP_TEXT = _("""\
Entering the text into the search performs a keyword search - the \
search string is matched against every aspect of the host.
To refine the search, you can use operators to search only \
specific fields within a host. Most operators have a short form, listed. \
target: (t:) - User-supplied target, or a rDNS result.
os: - All OS-related fields.
open: (op:) - Open ports discovered in a scan.
closed: (cp:) - Closed ports discovered in a scan.
filtered: (fp:) - Filtered ports discovered in scan.
unfiltered: (ufp:) - Unfiltered ports found in a scan (using, for \
example, an ACK scan).
open|filtered: (ofp:) - Ports in the \"open|filtered\" state.
closed|filtered: (cfp:) - Ports in the \"closed|filtered\" state.
service: (s:) - All service-related fields.
inroute: (ir:) - Matches a router in the scan's traceroute output.
""")