def _load_nodes(self, addr=None): try: self.nodesCombo.clear() self._node_list = self._nodes.get() if addr != None and addr not in self._node_list: Message.ok( QC.translate("rules", "<b>Error loading rule</b>"), QC.translate("rules", "node {0} not connected".format(addr)), QtWidgets.QMessageBox.Warning) return False if len(self._node_list) < 2: self.nodeApplyAllCheck.setVisible(False) for node in self._node_list: self.nodesCombo.addItem(node) if addr != None: self.nodesCombo.setCurrentText(addr) except Exception as e: print(self.LOG_TAG, "exception loading nodes: ", e, addr) return False return True
def _save_db_config(self): dbtype = self.comboDBType.currentIndex() self._cfg.setSettings(Config.DEFAULT_DB_TYPE_KEY, dbtype) self._cfg.setSettings(Config.DEFAULT_DB_PURGE_OLDEST, bool(self.checkDBMaxDays.isChecked())) self._cfg.setSettings(Config.DEFAULT_DB_MAX_DAYS, int(self.spinDBMaxDays.value())) self._cfg.setSettings(Config.DEFAULT_DB_PURGE_INTERVAL, int(self.spinDBPurgeInterval.value())) if self.comboDBType.currentIndex() == self.dbType: return if dbtype == self._db.get_db_file(): return if self.comboDBType.currentIndex() != Database.DB_TYPE_MEMORY: if self.dbLabel.text() != "": self._cfg.setSettings(Config.DEFAULT_DB_FILE_KEY, self.dbLabel.text()) else: Message.ok( QC.translate("preferences", "Warning"), QC.translate("preferences", "You must select a file for the database<br>or choose \"In memory\" type."), QtWidgets.QMessageBox.Warning) return Message.ok( QC.translate("preferences", "DB type changed"), QC.translate("preferences", "Restart the GUI in order effects to take effect"), QtWidgets.QMessageBox.Warning) self.dbType = self.comboDBType.currentIndex()
def _save_db_config(self): dbtype = self.comboDBType.currentIndex() self._cfg.setSettings(Config.DEFAULT_DB_TYPE_KEY, dbtype) if self.comboDBType.currentIndex() == self.dbType: return if dbtype == self._db.get_db_file(): return if self.comboDBType.currentIndex() != Database.DB_TYPE_MEMORY: if self.dbLabel.text() != "": self._cfg.setSettings(Config.DEFAULT_DB_FILE_KEY, self.dbLabel.text()) else: Message.ok( QC.translate("preferences", "Warning"), QC.translate("preferences", "You must select a file for the database<br>or choose \"In memory\" type."), QtWidgets.QMessageBox.Warning) return Message.ok( QC.translate("preferences", "DB type changed"), QC.translate("preferences", "Restart the GUI in order effects to take effect"), QtWidgets.QMessageBox.Warning) self.dbType = self.comboDBType.currentIndex()
def __init__(self, app, on_exit): super(UIService, self).__init__() self.MENU_ENTRY_STATS = QtCore.QCoreApplication.translate("contextual_menu", "Statistics") self.MENU_ENTRY_FW_ENABLE = QtCore.QCoreApplication.translate("contextual_menu", "Enable") self.MENU_ENTRY_FW_DISABLE = QtCore.QCoreApplication.translate("contextual_menu", "Disable") self.MENU_ENTRY_HELP = QtCore.QCoreApplication.translate("contextual_menu", "Help") self.MENU_ENTRY_CLOSE = QtCore.QCoreApplication.translate("contextual_menu", "Close") self._cfg = Config.init() self._db = Database.instance() db_file=self._cfg.getSettings(self._cfg.DEFAULT_DB_FILE_KEY) db_status, db_error = self._db.initialize( dbtype=self._cfg.getInt(self._cfg.DEFAULT_DB_TYPE_KEY), dbfile=db_file ) if db_status is False: Message.ok( QtCore.QCoreApplication.translate("preferences", "Warning"), QtCore.QCoreApplication.translate("preferences", "The DB is corrupted and it's not safe to continue.<br>\ Remove, backup or recover the file before continuing.<br><br>\ Corrupted database file: {0}".format(db_file)), QtWidgets.QMessageBox.Warning) sys.exit(-1) self._db_sqlite = self._db.get_db() self._last_ping = None self._version_warning_shown = False self._asking = False self._connected = False self._fw_enabled = 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._remote_lock = Lock() self._remote_stats = {} self._setup_interfaces() self._setup_icons() self._stats_dialog = StatsDialog(dbname="general", db=self._db) self._setup_tray() self._setup_slots() self._nodes = Nodes.instance() self._last_stats = {} self._last_items = { 'hosts':{}, 'procs':{}, 'addrs':{}, 'ports':{}, 'users':{} }
def _save_ui_config(self): self._save_ui_columns_config() self._cfg.setSettings(self._cfg.DEFAULT_IGNORE_TEMPORARY_RULES, int(self.comboUIRules.currentIndex())) self._cfg.setSettings(self._cfg.DEFAULT_IGNORE_RULES, bool(self.checkUIRules.isChecked())) #self._set_rules_duration_filter() self._cfg.setRulesDurationFilter(bool(self.checkUIRules.isChecked()), int(self.comboUIRules.currentIndex())) self._cfg.setSettings(self._cfg.DEFAULT_ACTION_KEY, self.comboUIAction.currentIndex()) self._cfg.setSettings(self._cfg.DEFAULT_DURATION_KEY, int(self.comboUIDuration.currentIndex())) self._cfg.setSettings(self._cfg.DEFAULT_TARGET_KEY, self.comboUITarget.currentIndex()) self._cfg.setSettings(self._cfg.DEFAULT_TIMEOUT_KEY, self.spinUITimeout.value()) self._cfg.setSettings(self._cfg.DEFAULT_DISABLE_POPUPS, bool(self.popupsCheck.isChecked())) self._cfg.setSettings(self._cfg.DEFAULT_POPUP_POSITION, int(self.comboUIDialogPos.currentIndex())) self._cfg.setSettings(self._cfg.DEFAULT_POPUP_ADVANCED, bool(self.showAdvancedCheck.isChecked())) self._cfg.setSettings(self._cfg.DEFAULT_POPUP_ADVANCED_DSTIP, bool(self.dstIPCheck.isChecked())) self._cfg.setSettings(self._cfg.DEFAULT_POPUP_ADVANCED_DSTPORT, bool(self.dstPortCheck.isChecked())) self._cfg.setSettings(self._cfg.DEFAULT_POPUP_ADVANCED_UID, bool(self.uidCheck.isChecked())) self._cfg.setSettings(self._cfg.NOTIFICATIONS_ENABLED, bool(self.groupNotifs.isChecked())) self._cfg.setSettings( self._cfg.NOTIFICATIONS_TYPE, int(Config.NOTIFICATION_TYPE_SYSTEM if self.radioSysNotifs. isChecked() else Config.NOTIFICATION_TYPE_QT)) self._themes.save_theme(self.comboUITheme.currentIndex(), self.comboUITheme.currentText()) if self._themes.available( ) and self._saved_theme != "" and self._saved_theme != self.comboUITheme.currentText( ): Message.ok( QC.translate("preferences", "UI theme changed"), QC.translate( "preferences", "Restart the GUI in order to apply the new theme"), QtWidgets.QMessageBox.Warning) # this is a workaround for not display pop-ups. # see #79 for more information. if self.popupsCheck.isChecked(): self._cfg.setSettings(self._cfg.DEFAULT_TIMEOUT_KEY, 0)
def edit_rule(self, records, _addr=None): self._reset_state() self.rule = self.get_rule_from_records(records) if self.rule.operator.type not in Config.RulesTypes: Message.ok(QC.translate("rules", "<b>Rule not supported</b>"), QC.translate("rules", "This type of rule ({0}) is not supported by version {1}".format(self.rule.operator.type, version)), QtWidgets.QMessageBox.Warning) self.hide() return self._old_rule_name = records.value(2) if self._load_rule(addr=_addr, rule=self.rule): self.show()
def _show_message(self, text): Message.ok(text, "", QtWidgets.QMessageBox.Warning)