Exemple #1
0
    def __init__(self, window, tree_view, up_button, down_button, insert_button,
                 delete_button, edit_button):
        '''Initialize a table.

        The subclass must supply _column_titles.

        '''
        self.window = window
        self.up_button = up_button
        self.down_button = down_button
        self.delete_button = delete_button
        self.edit_button = edit_button
        self.store = gtk.ListStore(gobject.TYPE_PYOBJECT,
                                   *((gobject.TYPE_STRING,)
                                     * len(self._column_titles)))
        tree_view.set_model(self.store)
        column = 1
        for title in self._column_titles:
            c = gtk.TreeViewColumn(_(title), gtk.CellRendererText(),
                                   text = column)
            c.set_resizable(True)
            tree_view.append_column(c)
            column += 1
        tree_view.connect('row-activated', self.__edit_button_clicked)
        self.selection = tree_view.get_selection()
        util.connect_and_run(self.selection, 'changed',
                             self.__selection_changed)
        up_button.connect('clicked', self.__up_button_clicked)
        down_button.connect('clicked', self.__down_button_clicked)
        insert_button.connect('clicked', self.__insert_button_clicked)
        delete_button.connect('clicked', self.__delete_button_clicked)
        edit_button.connect('clicked', self.__edit_button_clicked)
Exemple #2
0
    def __init__(self, parent):
        DialogBase.__init__(self, 'watch_dialog', parent)

        util.connect_and_run(self.watch_keys_present, 'toggled',
                             self.__watch_keys_present_toggled)
        self.watch_keys_change.connect('clicked',
                                       self.__watch_keys_change_clicked)
        self._setup_browse_button(self.watch_path_browse, self.watch_path,
                                  _('Watched File'),
                                  gtk.FILE_CHOOSER_ACTION_SAVE)

        self.keys = []
Exemple #3
0
    def __init__(self, parent):
        DialogBase.__init__(self, 'key_list_dialog', parent)

        self.keys_store = gtk.ListStore(gobject.TYPE_STRING)
        self.keys_list.set_model(self.keys_store)
        c = gtk.TreeViewColumn(_('Key'), gtk.CellRendererText(), text = 0)
        self.keys_list.append_column(c)
        self.keys_list.connect('row-activated', self.__keys_edit_clicked)
        self.keys_selection = self.keys_list.get_selection()
        util.connect_and_run(self.keys_selection, 'changed',
                             self.__keys_selection_changed)
        self.keys_up.connect('clicked', self.__keys_up_clicked)
        self.keys_down.connect('clicked', self.__keys_down_clicked)
        self.keys_delete.connect('clicked', self.__keys_delete_clicked)
        self.keys_add.connect('clicked', self.__keys_add_clicked)
        self.keys_edit.connect('clicked', self.__keys_edit_clicked)
Exemple #4
0
 def __init__(self, parent):
     DialogBase.__init__(self, 'key_dialog', parent)
     util.connect_and_run(self.key_is_text, 'toggled',
                          self.__key_is_text_toggled)
     self.key_text.set_max_length(audit.AUDIT_MAX_KEY_LEN)
     util.connect_and_run(self.key_is_ids, 'toggled',
                          self.__key_is_ids_toggled)
     self.type_store = gtk.ListStore(gobject.TYPE_STRING,
                                     gobject.TYPE_STRING)
     for (type_, label) in lists.ids_types:
         self.type_store.append((type_, _(label)))
     self.key_ids_type.set_model(self.type_store)
     cell = gtk.CellRendererText()
     self.key_ids_type.pack_start(cell, True)
     self.key_ids_type.set_attributes(cell, text = 1)
     self.severity_store = gtk.ListStore(gobject.TYPE_STRING,
                                         gobject.TYPE_STRING)
     for (severity, label) in lists.ids_severities:
         self.severity_store.append((severity, _(label)))
     self.key_ids_severity.set_model(self.severity_store)
     cell = gtk.CellRendererText()
     self.key_ids_severity.pack_start(cell, True)
     self.key_ids_severity.set_attributes(cell, text = 1)
Exemple #5
0
    def __init__(self, parent):
        DialogBase.__init__(self, "event_type_dialog", parent)

        util.connect_and_run(self.event_type_condition, "toggled", self.__event_type_condition_toggled)
        self.op_store = gtk.ListStore(gobject.TYPE_STRING)
        # Most operators are unlikely to be used, but the dialog must be able to
        # represent them
        for op in (Field.OP_EQ, Field.OP_NE, ""):
            self.op_store.append((op,))
        for op in Field.all_operators:
            if op not in (Field.OP_EQ, Field.OP_NE):
                self.op_store.append((op,))
        self.event_type_op.set_model(self.op_store)
        cell = gtk.CellRendererText()
        self.event_type_op.pack_start(cell, True)
        self.event_type_op.set_attributes(cell, text=0)
        self.event_type_op.set_row_separator_func(util.is_row_separator)

        store = gtk.ListStore(gobject.TYPE_STRING)
        for name in lists.event_type_names:
            store.append((name,))
        self.event_type_value.set_model(store)
        self.event_type_value.set_text_column(0)
Exemple #6
0
    def __init__(self, parent, excluded_fields, action_always_label,
                 action_never_label):
        '''Initialize a rule dialog, removing fields for excluded_fields.

        If audit.AUDIT_ARCH is in excluded_fields, all syscall handling is
        removed as well.

        '''
        DialogBase.__init__(self, 'rule_dialog', parent,
                            notebook_name = 'rule_notebook')
        self.excluded_fields = excluded_fields

        self.rule_always.set_label(action_always_label)
        util.connect_and_run(self.rule_always, 'toggled',
                             self.__rule_always_toggled)
        if audit.AUDIT_FILTERKEY not in self.excluded_fields:
            util.connect_and_run(self.rule_keys_present, 'toggled',
                                 self.__rule_keys_present_toggled)
            self.rule_keys_change.connect('clicked',
                                          self.__rule_keys_change_clicked)
        else:
            self.rule_keys_hbox.destroy()
        self.rule_never.set_label(action_never_label)
        if audit.AUDIT_ARCH not in self.excluded_fields:
            util.connect_and_run(self.rule_arch_present, 'toggled',
                                 self.__rule_arch_present_toggled)
            self.arch_store = gtk.ListStore(gobject.TYPE_STRING)
            for name in lists.sorted_machine_names:
                self.arch_store.append((name,))
            for name in ('', 'b32', 'b64'):
                self.arch_store.append((name,))
            self.rule_arch.set_model(self.arch_store)
            self.rule_arch.set_text_column(0)
            self.rule_arch.set_row_separator_func(util.is_row_separator)
        else:
            self.rule_arch_vbox.destroy()

        if audit.AUDIT_ARCH not in self.excluded_fields:
            util.connect_and_run(self.rule_syscalls_not_all, 'toggled',
                                 self.__rule_syscalls_not_all_toggled)
            self.syscall_store = gtk.ListStore(gobject.TYPE_STRING)
            self.rule_syscalls.set_model(self.syscall_store)
            c = gtk.TreeViewColumn(_('System Call'), gtk.CellRendererText(),
                                   text = 0)
            self.rule_syscalls.append_column(c)
            self.syscalls_selection = self.rule_syscalls.get_selection()
            util.connect_and_run(self.syscalls_selection, 'changed',
                                 self.__syscalls_selection_changed)
            self.rule_syscall_delete.connect('clicked',
                                             self.__rule_syscall_delete_clicked)
            self.syscall_name_store = gtk.ListStore(gobject.TYPE_STRING)
            self.rule_syscall_name.set_model(self.syscall_name_store)
            self.rule_syscall_name.set_text_column(0)
            self.rule_syscall_add.connect('clicked',
                                          self.__rule_syscall_add_clicked)
            self.fields_page = 2
        else:
            self.rule_notebook.remove_page(1)
            self.fields_page = 1

        self.fields_store = gtk.ListStore(gobject.TYPE_PYOBJECT,
                                          gobject.TYPE_STRING)
        self.rule_fields.set_model(self.fields_store)
        c = gtk.TreeViewColumn(_('Condition'), gtk.CellRendererText(), text = 1)
        self.rule_fields.append_column(c)
        self.fields_selection = self.rule_fields.get_selection()
        util.connect_and_run(self.fields_selection, 'changed',
                             self.__fields_selection_changed)
        self.rule_field_up.connect('clicked', self.__rule_field_up_clicked)
        self.rule_field_down.connect('clicked', self.__rule_field_down_clicked)
        self.rule_field_delete.connect('clicked',
                                       self.__rule_field_delete_clicked)
        self.rule_field_add.connect('clicked', self.__rule_field_add_clicked)
        self.field_var_store = gtk.ListStore(gobject.TYPE_STRING)
        fields = (field for field in lists.field_vars
                  if (field not in (audit.AUDIT_ARCH, audit.AUDIT_FILTERKEY) and
                      field not in self.excluded_fields))
        for name in sorted(lists.ids_to_names(fields,
                                              audit.audit_field_to_name)):
            self.field_var_store.append((name,))
        self.rule_field_var.set_model(self.field_var_store)
        cell = gtk.CellRendererText()
        self.rule_field_var.pack_start(cell, True)
        self.rule_field_var.set_attributes(cell, text = 0)
        util.connect_and_run(self.rule_field_var, 'changed',
                             self.__rule_field_var_changed)
        self.field_op_store = gtk.ListStore(gobject.TYPE_STRING)
        for op in Field.all_operators:
            self.field_op_store.append((op,))
        self.rule_field_op.set_model(self.field_op_store)
        cell = gtk.CellRendererText()
        self.rule_field_op.pack_start(cell, True)
        self.rule_field_op.set_attributes(cell, text = 0)
        self.rule_field_op.set_row_separator_func(util.is_row_separator)
        self.field_value_store = gtk.ListStore(gobject.TYPE_STRING)
        self.rule_field_value.set_model(self.field_value_store)
        self.rule_field_value.set_text_column(0)

        self.keys = []
        self.machine_id = None
        self.last_arch_name = None
        if audit.AUDIT_ARCH not in self.excluded_fields:
            util.connect_and_run(self.rule_arch.child, 'focus-out-event',
                                 self.__rule_arch_focus_out)
Exemple #7
0
    def __init__(self, parent):
        DialogBase.__init__(self, 'global_config', parent,
                            notebook_name = 'global_config_notebook')

        util.connect_and_run(self.rate_limit_enabled, 'toggled',
                             self.__rate_limit_enabled_toggled)

        util.connect_and_run(self.dispatcher_enabled, 'toggled',
                             self.__dispatcher_enabled_toggled)
        self._setup_browse_button(self.dispatcher_browse, self.dispatcher,
                                  _('Program'), gtk.FILE_CHOOSER_ACTION_OPEN)

        util.connect_and_run(self.log_format_raw, 'toggled',
                             self.__log_format_raw_toggled)
        util.connect_and_run(self.log_file, 'focus-out-event',
                             self.__log_file_focus_out)
        self._setup_browse_button(self.log_file_browse, self.log_file,
                                  _('Log File'), gtk.FILE_CHOOSER_ACTION_SAVE)
        util.connect_and_run(self.flush_incremental, 'toggled',
                             self.__flush_incremental_toggled)
        self.freq.connect('value-changed', self.__freq_value_changed)
        util.connect_and_run(self.max_log_file_keep_logs, 'toggled',
                             self.__max_log_file_keep_logs_toggled)
        util.connect_and_run(self.max_log_file_rotate, 'toggled',
                             self.__max_log_file_rotate_toggled)
        util.connect_and_run(self.name_format_not_none, 'toggled',
                             self.__name_format_not_none_toggled)
        hostname = socket.gethostname()
        self.name_format_hostname.set_label(_('Host name as-_is (%s)')
                                            % hostname)
        try:
            # AI_PASSIVE is probably not necessary, but that's what auditd uses.
            addrs = socket.getaddrinfo(hostname, None, socket.AF_UNSPEC,
                                       socket.SOCK_STREAM, 0,
                                       socket.AI_ADDRCONFIG |
                                       socket.AI_CANONNAME | socket.AI_PASSIVE)
        except socket.gaierror:
            addrs = ()
        if addrs:
            fqd_label = _('_Fully-qualified host name (%s)') % addrs[0][3]
            numeric_label = _('I_P address (%s)') % addrs[0][4][0]
        else:
            fqd_label = _('_Fully-qualified host name')
            numeric_label = _('I_P address')
        self.name_format_fqd.set_label(fqd_label)
        self.name_format_numeric.set_label(numeric_label)
        util.connect_and_run(self.name_format_user, 'toggled',
                             self.__name_format_user_toggled)

        util.connect_and_run(self.space_left_exec, 'toggled',
                             self.__space_left_exec_toggled)
        self._setup_browse_button(self.space_left_exe_browse,
                                  self.space_left_exe, _('Program'),
                                  gtk.FILE_CHOOSER_ACTION_OPEN)
        util.connect_and_run(self.admin_space_left_exec, 'toggled',
                             self.__admin_space_left_exec_toggled)
        self._setup_browse_button(self.admin_space_left_exe_browse,
                                  self.admin_space_left_exe, _('Program'),
                                  gtk.FILE_CHOOSER_ACTION_OPEN)

        util.connect_and_run(self.disk_full_exec, 'toggled',
                             self.__disk_full_exec_toggled)
        self._setup_browse_button(self.disk_full_exe_browse, self.disk_full_exe,
                                  _('Program'), gtk.FILE_CHOOSER_ACTION_OPEN)
        util.connect_and_run(self.disk_error_exec, 'toggled',
                             self.__disk_error_exec_toggled)
        self._setup_browse_button(self.disk_error_exe_browse,
                                  self.disk_error_exe, _('Program'),
                                  gtk.FILE_CHOOSER_ACTION_OPEN)