def __init__(self, parent=None): QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowStaysOnTopHint) self._cfg = Config.get() self._nodes = Nodes.instance() self._db = Database.instance() self._notification_callback.connect(self._cb_notification_callback) self._notifications_sent = {} self.setupUi(self) self.dbFileButton.setVisible(False) self.dbLabel.setVisible(False) self.acceptButton.clicked.connect(self._cb_accept_button_clicked) self.applyButton.clicked.connect(self._cb_apply_button_clicked) self.cancelButton.clicked.connect(self._cb_cancel_button_clicked) self.popupsCheck.clicked.connect(self._cb_popups_check_toggled) self.dbFileButton.clicked.connect(self._cb_file_db_clicked) if QtGui.QIcon.hasThemeIcon("emblem-default") == False: self.applyButton.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_DialogApplyButton"))) self.cancelButton.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_DialogCloseButton"))) self.acceptButton.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_DialogSaveButton"))) self.dbFileButton.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_DirOpenIcon")))
def __init__(self, parent=None, _rule=None): super(RulesEditorDialog, self).__init__(parent) QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowStaysOnTopHint) self._notifications_sent = {} self._nodes = Nodes.instance() self._db = Database.instance() self._notification_callback.connect(self._cb_notification_callback) self._old_rule_name = None self.setupUi(self) self.buttonBox.button( QtWidgets.QDialogButtonBox.Reset).clicked.connect( self._cb_reset_clicked) self.buttonBox.button( QtWidgets.QDialogButtonBox.Close).clicked.connect( self._cb_close_clicked) self.buttonBox.button( QtWidgets.QDialogButtonBox.Apply).clicked.connect( self._cb_apply_clicked) self.buttonBox.button(QtWidgets.QDialogButtonBox.Help).clicked.connect( self._cb_help_clicked) self.selectListButton.clicked.connect( self._cb_select_list_button_clicked) self.protoCheck.toggled.connect(self._cb_proto_check_toggled) self.procCheck.toggled.connect(self._cb_proc_check_toggled) self.cmdlineCheck.toggled.connect(self._cb_cmdline_check_toggled) self.dstPortCheck.toggled.connect(self._cb_dstport_check_toggled) self.uidCheck.toggled.connect(self._cb_uid_check_toggled) self.dstIPCheck.toggled.connect(self._cb_dstip_check_toggled) self.dstHostCheck.toggled.connect(self._cb_dsthost_check_toggled) self.dstListsCheck.toggled.connect(self._cb_dstlists_check_toggled) if QtGui.QIcon.hasThemeIcon("emblem-default") == False: self.actionAllowRadio.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_DialogApplyButton"))) self.actionDenyRadio.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_DialogCancelButton"))) if _rule != None: self._load_rule(rule=_rule)
def __init__(self, app, on_exit): super(UIService, self).__init__() self._cfg = Config.init() self._db = Database.instance() self._db.initialize( dbfile=self._cfg.getSettings(self._cfg.DEFAULT_DB_FILE_KEY) ) self._db_sqlite = self._db.get_db() self._last_ping = None self._version_warning_shown = False self._asking = False self._connected = False self._path = os.path.abspath(os.path.dirname(__file__)) self._app = app self._on_exit = on_exit self._exit = False self._msg = QtWidgets.QMessageBox() self._prompt_dialog = PromptDialog() self._stats_dialog = StatsDialog(dbname="general", db=self._db) self._remote_lock = Lock() self._remote_stats = {} self._setup_interfaces() self._setup_slots() self._setup_icons() self._setup_tray() self.check_thread = Thread(target=self._async_worker) self.check_thread.daemon = True self.check_thread.start() self._nodes = Nodes.instance() self._last_stats = {} self._last_items = { 'hosts':{}, 'procs':{}, 'addrs':{}, 'ports':{}, 'users':{} }
def __init__(self, parent=None): super(ProcessDetailsDialog, self).__init__(parent) QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(QtCore.Qt.Window) self.setupUi(self) self._app_name = None self._app_icon = None self._apps_parser = LinuxDesktopParser() self._nodes = Nodes.instance() self._notification_callback.connect(self._cb_notification_callback) self._nid = None self._pid = "" self._notifications_sent = {} self.cmdClose.clicked.connect(self._cb_close_clicked) self.cmdAction.clicked.connect(self._cb_action_clicked) self.comboPids.currentIndexChanged.connect(self._cb_combo_pids_changed) self.TABS[self.TAB_STATUS]['text'] = self.textStatus self.TABS[self.TAB_DESCRIPTORS]['text'] = self.textOpenedFiles self.TABS[self.TAB_IOSTATS]['text'] = self.textIOStats self.TABS[self.TAB_MAPS]['text'] = self.textMappedFiles self.TABS[self.TAB_STACK]['text'] = self.textStack self.TABS[self.TAB_ENVS]['text'] = self.textEnv self.TABS[self.TAB_DESCRIPTORS]['text'].setFont( QtGui.QFont("monospace")) self.iconStart = QtGui.QIcon.fromTheme("media-playback-start") self.iconPause = QtGui.QIcon.fromTheme("media-playback-pause") if QtGui.QIcon.hasThemeIcon("window-close") == False: self.cmdClose.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_DialogCloseButton"))) self.iconStart = self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_MediaPlay")) self.iconPause = self.style().standardIcon( getattr(QtWidgets.QStyle, "SP_MediaPause"))
def __init__(self, parent=None, address=None, db=None, dbname="db"): super(StatsDialog, self).__init__(parent) QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(QtCore.Qt.Window) self.setupUi(self) self._db = db self._db_sqlite = self._db.get_db() self._db_name = dbname self._cfg = Config.get() self._nodes = Nodes.instance() # TODO: allow to display multiples dialogs self._proc_details_dialog = ProcessDetailsDialog() self.daemon_connected = False # skip table updates if a context menu is active self._context_menu_active = False self._lock = threading.RLock() self._address = address self._stats = None self._notifications_sent = {} self._prefs_dialog = PreferencesDialog() self._rules_dialog = RulesEditorDialog() self._trigger.connect(self._on_update_triggered) self._notification_callback.connect(self._cb_notification_callback) self.nodeLabel.setText("") self.nodeLabel.setStyleSheet('color: green;font-size:12pt; font-weight:600;') self.startButton.clicked.connect(self._cb_start_clicked) self.prefsButton.clicked.connect(self._cb_prefs_clicked) self.saveButton.clicked.connect(self._on_save_clicked) self.comboAction.currentIndexChanged.connect(self._cb_combo_action_changed) self.limitCombo.currentIndexChanged.connect(self._cb_limit_combo_changed) self.cmdCleanSql.clicked.connect(self._cb_clean_sql_clicked) self.cmdCleanHosts.clicked.connect(self._cb_clean_sql_clicked) self.cmdCleanProcs.clicked.connect(self._cb_clean_sql_clicked) self.cmdCleanAddrs.clicked.connect(self._cb_clean_sql_clicked) self.cmdCleanPorts.clicked.connect(self._cb_clean_sql_clicked) self.cmdCleanUsers.clicked.connect(self._cb_clean_sql_clicked) self.tabWidget.currentChanged.connect(self._cb_tab_changed) self.delRuleButton.clicked.connect(self._cb_del_rule_clicked) self.enableRuleCheck.clicked.connect(self._cb_enable_rule_toggled) self.editRuleButton.clicked.connect(self._cb_edit_rule_clicked) self.newRuleButton.clicked.connect(self._cb_new_rule_clicked) self.enableRuleCheck.setVisible(False) self.delRuleButton.setVisible(False) self.editRuleButton.setVisible(False) self.nodeRuleLabel.setVisible(False) self.cmdProcDetails.clicked.connect(self._cb_proc_details_clicked) self.TABLES[self.TAB_MAIN]['view'] = self._setup_table(QtWidgets.QTableView, self.eventsTable, "connections", self.TABLES[self.TAB_MAIN]['display_fields'], order_by="1", group_by=self.TABLES[self.TAB_MAIN]['group_by'], delegate=self.TABLES[self.TAB_MAIN]['delegate'], resize_cols=(), model=ConnectionsTableModel(), verticalScrollBar=self.connectionsTableScrollBar ) self.TABLES[self.TAB_NODES]['view'] = self._setup_table(QtWidgets.QTableView, self.nodesTable, "nodes", self.TABLES[self.TAB_NODES]['display_fields'], order_by="3,2,1", resize_cols=(self.COL_NODE,), delegate=self.TABLES[self.TAB_NODES]['delegate']) self.TABLES[self.TAB_RULES]['view'] = self._setup_table(QtWidgets.QTableView, self.rulesTable, "rules", delegate=self.TABLES[self.TAB_RULES]['delegate'], order_by="1") self.TABLES[self.TAB_HOSTS]['view'] = self._setup_table(QtWidgets.QTableView, self.hostsTable, "hosts", resize_cols=(self.COL_WHAT,), delegate=self.TABLES[self.TAB_HOSTS]['delegate'], order_by="2") self.TABLES[self.TAB_PROCS]['view'] = self._setup_table(QtWidgets.QTableView, self.procsTable, "procs", resize_cols=(self.COL_WHAT,), delegate=self.TABLES[self.TAB_PROCS]['delegate'], order_by="2") self.TABLES[self.TAB_ADDRS]['view'] = self._setup_table(QtWidgets.QTableView, self.addrTable, "addrs", resize_cols=(self.COL_WHAT,), delegate=self.TABLES[self.TAB_ADDRS]['delegate'], order_by="2") self.TABLES[self.TAB_PORTS]['view'] = self._setup_table(QtWidgets.QTableView, self.portsTable, "ports", resize_cols=(self.COL_WHAT,), delegate=self.TABLES[self.TAB_PORTS]['delegate'], order_by="2") self.TABLES[self.TAB_USERS]['view'] = self._setup_table(QtWidgets.QTableView, self.usersTable, "users", resize_cols=(self.COL_WHAT,), delegate=self.TABLES[self.TAB_USERS]['delegate'], order_by="2") self.TABLES[self.TAB_NODES]['label'] = self.nodesLabel self.TABLES[self.TAB_NODES]['tipLabel'] = self.tipNodesLabel self.TABLES[self.TAB_RULES]['label'] = self.ruleLabel self.TABLES[self.TAB_RULES]['tipLabel'] = self.tipRulesLabel self.TABLES[self.TAB_HOSTS]['label'] = self.hostsLabel self.TABLES[self.TAB_HOSTS]['tipLabel'] = self.tipHostsLabel self.TABLES[self.TAB_PROCS]['label'] = self.procsLabel self.TABLES[self.TAB_PROCS]['tipLabel'] = self.tipProcsLabel self.TABLES[self.TAB_ADDRS]['label'] = self.addrsLabel self.TABLES[self.TAB_ADDRS]['tipLabel'] = self.tipAddrsLabel self.TABLES[self.TAB_PORTS]['label'] = self.portsLabel self.TABLES[self.TAB_PORTS]['tipLabel'] = self.tipPortsLabel self.TABLES[self.TAB_USERS]['label'] = self.usersLabel self.TABLES[self.TAB_USERS]['tipLabel'] = self.tipUsersLabel self.TABLES[self.TAB_NODES]['cmd'] = self.cmdNodesBack self.TABLES[self.TAB_RULES]['cmd'] = self.cmdRulesBack self.TABLES[self.TAB_HOSTS]['cmd'] = self.cmdHostsBack self.TABLES[self.TAB_PROCS]['cmd'] = self.cmdProcsBack self.TABLES[self.TAB_ADDRS]['cmd'] = self.cmdAddrsBack self.TABLES[self.TAB_PORTS]['cmd'] = self.cmdPortsBack self.TABLES[self.TAB_USERS]['cmd'] = self.cmdUsersBack self.TABLES[self.TAB_MAIN]['cmdCleanStats'] = self.cmdCleanSql self.TABLES[self.TAB_HOSTS]['cmdCleanStats'] = self.cmdCleanHosts self.TABLES[self.TAB_PROCS]['cmdCleanStats'] = self.cmdCleanProcs self.TABLES[self.TAB_ADDRS]['cmdCleanStats'] = self.cmdCleanAddrs self.TABLES[self.TAB_PORTS]['cmdCleanStats'] = self.cmdCleanPorts self.TABLES[self.TAB_USERS]['cmdCleanStats'] = self.cmdCleanUsers self.TABLES[self.TAB_MAIN]['filterLine'] = self.filterLine self.TABLES[self.TAB_RULES]['filterLine'] = self.rulesFilterLine self.TABLES[self.TAB_HOSTS]['filterLine'] = self.hostsFilterLine self.TABLES[self.TAB_PROCS]['filterLine'] = self.procsFilterLine self.TABLES[self.TAB_ADDRS]['filterLine'] = self.addrsFilterLine self.TABLES[self.TAB_PORTS]['filterLine'] = self.portsFilterLine self.TABLES[self.TAB_MAIN]['view'].doubleClicked.connect(self._cb_main_table_double_clicked) self.TABLES[self.TAB_MAIN]['filterLine'].textChanged.connect(self._cb_events_filter_line_changed) self.TABLES[self.TAB_RULES]['view'].setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.TABLES[self.TAB_RULES]['view'].customContextMenuRequested.connect(self._cb_table_context_menu) for idx in range(1,8): self.TABLES[idx]['cmd'].hide() self.TABLES[idx]['cmd'].clicked.connect(lambda: self._cb_cmd_back_clicked(idx)) self.TABLES[idx]['view'].doubleClicked.connect(self._cb_table_double_clicked) self.TABLES[idx]['label'].setStyleSheet('color: blue; font-size:9pt; font-weight:600;') if self.TABLES[idx]['filterLine'] != None: self.TABLES[idx]['filterLine'].textChanged.connect(self._cb_events_filter_line_changed) self._load_settings() self._tables = ( \ self.TABLES[self.TAB_MAIN]['view'], self.TABLES[self.TAB_NODES]['view'], self.TABLES[self.TAB_RULES]['view'], self.TABLES[self.TAB_HOSTS]['view'], self.TABLES[self.TAB_PROCS]['view'], self.TABLES[self.TAB_ADDRS]['view'], self.TABLES[self.TAB_PORTS]['view'], self.TABLES[self.TAB_USERS]['view'] ) self._file_names = ( \ 'events.csv', 'nodes.csv', 'rules.csv', 'hosts.csv', 'procs.csv', 'addrs.csv', 'ports.csv', 'users.csv' ) if QtGui.QIcon.hasThemeIcon("document-new") == False: self._configure_buttons_icons()