Lines Matching full:self

118     def __init__(self, app=None, test=False):  argument
119 self.finish_init = False
120 self.advanced_init = True
121 self.opage = START_PAGE
122 self.dbus = SELinuxDBus()
124 customized = self.dbus.customized()
127 self.quit()
129 self.init_cur()
130 self.application = app
131 self.filter_txt = ""
133 self.code_path = sysconfig.get_path('purelib', vars={'base': "/usr"}) + "/sepolicy/"
134 glade_file = self.code_path + "sepolicy.glade"
136 self.outer_notebook = builder.get_object("outer_notebook")
137 self.window = builder.get_object("SELinux_window")
138 self.main_selection_popover = builder.get_object("Main_selection_menu")
139 self.main_advanced_label = builder.get_object("main_advanced_label")
140 self.applications_selection_button = builder.get_object("applications_selection_button")
141 self.revert_button = builder.get_object("Revert_button")
142 self.busy_cursor = Gdk.Cursor(Gdk.CursorType.WATCH)
143 self.ready_cursor = Gdk.Cursor(Gdk.CursorType.LEFT_PTR)
144 self.initialtype = selinux.selinux_getpolicytype()[1]
145 self.current_popup = None
146 self.import_export = None
147 self.clear_entry = True
148 self.files_add = False
149 self.network_add = False
150 self.mislabeled_files = False
152 self.all_domains = []
153 self.installed_list = []
154 self.previously_modified = {}
157 self.file_dialog = builder.get_object("add_path_dialog")
159 self.error_check_window = builder.get_object("error_check_window")
160 self.error_check_label = builder.get_object("error_check_label")
161 self.invalid_entry = False
163 self.advanced_search_window = builder.get_object("advanced_search_window")
164 self.advanced_search_filter = builder.get_object("advanced_filter")
165 self.advanced_search_filter.set_visible_func(self.filter_the_data)
166 self.advanced_search_sort = builder.get_object("advanced_sort")
168 self.advanced_filter_entry = builder.get_object("advanced_filter_entry")
169 self.advanced_search_treeview = builder.get_object("advanced_search_treeview")
170 self.advanced_search = False
173 self.login_label = builder.get_object("Login_label")
174 self.login_seuser_combobox = builder.get_object("login_seuser_combobox")
175 self.login_seuser_combolist = builder.get_object("login_seuser_liststore")
176 self.login_name_entry = builder.get_object("login_name_entry")
177 self.login_mls_label = builder.get_object("login_mls_label")
178 self.login_mls_entry = builder.get_object("login_mls_entry")
179 self.login_radio_button = builder.get_object("Login_button")
180 self.login_treeview = builder.get_object("login_treeview")
181 self.login_liststore = builder.get_object("login_liststore")
182 self.login_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
183 self.login_filter = builder.get_object("login_filter")
184 self.login_filter.set_visible_func(self.filter_the_data)
185 self.login_popup_window = builder.get_object("login_popup_window")
186 self.login_delete_liststore = builder.get_object("login_delete_liststore")
187 self.login_delete_window = builder.get_object("login_delete_window")
190 self.user_popup_window = builder.get_object("user_popup_window")
191 self.user_radio_button = builder.get_object("User_button")
192 self.user_liststore = builder.get_object("user_liststore")
193 self.user_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
194 self.user_filter = builder.get_object("user_filter")
195 self.user_filter.set_visible_func(self.filter_the_data)
196 self.user_treeview = builder.get_object("user_treeview")
197 self.user_roles_combobox = builder.get_object("user_roles_combobox")
198 self.user_roles_combolist = builder.get_object("user_roles_liststore")
199 self.user_label = builder.get_object("User_label")
200 self.user_name_entry = builder.get_object("user_name_entry")
201 self.user_mls_label = builder.get_object("user_mls_label")
202 self.user_mls_level_entry = builder.get_object("user_mls_level_entry")
203 self.user_mls_entry = builder.get_object("user_mls_entry")
204 self.user_combobox = builder.get_object("selinux_user_combobox")
205 self.user_delete_liststore = builder.get_object("user_delete_liststore")
206 self.user_delete_window = builder.get_object("user_delete_window")
209 self.file_equiv_label = builder.get_object("file_equiv_label")
210 self.file_equiv_source_entry = builder.get_object("file_equiv_source_entry")
211 self.file_equiv_dest_entry = builder.get_object("file_equiv_dest_entry")
212 self.file_equiv_radio_button = builder.get_object("file_equiv_button")
213 self.file_equiv_treeview = builder.get_object("file_equiv_treeview")
214 self.file_equiv_liststore = builder.get_object("file_equiv_liststore")
215 self.file_equiv_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
216 self.file_equiv_popup_window = builder.get_object("file_equiv_popup_window")
217 self.file_equiv_treefilter = builder.get_object("file_equiv_filter")
218 self.file_equiv_treefilter.set_visible_func(self.filter_the_data)
219 self.file_equiv_delete_liststore = builder.get_object("file_equiv_delete_liststore")
220 self.file_equiv_delete_window = builder.get_object("file_equiv_delete_window")
223 self.app_system_button = builder.get_object("app_system_button")
224 self.system_radio_button = builder.get_object("System_button")
225 self.lockdown_radio_button = builder.get_object("Lockdown_button")
226 self.systems_box = builder.get_object("Systems_box")
227 self.relabel_button = builder.get_object("Relabel_button")
228 self.relabel_button_no = builder.get_object("Relabel_button_no")
229 self.advanced_system = builder.get_object("advanced_system")
230 self.outer_notebook_frame = builder.get_object("outer_notebook_frame")
231 self.system_policy_label = builder.get_object("system_policy_type_label")
233 self.select_button_browse = builder.get_object("select_button_browse")
234 self.cancel_button_browse = builder.get_object("cancel_button_browse")
236 self.moreTypes_window_files = builder.get_object("moreTypes_window_files")
237 self.more_types_files_liststore = builder.get_object("more_types_file_liststore")
238 self.moreTypes_treeview = builder.get_object("moreTypes_treeview_files")
240 self.system_policy_type_liststore = builder.get_object("system_policy_type_liststore")
241 self.system_policy_type_combobox = builder.get_object("system_policy_type_combobox")
242 self.policy_list = []
243 if self.populate_system_policy() < 2:
244 self.advanced_system.set_visible(False)
245 self.system_policy_label.set_visible(False)
246 self.system_policy_type_combobox.set_visible(False)
248 self.enforcing_button_default = builder.get_object("Enforcing_button_default")
249 self.permissive_button_default = builder.get_object("Permissive_button_default")
250 self.disabled_button_default = builder.get_object("Disabled_button_default")
251 self.initialize_system_default_mode()
254 self.enable_unconfined_button = builder.get_object("enable_unconfined")
255 self.disable_unconfined_button = builder.get_object("disable_unconfined")
256 self.enable_permissive_button = builder.get_object("enable_permissive")
257 self.disable_permissive_button = builder.get_object("disable_permissive")
258 self.enable_ptrace_button = builder.get_object("enable_ptrace")
259 self.disable_ptrace_button = builder.get_object("disable_ptrace")
262 self.help_window = builder.get_object("help_window")
263 self.help_text = builder.get_object("help_textv")
264 self.info_text = builder.get_object("info_text")
265 self.help_image = builder.get_object("help_image")
266 self.forward_button = builder.get_object("forward_button")
267 self.back_button = builder.get_object("back_button")
269 self.update_window = builder.get_object("update_window")
270 self.update_treeview = builder.get_object("update_treeview")
271 self.update_treestore = builder.get_object("Update_treestore")
272 self.apply_button = builder.get_object("apply_button")
273 self.update_button = builder.get_object("Update_button")
275 self.add_button = builder.get_object("Add_button")
276 self.delete_button = builder.get_object("Delete_button")
278 self.files_path_entry = builder.get_object("files_path_entry")
279 self.network_ports_entry = builder.get_object("network_ports_entry")
280 self.files_popup_window = builder.get_object("files_popup_window")
281 self.network_popup_window = builder.get_object("network_popup_window")
283 self.popup_network_label = builder.get_object("Network_label")
284 self.popup_files_label = builder.get_object("files_label")
286 self.recursive_path_toggle = builder.get_object("make_path_recursive")
287 self.files_type_combolist = builder.get_object("files_type_combo_store")
288 self.files_class_combolist = builder.get_object("files_class_combo_store")
289 self.files_type_combobox = builder.get_object("files_type_combobox")
290 self.files_class_combobox = builder.get_object("files_class_combobox")
291 self.files_mls_label = builder.get_object("files_mls_label")
292 self.files_mls_entry = builder.get_object("files_mls_entry")
293 self.advanced_text_files = builder.get_object("Advanced_text_files")
294 self.files_cancel_button = builder.get_object("cancel_delete_files")
296 self.network_tcp_button = builder.get_object("tcp_button")
297 self.network_udp_button = builder.get_object("udp_button")
298 self.network_port_type_combolist = builder.get_object("network_type_combo_store")
299 self.network_port_type_combobox = builder.get_object("network_type_combobox")
300 self.network_mls_label = builder.get_object("network_mls_label")
301 self.network_mls_entry = builder.get_object("network_mls_entry")
302 self.advanced_text_network = builder.get_object("Advanced_text_network")
303 self.network_cancel_button = builder.get_object("cancel_network_delete")
308 self.show_mislabeled_files_only = builder.get_object("Show_mislabeled_files")
309 self.mislabeled_files_label = builder.get_object("mislabeled_files_label")
310 self.warning_files = builder.get_object("warning_files")
311 self.modify_button = builder.get_object("Modify_button")
312 self.modify_button.set_sensitive(False)
316 self.fix_label_window = builder.get_object("fix_label_window")
317 self.fixlabel_label = builder.get_object("fixlabel_label")
318 self.fix_label_cancel = builder.get_object("fix_label_cancel")
322 self.files_delete_window = builder.get_object("files_delete_window")
323 self.files_delete_treeview = builder.get_object("files_delete_treeview")
324 self.files_delete_liststore = builder.get_object("files_delete_liststore")
325 self.network_delete_window = builder.get_object("network_delete_window")
326 self.network_delete_treeview = builder.get_object("network_delete_treeview")
327 self.network_delete_liststore = builder.get_object("network_delete_liststore")
331 self.progress_bar = builder.get_object("progress_bar")
335self.executable_files_treeview = builder.get_object("Executable_files_treeview") …
336 self.executable_files_filter = builder.get_object("executable_files_filter")
337 self.executable_files_filter.set_visible_func(self.filter_the_data)
338 self.executable_files_tab = builder.get_object("Executable_files_tab")
339 self.executable_files_tab_tooltip_txt = self.executable_files_tab.get_tooltip_text()
340 self.executable_files_liststore = builder.get_object("executable_files_treestore")
341 self.executable_files_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
343 self.files_radio_button = builder.get_object("files_button")
344 self.files_button_tooltip_txt = self.files_radio_button.get_tooltip_text()
348self.writable_files_treeview = builder.get_object("Writable_files_treeview") # Get the W…
349self.writable_files_liststore = builder.get_object("writable_files_treestore") # Contains …
350 self.writable_files_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
351 self.writable_files_filter = builder.get_object("writable_files_filter")
352 self.writable_files_filter.set_visible_func(self.filter_the_data)
353 self.writable_files_tab = builder.get_object("Writable_files_tab")
354 self.writable_files_tab_tooltip_txt = self.writable_files_tab.get_tooltip_text()
358self.application_files_treeview = builder.get_object("Application_files_treeview") …
359self.application_files_filter = builder.get_object("application_files_filter") # Contains …
360 self.application_files_filter.set_visible_func(self.filter_the_data)
361 self.application_files_tab = builder.get_object("Application_files_tab")
362 self.application_files_tab_tooltip_txt = self.writable_files_tab.get_tooltip_text()
363 self.application_files_liststore = builder.get_object("application_files_treestore")
364 self.application_files_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
365 self.application_files_tab = builder.get_object("Application_files_tab")
366 self.application_files_tab_tooltip_txt = self.application_files_tab.get_tooltip_text()
370 self.network_radio_button = builder.get_object("network_button")
371 self.network_button_tooltip_txt = self.network_radio_button.get_tooltip_text()
373 self.network_out_treeview = builder.get_object("outbound_treeview")
374 self.network_out_liststore = builder.get_object("network_out_liststore")
375 self.network_out_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
376 self.network_out_filter = builder.get_object("network_out_filter")
377 self.network_out_filter.set_visible_func(self.filter_the_data)
378 self.network_out_tab = builder.get_object("network_out_tab")
379 self.network_out_tab_tooltip_txt = self.network_out_tab.get_tooltip_text()
381 self.network_in_treeview = builder.get_object("inbound_treeview")
382 self.network_in_liststore = builder.get_object("network_in_liststore")
383 self.network_in_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
384 self.network_in_filter = builder.get_object("network_in_filter")
385 self.network_in_filter.set_visible_func(self.filter_the_data)
386 self.network_in_tab = builder.get_object("network_in_tab")
387 self.network_in_tab_tooltip_txt = self.network_in_tab.get_tooltip_text()
391self.boolean_treeview = builder.get_object("Boolean_treeview") # Get the booleans tree list
392 self.boolean_liststore = builder.get_object("boolean_liststore")
393 self.boolean_liststore.set_sort_column_id(2, Gtk.SortType.ASCENDING)
394 self.boolean_filter = builder.get_object("boolean_filter")
395 self.boolean_filter.set_visible_func(self.filter_the_data)
397 self.boolean_more_detail_window = builder.get_object("booleans_more_detail_window")
398 self.boolean_more_detail_treeview = builder.get_object("booleans_more_detail_treeview")
399self.boolean_more_detail_tree_data_set = builder.get_object("booleans_more_detail_liststore")
400 self.boolean_radio_button = builder.get_object("Booleans_button")
401 self.active_button = self.boolean_radio_button
402 self.boolean_button_tooltip_txt = self.boolean_radio_button.get_tooltip_text()
406self.transitions_into_treeview = builder.get_object("transitions_into_treeview") # Get the…
407self.transitions_into_liststore = builder.get_object("transitions_into_liststore") # Contains th…
408 self.transitions_into_liststore.set_sort_column_id(1, Gtk.SortType.ASCENDING)
409 self.transitions_into_filter = builder.get_object("transitions_into_filter")
410 self.transitions_into_filter.set_visible_func(self.filter_the_data)
411 self.transitions_into_tab = builder.get_object("Transitions_into_tab")
412 self.transitions_into_tab_tooltip_txt = self.transitions_into_tab.get_tooltip_text()
414 self.transitions_radio_button = builder.get_object("Transitions_button")
415 self.transitions_button_tooltip_txt = self.transitions_radio_button.get_tooltip_text()
417self.transitions_from_treeview = builder.get_object("transitions_from_treeview") # Get the…
418self.transitions_from_treestore = builder.get_object("transitions_from_treestore") # Contain…
419 self.transitions_from_treestore.set_sort_column_id(2, Gtk.SortType.ASCENDING)
420 self.transitions_from_filter = builder.get_object("transitions_from_filter")
421 self.transitions_from_filter.set_visible_func(self.filter_the_data)
422 self.transitions_from_tab = builder.get_object("Transitions_from_tab")
423 self.transitions_from_tab_tooltip_txt = self.transitions_from_tab.get_tooltip_text()
425self.transitions_file_treeview = builder.get_object("file_transitions_treeview") # Get the…
426self.transitions_file_liststore = builder.get_object("file_transitions_liststore") # Contain…
427 self.transitions_file_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
428 self.transitions_file_filter = builder.get_object("file_transitions_filter")
429 self.transitions_file_filter.set_visible_func(self.filter_the_data)
430 self.transitions_file_tab = builder.get_object("file_transitions")
431 self.transitions_file_tab_tooltip_txt = self.transitions_from_tab.get_tooltip_text()
435self.combobox_menu = builder.get_object("combobox_org") # This is the combobox …
436 self.application_liststore = builder.get_object("application_liststore")
437self.completion_entry = builder.get_object("completion_entry") # self.combobox_menu.get_child()
438 self.entrycompletion_obj = builder.get_object("entrycompletion_obj")
439 #self.entrycompletion_obj = Gtk.EntryCompletion()
440 self.entrycompletion_obj.set_minimum_key_length(0)
441 self.entrycompletion_obj.set_text_column(0)
442 self.entrycompletion_obj.set_match_func(self.match_func, None)
443 self.completion_entry.set_completion(self.entrycompletion_obj)
444 self.completion_entry.set_icon_from_stock(0, Gtk.STOCK_FIND)
448 self.show_modified_only = builder.get_object("Show_modified_only_toggle")
452 self.current_status_label = builder.get_object("Enforcing_label")
453 self.current_status_enforcing = builder.get_object("Enforcing_button")
454 self.current_status_permissive = builder.get_object("Permissive_button")
455 self.status_bar = builder.get_object("status_bar")
456 self.context_id = self.status_bar.get_context_id("SELinux status")
459 self.filter_entry = builder.get_object("filter_entry")
460 self.filter_box = builder.get_object("filter_box")
461 self.add_modify_delete_box = builder.get_object("add_modify_delete_box")
465 self.cell = builder.get_object("activate")
466 self.del_cell_files = builder.get_object("files_toggle_delete")
467 self.del_cell_files.connect("toggled", self.on_toggle_update, self.files_delete_liststore)
468 self.del_cell_files_equiv = builder.get_object("file_equiv_toggle_delete1")
469self.del_cell_files_equiv.connect("toggled", self.on_toggle_update, self.file_equiv_delete_liststo…
470 self.del_cell_user = builder.get_object("user_toggle_delete")
471 self.del_cell_user.connect("toggled", self.on_toggle_update, self.user_delete_liststore)
472 self.del_cell_login = builder.get_object("login_toggle_delete")
473 self.del_cell_login.connect("toggled", self.on_toggle_update, self.login_delete_liststore)
474 self.del_cell_network = builder.get_object("network_toggle_delete")
475self.del_cell_network.connect("toggled", self.on_toggle_update, self.network_delete_liststore)
476 self.update_cell = builder.get_object("toggle_update")
478 self.outer_notebook = builder.get_object("outer_notebook")
479 self.inner_notebook_files = builder.get_object("files_inner_notebook")
480 self.inner_notebook_network = builder.get_object("network_inner_notebook")
481 self.inner_notebook_transitions = builder.get_object("transitions_inner_notebook")
485 self.update_cell.connect("toggled", self.on_toggle_update, self.update_treestore)
486 self.all_entries = []
489 self.cell.connect("toggled", self.on_toggle, self.boolean_liststore)
491 self.loading = 1
494 self.all_domains = ["httpd_t", "abrt_t"]
495 if app and app not in self.all_domains:
496 self.all_domains.append(app)
498 self.all_domains = sepolicy.get_all_domains()
499 self.all_domains.sort(key=str.lower)
501 if app and app not in self.all_domains:
502 self.error(_("%s is not a valid domain") % app)
503 self.quit()
506 length = len(self.all_domains)
509 for domain in self.all_domains:
513 self.combo_box_add(domain, domain)
514 self.percentage = float(float(self.loading) / float(length))
515 self.progress_bar.set_fraction(self.percentage)
516 self.progress_bar.set_pulse_step(self.percentage)
517 self.idle_func()
522 self.combo_box_add(path, domain)
523 self.installed_list.append(path)
525 self.loading += 1
527 self.entrycompletion_obj.set_model(self.application_liststore)
528 self.advanced_search_treeview.set_model(self.advanced_search_sort)
531 "on_combo_button_clicked": self.open_combo_menu,
532 "on_disable_ptrace_toggled": self.on_disable_ptrace,
533 "on_entrycompletion_obj_match_selected": self.set_application_label,
534 "on_filter_changed": self.get_filter_data,
535 "on_save_changes_file_equiv_clicked": self.update_to_file_equiv,
536 "on_save_changes_login_clicked": self.update_to_login,
537 "on_save_changes_user_clicked": self.update_to_user,
538 "on_save_changes_files_clicked": self.update_to_files,
539 "on_save_changes_network_clicked": self.update_to_network,
540 "on_Advanced_text_files_button_press_event": self.reveal_advanced,
541 "item_in_tree_selected": self.cursor_changed,
542 "on_Application_file_types_treeview_configure_event": self.resize_wrap,
543 "on_save_delete_clicked": self.on_save_delete_clicked,
544 "on_moreTypes_treeview_files_row_activated": self.populate_type_combo,
545 "on_retry_button_files_clicked": self.invalid_entry_retry,
546 "on_make_path_recursive_toggled": self.recursive_path,
547 "on_files_path_entry_button_press_event": self.highlight_entry_text,
548 "on_files_path_entry_changed": self.autofill_add_files_entry,
549 "on_select_type_files_clicked": self.select_type_more,
550 "on_choose_file": self.on_browse_select,
551 "on_Enforcing_button_toggled": self.set_enforce,
552 "on_confirmation_close": self.confirmation_close,
553 "on_column_clicked": self.column_clicked,
554 "on_tab_switch": self.clear_filters,
556 "on_file_equiv_button_clicked": self.show_file_equiv_page,
557 "on_app/system_button_clicked": self.system_interface,
558 "on_app/users_button_clicked": self.users_interface,
559 "on_show_advanced_search_window": self.on_show_advanced_search_window,
561 "on_Show_mislabeled_files_toggled": self.show_mislabeled_files,
562 "on_Browse_button_files_clicked": self.browse_for_files,
563 "on_cancel_popup_clicked": self.close_popup,
564 "on_treeview_cursor_changed": self.cursor_changed,
565 "on_login_seuser_combobox_changed": self.login_seuser_combobox_change,
566 "on_user_roles_combobox_changed": self.user_roles_combobox_change,
568 "on_cancel_button_browse_clicked": self.close_config_window,
569 "on_apply_button_clicked": self.apply_changes_button_press,
570 "on_Revert_button_clicked": self.update_or_revert_changes,
571 "on_Update_button_clicked": self.update_or_revert_changes,
572 "on_advanced_filter_entry_changed": self.get_advanced_filter_data,
573 "on_advanced_search_treeview_row_activated": self.advanced_item_selected,
574 "on_Select_advanced_search_clicked": self.advanced_item_button_push,
575 "on_info_button_button_press_event": self.on_help_button,
576 "on_back_button_clicked": self.on_help_back_clicked,
577 "on_forward_button_clicked": self.on_help_forward_clicked,
578 "on_Boolean_treeview_columns_changed": self.resize_columns,
579 "on_completion_entry_changed": self.application_selected,
580 "on_Add_button_clicked": self.add_button_clicked,
581 "on_Delete_button_clicked": self.delete_button_clicked,
582 "on_Modify_button_clicked": self.modify_button_clicked,
583 "on_Show_modified_only_toggled": self.on_show_modified_only,
584 "on_cancel_button_config_clicked": self.close_config_window,
585 "on_Import_button_clicked": self.import_config_show,
586 "on_Export_button_clicked": self.export_config_show,
587 "on_enable_unconfined_toggled": self.unconfined_toggle,
588 "on_enable_permissive_toggled": self.permissive_toggle,
589 "on_system_policy_type_combobox_changed": self.change_default_policy,
590 "on_Enforcing_button_default_toggled": self.change_default_mode,
591 "on_Permissive_button_default_toggled": self.change_default_mode,
592 "on_Disabled_button_default_toggled": self.change_default_mode,
594 "on_Relabel_button_toggled_cb": self.relabel_on_reboot,
595 "on_advanced_system_button_press_event": self.reveal_advanced_system,
596 "on_files_type_combobox_changed": self.show_more_types,
597 "on_filter_row_changed": self.filter_the_data,
598 "on_button_toggled": self.tab_change,
599 "gtk_main_quit": self.closewindow
602 self.previously_modified_initialize(customized)
604 self.window.show() # Show the gui to the screen
605 GLib.timeout_add_seconds(5, self.selinux_status)
606 self.selinux_status()
607 self.lockdown_inited = False
608 self.add_modify_delete_box.hide()
609 self.filter_box.hide()
610 if self.status == DISABLED:
611 self.show_system_page()
613 if self.application:
614 self.applications_selection_button.set_label(self.application)
615 self.completion_entry.set_text(self.application)
616 self.show_applications_page()
617 self.tab_change()
619 self.clearbuttons()
620 self.outer_notebook.set_current_page(START_PAGE)
622 self.reinit()
623 self.finish_init = True
626 def init_cur(self): argument
627 self.cur_dict = {}
629 self.cur_dict[k] = {}
631 def remove_cur(self, ctr): argument
633 for k in self.cur_dict:
634 for j in self.cur_dict[k]:
636 del self.cur_dict[k][j]
640 def selinux_status(self): argument
642 self.status = selinux.security_getenforce()
644 self.status = DISABLED
645 if self.status == DISABLED:
646 self.current_status_label.set_sensitive(False)
647 self.current_status_enforcing.set_sensitive(False)
648 self.current_status_permissive.set_sensitive(False)
649 self.enforcing_button_default.set_sensitive(False)
650 self.status_bar.push(self.context_id, _("System Status: Disabled"))
651 self.info_text.set_label(DISABLED_TEXT)
653 self.set_enforce_text(self.status)
655 self.relabel_button.set_active(True)
657 self.relabel_button_no.set_active(True)
663 self.enforcing_button_default.set_active(True)
665 self.permissive_button_default.set_active(True)
667 self.disabled_button_default.set_active(True)
671 def lockdown_init(self): argument
672 if self.lockdown_inited:
674 self.wait_mouse()
675 self.lockdown_inited = True
676 self.disable_ptrace_button.set_active(selinux.security_get_boolean_active("deny_ptrace"))
677 self.module_dict = {}
678 for m in self.dbus.semodule_list().split("\n"):
682 self.module_dict[mod[1]] = { "priority": mod[0], "Disabled" : (len(mod) > 3) }
684 self.enable_unconfined_button.set_active(not self.module_dict["unconfined"]["Disabled"])
685self.enable_permissive_button.set_active(not self.module_dict["permissivedomains"]["Disabled"])
686 self.ready_mouse()
688 def column_clicked(self, treeview, treepath, treecol, *args): argument
689 iter = self.get_selected_iter()
693 if self.opage == BOOLEANS_PAGE:
695 self.display_more_detail(self.window, treepath)
697 if self.opage == FILES_PAGE:
698 visible = self.liststore.get_value(iter, 3)
701 self.fix_mislabeled(self.liststore.get_value(iter, 0))
703 if self.opage == TRANSITIONS_PAGE:
704 bool_name = self.liststore.get_value(iter, 1)
706 self.boolean_radio_button.clicked()
707 self.filter_entry.set_text(bool_name)
709 def idle_func(self): argument
713 def match_func(self, completion, key_string, iter, func_data): argument
715 if self.application_liststore.get_value(iter, 0).find(key_string) != -1:
721 def help_show_page(self): argument
722 self.back_button.set_sensitive(self.help_page != 0)
723 self.forward_button.set_sensitive(self.help_page < (len(self.help_list) - 1))
725 fd = open("%shelp/%s.txt" % (self.code_path, self.help_list[self.help_page]), "r")
730 help_text = self.help_text.get_buffer()
731 help_text.set_text(buf % {"APP": self.application})
732 self.help_text.set_buffer(help_text)
733self.help_image.set_from_file("%shelp/%s.png" % (self.code_path, self.help_list[self.help_page]))
734 self.show_popup(self.help_window)
736 def on_help_back_clicked(self, *args): argument
737 self.help_page -= 1
738 self.help_show_page()
740 def on_help_forward_clicked(self, *args): argument
741 self.help_page += 1
742 self.help_show_page()
744 def on_help_button(self, *args): argument
745 self.help_page = 0
746 self.help_list = []
747 if self.opage == START_PAGE:
748 self.help_window.set_title(_("Help: Start Page"))
749 self.help_list = ["start"]
751 if self.opage == BOOLEANS_PAGE:
752 self.help_window.set_title(_("Help: Booleans Page"))
753 self.help_list = ["booleans", "booleans_toggled", "booleans_more", "booleans_more_show"]
755 if self.opage == FILES_PAGE:
756 ipage = self.inner_notebook_files.get_current_page()
758 self.help_window.set_title(_("Help: Executable Files Page"))
759 self.help_list = ["files_exec"]
761 self.help_window.set_title(_("Help: Writable Files Page"))
762 self.help_list = ["files_write"]
764 self.help_window.set_title(_("Help: Application Types Page"))
765 self.help_list = ["files_app"]
766 if self.opage == NETWORK_PAGE:
767 ipage = self.inner_notebook_network.get_current_page()
769 self.help_window.set_title(_("Help: Outbound Network Connections Page"))
770 self.help_list = ["ports_outbound"]
772 self.help_window.set_title(_("Help: Inbound Network Connections Page"))
773 self.help_list = ["ports_inbound"]
775 if self.opage == TRANSITIONS_PAGE:
776 ipage = self.inner_notebook_transitions.get_current_page()
778 self.help_window.set_title(_("Help: Transition from application Page"))
779self.help_list = ["transition_from", "transition_from_boolean", "transition_from_boolean_1", "tran…
781 self.help_window.set_title(_("Help: Transition into application Page"))
782 self.help_list = ["transition_to"]
784 self.help_window.set_title(_("Help: Transition application file Page"))
785 self.help_list = ["transition_file"]
787 if self.opage == SYSTEM_PAGE:
788 self.help_window.set_title(_("Help: Systems Page"))
789self.help_list = ["system", "system_boot_mode", "system_current_mode", "system_export", "system_po…
791 if self.opage == LOCKDOWN_PAGE:
792 self.help_window.set_title(_("Help: Lockdown Page"))
793self.help_list = ["lockdown", "lockdown_unconfined", "lockdown_permissive", "lockdown_ptrace"]
795 if self.opage == LOGIN_PAGE:
796 self.help_window.set_title(_("Help: Login Page"))
797 self.help_list = ["login", "login_default"]
799 if self.opage == USER_PAGE:
800 self.help_window.set_title(_("Help: SELinux User Page"))
801 self.help_list = ["users"]
803 if self.opage == FILE_EQUIV_PAGE:
804 self.help_window.set_title(_("Help: File Equivalence Page"))
805 self.help_list = ["file_equiv"]
806 return self.help_show_page()
808 def open_combo_menu(self, *args): argument
809 self.main_selection_popover.set_relative_to(self.applications_selection_button)
810 self.main_selection_popover.popup()
812 def set_application_label(self, *args): argument
813 self.set_application_label = True
815 def resize_wrap(self, *args): argument
818 def initialize_system_default_mode(self): argument
819 self.enforce_mode = selinux.selinux_getenforcemode()[1]
820 if self.enforce_mode == ENFORCING:
821 self.enforce_button = self.enforcing_button_default
822 if self.enforce_mode == PERMISSIVE:
823 self.enforce_button = self.permissive_button_default
824 if self.enforce_mode == DISABLED:
825 self.enforce_button = self.disabled_button_default
827 def populate_system_policy(self): argument
832 iter = self.system_policy_type_liststore.append()
833 self.system_policy_type_liststore.set_value(iter, 0, item)
834 if item == self.initialtype:
835 self.system_policy_type_combobox.set_active(ctr)
836 self.typeHistory = ctr
840 def filter_the_data(self, list, iter, *args): argument
842 if self.filter_txt == "":
851 if val.find(self.filter_txt) != -1 or val.lower().find(self.filter_txt) != -1:
859 def net_update(self, app, netd, protocol, direction, model): argument
863 if pkey in self.cur_dict["port"]:
864 if self.cur_dict["port"][pkey]["action"] == "-d":
866 if t != self.cur_dict["port"][pkey]["type"]:
868 self.network_initial_data_insert(model, ", ".join(ports), t, protocol)
870 def file_equiv_initialize(self): argument
871 self.wait_mouse()
873 self.file_equiv_liststore.clear()
875 iter = self.file_equiv_liststore.append()
877 name = self.markup(f)
878 equiv = self.markup(edict[f]["equiv"])
883 self.file_equiv_liststore.set_value(iter, 0, name)
884 self.file_equiv_liststore.set_value(iter, 1, equiv)
885 self.file_equiv_liststore.set_value(iter, 2, edict[f]["modify"])
886 self.ready_mouse()
888 def user_initialize(self): argument
889 self.wait_mouse()
890 self.user_liststore.clear()
892 iter = self.user_liststore.append()
893 self.user_liststore.set_value(iter, 0, str(u["name"]))
897 self.user_liststore.set_value(iter, 1, ", ".join(roles))
898 self.user_liststore.set_value(iter, 2, u.get("level", ""))
899 self.user_liststore.set_value(iter, 3, u.get("range", ""))
900 self.user_liststore.set_value(iter, 4, True)
901 self.ready_mouse()
903 def login_initialize(self): argument
904 self.wait_mouse()
905 self.login_liststore.clear()
907 iter = self.login_liststore.append()
908 self.login_liststore.set_value(iter, 0, u["name"])
909 self.login_liststore.set_value(iter, 1, u["seuser"])
910 self.login_liststore.set_value(iter, 2, u["mls"])
911 self.login_liststore.set_value(iter, 3, True)
912 self.ready_mouse()
914 def network_initialize(self, app): argument
916 self.net_update(app, netd, "tcp", OUTBOUND_PAGE, self.network_out_liststore)
918 self.net_update(app, netd, "tcp", INBOUND_PAGE, self.network_in_liststore)
920 self.net_update(app, netd, "udp", INBOUND_PAGE, self.network_in_liststore)
922 def network_initial_data_insert(self, model, ports, portType, protocol): argument
929 def combo_set_active_text(self, combobox, val): argument
947 def combo_get_active_text(self, combobox): argument
955 def combo_box_add(self, val, val1): argument
958 iter = self.application_liststore.append()
959 self.application_liststore.set_value(iter, 0, val)
960 self.application_liststore.set_value(iter, 1, val1)
962 def select_type_more(self, *args): argument
963 app = self.moreTypes_treeview.get_selection()
967 app = self.more_types_files_liststore.get_value(iter, 0)
968 self.combo_set_active_text(self.files_type_combobox, app)
969 self.closewindow(self.moreTypes_window_files)
971 def advanced_item_button_push(self, *args): argument
972 row = self.advanced_search_treeview.get_selection()
975 iter = self.advanced_search_filter.convert_iter_to_child_iter(iter)
976 app = self.application_liststore.get_value(iter, 1)
979 self.advanced_filter_entry.set_text('')
980 self.advanced_search_window.hide()
981 self.reveal_advanced(self.main_advanced_label)
982 self.completion_entry.set_text(app)
984 def advanced_item_selected(self, treeview, path, *args): argument
985 iter = self.advanced_search_filter.get_iter(path)
986 iter = self.advanced_search_filter.convert_iter_to_child_iter(iter)
987 app = self.application_liststore.get_value(iter, 1)
988 self.advanced_filter_entry.set_text('')
989 self.advanced_search_window.hide()
990 self.reveal_advanced(self.main_advanced_label)
991 self.completion_entry.set_text(app)
992 self.application_selected()
994 def find_application(self, app): argument
996 for items in self.application_liststore:
1001 def application_selected(self, *args): argument
1002 self.show_mislabeled_files_only.set_visible(False)
1003 self.mislabeled_files_label.set_visible(False)
1004 self.warning_files.set_visible(False)
1005 self.filter_entry.set_text('')
1007 app = self.completion_entry.get_text()
1008 if not self.find_application(app):
1010 self.show_applications_page()
1011 self.add_button.set_sensitive(True)
1012 self.delete_button.set_sensitive(True)
1014 self.executable_files_liststore.clear()
1016 self.network_in_liststore.clear()
1017 self.network_out_liststore.clear()
1018 self.boolean_liststore.clear()
1019 self.transitions_into_liststore.clear()
1020 self.transitions_from_treestore.clear()
1021 self.application_files_liststore.clear()
1022 self.writable_files_liststore.clear()
1023 self.transitions_file_liststore.clear()
1030 self.application = app
1034 self.wait_mouse()
1035 self.previously_modified_initialize(self.dbus.customized())
1036 self.reinit()
1037 self.boolean_initialize(app)
1038 self.mislabeled_files = False
1039 self.executable_files_initialize(app)
1040 self.network_initialize(app)
1041 self.writable_files_initialize(app)
1042 self.transitions_into_initialize(app)
1043 self.transitions_from_initialize(app)
1044 self.application_files_initialize(app)
1045 self.transitions_files_initialize(app)
1047self.executable_files_tab.set_tooltip_text(_("File path used to enter the '%s' domain.") % app)
1048self.writable_files_tab.set_tooltip_text(_("Files to which the '%s' domain can write.") % app)
1049self.network_out_tab.set_tooltip_text(_("Network Ports to which the '%s' is allowed to connect.") …
1050self.network_in_tab.set_tooltip_text(_("Network Ports to which the '%s' is allowed to listen.") % …
1051 self.application_files_tab.set_tooltip_text(_("File Types defined for the '%s'.") % app)
1052self.boolean_radio_button.set_tooltip_text(_("Display boolean information that can be used to modi…
1053self.files_radio_button.set_tooltip_text(_("Display file type information that can be used by the …
1054self.network_radio_button.set_tooltip_text(_("Display network ports to which the '%s' can connect …
1055 self.transitions_into_tab.set_label(_("Application Transitions Into '%s'") % app)
1056 self.transitions_from_tab.set_label(_("Application Transitions From '%s'") % app)
1057 self.transitions_file_tab.set_label(_("File Transitions From '%s'") % app)
1058self.transitions_into_tab.set_tooltip_text(_("Executables which will transition to '%s', when exec…
1059self.transitions_from_tab.set_tooltip_text(_("Executables which will transition to a different dom…
1060self.transitions_file_tab.set_tooltip_text(_("Files by '%s' with transitions to a different label.…
1061self.transitions_radio_button.set_tooltip_text(_("Display applications that can transition into or…
1063 self.application = app
1064 self.applications_selection_button.set_label(self.application)
1065 self.ready_mouse()
1067 def reinit(self): argument
1069 self.fcdict = sepolicy.get_fcdict()
1070 self.local_file_paths = sepolicy.get_local_file_paths()
1072 def previously_modified_initialize(self, buf): argument
1073 self.cust_dict = {}
1080 if rec[0] not in self.cust_dict:
1081 self.cust_dict[rec[0]] = {}
1083 self.cust_dict["boolean"][rec[-1]] = {"active": rec[2] == "-1"}
1085 self.cust_dict["login"][rec[-1]] = {"seuser": rec[3], "range": rec[5]}
1087 self.cust_dict["interface"][rec[-1]] = {"type": rec[3]}
1089 self.cust_dict["user"][rec[-1]] = {"level": "s0", "range": rec[3], "role": rec[5]}
1091 self.cust_dict["port"][(rec[-1], rec[-2])] = {"type": rec[3]}
1093self.cust_dict["node"][rec[-1]] = {"mask": rec[3], "protocol": rec[5], "type": rec[7]}
1096 if "fcontext-equiv" not in self.cust_dict:
1097 self.cust_dict["fcontext-equiv"] = {}
1098 self.cust_dict["fcontext-equiv"][(rec[-1])] = {"equiv": rec[3]}
1100 self.cust_dict["fcontext"][(rec[-1], rec[3])] = {"type": rec[5]}
1102 self.cust_dict["module"][rec[-1]] = {"enabled": rec[2] != "-d"}
1104 if "module" not in self.cust_dict:
1106 …for semodule, button in [("unconfined", self.disable_unconfined_button), ("permissivedomains", sel…
1107 if semodule in self.cust_dict["module"]:
1108 button.set_active(self.cust_dict["module"][semodule]["enabled"])
1111 if i not in self.cust_dict:
1112 self.cust_dict.update({i: {}})
1114 def executable_files_initialize(self, application): argument
1115 self.entrypoints = sepolicy.get_entrypoints(application)
1116 for exe in self.entrypoints.keys():
1117 if len(self.entrypoints[exe]) == 0:
1119 file_class = self.entrypoints[exe][1]
1120 for path in self.entrypoints[exe][0]:
1121 if (path, file_class) in self.cur_dict["fcontext"]:
1122 if self.cur_dict["fcontext"][(path, file_class)]["action"] == "-d":
1124 if exe != self.cur_dict["fcontext"][(path, file_class)]["type"]:
1126self.files_initial_data_insert(self.executable_files_liststore, path, exe, file_class)
1128 def mislabeled(self, path): argument
1136 def set_mislabeled(self, tree, path, iter, niter): argument
1137 if not self.mislabeled(path):
1141 self.mislabeled_files = True
1150 def writable_files_initialize(self, application): argument
1152 self.writable_files = sepolicy.get_writable_files(application)
1153 for write in self.writable_files.keys():
1154 if len(self.writable_files[write]) < 2:
1155self.files_initial_data_insert(self.writable_files_liststore, None, write, _("all files"))
1157 file_class = self.writable_files[write][1]
1158 for path in self.writable_files[write][0]:
1159 if (path, file_class) in self.cur_dict["fcontext"]:
1160 if self.cur_dict["fcontext"][(path, file_class)]["action"] == "-d":
1162 if write != self.cur_dict["fcontext"][(path, file_class)]["type"]:
1164self.files_initial_data_insert(self.writable_files_liststore, path, write, file_class)
1166 def files_initial_data_insert(self, liststore, path, selinux_label, file_class): argument
1172 modify = (path, file_class) in self.local_file_paths
1176 self.set_mislabeled(liststore, p, iter, niter)
1178 path = self.markup(path)
1179 file_class = self.markup(selinux_label)
1180 file_class = self.markup(file_class)
1186 def markup(self, f): argument
1189 def unmarkup(self, f): argument
1194 def application_files_initialize(self, application): argument
1195 self.file_types = sepolicy.get_file_types(application)
1196 for app in self.file_types.keys():
1197 if len(self.file_types[app]) == 0:
1199 file_class = self.file_types[app][1]
1200 for path in self.file_types[app][0]:
1201 desc = sepolicy.get_description(app, markup=self.markup)
1202 if (path, file_class) in self.cur_dict["fcontext"]:
1203 if self.cur_dict["fcontext"][(path, file_class)]["action"] == "-d":
1205 if app != self.cur_dict["fcontext"][(path, file_class)]["type"]:
1207self.files_initial_data_insert(self.application_files_liststore, path, desc, file_class)
1209 def modified(self): argument
1211 for k in self.cur_dict:
1212 if len(self.cur_dict[k]) > 0:
1216 def boolean_initialize(self, application): argument
1219 if b in self.cur_dict["boolean"]:
1220 active = self.cur_dict["boolean"][b]['active']
1222 self.boolean_initial_data_insert(b, desc, active)
1224 def boolean_initial_data_insert(self, val, desc, active): argument
1226 iter = self.boolean_liststore.append()
1227 self.boolean_liststore.set_value(iter, 0, active)
1228 self.boolean_liststore.set_value(iter, 1, desc)
1229 self.boolean_liststore.set_value(iter, 2, val)
1230 self.boolean_liststore.set_value(iter, 3, _('More...'))
1232 def transitions_into_initialize(self, application): argument
1243 self.transitions_into_initial_data_insert(active, executable, source)
1245 def transitions_into_initial_data_insert(self, active, executable, source): argument
1246 iter = self.transitions_into_liststore.append()
1248self.transitions_into_liststore.set_value(iter, 0, enabled[active[0][1]]) # active[0][1] i…
1250 self.transitions_into_liststore.set_value(iter, 0, "Default")
1252 self.transitions_into_liststore.set_value(iter, 2, executable)
1253 self.transitions_into_liststore.set_value(iter, 1, source)
1255 def transitions_from_initialize(self, application): argument
1266 self.transitions_from_initial_data_insert(active, executable_type, transtype)
1268 for executable in self.fcdict[executable_type]["regex"]:
1269 self.transitions_from_initial_data_insert(active, executable, transtype)
1273 def transitions_from_initial_data_insert(self, active, executable, transtype): argument
1274 iter = self.transitions_from_treestore.append(None)
1276 self.transitions_from_treestore.set_value(iter, 0, "Default")
1277 self.transitions_from_treestore.set_value(iter, 5, False)
1279 niter = self.transitions_from_treestore.append(iter)
1281 self.transitions_from_treestore.set_value(iter, 0, enabled[active[0][1]])
1284self.transitions_from_treestore.set_value(niter, 2, (_("To disable this transition, go to the %sBo…
1286self.transitions_from_treestore.set_value(niter, 2, (_("To enable this transition, go to the %sBoo…
1289 self.transitions_from_treestore.set_value(niter, 1, active[0][0])
1290 self.transitions_from_treestore.set_value(niter, 5, True)
1292 self.transitions_from_treestore.set_value(iter, 2, executable)
1293 self.transitions_from_treestore.set_value(iter, 3, transtype)
1295 def transitions_files_initialize(self, application): argument
1301self.transitions_files_initial_data_insert(i['target'], i['class'], i['transtype'], filename)
1303 def transitions_files_initial_data_insert(self, path, tclass, dest, name): argument
1304 iter = self.transitions_file_liststore.append()
1305 self.transitions_file_liststore.set_value(iter, 0, path)
1306 self.transitions_file_liststore.set_value(iter, 1, tclass)
1307 self.transitions_file_liststore.set_value(iter, 2, dest)
1310 self.transitions_file_liststore.set_value(iter, 3, name)
1312 def tab_change(self, *args): argument
1313 self.clear_filters()
1314 self.treeview = None
1315 self.treesort = None
1316 self.treefilter = None
1317 self.liststore = None
1318 self.modify_button.set_sensitive(False)
1319 self.add_modify_delete_box.hide()
1320 self.show_modified_only.set_visible(False)
1321 self.show_mislabeled_files_only.set_visible(False)
1322 self.mislabeled_files_label.set_visible(False)
1323 self.warning_files.set_visible(False)
1325 if self.boolean_radio_button.get_active():
1326 self.outer_notebook.set_current_page(BOOLEANS_PAGE)
1327 self.treeview = self.boolean_treeview
1328 self.show_modified_only.set_visible(True)
1330 if self.files_radio_button.get_active():
1331 self.show_popup(self.add_modify_delete_box)
1332 self.show_modified_only.set_visible(True)
1333 self.show_mislabeled_files_only.set_visible(self.mislabeled_files)
1334 self.mislabeled_files_label.set_visible(self.mislabeled_files)
1335 self.warning_files.set_visible(self.mislabeled_files)
1336 self.outer_notebook.set_current_page(FILES_PAGE)
1337 if args[0] == self.inner_notebook_files:
1340 ipage = self.inner_notebook_files.get_current_page()
1342 self.treeview = self.executable_files_treeview
1345 self.treeview = self.writable_files_treeview
1348 self.treeview = self.application_files_treeview
1350self.add_button.set_tooltip_text(_("Add new %(TYPE)s file path for '%(DOMAIN)s' domains.") % {"TYP…
1351self.delete_button.set_tooltip_text(_("Delete %(TYPE)s file paths for '%(DOMAIN)s' domain.") % {"T…
1352self.modify_button.set_tooltip_text(_("Modify %(TYPE)s file path for '%(DOMAIN)s' domain. Only bol…
1354 if self.network_radio_button.get_active():
1355 self.add_modify_delete_box.show()
1356 self.show_modified_only.set_visible(True)
1357 self.outer_notebook.set_current_page(NETWORK_PAGE)
1358 if args[0] == self.inner_notebook_network:
1361 ipage = self.inner_notebook_network.get_current_page()
1363 self.treeview = self.network_out_treeview
1366 self.treeview = self.network_in_treeview
1369self.add_button.set_tooltip_text(_("Add new port definition to which the '%(APP)s' domain is allow…
1370self.delete_button.set_tooltip_text(_("Delete modified port definitions to which the '%(APP)s' dom…
1371self.modify_button.set_tooltip_text(_("Modify port definitions to which the '%(APP)s' domain is al…
1373 if self.transitions_radio_button.get_active():
1374 self.outer_notebook.set_current_page(TRANSITIONS_PAGE)
1375 if args[0] == self.inner_notebook_transitions:
1378 ipage = self.inner_notebook_transitions.get_current_page()
1380 self.treeview = self.transitions_from_treeview
1382 self.treeview = self.transitions_into_treeview
1384 self.treeview = self.transitions_file_treeview
1386 if self.system_radio_button.get_active():
1387 self.outer_notebook.set_current_page(SYSTEM_PAGE)
1388 self.filter_box.hide()
1390 if self.lockdown_radio_button.get_active():
1391 self.lockdown_init()
1392 self.outer_notebook.set_current_page(LOCKDOWN_PAGE)
1393 self.filter_box.hide()
1395 if self.user_radio_button.get_active():
1396 self.outer_notebook.set_current_page(USER_PAGE)
1397 self.add_modify_delete_box.show()
1398 self.show_modified_only.set_visible(True)
1399 self.treeview = self.user_treeview
1400 self.add_button.set_tooltip_text(_("Add new SELinux User/Role definition."))
1401 self.delete_button.set_tooltip_text(_("Delete modified SELinux User/Role definitions."))
1402self.modify_button.set_tooltip_text(_("Modify selected modified SELinux User/Role definitions."))
1404 if self.login_radio_button.get_active():
1405 self.outer_notebook.set_current_page(LOGIN_PAGE)
1406 self.add_modify_delete_box.show()
1407 self.show_modified_only.set_visible(True)
1408 self.treeview = self.login_treeview
1409 self.add_button.set_tooltip_text(_("Add new Login Mapping definition."))
1410 self.delete_button.set_tooltip_text(_("Delete modified Login Mapping definitions."))
1411self.modify_button.set_tooltip_text(_("Modify selected modified Login Mapping definitions."))
1413 if self.file_equiv_radio_button.get_active():
1414 self.outer_notebook.set_current_page(FILE_EQUIV_PAGE)
1415 self.add_modify_delete_box.show()
1416 self.show_modified_only.set_visible(True)
1417 self.treeview = self.file_equiv_treeview
1418 self.add_button.set_tooltip_text(_("Add new File Equivalence definition."))
1419 self.delete_button.set_tooltip_text(_("Delete modified File Equivalence definitions."))
1420self.modify_button.set_tooltip_text(_("Modify selected modified File Equivalence definitions. Only…
1422 self.opage = self.outer_notebook.get_current_page()
1423 if self.treeview:
1424 self.filter_box.show()
1425 self.treesort = self.treeview.get_model()
1426 self.treefilter = self.treesort.get_model()
1427 self.liststore = self.treefilter.get_model()
1428 for x in range(0, self.liststore.get_n_columns()):
1429 col = self.treeview.get_column(x)
1433 self.liststore.set_sort_func(x, self.stripsort, None)
1434 self.treeview.get_selection().unselect_all()
1435 self.modify_button.set_sensitive(False)
1437 def stripsort(self, model, row1, row2, user_data): argument
1439 val1 = self.unmarkup(model.get_value(row1, sort_column))
1440 val2 = self.unmarkup(model.get_value(row2, sort_column))
1443 def display_more_detail(self, windows, path): argument
1444 it = self.boolean_filter.get_iter(path)
1445 it = self.boolean_filter.convert_iter_to_child_iter(it)
1447 self.boolean_more_detail_tree_data_set.clear()
1448self.boolean_more_detail_window.set_title(_("Boolean %s Allow Rules") % self.boolean_liststore.get…
1449 … blist = sepolicy.get_boolean_rules(self.application, self.boolean_liststore.get_value(it, 2))
1451 self.display_more_detail_init(b["source"], b["target"], b["class"], b["permlist"])
1452 self.show_popup(self.boolean_more_detail_window)
1454 def display_more_detail_init(self, source, target, class_type, permission): argument
1455 iter = self.boolean_more_detail_tree_data_set.append()
1456self.boolean_more_detail_tree_data_set.set_value(iter, 0, "allow %s %s:%s { %s };" % (source, targ…
1458 def add_button_clicked(self, *args): argument
1459 self.modify = False
1460 if self.opage == NETWORK_PAGE:
1461self.popup_network_label.set_text((_("Add Network Port for %s. Ports will be created when update …
1462 self.network_popup_window.set_title((_("Add Network Port for %s")) % self.application)
1463 self.init_network_dialog(args)
1466 if self.opage == FILES_PAGE:
1467self.popup_files_label.set_text((_("Add File Labeling for %s. File labels will be created when upd…
1468 self.files_popup_window.set_title((_("Add File Labeling for %s")) % self.application)
1469 self.init_files_dialog(args)
1470 ipage = self.inner_notebook_files.get_current_page()
1472 self.files_path_entry.set_text("ex: /usr/sbin/Foobar")
1474 self.files_path_entry.set_text("ex: /var/lib/Foobar")
1475 self.clear_entry = True
1477 if self.opage == LOGIN_PAGE:
1478self.login_label.set_text((_("Add Login Mapping. User Mapping will be created when Update is appli…
1479 self.login_popup_window.set_title(_("Add Login Mapping"))
1480 self.login_init_dialog(args)
1481 self.clear_entry = True
1483 if self.opage == USER_PAGE:
1484self.user_label.set_text((_("Add SELinux User Role. SELinux user roles will be created when update…
1485 self.user_popup_window.set_title(_("Add SELinux Users"))
1486 self.user_init_dialog(args)
1487 self.clear_entry = True
1489 if self.opage == FILE_EQUIV_PAGE:
1490 self.file_equiv_source_entry.set_text("")
1491 self.file_equiv_dest_entry.set_text("")
1492self.file_equiv_label.set_text((_("Add File Equivalency Mapping. Mapping will be created when upda…
1493 self.file_equiv_popup_window.set_title(_("Add SELinux File Equivalency"))
1494 self.clear_entry = True
1495 self.show_popup(self.file_equiv_popup_window)
1497 self.new_updates()
1499 def show_popup(self, window): argument
1500 self.current_popup = window
1503 def close_popup(self, *args): argument
1504 self.current_popup.hide()
1505 self.window.set_sensitive(True)
1508 def modify_button_clicked(self, *args): argument
1510 if self.treeview:
1511 iter = self.get_selected_iter()
1513 self.modify_button.set_sensitive(False)
1515 self.modify = True
1516 if self.opage == NETWORK_PAGE:
1517 self.modify_button_network_clicked(args)
1519 if self.opage == FILES_PAGE:
1520self.popup_files_label.set_text((_("Modify File Labeling for %s. File labels will be created when …
1521 self.files_popup_window.set_title((_("Add File Labeling for %s")) % self.application)
1522 self.delete_old_item = None
1523 self.init_files_dialog(args)
1524 self.modify = True
1527 ipage = self.inner_notebook_files.get_current_page()
1530 iter = self.executable_files_filter.convert_iter_to_child_iter(iter)
1531 self.delete_old_item = iter
1532 path = self.executable_files_liststore.get_value(iter, 0)
1533 self.files_path_entry.set_text(path)
1534 ftype = self.executable_files_liststore.get_value(iter, 1)
1536 self.combo_set_active_text(self.files_type_combobox, ftype)
1537 tclass = self.executable_files_liststore.get_value(iter, 2)
1539 self.combo_set_active_text(self.files_class_combobox, tclass)
1542 iter = self.writable_files_filter.convert_iter_to_child_iter(iter)
1543 self.delete_old_item = iter
1544 path = self.writable_files_liststore.get_value(iter, 0)
1545 self.files_path_entry.set_text(path)
1546 type = self.writable_files_liststore.get_value(iter, 1)
1548 self.combo_set_active_text(self.files_type_combobox, type)
1549 tclass = self.writable_files_liststore.get_value(iter, 2)
1551 self.combo_set_active_text(self.files_class_combobox, tclass)
1554 iter = self.application_files_filter.convert_iter_to_child_iter(iter)
1555 self.delete_old_item = iter
1556 path = self.application_files_liststore.get_value(iter, 0)
1557 self.files_path_entry.set_text(path)
1559 get_type = self.application_files_liststore.get_value(iter, 1)
1563 type = self.application_files_liststore.get_value(iter, 2)
1565 self.combo_set_active_text(self.files_type_combobox, type)
1568 self.combo_set_active_text(self.files_class_combobox, tclass)
1570 if self.opage == USER_PAGE:
1571 self.user_init_dialog(args)
1572 self.user_name_entry.set_text(self.user_liststore.get_value(iter, 0))
1573 self.user_mls_level_entry.set_text(self.user_liststore.get_value(iter, 2))
1574 self.user_mls_entry.set_text(self.user_liststore.get_value(iter, 3))
1575self.combo_set_active_text(self.user_roles_combobox, self.user_liststore.get_value(iter, 1))
1576self.user_label.set_text((_("Modify SELinux User Role. SELinux user roles will be modified when up…
1577 self.user_popup_window.set_title(_("Modify SELinux Users"))
1578 self.show_popup(self.user_popup_window)
1580 if self.opage == LOGIN_PAGE:
1581 self.login_init_dialog(args)
1582 self.login_name_entry.set_text(self.login_liststore.get_value(iter, 0))
1583 self.login_mls_entry.set_text(self.login_liststore.get_value(iter, 2))
1584self.combo_set_active_text(self.login_seuser_combobox, self.login_liststore.get_value(iter, 1))
1585self.login_label.set_text((_("Modify Login Mapping. Login Mapping will be modified when Update is …
1586 self.login_popup_window.set_title(_("Modify Login Mapping"))
1587 self.show_popup(self.login_popup_window)
1589 if self.opage == FILE_EQUIV_PAGE:
1590self.file_equiv_source_entry.set_text(self.unmarkup(self.file_equiv_liststore.get_value(iter, 0)))
1591self.file_equiv_dest_entry.set_text(self.unmarkup(self.file_equiv_liststore.get_value(iter, 1)))
1592self.file_equiv_label.set_text((_("Modify File Equivalency Mapping. Mapping will be created when u…
1593 self.file_equiv_popup_window.set_title(_("Modify SELinux File Equivalency"))
1594 self.clear_entry = True
1595 self.show_popup(self.file_equiv_popup_window)
1597 def populate_type_combo(self, tree, loc, *args): argument
1598 iter = self.more_types_files_liststore.get_iter(loc)
1599 ftype = self.more_types_files_liststore.get_value(iter, 0)
1600 self.combo_set_active_text(self.files_type_combobox, ftype)
1601 self.show_popup(self.files_popup_window)
1602 self.moreTypes_window_files.hide()
1604 def strip_domain(self, domain): argument
1613 def exclude_type(self, type, exclude_list): argument
1619 def init_files_dialog(self, *args): argument
1621 self.files_class_combobox.set_sensitive(True)
1622 self.show_popup(self.files_popup_window)
1623 ipage = self.inner_notebook_files.get_current_page()
1624 self.files_type_combolist.clear()
1625 self.files_class_combolist.clear()
1626 compare = self.strip_domain(self.application)
1627 for d in self.application_liststore:
1628 … if d[0].startswith(compare) and d[0] != self.application and not d[0].startswith("httpd_sys"):
1629 exclude_list.append(self.strip_domain(d[0]))
1631 self.more_types_files_liststore.clear()
1634 iter = self.files_class_combolist.append()
1635 self.files_class_combolist.set_value(iter, 0, sepolicy.file_type_str[files])
1637 if ipage == EXE_PAGE and self.entrypoints != None:
1638 for exe in self.entrypoints.keys():
1640 iter = self.files_type_combolist.append()
1641 self.files_type_combolist.set_value(iter, 0, exe)
1642 iter = self.more_types_files_liststore.append()
1643 self.more_types_files_liststore.set_value(iter, 0, exe)
1644 self.files_class_combobox.set_active(4)
1645 self.files_class_combobox.set_sensitive(False)
1647 elif ipage == WRITABLE_PAGE and self.writable_files != None:
1648 for write in self.writable_files.keys():
1649 …if write.startswith(compare) and not self.exclude_type(write, exclude_list) and write in self.file…
1650 iter = self.files_type_combolist.append()
1651 self.files_type_combolist.set_value(iter, 0, write)
1652 iter = self.more_types_files_liststore.append()
1653 self.more_types_files_liststore.set_value(iter, 0, write)
1654 self.files_class_combobox.set_active(0)
1655 elif ipage == APP_PAGE and self.file_types != None:
1658 if app.startswith(compare) and not self.exclude_type(app, exclude_list):
1659 iter = self.files_type_combolist.append()
1660 self.files_type_combolist.set_value(iter, 0, app)
1661 iter = self.more_types_files_liststore.append()
1662 self.more_types_files_liststore.set_value(iter, 0, app)
1663 self.files_class_combobox.set_active(0)
1667 self.files_type_combobox.set_active(0)
1668 self.files_mls_entry.set_text("s0")
1669 iter = self.files_type_combolist.append()
1670 self.files_type_combolist.set_value(iter, 0, _('More...'))
1672 def modify_button_network_clicked(self, *args): argument
1673 iter = self.get_selected_iter()
1675 self.modify_button.set_sensitive(False)
1678self.popup_network_label.set_text((_("Modify Network Port for %s. Ports will be created when upda…
1679 self.network_popup_window.set_title((_("Modify Network Port for %s")) % self.application)
1680 self.delete_old_item = None
1681 self.init_network_dialog(args)
1684 self.modify = True
1685 iter = self.get_selected_iter()
1686 port = self.liststore.get_value(iter, 0)
1687 self.network_ports_entry.set_text(port)
1688 protocol = self.liststore.get_value(iter, 1)
1690 self.network_tcp_button.set_active(True)
1692 self.network_udp_button.set_active(True)
1693 type = self.liststore.get_value(iter, 2)
1695 self.combo_set_active_text(self.network_port_type_combobox, type)
1696 self.delete_old_item = iter
1698 def init_network_dialog(self, *args): argument
1699 self.show_popup(self.network_popup_window)
1700 ipage = self.inner_notebook_network.get_current_page()
1701 self.network_port_type_combolist.clear()
1702 self.network_ports_entry.set_text("")
1706 …netd = sepolicy.network.get_network_connect(self.application, "tcp", "name_connect", check_bools=T…
1708 …netd = sepolicy.network.get_network_connect(self.application, "tcp", "name_bind", check_bools=True)
1709 …netd += sepolicy.network.get_network_connect(self.application, "udp", "name_bind", check_bools=Tru…
1721 short_domain = self.strip_domain(self.application)
1730 iter = self.network_port_type_combolist.append()
1731 self.network_port_type_combolist.set_value(iter, 0, t)
1733 self.network_port_type_combobox.set_active(found)
1738 self.network_tcp_button.set_active(True)
1739 self.network_mls_entry.set_text("s0")
1741 def login_seuser_combobox_change(self, combo, *args): argument
1742 seuser = self.combo_get_active_text(combo)
1743 if self.login_mls_entry.get_text() == "":
1746 self.login_mls_entry.set_text(u.get('range', ''))
1748 def user_roles_combobox_change(self, combo, *args): argument
1749 serole = self.combo_get_active_text(combo)
1750 if self.user_mls_entry.get_text() == "":
1753 self.user_mls_entry.set_text(u.get('range', ''))
1755 def get_selected_iter(self): argument
1757 if not self.treeview:
1759 row = self.treeview.get_selection()
1766 iter = self.treefilter.convert_iter_to_child_iter(iter)
1769 def cursor_changed(self, *args): argument
1770 self.modify_button.set_sensitive(False)
1771 iter = self.get_selected_iter()
1773 self.modify_button.set_sensitive(False)
1775 if not self.liststore[iter] or not self.liststore[iter][-1]:
1777 self.modify_button.set_sensitive(self.liststore[iter][-1])
1779 def login_init_dialog(self, *args): argument
1780 self.show_popup(self.login_popup_window)
1781 self.login_seuser_combolist.clear()
1785 iter = self.login_seuser_combolist.append()
1786 self.login_seuser_combolist.set_value(iter, 0, str(u))
1787 self.login_name_entry.set_text("")
1788 self.login_mls_entry.set_text("")
1790 def user_init_dialog(self, *args): argument
1791 self.show_popup(self.user_popup_window)
1792 self.user_roles_combolist.clear()
1796 iter = self.user_roles_combolist.append()
1797 self.user_roles_combolist.set_value(iter, 0, str(r))
1798 self.user_name_entry.set_text("")
1799 self.user_mls_entry.set_text("")
1801 def on_disable_ptrace(self, checkbutton): argument
1802 if self.finish_init:
1804 self.wait_mouse()
1806 self.dbus.semanage(update_buffer)
1808 self.error(e)
1809 self.ready_mouse()
1811 def on_show_modified_only(self, checkbutton): argument
1812 length = self.liststore.get_n_columns()
1821 if self.opage == BOOLEANS_PAGE:
1823 return self.boolean_initialize(self.application)
1825 for row in self.liststore:
1826 if row[2] in self.cust_dict["boolean"]:
1829 if self.opage == FILES_PAGE:
1830 ipage = self.inner_notebook_files.get_current_page()
1833 return self.executable_files_initialize(self.application)
1835 return self.writable_files_initialize(self.application)
1837 return self.application_files_initialize(self.application)
1838 for row in self.liststore:
1839 if (row[0], row[2]) in self.cust_dict["fcontext"]:
1842 if self.opage == NETWORK_PAGE:
1844 return self.network_initialize(self.application)
1845 for row in self.liststore:
1846 if (row[0], row[1]) in self.cust_dict["port"]:
1849 if self.opage == FILE_EQUIV_PAGE:
1851 return self.file_equiv_initialize()
1853 for row in self.liststore:
1854 if row[0] in self.cust_dict["fcontext-equiv"]:
1857 if self.opage == USER_PAGE:
1859 return self.user_initialize()
1861 for row in self.liststore:
1862 if row[0] in self.cust_dict["user"]:
1865 if self.opage == LOGIN_PAGE:
1867 return self.login_initialize()
1869 for row in self.liststore:
1870 if row[0] in self.cust_dict["login"]:
1873 self.liststore.clear()
1875 iter = self.liststore.append()
1877 self.liststore.set_value(iter, i, row[i])
1879 def init_modified_files_liststore(self, tree, app, ipage, operation, path, fclass, ftype): argument
1885 def restore_to_default(self, *args): argument
1888 def invalid_entry_retry(self, *args): argument
1889 self.closewindow(self.error_check_window)
1890 self.files_popup_window.set_sensitive(True)
1891 self.network_popup_window.set_sensitive(True)
1893 def error_check_files(self, insert_txt): argument
1895 self.error_check_window.show()
1896 self.files_popup_window.set_sensitive(False)
1897 self.network_popup_window.set_sensitive(False)
1898self.error_check_label.set_text((_("The entry '%s' is not a valid path. Paths must begin with a '…
1902 def error_check_network(self, port): argument
1908 self.error_check_window.show()
1909 self.files_popup_window.set_sensitive(False)
1910 self.network_popup_window.set_sensitive(False)
1911 self.error_check_label.set_text((_("Port number must be between 1 and 65536")))
1915 def show_more_types(self, *args): argument
1916 if self.finish_init:
1917 if self.combo_get_active_text(self.files_type_combobox) == _('More...'):
1918 self.files_popup_window.hide()
1919 self.moreTypes_window_files.show()
1921 def update_to_login(self, *args): argument
1922 self.close_popup()
1923 seuser = self.combo_get_active_text(self.login_seuser_combobox)
1924 mls_range = self.login_mls_entry.get_text()
1925 name = self.login_name_entry.get_text()
1926 if self.modify:
1927 iter = self.get_selected_iter()
1928 oldname = self.login_liststore.get_value(iter, 0)
1929 oldseuser = self.login_liststore.get_value(iter, 1)
1930 oldrange = self.login_liststore.get_value(iter, 2)
1931 self.liststore.set_value(iter, 0, oldname)
1932 self.liststore.set_value(iter, 1, oldseuser)
1933 self.liststore.set_value(iter, 2, oldrange)
1934self.cur_dict["login"][name] = {"action": "-m", "range": mls_range, "seuser": seuser, "oldrange": …
1936 iter = self.liststore.append(None)
1937 self.cur_dict["login"][name] = {"action": "-a", "range": mls_range, "seuser": seuser}
1939 self.liststore.set_value(iter, 0, name)
1940 self.liststore.set_value(iter, 1, seuser)
1941 self.liststore.set_value(iter, 2, mls_range)
1943 self.new_updates()
1945 def update_to_user(self, *args): argument
1946 self.close_popup()
1947 roles = self.combo_get_active_text(self.user_roles_combobox)
1948 level = self.user_mls_level_entry.get_text()
1949 mls_range = self.user_mls_entry.get_text()
1950 name = self.user_name_entry.get_text()
1951 if self.modify:
1952 iter = self.get_selected_iter()
1953 oldname = self.user_liststore.get_value(iter, 0)
1954 oldroles = self.user_liststore.get_value(iter, 1)
1955 oldlevel = self.user_liststore.get_value(iter, 1)
1956 oldrange = self.user_liststore.get_value(iter, 3)
1957 self.liststore.set_value(iter, 0, oldname)
1958 self.liststore.set_value(iter, 1, oldroles)
1959 self.liststore.set_value(iter, 2, oldlevel)
1960 self.liststore.set_value(iter, 3, oldrange)
1961self.cur_dict["user"][name] = {"action": "-m", "range": mls_range, "level": level, "role": roles, …
1963 iter = self.liststore.append(None)
1965self.cur_dict["user"][name] = {"action": "-a", "range": mls_range, "level": level, "role": roles}
1967 self.cur_dict["user"][name] = {"action": "-a", "role": roles}
1969 self.liststore.set_value(iter, 0, name)
1970 self.liststore.set_value(iter, 1, roles)
1971 self.liststore.set_value(iter, 2, level)
1972 self.liststore.set_value(iter, 3, mls_range)
1974 self.new_updates()
1976 def update_to_file_equiv(self, *args): argument
1977 self.close_popup()
1978 dest = self.file_equiv_dest_entry.get_text()
1979 src = self.file_equiv_source_entry.get_text()
1980 if self.modify:
1981 iter = self.get_selected_iter()
1982 olddest = self.unmarkup(self.liststore.set_value(iter, 0))
1983 oldsrc = self.unmarkup(self.liststore.set_value(iter, 1))
1984self.cur_dict["fcontext-equiv"][dest] = {"action": "-m", "src": src, "oldsrc": oldsrc, "olddest": …
1986 iter = self.liststore.append(None)
1987 self.cur_dict["fcontext-equiv"][dest] = {"action": "-a", "src": src}
1988 self.liststore.set_value(iter, 0, self.markup(dest))
1989 self.liststore.set_value(iter, 1, self.markup(src))
1991 def update_to_files(self, *args): argument
1992 self.close_popup()
1993 self.files_add = True
1995 path = self.files_path_entry.get_text()
1996 if self.error_check_files(path):
1999 setype = self.combo_get_active_text(self.files_type_combobox)
2000 mls = self.files_mls_entry.get_text()
2001 tclass = self.combo_get_active_text(self.files_class_combobox)
2003 if self.modify:
2004 iter = self.get_selected_iter()
2005 oldpath = self.unmark(self.liststore.get_value(iter, 0))
2006 oldsetype = self.unmark(self.liststore.set_value(iter, 1))
2007 oldtclass = self.liststore.get_value(iter, 2)
2008self.cur_dict["fcontext"][(path, tclass)] = {"action": "-m", "type": setype, "oldtype": oldsetype,…
2010 iter = self.liststore.append(None)
2011 self.cur_dict["fcontext"][(path, tclass)] = {"action": "-a", "type": setype}
2012 self.liststore.set_value(iter, 0, self.markup(path))
2013 self.liststore.set_value(iter, 1, self.markup(setype))
2014 self.liststore.set_value(iter, 2, self.markup(tclass))
2016 self.files_add = False
2017 self.recursive_path_toggle.set_active(False)
2018 self.new_updates()
2020 def update_to_network(self, *args): argument
2021 self.network_add = True
2022 ports = self.network_ports_entry.get_text()
2023 if self.error_check_network(ports):
2025 if self.network_tcp_button.get_active():
2030 setype = self.combo_get_active_text(self.network_port_type_combobox)
2031 mls = self.network_mls_entry.get_text()
2033 if self.modify:
2034 iter = self.get_selected_iter()
2035 oldports = self.unmark(self.liststore.get_value(iter, 0))
2036 oldprotocol = self.unmark(self.liststore.get_value(iter, 1))
2037 oldsetype = self.unmark(self.liststore.set_value(iter, 2))
2038self.cur_dict["port"][(ports, protocol)] = {"action": "-m", "type": setype, "mls": mls, "oldtype":…
2040 iter = self.liststore.append(None)
2041 self.cur_dict["port"][(ports, protocol)] = {"action": "-a", "type": setype, "mls": mls}
2042 self.liststore.set_value(iter, 0, ports)
2043 self.liststore.set_value(iter, 1, protocol)
2044 self.liststore.set_value(iter, 2, setype)
2046 self.network_add = False
2047 self.network_popup_window.hide()
2048 self.window.set_sensitive(True)
2049 self.new_updates()
2051 def delete_button_clicked(self, *args): argument
2053 self.window.set_sensitive(False)
2054 if self.opage == NETWORK_PAGE:
2055 self.network_delete_liststore.clear()
2056 port_dict = self.cust_dict["port"]
2059 iter = self.network_delete_liststore.append()
2060 self.network_delete_liststore.set_value(iter, 1, ports)
2061 self.network_delete_liststore.set_value(iter, 2, protocol)
2062 self.network_delete_liststore.set_value(iter, 3, setype)
2063 self.show_popup(self.network_delete_window)
2066 if self.opage == FILES_PAGE:
2067 self.files_delete_liststore.clear()
2068 fcontext_dict = self.cust_dict["fcontext"]
2071 iter = self.files_delete_liststore.append()
2072 self.files_delete_liststore.set_value(iter, 1, path)
2073 self.files_delete_liststore.set_value(iter, 2, setype)
2074 self.files_delete_liststore.set_value(iter, 3, sepolicy.file_type_str[tclass])
2075 self.show_popup(self.files_delete_window)
2078 if self.opage == USER_PAGE:
2079 self.user_delete_liststore.clear()
2080 user_dict = self.cust_dict["user"]
2085 iter = self.user_delete_liststore.append()
2086 self.user_delete_liststore.set_value(iter, 1, user)
2087 self.user_delete_liststore.set_value(iter, 2, roles)
2088 self.user_delete_liststore.set_value(iter, 3, level)
2089 self.user_delete_liststore.set_value(iter, 4, mls)
2090 self.show_popup(self.user_delete_window)
2093 if self.opage == LOGIN_PAGE:
2094 self.login_delete_liststore.clear()
2095 login_dict = self.cust_dict["login"]
2099 iter = self.login_delete_liststore.append()
2100 self.login_delete_liststore.set_value(iter, 1, seuser)
2101 self.login_delete_liststore.set_value(iter, 2, login)
2102 self.login_delete_liststore.set_value(iter, 3, mls)
2103 self.show_popup(self.login_delete_window)
2106 if self.opage == FILE_EQUIV_PAGE:
2107 self.file_equiv_delete_liststore.clear()
2108 for items in self.file_equiv_liststore:
2110 iter = self.file_equiv_delete_liststore.append()
2111 self.file_equiv_delete_liststore.set_value(iter, 1, self.unmarkup(items[0]))
2112 self.file_equiv_delete_liststore.set_value(iter, 2, self.unmarkup(items[1]))
2113 self.show_popup(self.file_equiv_delete_window)
2116 def on_save_delete_clicked(self, *args): argument
2117 self.close_popup()
2118 if self.opage == NETWORK_PAGE:
2119 for delete in self.network_delete_liststore:
2121self.cur_dict["port"][(delete[1], delete[2])] = {"action": "-d", "type": delete[3]}
2122 if self.opage == FILES_PAGE:
2123 for delete in self.files_delete_liststore:
2125self.cur_dict["fcontext"][(delete[1], reverse_file_type_str[delete[3]])] = {"action": "-d", "type"…
2126 if self.opage == USER_PAGE:
2127 for delete in self.user_delete_liststore:
2129self.cur_dict["user"][delete[1]] = {"action": "-d", "role": delete[2], "range": delete[4]}
2130 if self.opage == LOGIN_PAGE:
2131 for delete in self.login_delete_liststore:
2133self.cur_dict["login"][delete[2]] = {"action": "-d", "login": delete[2], "seuser": delete[1], "ran…
2134 if self.opage == FILE_EQUIV_PAGE:
2135 for delete in self.file_equiv_delete_liststore:
2137 self.cur_dict["fcontext-equiv"][delete[1]] = {"action": "-d", "src": delete[2]}
2138 self.new_updates()
2140 def on_save_delete_file_equiv_clicked(self, *args): argument
2141 for delete in self.files_delete_liststore:
2144 def on_toggle_update(self, cell, path, model): argument
2147 def ipage_delete(self, liststore, key): argument
2156 def on_toggle(self, cell, path, model): argument
2159 iter = self.boolean_filter.get_iter(path)
2160 iter = self.boolean_filter.convert_iter_to_child_iter(iter)
2164 if name in self.cur_dict["boolean"]:
2165 del self.cur_dict["boolean"][name]
2167 self.cur_dict["boolean"][name] = {"active": active}
2168 self.new_updates()
2170 def get_advanced_filter_data(self, entry, *args): argument
2171 self.filter_txt = entry.get_text()
2172 self.advanced_search_filter.refilter()
2174 def get_filter_data(self, windows, *args): argument
2177 self.filter_txt = windows.get_text()
2178 self.treefilter.refilter()
2180 def update_gui(self, *args): argument
2181 self.update = True
2182 self.update_treestore.clear()
2183 for bools in self.cur_dict["boolean"]:
2184 operation = self.cur_dict["boolean"][bools]["action"]
2185 iter = self.update_treestore.append(None)
2186 self.update_treestore.set_value(iter, 0, True)
2187 self.update_treestore.set_value(iter, 1, sepolicy.boolean_desc(bools))
2188self.update_treestore.set_value(iter, 2, action[self.cur_dict["boolean"][bools]['active']])
2189 self.update_treestore.set_value(iter, 3, True)
2190 niter = self.update_treestore.append(iter)
2191 self.update_treestore.set_value(niter, 1, (_("SELinux name: %s")) % bools)
2192 self.update_treestore.set_value(niter, 3, False)
2194 for path, tclass in self.cur_dict["fcontext"]:
2195 operation = self.cur_dict["fcontext"][(path, tclass)]["action"]
2196 setype = self.cur_dict["fcontext"][(path, tclass)]["type"]
2197 iter = self.update_treestore.append(None)
2198 self.update_treestore.set_value(iter, 0, True)
2199 self.update_treestore.set_value(iter, 2, operation)
2200 self.update_treestore.set_value(iter, 0, True)
2202self.update_treestore.set_value(iter, 1, (_("Add file labeling for %s")) % self.application)
2204self.update_treestore.set_value(iter, 1, (_("Delete file labeling for %s")) % self.application)
2206self.update_treestore.set_value(iter, 1, (_("Modify file labeling for %s")) % self.application)
2208 niter = self.update_treestore.append(iter)
2209 self.update_treestore.set_value(niter, 3, False)
2210 self.update_treestore.set_value(niter, 1, (_("File path: %s")) % path)
2211 niter = self.update_treestore.append(iter)
2212 self.update_treestore.set_value(niter, 3, False)
2213self.update_treestore.set_value(niter, 1, (_("File class: %s")) % sepolicy.file_type_str[tclass])
2214 niter = self.update_treestore.append(iter)
2215 self.update_treestore.set_value(niter, 3, False)
2216 self.update_treestore.set_value(niter, 1, (_("SELinux file type: %s")) % setype)
2218 for port, protocol in self.cur_dict["port"]:
2219 operation = self.cur_dict["port"][(port, protocol)]["action"]
2220 iter = self.update_treestore.append(None)
2221 self.update_treestore.set_value(iter, 0, True)
2222 self.update_treestore.set_value(iter, 2, operation)
2223 self.update_treestore.set_value(iter, 3, True)
2225 self.update_treestore.set_value(iter, 1, (_("Add ports for %s")) % self.application)
2227self.update_treestore.set_value(iter, 1, (_("Delete ports for %s")) % self.application)
2229self.update_treestore.set_value(iter, 1, (_("Modify ports for %s")) % self.application)
2231 niter = self.update_treestore.append(iter)
2232 self.update_treestore.set_value(niter, 1, (_("Network ports: %s")) % port)
2233 self.update_treestore.set_value(niter, 3, False)
2234 niter = self.update_treestore.append(iter)
2235 self.update_treestore.set_value(niter, 1, (_("Network protocol: %s")) % protocol)
2236 self.update_treestore.set_value(niter, 3, False)
2237 setype = self.cur_dict["port"][(port, protocol)]["type"]
2238 niter = self.update_treestore.append(iter)
2239 self.update_treestore.set_value(niter, 3, False)
2240 self.update_treestore.set_value(niter, 1, (_("SELinux file type: %s")) % setype)
2242 for user in self.cur_dict["user"]:
2243 operation = self.cur_dict["user"][user]["action"]
2244 iter = self.update_treestore.append(None)
2245 self.update_treestore.set_value(iter, 0, True)
2246 self.update_treestore.set_value(iter, 2, operation)
2247 self.update_treestore.set_value(iter, 0, True)
2249 self.update_treestore.set_value(iter, 1, _("Add user"))
2251 self.update_treestore.set_value(iter, 1, _("Delete user"))
2253 self.update_treestore.set_value(iter, 1, _("Modify user"))
2255 niter = self.update_treestore.append(iter)
2256 self.update_treestore.set_value(niter, 1, (_("SELinux User : %s")) % user)
2257 self.update_treestore.set_value(niter, 3, False)
2258 niter = self.update_treestore.append(iter)
2259 self.update_treestore.set_value(niter, 3, False)
2260 roles = self.cur_dict["user"][user]["role"]
2261 self.update_treestore.set_value(niter, 1, (_("Roles: %s")) % roles)
2262 mls = self.cur_dict["user"][user].get("range", "")
2263 niter = self.update_treestore.append(iter)
2264 self.update_treestore.set_value(niter, 3, False)
2265 self.update_treestore.set_value(niter, 1, _("MLS/MCS Range: %s") % mls)
2267 for login in self.cur_dict["login"]:
2268 operation = self.cur_dict["login"][login]["action"]
2269 iter = self.update_treestore.append(None)
2270 self.update_treestore.set_value(iter, 0, True)
2271 self.update_treestore.set_value(iter, 2, operation)
2272 self.update_treestore.set_value(iter, 0, True)
2274 self.update_treestore.set_value(iter, 1, _("Add login mapping"))
2276 self.update_treestore.set_value(iter, 1, _("Delete login mapping"))
2278 self.update_treestore.set_value(iter, 1, _("Modify login mapping"))
2280 niter = self.update_treestore.append(iter)
2281 self.update_treestore.set_value(niter, 3, False)
2282 self.update_treestore.set_value(niter, 1, (_("Login Name : %s")) % login)
2283 niter = self.update_treestore.append(iter)
2284 self.update_treestore.set_value(niter, 3, False)
2285 seuser = self.cur_dict["login"][login]["seuser"]
2286 self.update_treestore.set_value(niter, 1, (_("SELinux User: %s")) % seuser)
2287 mls = self.cur_dict["login"][login].get("range", "")
2288 niter = self.update_treestore.append(iter)
2289 self.update_treestore.set_value(niter, 3, False)
2290 self.update_treestore.set_value(niter, 1, _("MLS/MCS Range: %s") % mls)
2292 for path in self.cur_dict["fcontext-equiv"]:
2293 operation = self.cur_dict["fcontext-equiv"][path]["action"]
2294 iter = self.update_treestore.append(None)
2295 self.update_treestore.set_value(iter, 0, True)
2296 self.update_treestore.set_value(iter, 2, operation)
2297 self.update_treestore.set_value(iter, 0, True)
2299 self.update_treestore.set_value(iter, 1, (_("Add file equiv labeling.")))
2301 self.update_treestore.set_value(iter, 1, (_("Delete file equiv labeling.")))
2303 self.update_treestore.set_value(iter, 1, (_("Modify file equiv labeling.")))
2305 niter = self.update_treestore.append(iter)
2306 self.update_treestore.set_value(niter, 3, False)
2307 self.update_treestore.set_value(niter, 1, (_("File path : %s")) % path)
2308 niter = self.update_treestore.append(iter)
2309 self.update_treestore.set_value(niter, 3, False)
2310 src = self.cur_dict["fcontext-equiv"][path]["src"]
2311 self.update_treestore.set_value(niter, 1, (_("Equivalence: %s")) % src)
2313 self.show_popup(self.update_window)
2315 def set_active_application_button(self): argument
2316 if self.boolean_radio_button.get_active():
2317 self.active_button = self.boolean_radio_button
2318 if self.files_radio_button.get_active():
2319 self.active_button = self.files_radio_button
2320 if self.transitions_radio_button.get_active():
2321 self.active_button = self.transitions_radio_button
2322 if self.network_radio_button.get_active():
2323 self.active_button = self.network_radio_button
2325 def clearbuttons(self, clear=True): argument
2326 self.main_selection_popover.hide()
2327 self.boolean_radio_button.set_visible(False)
2328 self.files_radio_button.set_visible(False)
2329 self.network_radio_button.set_visible(False)
2330 self.transitions_radio_button.set_visible(False)
2331 self.system_radio_button.set_visible(False)
2332 self.lockdown_radio_button.set_visible(False)
2333 self.user_radio_button.set_visible(False)
2334 self.login_radio_button.set_visible(False)
2336 self.completion_entry.set_text("")
2338 def show_system_page(self): argument
2339 self.clearbuttons()
2340 self.system_radio_button.set_visible(True)
2341 self.lockdown_radio_button.set_visible(True)
2342 self.applications_selection_button.set_label(_("System"))
2343 self.system_radio_button.set_active(True)
2344 self.tab_change()
2345 self.idle_func()
2347 def show_file_equiv_page(self, *args): argument
2348 self.clearbuttons()
2349 self.file_equiv_initialize()
2350 self.file_equiv_radio_button.set_active(True)
2351 self.applications_selection_button.set_label(_("File Equivalence"))
2352 self.tab_change()
2353 self.idle_func()
2354 self.add_button.set_sensitive(True)
2355 self.delete_button.set_sensitive(True)
2357 def show_users_page(self): argument
2358 self.clearbuttons()
2359 self.login_radio_button.set_visible(True)
2360 self.user_radio_button.set_visible(True)
2361 self.applications_selection_button.set_label(_("Users"))
2362 self.login_radio_button.set_active(True)
2363 self.tab_change()
2364 self.user_initialize()
2365 self.login_initialize()
2366 self.idle_func()
2367 self.add_button.set_sensitive(True)
2368 self.delete_button.set_sensitive(True)
2370 def show_applications_page(self): argument
2371 self.clearbuttons(False)
2372 self.boolean_radio_button.set_visible(True)
2373 self.files_radio_button.set_visible(True)
2374 self.network_radio_button.set_visible(True)
2375 self.transitions_radio_button.set_visible(True)
2376 self.boolean_radio_button.set_active(True)
2377 self.tab_change()
2378 self.idle_func()
2380 def system_interface(self, *args): argument
2381 self.show_system_page()
2383 def users_interface(self, *args): argument
2384 self.show_users_page()
2386 def show_mislabeled_files(self, checkbutton, *args): argument
2389 ipage = self.inner_notebook_files.get_current_page()
2391 for items in self.liststore:
2392 iter = self.treesort.get_iter(ctr)
2393 iter = self.treesort.convert_iter_to_child_iter(iter)
2394 iter = self.treefilter.convert_iter_to_child_iter(iter)
2396 if self.liststore.get_value(iter, 4) == False:
2400 self.liststore.remove(iters)
2402 elif self.application != None:
2403 self.liststore.clear()
2405 self.executable_files_initialize(self.application)
2407 self.writable_files_initialize(self.application)
2409 self.application_files_initialize(self.application)
2411 def fix_mislabeled(self, path): argument
2414 …if self.verify(_("Run restorecon on %(PATH)s to change its type from %(CUR_CONTEXT)s to the defaul…
2415 self.dbus.restorecon(path)
2416 self.application_selected()
2418 def new_updates(self, *args): argument
2419 self.update_button.set_sensitive(self.modified())
2420 self.revert_button.set_sensitive(self.modified())
2422 def update_or_revert_changes(self, button, *args): argument
2423 self.update_gui()
2424 self.update = (button.get_label() == _("Update"))
2425 if self.update:
2426 self.update_window.set_title(_("Update Changes"))
2428 self.update_window.set_title(_("Revert Changes"))
2430 def apply_changes_button_press(self, *args): argument
2431 self.close_popup()
2432 if self.update:
2433 self.update_the_system()
2435 self.revert_data()
2436 self.finish_init = False
2437 self.previously_modified_initialize(self.dbus.customized())
2438 self.finish_init = True
2439 self.clear_filters()
2440 self.application_selected()
2441 self.new_updates()
2442 self.update_treestore.clear()
2444 def update_the_system(self, *args): argument
2445 self.close_popup()
2446 update_buffer = self.format_update()
2447 self.wait_mouse()
2449 self.dbus.semanage(update_buffer)
2452 self.ready_mouse()
2453 self.init_cur()
2455 def ipage_value_lookup(self, lookup): argument
2462 def get_attributes_update(self, attribute): argument
2466 self.bool_revert = attribute
2470 def format_update(self): argument
2471 self.revert_data()
2473 for k in self.cur_dict:
2475 for b in self.cur_dict[k]:
2476 update_buffer += "boolean -m -%d %s\n" % (self.cur_dict[k][b]["active"], b)
2478 for l in self.cur_dict[k]:
2479 if self.cur_dict[k][l]["action"] == "-d":
2481 elif "range" in self.cur_dict[k][l]:
2482 …e_buffer += "login %s -s %s -r %s %s\n" % (self.cur_dict[k][l]["action"], self.cur_dict[k][l]["seu…
2484 …update_buffer += "login %s -s %s %s\n" % (self.cur_dict[k][l]["action"], self.cur_dict[k][l]["seus…
2486 for u in self.cur_dict[k]:
2487 if self.cur_dict[k][u]["action"] == "-d":
2489 elif "level" in self.cur_dict[k][u] and "range" in self.cur_dict[k][u]:
2490 …s -L %s -r %s -R %s %s\n" % (self.cur_dict[k][u]["action"], self.cur_dict[k][u]["level"], self.cur…
2492 …update_buffer += "user %s -R %s %s\n" % (self.cur_dict[k][u]["action"], self.cur_dict[k][u]["role"…
2495 for f in self.cur_dict[k]:
2496 if self.cur_dict[k][f]["action"] == "-d":
2499 …update_buffer += "fcontext %s -e %s %s\n" % (self.cur_dict[k][f]["action"], self.cur_dict[k][f]["s…
2502 for f in self.cur_dict[k]:
2503 if self.cur_dict[k][f]["action"] == "-d":
2506 …buffer += "fcontext %s -t %s -f %s %s\n" % (self.cur_dict[k][f]["action"], self.cur_dict[k][f]["ty…
2509 for port, protocol in self.cur_dict[k]:
2510 if self.cur_dict[k][(port, protocol)]["action"] == "-d":
2513 …update_buffer += "port %s -t %s -p %s %s\n" % (self.cur_dict[k][f]["action"], self.cur_dict[k][f][…
2517 def revert_data(self): argument
2521 for items in self.update_treestore:
2522 if not self.update_treestore[ctr][0]:
2527 self.remove_cur(ctr)
2529 def reveal_advanced_system(self, label, *args): argument
2535 self.system_policy_label.set_visible(advanced)
2536 self.system_policy_type_combobox.set_visible(advanced)
2538 def reveal_advanced(self, label, *args): argument
2544 self.files_mls_label.set_visible(advanced)
2545 self.files_mls_entry.set_visible(advanced)
2546 self.network_mls_label.set_visible(advanced)
2547 self.network_mls_entry.set_visible(advanced)
2549 def on_show_advanced_search_window(self, label, *args): argument
2552 self.close_popup()
2555 self.show_popup(self.advanced_search_window)
2557 def set_enforce_text(self, value): argument
2559 self.status_bar.push(self.context_id, _("System Status: Enforcing"))
2560 self.current_status_enforcing.set_active(True)
2562 self.status_bar.push(self.context_id, _("System Status: Permissive"))
2563 self.current_status_permissive.set_active(True)
2565 def set_enforce(self, button): argument
2566 if not self.finish_init:
2569 self.dbus.setenforce(button.get_active())
2570 self.set_enforce_text(button.get_active())
2572 def on_browse_select(self, *args): argument
2573 filename = self.file_dialog.get_filename()
2576 self.clear_entry = False
2577 self.file_dialog.hide()
2578 self.files_path_entry.set_text(filename)
2579 if self.import_export == 'Import':
2580 self.import_config(filename)
2581 elif self.import_export == 'Export':
2582 self.export_config(filename)
2584 def recursive_path(self, *args): argument
2585 path = self.files_path_entry.get_text()
2586 if self.recursive_path_toggle.get_active():
2588 self.files_path_entry.set_text(path + "(/.*)?")
2591 self.files_path_entry.set_text(path)
2593 def highlight_entry_text(self, entry_obj, *args): argument
2595 if self.clear_entry:
2597 self.clear_entry = False
2599 def autofill_add_files_entry(self, entry): argument
2604 self.recursive_path_toggle.set_active(True)
2607 for t in self.files_type_combolist:
2609 self.combo_set_active_text(self.files_type_combobox, t[0])
2611 def resize_columns(self, *args): argument
2612 self.boolean_column_1 = self.boolean_treeview.get_col(1)
2613 width = self.boolean_column_1.get_width()
2614 renderer = self.boolean_column_1.get_cell_renderers()
2616 def browse_for_files(self, *args): argument
2617 self.file_dialog.show()
2619 def close_config_window(self, *args): argument
2620 self.file_dialog.hide()
2622 def change_default_policy(self, *args): argument
2623 if self.typeHistory == self.system_policy_type_combobox.get_active():
2626 …if self.verify(_("Changing the policy type will cause a relabel of the entire file system on the n…
2627 self.system_policy_type_combobox.set_active(self.typeHistory)
2630self.dbus.change_default_policy(self.combo_get_active_text(self.system_policy_type_combobox))
2631 self.dbus.relabel_on_boot(True)
2632 self.typeHistory = self.system_policy_type_combobox.get_active()
2634 def change_default_mode(self, button): argument
2635 if not self.finish_init:
2637 self.enabled_changed(button)
2639 self.dbus.change_default_mode(button.get_label().lower())
2641 def import_config_show(self, *args): argument
2642 self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
2643 self.file_dialog.set_title("Import Configuration")
2644 self.file_dialog.show()
2645 #self.file_dialog.set_uri('/tmp')
2646 self.import_export = 'Import'
2648 def export_config_show(self, *args): argument
2649 self.file_dialog.set_action(Gtk.FileChooserAction.SAVE)
2650 self.file_dialog.set_title("Export Configuration")
2651 self.file_dialog.show()
2652 self.import_export = 'Export'
2654 def export_config(self, filename): argument
2655 self.wait_mouse()
2656 buf = self.dbus.customized()
2660 self.ready_mouse()
2662 def import_config(self, filename): argument
2666 self.wait_mouse()
2668 self.dbus.semanage(buf)
2671 self.ready_mouse()
2673 def init_dictionary(self, dic, app, ipage, operation, p, q, ftype, mls, changed, old): argument
2679 def translate_bool(self, b): argument
2686 def relabel_on_reboot(self, *args): argument
2687 active = self.relabel_button.get_active()
2695 self.dbus.relabel_on_boot(active)
2697 self.error(e)
2699 def closewindow(self, window, *args): argument
2701 self.recursive_path_toggle.set_active(False)
2702 self.window.set_sensitive(True)
2703 if self.moreTypes_window_files == window:
2704 self.show_popup(self.files_popup_window)
2705 if self.combo_get_active_text(self.files_type_combobox) == _('More...'):
2706 self.files_type_combobox.set_active(0)
2707 if self.error_check_window == window:
2708 if self.files_add:
2709 self.show_popup(self.files_popup_window)
2710 elif self.network_add:
2711 self.show_popup(self.network_popup_window)
2712 if self.files_mls_label.get_visible() or self.network_mls_label.get_visible():
2713 self.advanced_text_files.set_visible(True)
2714 self.files_mls_label.set_visible(False)
2715 self.files_mls_entry.set_visible(False)
2716 self.advanced_text_network.set_visible(True)
2717 self.network_mls_label.set_visible(False)
2718 self.network_mls_entry.set_visible(False)
2719 if self.main_advanced_label.get_text() == ADVANCED_SEARCH_LABEL[1]:
2720 self.main_advanced_label.set_text(ADVANCED_SEARCH_LABEL[0])
2723 def wait_mouse(self): argument
2724 self.window.get_window().set_cursor(self.busy_cursor)
2725 self.idle_func()
2727 def ready_mouse(self): argument
2728 self.window.get_window().set_cursor(self.ready_cursor)
2729 self.idle_func()
2731 def verify(self, message, title=""): argument
2742 def error(self, message): argument
2751 def enabled_changed(self, radio): argument
2755 if label == 'Disabled' and self.enforce_mode != DISABLED:
2756 …if self.verify(_("Changing to SELinux disabled requires a reboot. It is not recommended. If you …
2757 self.enforce_button.set_active(True)
2759 if label != 'Disabled' and self.enforce_mode == DISABLED:
2760 …if self.verify(_("Changing to SELinux enabled will cause a relabel of the entire file system on th…
2761 self.enforce_button.set_active(True)
2762 self.enforce_button = radio
2764 def clear_filters(self, *args): argument
2765 self.filter_entry.set_text('')
2766 self.show_modified_only.set_active(False)
2768 def unconfined_toggle(self, *args): argument
2769 if not self.finish_init:
2771 self.wait_mouse()
2772 if self.enable_unconfined_button.get_active():
2773 self.dbus.semanage("module -e unconfined")
2775 self.dbus.semanage("module -d unconfined")
2776 self.ready_mouse()
2778 def permissive_toggle(self, *args): argument
2779 if not self.finish_init:
2781 self.wait_mouse()
2782 if self.enable_permissive_button.get_active():
2783 self.dbus.semanage("module -e permissivedomains")
2785 self.dbus.semanage("module -d permissivedomains")
2786 self.ready_mouse()
2788 def confirmation_close(self, button, *args): argument
2789 if len(self.update_treestore) > 0:
2790 …if self.verify(_("You are attempting to close the application without applying your changes.\n …
2792 self.quit()
2794 def quit(self, *args): argument