MOON
Server: Apache
System: Linux s5.yayogua.com.py 6.12.0-124.55.3.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:54:02 EDT 2026 x86_64
User: sanbercountryclu (1012)
PHP: 8.2.33
Disabled: NONE
Upload Files
File: //lib/python3.12/site-packages/sepolicy/__pycache__/gui.cpython-312.opt-1.pyc
�

�j�
���ddlZejdd�ddlmZddlmZddlmZddlmZddlZddl	Z	ddl
Z
ddl
mZmZm
Z
ddlZ	ddlZ	ddlZddlZddlZddlZd	Z	ddlZiZej.d
krded<ej0efd
die�ddi��Zej*ZiZ!e	jDD]Z#e#e!e	jDe#<�ed�ed�gZ$ed�ed�gZ%d�Z&ddl'Z'ed�ed�fZ(ed�ed�fZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8d Z9d!Z:d"Z;gd#�Z<ed$�Z=Gd%�d&�Z>e?d'k(re>�Z@yy#	ddlZeej:d<n#e$rddlZe ej:d<YnwxYwY��xYw)(�N�Gtkz3.0)r)�Gdk)�GLib)�SELinuxDBus)�DISABLED�
PERMISSIVE�	ENFORCINGzselinux-python)�T�unicode�	localedirz/usr/share/locale�fallback�_�No�Yes�Disable�Enablec�.�|�|�y|�y|�y||kD||kz
S)Nr�����)�a�bs  �1/usr/lib/python3.12/site-packages/sepolicy/gui.py�cmprGs1���y�Q�Y���y���y��
��E�a�!�e���zAdvanced >>zAdvanced <<zAdvanced Search >>zAdvanced Search <<r�r
������	)	�boolean�fcontext�fcontext-equiv�port�login�user�module�node�	interfacez�<small>
To change from Disabled to Enforcing mode
- Change the system mode from Disabled to Permissive
- Reboot, so that the system can relabel
- Once the system is working as planned
  * Change the system mode to Enforcing</small>
c�l�eZdZd�d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z!d!�Z"d"�Z#d#�Z$d$�Z%d%�Z&d&�Z'd'�Z(d(�Z)d)�Z*d*�Z+d+�Z,d,�Z-d-�Z.d.�Z/d/�Z0d0�Z1d1�Z2d2�Z3d3�Z4d4�Z5d5�Z6d6�Z7d7�Z8d8�Z9d9�Z:d:�Z;d;�Z<d<�Z=d=�Z>d>�Z?d?�Z@d@�ZAdA�ZBdB�ZCdC�ZDdD�ZEdE�ZFdF�ZGdG�ZHdH�ZIdI�ZJdJ�ZKdK�ZLdL�ZMdM�ZNdN�ZOdO�ZPdP�ZQdQ�ZRdR�ZSdS�ZTdT�ZUdU�ZVdV�ZWdW�ZXdX�ZYdY�ZZdZ�Z[d[�Z\d\�Z]d]�Z^d^�Z_d_�Z`d�d`�Zada�Zbdb�Zcdc�Zddd�Zede�Zfdf�Zgdg�Zhdh�Zidi�Zjdj�Zkdk�Zldl�Zmdm�Zndn�Zodo�Zpdp�Zqdq�Zrdr�Zsds�Ztdt�Zudu�Zvdv�Zwdw�Zxdx�Zydy�Zzdz�Z{d{�Z|d|�Z}d}�Z~d~�Zd�Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�y)��
SELinuxGuiNc�F�d|_d|_t|_t	�|_	|j
j
�}|j�||_d|_
tj�}t!j"dddi��dz|_|j$d	z}|j'|�|j)d
�|_|j)d�|_|j)d�|_|j)d
�|_|j)d�|_|j)d�|_t7j8t6j:j<�|_t7j8t6j:j@�|_!tEjF�d|_$d|_%d|_&d|_'d|_(d|_)d|_*g|_+g|_,i|_-|j)d�|_.|j)d�|_/|j)d�|_0d|_1|j)d�|_2|j)d�|_3|jfji|jj�|j)d�|_6|j)d�|_7|j)d�|_8d|_9|j)d�|_:|j)d�|_;|j)d�|_<|j)d�|_=|j)d�|_>|j)d�|_?|j)d�|_@|j)d �|_A|j)d!�|_B|j�j�d"tj�j��|j)d#�|_F|j�ji|jj�|j)d$�|_G|j)d%�|_H|j)d&�|_I|j)d'�|_J|j)d(�|_K|j)d)�|_L|j�j�d"tj�j��|j)d*�|_M|j�ji|jj�|j)d+�|_N|j)d,�|_O|j)d-�|_P|j)d.�|_Q|j)d/�|_R|j)d0�|_S|j)d1�|_T|j)d2�|_U|j)d3�|_V|j)d4�|_W|j)d5�|_X|j)d6�|_Y|j)d7�|_Z|j)d8�|_[|j)d9�|_\|j)d:�|_]|j)d;�|_^|j�j�d"tj�j��|j)d<�|__|j)d=�|_`|j�ji|jj�|j)d>�|_a|j)d?�|_b|j)d@�|_c|j)dA�|_d|j)dB�|_e|j)dC�|_f|j)dD�|_g|j)dE�|_h|j)dF�|_i|j)dG�|_j|j)dH�|_k|j)dI�|_l|j)dJ�|_m|j)dK�|_n|j)dL�|_o|j)dM�|_p|j)dN�|_q|j)dO�|_rg|_s|j��dPkrQ|j�j�d�|j�j�d�|j�j�d�|j)dQ�|_v|j)dR�|_w|j)dS�|_x|j��|j)dT�|_z|j)dU�|_{|j)dV�|_||j)dW�|_}|j)dX�|_~|j)dY�|_|j)dZ�|_�|j)d[�|_�|j)d\�|_�|j)d]�|_�|j)d^�|_�|j)d_�|_�|j)d`�|_�|j)da�|_�|j)db�|_�|j)dc�|_�|j)dd�|_�|j)de�|_�|j)df�|_�|j)dg�|_�|j)dh�|_�|j)di�|_�|j)dj�|_�|j)dk�|_�|j)dl�|_�|j)dm�|_�|j)dn�|_�|j)do�|_�|j)dp�|_�|j)dq�|_�|j)dr�|_�|j)ds�|_�|j)dt�|_�|j)du�|_�|j)dv�|_�|j)dw�|_�|j)dx�|_�|j)dy�|_�|j)dz�|_�|j)d{�|_�|j)d|�|_�|j)d}�|_�|j)d~�|_�|j)d�|_�|j)d��|_�|j)d��|_�|�jN�jQd�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|�jhji|jj�|j)d��|_�|�jj�jm�|_�|j)d��|_�|�jpj�d"tj�j��|j)d��|_�|�jr�jm�|_�|j)d��|_�|j)d��|_�|�jxj�d"tj�j��|j)d��|_�|�jzji|jj�|j)d��|_�|�j|�jm�|_�|j)d��|_�|j)d��|_�|�j�ji|jj�|j)d��|_�|�j|�jm�|_�|j)d��|_�|�j�j�d"tj�j��|j)d��|_�|�j��jm�|_�|j)d��|_�|�j��jm�|_�|j)d��|_�|j)d��|_�|�j�j�d"tj�j��|j)d��|_�|�j�ji|jj�|j)d��|_�|�j��jm�|_�|j)d��|_�|j)d��|_�|�j�j�d"tj�j��|j)d��|_�|�j�ji|jj�|j)d��|_�|�j��jm�|_�|j)d��|_�|j)d��|_�|�j�j�dPtj�j��|j)d��|_�|�j�ji|jj�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|�j�|_�|�j��jm�|_�|j)d��|_�|j)d��|_�|�j�j�dtj�j��|j)d��|_�|�j�ji|jj�|j)d��|_�|�j��jm�|_�|j)d��|_�|�j��jm�|_�|j)d��|_�|j)d��|_�|�j�j�dPtj�j��|j)d��|_�|�j�ji|jj�|j)d��|_�|�j��jm�|_�|j)d��|_�|j)d��|_�|�j�j�d"tj�j��|j)d��|_�|�j�ji|jj�|j)d��|_�|�j��jm�|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|�j��j�d"�|�j��j�d"�|�j��j�|�j�d�|�j��j�|�j��|�j��j�d"t�j��|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|j)d��|_�|�j��j�d��|_�|j)d��|_�|j)d��|_�|j)d«|_�|j)dë|�_|j)dī|�_|�j�jd�|�j|�j\�|j)dƫ|�_|�j�jd�|�j|j��|j)dǫ|�_|�j
�jd�|�j|j��|j)dȫ|�_|�j�jd�|�j|j��|j)dɫ|�_|�j�jd�|�j|�jb�|j)dʫ|�_|j)d
�|_|j)d˫|�_	|j)d̫|�_
|j)dͫ|�_|j)dΫ}|�j�jd�|�j|�j�g|�_|�j�jd�|�j|�j��d|�_d}|r6d�d�g|_+|rF||jVvr8|jV�j|�n�t!�j"�|_+|jV�j%�t&�j(�ѫ|r=||jVvr/|�j+�t-dҫ|z�|j�|�j/��t1|jV�}	�t!�j2�}
|jVD�]#}|�j5||��t7�t7|�j��t7|	�z�|�_|�jd�j;|�j8�|�jd�j=|�j8�|�j?�|
�jA|g�D]K}�t!�jB|�}|s�|�j5||�|jX�j|��M|x�jdz
c�_��&|�jE�|�j��jG|�j��|jp�jG|jl�id�|�jH�d�|�jJ�d�|�jL�d�|�jN�d�|�jP�d�|�jR�d�|�jT�d�|�jV�d�|�jX�d�|�jZ�d�|�j\�d�|�j^�d�|�j`�d�|�jb�d�|�jd�d�|�jf�d�|�jh�id�|�jj�d�|�jl�d�|�jn�d�|�jp�d�|�jr�d�|�jt�d�|�jv�d�|�jx�d�|�jz�d�|�j|�d�|�j~�d�|�j��d�|�j��d�|�j��d�|�j\�d�|�j��d�|�j���id�|�j��d�|�j��d�|�j��d�|�j��d�|�j��d�|�j��d�|�j��d�|�j��d�|�j��d�|�j��d�|�j���d|�j���d|�j���d|�j���d|�j���d|�j���d|�j���|�j�|�j�|�j�|�j�|�j�|�j�|�j�|�j�|�j�|�j�|�j�|jj|�j�|�j��d��}
|�j��|�j�|
�|j,�j/��t��j��d|�j��|�j��d|�_d|�j��jE�|�j��jE�|�j��t�k(r|�j��n�|jrp|j2�j�|j�|�j��j�|j�|�j��|�j��n1|�j��|j*�j�t�|�j��d|_t�j��y#t
jj$r&}t|�|j�Yd}~�#�
d}~wwxYw(NFT��purelib�basez/usr)�varsz
/sepolicy/zsepolicy.glade�outer_notebook�SELinux_window�Main_selection_menu�main_advanced_label�applications_selection_button�
Revert_buttonr�add_path_dialog�error_check_window�error_check_label�advanced_search_window�advanced_filter�
advanced_sort�advanced_filter_entry�advanced_search_treeview�Login_label�login_seuser_combobox�login_seuser_liststore�login_name_entry�login_mls_label�login_mls_entry�Login_button�login_treeview�login_liststorer�login_filter�login_popup_window�login_delete_liststore�login_delete_window�user_popup_window�User_button�user_liststore�user_filter�
user_treeview�user_roles_combobox�user_roles_liststore�
User_label�user_name_entry�user_mls_label�user_mls_level_entry�user_mls_entry�selinux_user_combobox�user_delete_liststore�user_delete_window�file_equiv_label�file_equiv_source_entry�file_equiv_dest_entry�file_equiv_button�file_equiv_treeview�file_equiv_liststore�file_equiv_popup_window�file_equiv_filter�file_equiv_delete_liststore�file_equiv_delete_window�app_system_button�
System_button�Lockdown_button�Systems_box�Relabel_button�Relabel_button_no�advanced_system�outer_notebook_frame�system_policy_type_label�select_button_browse�cancel_button_browse�moreTypes_window_files�more_types_file_liststore�moreTypes_treeview_files�system_policy_type_liststore�system_policy_type_comboboxr�Enforcing_button_default�Permissive_button_default�Disabled_button_default�enable_unconfined�disable_unconfined�enable_permissive�disable_permissive�
enable_ptrace�disable_ptrace�help_window�
help_textv�	info_text�
help_image�forward_button�back_button�
update_window�update_treeview�Update_treestore�apply_button�
Update_button�
Add_button�
Delete_button�files_path_entry�network_ports_entry�files_popup_window�network_popup_window�
Network_label�files_label�make_path_recursive�files_type_combo_store�files_class_combo_store�files_type_combobox�files_class_combobox�files_mls_label�files_mls_entry�Advanced_text_files�cancel_delete_files�
tcp_button�
udp_button�network_type_combo_store�network_type_combobox�network_mls_label�network_mls_entry�Advanced_text_network�cancel_network_delete�Show_mislabeled_files�mislabeled_files_label�
warning_files�
Modify_button�fix_label_window�fixlabel_label�fix_label_cancel�files_delete_window�files_delete_treeview�files_delete_liststore�network_delete_window�network_delete_treeview�network_delete_liststore�progress_bar�Executable_files_treeview�executable_files_filter�Executable_files_tab�executable_files_treestore�files_button�Writable_files_treeview�writable_files_treestore�writable_files_filter�Writable_files_tab�Application_files_treeview�application_files_filter�Application_files_tab�application_files_treestore�network_button�outbound_treeview�network_out_liststore�network_out_filter�network_out_tab�inbound_treeview�network_in_liststore�network_in_filter�network_in_tab�Boolean_treeview�boolean_liststore�boolean_filter�booleans_more_detail_window�booleans_more_detail_treeview�booleans_more_detail_liststore�Booleans_button�transitions_into_treeview�transitions_into_liststore�transitions_into_filter�Transitions_into_tab�Transitions_button�transitions_from_treeview�transitions_from_treestore�transitions_from_filter�Transitions_from_tab�file_transitions_treeview�file_transitions_liststore�file_transitions_filter�file_transitions�combobox_org�application_liststore�completion_entry�entrycompletion_obj�Show_modified_only_toggle�Enforcing_label�Enforcing_button�Permissive_button�
status_barzSELinux status�filter_entry�
filter_box�add_modify_delete_box�activate�files_toggle_delete�toggled�file_equiv_toggle_delete1�user_toggle_delete�login_toggle_delete�network_toggle_delete�
toggle_update�files_inner_notebook�network_inner_notebook�transitions_inner_notebook�loading_gui�httpd_t�abrt_t)�keyz%s is not a valid domain�on_combo_button_clicked�on_disable_ptrace_toggled�%on_entrycompletion_obj_match_selected�on_filter_changed�"on_save_changes_file_equiv_clicked�on_save_changes_login_clicked�on_save_changes_user_clicked�on_save_changes_files_clicked�on_save_changes_network_clicked�)on_Advanced_text_files_button_press_event�item_in_tree_selected�2on_Application_file_types_treeview_configure_event�on_save_delete_clicked�)on_moreTypes_treeview_files_row_activated�on_retry_button_files_clicked�on_make_path_recursive_toggled�&on_files_path_entry_button_press_event�on_files_path_entry_changed�on_select_type_files_clicked�on_choose_file�on_Enforcing_button_toggled�on_confirmation_close�on_column_clicked�
on_tab_switch�on_file_equiv_button_clickedzon_app/system_button_clickedzon_app/users_button_clicked�on_show_advanced_search_window� on_Show_mislabeled_files_toggled�on_Browse_button_files_clicked�on_cancel_popup_clicked�on_treeview_cursor_changed� on_login_seuser_combobox_changed�on_user_roles_combobox_changed�on_cancel_button_browse_clicked�on_apply_button_clicked�on_Revert_button_clicked�on_Update_button_clicked� on_advanced_filter_entry_changed�)on_advanced_search_treeview_row_activated�!on_Select_advanced_search_clicked�!on_info_button_button_press_event�on_back_button_clicked�on_forward_button_clicked�#on_Boolean_treeview_columns_changed�on_completion_entry_changed�on_Add_button_clicked�on_Delete_button_clicked�on_Modify_button_clicked�on_Show_modified_only_toggled�on_cancel_button_config_clicked)�on_Import_button_clicked�on_Export_button_clicked�on_enable_unconfined_toggled�on_enable_permissive_toggled�&on_system_policy_type_combobox_changed�#on_Enforcing_button_default_toggled�$on_Permissive_button_default_toggled�"on_Disabled_button_default_toggled�on_Relabel_button_toggled_cb�%on_advanced_system_button_press_event�on_files_type_combobox_changed�on_filter_row_changed�on_button_toggled�
gtk_main_quitr(o�finish_init�
advanced_init�
START_PAGE�opager�dbus�
customized�
exceptions�
DBusException�print�quit�init_cur�application�
filter_txtr�Builder�	sysconfig�get_path�	code_path�
add_from_file�
get_objectr3�window�main_selection_popoverr6r7�
revert_buttonr�Cursor�
CursorType�WATCH�busy_cursor�LEFT_PTR�ready_cursor�selinux�selinux_getpolicytype�initialtype�
current_popup�
import_export�clear_entry�	files_add�network_add�mislabeled_files�all_domains�installed_list�previously_modified�file_dialogr:r;�
invalid_entryr<�advanced_search_filter�set_visible_func�filter_the_data�advanced_search_sortr?r@�advanced_search�login_labelrB�login_seuser_combolistrDrErF�login_radio_buttonrHrI�set_sort_column_id�SortType�	ASCENDINGrJrKrLrMrN�user_radio_buttonrPrQrRrS�user_roles_combolist�
user_labelrVrWrXrY�
user_comboboxr[r\r]r^r_�file_equiv_radio_buttonrarbrc�file_equiv_treefilterrerfrg�system_radio_button�lockdown_radio_button�systems_box�relabel_button�relabel_button_normrn�system_policy_labelrprqrr�more_types_files_liststore�moreTypes_treeviewrurv�policy_list�populate_system_policy�set_visible�enforcing_button_default�permissive_button_default�disabled_button_default�initialize_system_default_mode�enable_unconfined_button�disable_unconfined_button�enable_permissive_button�disable_permissive_button�enable_ptrace_button�disable_ptrace_buttonr��	help_textr�r�r�r�r�r��update_treestorer��
update_button�
add_button�
delete_buttonr�r�r�r��popup_network_label�popup_files_label�recursive_path_toggle�files_type_combolist�files_class_combolistr�r�r�r��advanced_text_files�files_cancel_button�network_tcp_button�network_udp_button�network_port_type_combolist�network_port_type_comboboxr�r��advanced_text_network�network_cancel_button�show_mislabeled_files_onlyr�r��
modify_button�
set_sensitiver�r�r�r�r�r�r�r�r�r��executable_files_treeviewr��executable_files_tab�get_tooltip_text� executable_files_tab_tooltip_txt�executable_files_liststore�files_radio_button�files_button_tooltip_txt�writable_files_treeview�writable_files_liststorer��writable_files_tab�writable_files_tab_tooltip_txt�application_files_treeviewr��application_files_tab�!application_files_tab_tooltip_txt�application_files_liststore�network_radio_button�network_button_tooltip_txt�network_out_treeviewr�r�r��network_out_tab_tooltip_txt�network_in_treeviewr�r�r��network_in_tab_tooltip_txt�boolean_treeviewr�r��boolean_more_detail_window�boolean_more_detail_treeview�!boolean_more_detail_tree_data_set�boolean_radio_button�
active_button�boolean_button_tooltip_txtr�r�r��transitions_into_tab� transitions_into_tab_tooltip_txt�transitions_radio_button�transitions_button_tooltip_txtr�r�r��transitions_from_tab� transitions_from_tab_tooltip_txt�transitions_file_treeview�transitions_file_liststore�transitions_file_filter�transitions_file_tab� transitions_file_tab_tooltip_txt�
combobox_menur�r�r��set_minimum_key_length�set_text_column�set_match_func�
match_func�set_completion�set_icon_from_stock�
STOCK_FIND�show_modified_only�current_status_label�current_status_enforcing�current_status_permissiver��get_context_id�
context_idr�r�r��cell�del_cell_files�connect�on_toggle_update�del_cell_files_equiv�
del_cell_user�del_cell_login�del_cell_network�update_cell�inner_notebook_files�inner_notebook_network�inner_notebook_transitions�all_entries�	on_toggle�loading�append�sepolicy�get_all_domains�sort�str�lower�errorr�show�len�get_init_entrypoints_str�
combo_box_add�float�
percentage�set_fraction�set_pulse_step�	idle_func�get�find_entrypoint_path�hide�	set_model�open_combo_menu�on_disable_ptrace�set_application_label�get_filter_data�update_to_file_equiv�update_to_login�update_to_user�update_to_files�update_to_network�reveal_advanced�cursor_changed�resize_wrapr�populate_type_combo�invalid_entry_retry�recursive_path�highlight_entry_text�autofill_add_files_entry�select_type_more�on_browse_select�set_enforce�confirmation_close�column_clicked�
clear_filters�show_file_equiv_page�system_interface�users_interfacer�show_mislabeled_files�browse_for_files�close_popup�login_seuser_combobox_change�user_roles_combobox_change�close_config_window�apply_changes_button_press�update_or_revert_changes�get_advanced_filter_data�advanced_item_selected�advanced_item_button_push�on_help_button�on_help_back_clicked�on_help_forward_clicked�resize_columns�application_selected�add_button_clicked�delete_button_clicked�modify_button_clicked�on_show_modified_only�import_config_show�export_config_show�unconfined_toggle�permissive_toggle�change_default_policy�change_default_mode�relabel_on_reboot�reveal_advanced_system�show_more_types�
tab_change�closewindow�previously_modified_initialize�connect_signalsr�timeout_add_seconds�selinux_status�lockdown_inited�statusr�show_system_page�	set_label�set_text�show_applications_page�clearbuttons�set_current_page�reinit�main)�self�app�testr;�e�builder�
glade_filer��path�length�entrypoint_dict�domain�
entrypoint�dics              r�__init__zSELinuxGui.__init__vs �� ���!�����
��M��	�	����-�-�/�J�
	
�
�
���������+�+�-��"�+�+�I�V�V�<L�M�P\�\����^�^�&6�6�
����j�)�%�0�0�1A�B����(�(�)9�:���&-�&8�&8�9N�&O��#�#*�#5�#5�6K�#L�� �-4�-?�-?�@_�-`��*�$�/�/��@����:�:�c�n�n�&:�&:�;����J�J�s�~�~�'>�'>�?���"�8�8�:�1�=���!���!��������� ��� %������ ���#%�� �#�-�-�.?�@���")�"4�"4�5I�"J���!(�!3�!3�4G�!H���"���&-�&8�&8�9Q�&R��#�&-�&8�&8�9J�&K��#��#�#�4�4�T�5I�5I�J�$+�$6�$6��$G��!�%,�%7�%7�8O�%P��"�(/�(:�(:�;U�(V��%�$���#�-�-�m�<���%,�%7�%7�8O�%P��"�&-�&8�&8�9Q�&R��#� '� 2� 2�3E� F���&�1�1�2C�D���&�1�1�2C�D���")�"4�"4�^�"D���%�0�0�1A�B���&�1�1�2C�D������/�/��3�<�<�3I�3I�J�#�.�.�~�>������*�*�4�+?�+?�@�")�"4�"4�5I�"J���&-�&8�&8�9Q�&R��#�#*�#5�#5�6K�#L�� �")�!3�!3�4G�!H���!(�!3�!3�M�!B���%�0�0�1A�B������.�.�q�#�,�,�2H�2H�I�"�-�-�m�<������)�)�$�*>�*>�?�$�/�/��@���#*�#5�#5�6K�#L�� �$+�$6�$6�7M�$N��!�!�,�,�\�:���&�1�1�2C�D���%�0�0�1A�B���$+�$6�$6�7M�$N��!�%�0�0�1A�B���$�/�/�0G�H���%,�%7�%7�8O�%P��"�")�"4�"4�5I�"J���!(� 2� 2�3E� F���'.�'9�'9�:S�'T��$�%,�%7�%7�8O�%P��"�'.�'9�'9�:M�'N��$�#*�#5�#5�6K�#L�� �$+�$6�$6�7M�$N��!��!�!�4�4�Q����8N�8N�O�'.�'9�'9�:S�'T��$�%,�%7�%7�8K�%L��"��"�"�3�3�D�4H�4H�I�+2�+=�+=�>[�+\��(�(/�(:�(:�;U�(V��%�")�!3�!3�4G�!H���#*�#5�#5�o�#F�� �%,�%7�%7�8I�%J��"�"�-�-�m�<���%�0�0�1A�B���!(�!3�!3�4G�!H���&�1�1�2C�D���$+�$6�$6�7M�$N��!�#*�#5�#5�6P�#Q�� �$+�$6�$6�7M�$N��!�$+�$6�$6�7M�$N��!�&-�&8�&8�9Q�&R��#�*1�*<�*<�=X�*Y��'�")�"4�"4�5O�"P���,3�,>�,>�?]�,^��)�+2�+=�+=�>[�+\��(�����&�&�(�1�,�� � �,�,�U�3��$�$�0�0��7��,�,�8�8��?�(/�(:�(:�;U�(V��%�)0�);�);�<W�)X��&�'.�'9�'9�:S�'T��$��+�+�-�)0�(:�(:�;N�(O��%�)0�);�);�<P�)Q��&�(/�(:�(:�;N�(O��%�)0�);�);�<P�)Q��&�$+�$6�$6��$G��!�%,�%7�%7�8H�%I��"�#�-�-�m�<��� �+�+�L�9��� �+�+�K�8���!�,�,�\�:���%�0�0�1A�B���"�-�-�m�<���$�/�/��@���&�1�1�2C�D��� '� 2� 2�3E� F���#�.�.�~�>���$�/�/��@���!�,�,�\�:���$�/�/��@��� '� 2� 2�3E� F���#*�#5�#5�6K�#L�� �")�"4�"4�5I�"J���$+�$6�$6�7M�$N��!�#*�#5�#5�o�#F�� �!(�!3�!3�M�!B���%,�%7�%7�8M�%N��"�$+�$6�$6�7O�$P��!�%,�%7�%7�8Q�%R��"�#*�#5�#5�6K�#L�� �$+�$6�$6�7M�$N��!�&�1�1�2C�D���&�1�1�2C�D���#*�#5�#5�6K�#L�� �#*�#5�#5�6K�#L�� �")�"4�"4�\�"B���")�"4�"4�\�"B���+2�+=�+=�>X�+Y��(�*1�*<�*<�=T�*U��'�!(�!3�!3�4G�!H���!(�!3�!3�4G�!H���%,�%7�%7�8O�%P��"�%,�%7�%7�8O�%P��"�
+2�*<�*<�=T�*U��'�&-�&8�&8�9Q�&R��#�$�/�/��@���$�/�/��@������(�(��/�!(� 2� 2�3E� F���%�0�0�1A�B��� '� 2� 2�3E� F���$+�#5�#5�6K�#L�� �%,�%7�%7�8O�%P��"�&-�&8�&8�9Q�&R��#�%,�%7�%7�8O�%P��"�'.�'9�'9�:S�'T��$�(/�(:�(:�;U�(V��%�$�.�.�~�>���*1�);�);�<W�)X��&�'.�'9�'9�:S�'T��$��$�$�5�5�d�6J�6J�K�$+�$6�$6�7M�$N��!�04�0I�0I�0Z�0Z�0\��-�*1�*<�*<�=Y�*Z��'��'�'�:�:�1�c�l�l�>T�>T�U�")�"4�"4�^�"D���(,�(?�(?�(P�(P�(R��%�(/�'9�'9�:S�'T��$�(/�(:�(:�;U�(V��%��%�%�8�8��C�L�L�<R�<R�S�%,�%7�%7�8O�%P��"��"�"�3�3�D�4H�4H�I�")�"4�"4�5I�"J���.2�.E�.E�.V�.V�.X��+�+2�*<�*<�=Y�*Z��'�(/�(:�(:�;U�(V��%��%�%�6�6�t�7K�7K�L�%,�%7�%7�8O�%P��"�15�1H�1H�1Y�1Y�1[��.�+2�+=�+=�>[�+\��(��(�(�;�;�A�s�|�|�?U�?U�V�%,�%7�%7�8O�%P��"�15�1K�1K�1\�1\�1^��.�%,�$6�$6�7G�$H��!�*.�*C�*C�*T�*T�*V��'�$+�$6�$6�7J�$K��!�%,�%7�%7�8O�%P��"��"�"�5�5�a����9O�9O�P�")�"4�"4�5I�"J������0�0��1E�1E�F�&�1�1�2C�D���+/�+?�+?�+P�+P�+R��(�#*�#5�#5�6H�#I�� �$+�$6�$6�7M�$N��!��!�!�4�4�Q����8N�8N�O�!(�!3�!3�4G�!H������/�/��0D�0D�E�%�0�0�1A�B���*.�*=�*=�*N�*N�*P��'�!(� 2� 2�3E� F���!(�!3�!3�4G�!H������1�1�!�S�\�\�5K�5K�L�%�0�0�1A�B������,�,�T�-A�-A�B�*1�*<�*<�=Z�*[��'�,3�,>�,>�?^�,_��)�18�1C�1C�Dd�1e��.�$+�$6�$6�7H�$I��!�!�6�6���*.�*C�*C�*T�*T�*V��'�*1�);�);�<W�)X��&�*1�*<�*<�=Y�*Z��'��'�'�:�:�1�c�l�l�>T�>T�U�'.�'9�'9�:S�'T��$��$�$�5�5�d�6J�6J�K�$+�$6�$6�7M�$N��!�04�0I�0I�0Z�0Z�0\��-�(/�(:�(:�;O�(P��%�.2�.K�.K�.\�.\�.^��+�)0�);�);�<W�)X��&�*1�*<�*<�=Y�*Z��'��'�'�:�:�1�c�l�l�>T�>T�U�'.�'9�'9�:S�'T��$��$�$�5�5�d�6J�6J�K�$+�$6�$6�7M�$N��!�04�0I�0I�0Z�0Z�0\��-�)0�);�);�<W�)X��&�*1�*<�*<�=Y�*Z��'��'�'�:�:�1�c�l�l�>T�>T�U�'.�'9�'9�:S�'T��$��$�$�5�5�d�6J�6J�K�$+�$6�$6�7I�$J��!�04�0I�0I�0Z�0Z�0\��-�%�/�/��?���%,�%7�%7�8O�%P��"� '� 2� 2�3E� F���#*�#5�#5�6K�#L�� �� � �7�7��:�� � �0�0��3�� � �/�/�����F����,�,�T�-E�-E�F����1�1�!�S�^�^�D�#*�"4�"4�5P�"Q���%,�$6�$6�7H�$I��!�(/�(:�(:�;M�(N��%�)0�);�);�<O�)P��&�!�,�,�\�:����/�/�8�8�9I�J���$�.�.�~�>���!�,�,�\�:���%,�%7�%7�8O�%P��"��&�&�z�2��	�%�0�0�1F�G������#�#�I�t�/D�/D�d�Fa�Fa�b�$+�$6�$6�7R�$S��!��!�!�)�)�)�T�5J�5J�D�Ll�Ll�m�$�/�/�0D�E������"�"�9�d�.C�.C�T�E_�E_�`�%�0�0�1F�G������#�#�I�t�/D�/D�d�Fa�Fa�b� '� 2� 2�3J� K������%�%�i��1F�1F��He�He�f�"�-�-�o�>���%�0�0�1A�B���$+�$6�$6�7M�$N��!�&-�&8�&8�9Q�&R��#�*1�*<�*<�=Y�*Z��'��(�(��7����� � ��D�,A�,A�4�CX�CX�Y����	
�	�	���)�T�^�^�T�5K�5K�L������� )�8�4�D���s�$�"2�"2�2�� � �'�'��,�'�7�7�9�D�������#�)�)��,��3�d�.�.�.��J�J�q�3�4�s�:�;��I�I�K������T�%�%�&��"�;�;�=���&�&�F�
���v�v�.�#�E�$�,�,�$7�%��-�$G�H�D�O����*�*�4�?�?�;����,�,�T�_�_�=��N�N��-�1�1�&�"�=�
��4�4�Z�@����&�&�t�V�4��'�'�.�.�t�4�	>�
�L�L�A��L�L�!'�"	����� � �*�*�4�+E�+E�F��%�%�/�/��0I�0I�J�F
�%�t�';�';�F
�'��)?�)?�F
�
4�T�5O�5O�F
�
 ��!5�!5�	F
�

1�$�2K�2K�F
�
,�T�-A�-A�
F
�
+�D�,?�,?�F
�
,�T�-A�-A�F
�
.�t�/E�/E�F
�
8��9M�9M�F
�
$�T�%8�%8�F
�
A�$�BR�BR�F
�
%�d�&A�&A�F
�
8��9Q�9Q�F
�
,�T�-E�-E�F
� 
-�d�.A�.A�!F
�"
5�d�6O�6O�#F
�$
*�4�+H�+H�%F
�&
+�D�,A�,A�'F
�(
�d�3�3�)F
�*
*�4�+;�+;�+F
�,
$�T�%<�%<�-F
�.
 ��!4�!4�/F
�0
�T�/�/�1F
�4
+�D�,E�,E�5F
�6
+�D�,A�,A�7F
�8
*�4�+?�+?�9F
�:
-�d�.Q�.Q�;F
�>
/��0J�0J�?F
�@
-�d�.C�.C�AF
�B
&�t�'7�'7�CF
�D
)�$�*=�*=�EF
�F
/��0Q�0Q�GF
�H
-�d�.M�.M�IF
�L
.�t�/G�/G�MF
�N
&�t�'F�'F�OF
�P
'��(E�(E�QF
�R
'��(E�(E�SF
�T
/��0M�0M�UF
�V
8��9T�9T�WF
�X
0��1O�1O�YF
�Z
0��1D�1D�[F
�\
%�d�&?�&?�]F
�^
(��)E�)E�_F
�`
2�4�3F�3F�aF
�b
*�4�+D�+D�cF
�d
$�T�%<�%<�eF
�f
'��(B�(B�gF
�h
'��(B�(B�iF
�j
,�T�-G�-G�kF
�l
.�t�/G�/G�mF
�n)-�(?�(?�(,�(?�(?�,0�,B�,B�,0�,B�,B�6:�6P�6P�37�3K�3K�48�4L�4L�26�2J�2J�,0�,B�,B�59�5P�5P�.2�.B�.B�%)�%9�%9�!%���!�-�-�KF
��P	
�+�+�J�7�����$�������� � ��D�$7�$7�8�����$����"�"�'�'�)��������;�;�(�"��!�!�#�����2�2�<�<�T�=M�=M�N��%�%�.�.�t�/?�/?�@��+�+�-����!��!�!�#��#�#�4�4�Z�@����
�������
��g���,�,�	��!�H��I�I�K�K��	�s�BL�LBM�L-BM�MBMc�F�i|_tD]}i|j|<�y�N)�cur_dict�keys)r:�ks  rr@zSELinuxGui.init_currs!����
��A�!�D�M�M�!��rc��d}|jD]3}|j|D]}||k(r|j||=y|dz
}�!�5y�Nrr)rI)r:�ctr�irK�js     r�
remove_curzSELinuxGui.remove_curwsL��
�����A��]�]�1�%����8��
�
�a�(��+���Q���	&�rc� �	tj�|_|jtk(r�|j
j
d�|jj
d�|jj
d�|jj
d�|jj|jtd��|jjt �n|j#|j�t$j&j)d�r|j*j-d�n|j.j-d�tj0�d}tj2�d}|t4k(r|jj-d�|t6k(r|j8j-d�|tk(r|j:j-d�y#t$rt|_Y���wxYw)NFzSystem Status: Disabled�
/.autorelabelTr)rR�security_getenforcer1�OSErrorrr�r�r�r�r|r��pushr�rr�r3�
DISABLED_TEXT�set_enforce_text�osr@�existsrt�
set_activerurS�selinux_getenforcemoder	rr}r~)r:�
policytype�modes   rr/zSELinuxGui.selinux_status�s���	#�!�5�5�7�D�K��;�;�(�"��%�%�3�3�E�:��)�)�7�7��>��*�*�8�8��?��)�)�7�7��>��O�O� � ����!�4M�2N�O��N�N�$�$�]�3��!�!�$�+�+�.�
�7�7�>�>�/�*����*�*�4�0��"�"�-�-�d�3��2�2�4�Q�7�
��-�-�/��2���9���)�)�4�4�T�:��:���*�*�5�5�d�;��8���(�(�3�3�D�9���5�	#�"�D�K�	#�s�G5�5H
�H
c�h�|jry|j�d|_|jjt	j
d��i|_|jj�jd�D]E}|j�}t|�dkr�"|dt|�dkDd�|j|d<�G|jj|jdd	�|jj|jd
d	�|j�y)NT�deny_ptrace�
r
r)�priority�Disabledr�
unconfinedrc�permissivedomains)r0�
wait_mouser�r[rR�security_get_boolean_active�module_dictr:�
semodule_list�splitr�r�r��ready_mouse)r:�m�mods   r�
lockdown_initzSELinuxGui.lockdown_init�s����������#����"�"�-�-�g�.Q�.Q�R_�.`�a�������(�(�*�0�0��6�A��'�'�)�C��3�x�!�|��58��V�3�s�8�VW�<�'Z�D���S��V�$�	7�	
�%�%�0�0�T�5E�5E�l�5S�T^�5_�1_�`��%�%�0�0�T�5E�5E�FY�5Z�[e�5f�1f�g����rc�\�|j�}|sy|jtk(r/|j�dk(r|j	|j
|�|jtk(r\|jj|d�}|j�dk(r-|r+|j|jj|d��|jtk(rU|jj|d�}|r6|jj�|jj|�yyy)N�more_detail_colr
�restorecon_colrr)�get_selected_iterr9�
BOOLEANS_PAGE�get_name�display_more_detailrI�
FILES_PAGE�	liststore�	get_value�fix_mislabeled�TRANSITIONS_PAGEr��clickedr�r4)r:�treeview�treepath�treecol�args�iter�visible�	bool_names        rrzSELinuxGui.column_clicked�s����%�%�'�����:�:��&����!�%6�6��(�(����h�?��:�:��#��n�n�.�.�t�Q�7�G����!�%5�5�'��#�#�D�N�N�$<�$<�T�1�$E�F��:�:�)�)����0�0��q�9�I���)�)�1�1�3��!�!�*�*�9�5��*rc��tj�r*tj�tj�r�)yyrH)r�events_pending�main_iteration�r:s rr�zSELinuxGui.idle_func�s(��� � �"���� �� � �"rc��	|jj|d�j|�dk7ryy#t$rYywxYw)NrrTF)r�rx�find�AttributeError)r:�
completion�
key_stringr��	func_datas     rr�zSELinuxGui.match_func�sF��	��)�)�3�3�D�!�<�A�A�*�M�QS�S�����	��	�s�.2�	>�>c��|jj|jdk7�|jj|jt	|j
�dz
k�	t
|j�d|j
|j�d�d�}|j�}|j�|jj�}|j|d|jiz�|jj|�|j j#|j�d|j
|j�d��|j%|j&�y#t$rd}Y��wxYw)	Nrrzhelp/z.txt�rr/�APPz.png)r�r��	help_pager�r��	help_list�openrF�read�close�IOErrorr��
get_bufferr4rA�
set_bufferr��
set_from_file�
show_popupr�)r:�fd�bufr�s    r�help_show_pagezSELinuxGui.help_show_page�s�����&�&�t�~�~��':�;����)�)�$�.�.�C����<O�RS�<S�*T�U�	�����������9W�X�Z]�^�B��'�'�)�C��H�H�J��N�N�-�-�/�	����3�%��)9�)9�!:�:�;����!�!�)�,����%�%�������X\�Xf�Xf�Ig�&h�i�����(�(�)��
�	��C�	�s�(AE.�.E<�;E<c�N�|xjdzc_|j�y�Nr�r�r��r:rs  rrzSELinuxGui.on_help_back_clicked�������!������rc�N�|xjdz
c_|j�yr�r�r�s  rrz"SELinuxGui.on_help_forward_clicked�r�rc��d|_g|_|jtk(r,|jjt
d��dg|_|jtk(r-|jjt
d��gd�|_|jtk(r�|jj�}|tk(r,|jjt
d��dg|_|tk(r,|jjt
d��d	g|_|tk(r,|jjt
d
��dg|_|jtk(r�|jj�}|t k(r,|jjt
d��d
g|_|t"k(r,|jjt
d��dg|_|jt$k(r�|j&j�}|t(k(r-|jjt
d��gd�|_|t*k(r,|jjt
d��dg|_|t,k(r,|jjt
d��dg|_|jt.k(r-|jjt
d��gd�|_|jt0k(r-|jjt
d��gd�|_|jt2k(r-|jjt
d��ddg|_|jt4k(r,|jjt
d��dg|_|jt6k(r,|jjt
d��d g|_|j9�S)!NrzHelp: Start Page�startzHelp: Booleans Page)�booleans�booleans_toggled�
booleans_more�booleans_more_showzHelp: Executable Files Page�
files_execzHelp: Writable Files Page�files_writezHelp: Application Types Page�	files_appz'Help: Outbound Network Connections Page�ports_outboundz&Help: Inbound Network Connections Page�
ports_inboundz&Help: Transition from application Page)�transition_from�transition_from_boolean�transition_from_boolean_1�transition_from_boolean_2z&Help: Transition into application Page�
transition_toz&Help: Transition application file Page�transition_filezHelp: Systems Page)�system�system_boot_mode�system_current_mode�
system_export�system_policy_type�system_relabelzHelp: Lockdown Page)�lockdown�lockdown_unconfined�lockdown_permissive�lockdown_ptracezHelp: Login Pager'�
login_defaultzHelp: SELinux User Page�userszHelp: File Equivalence Page�
file_equiv)r�r�r9r8r��	set_titlerrsrvr��get_current_page�EXE_PAGE�
WRITABLE_PAGE�APP_PAGE�NETWORK_PAGEr��
OUTBOUND_PAGE�INBOUND_PAGErzr��TRANSITIONS_FROM_PAGE�TRANSITIONS_TO_PAGE�TRANSITIONS_FILE_PAGE�SYSTEM_PAGE�
LOCKDOWN_PAGE�
LOGIN_PAGE�	USER_PAGE�FILE_EQUIV_PAGEr��r:r�ipages   rrzSELinuxGui.on_help_button�s)���������:�:��#����&�&�q�);�'<�=�%�Y�D�N��:�:��&����&�&�q�)>�'?�@�d�D�N��:�:��#��-�-�>�>�@�E��� �� � �*�*�1�-J�+K�L�".�����
�%�� � �*�*�1�-H�+I�J�"/������ �� � �*�*�1�-K�+L�M�"-�����:�:��%��/�/�@�@�B�E��
�%�� � �*�*�1�-V�+W�X�"2�!3�����$�� � �*�*�1�-U�+V�W�"1�!2����:�:�)�)��3�3�D�D�F�E��-�-�� � �*�*�1�-U�+V�W�"J����+�+�� � �*�*�1�-U�+V�W�"1�!2����-�-�� � �*�*�1�-U�+V�W�"3�!4����:�:��$����&�&�q�)=�'>�?�L�D�N��:�:��&����&�&�q�)>�'?�@�j�D�N��:�:��#����&�&�q�);�'<�=�%��7�D�N��:�:��"����&�&�q�)B�'C�D�%�Y�D�N��:�:��(����&�&�q�)F�'G�H�*�^�D�N��"�"�$�$rc��|jj|j�|jj�yrH)rJ�set_relative_tor7�popupr�s  rr�zSELinuxGui.open_combo_menu(s.���#�#�3�3�D�4V�4V�W��#�#�)�)�+rc��d|_y�NT)r�r�s  rr�z SELinuxGui.set_application_label,s
��%)��"rc��t|�yrH�r>r�s  rr�zSELinuxGui.resize_wrap/s	��
�d�rc��tj�d|_|jtk(r|j|_|jtk(r|j|_|jtk(r|j|_yyr�)
rRr\�enforce_moder	r|�enforce_buttonrr}rr~r�s rrz)SELinuxGui.initialize_system_default_mode2sq��#�:�:�<�Q�?������	�)�"&�"?�"?�D�����
�*�"&�"@�"@�D������(�"&�">�">�D��)rc�|�ttjtj�d���d}|j�d}|D]o}|jj�}|jj|d|�||jk(r"|jj|�||_|dz
}�q|S)NT)�topdownrr)
�nextrY�walkrR�selinux_pathr�rur��	set_valuerTrvr[�typeHistory)r:�typesrN�itemr�s     rrzz!SELinuxGui.populate_system_policy;s����R�W�W�W�1�1�3�T�B�C�A�F��
�
�
�����D��4�4�;�;�=�D��-�-�7�7��a��F��t�'�'�'��0�0�;�;�C�@�#&�� ��1�H�C�
��
rc�r�|jdk(ry	td|j��D]l}	|j||�}|dus|dus|��!|j	|j�dk7s,|j�j	|j�dk7ry�n	y#ttf$rY��wxYw#YyxYw)Nr/TrFr)rB�range�
get_n_columnsrxr�r�r��	TypeError)r:�listr�r�x�vals      rrbzSELinuxGui.filter_the_dataHs����?�?�b� ��	��1�d�0�0�2�3����.�.��q�1�C��d�{�c�U�l�c�k� ��x�x����0�B�6�#�)�)�+�:J�:J�4�?�?�:[�_a�:a�#�;b�
4���	'�	�2�����	���sA�B2�B�B2�
A
B�B2�B2�B/�,B2�.B/�/B2�2B6c�:�|j�D]�}||D]~\}}dj|�|f}	|	|jdvr2|jd|	ddk(r�C||jd|	dk7r�\|j|dj|�||�����y)N�,r&�action�-d�type�, )rJ�joinrI�network_initial_data_insert)
r:r;�netd�protocol�	direction�modelrK�t�ports�pkeys
          r�
net_updatezSELinuxGui.net_update[s�������A� ��G���5�������2���4�=�=��0�0��}�}�V�,�T�2�8�<��D� ��D�M�M�&�1�$�7��?�?� ��0�0���	�	�%�8H�!�X�V�$�rc��|j�tj�}|jj	�|D]�}|jj�}||dr)|j
|�}|j
||d�}n
|}||d}|jj|d|�|jj|d|�|jj|d||d���|j�y)N�modify�equivrrr)	rfr��get_file_equivrb�clearr��markupr�rk)r:�edict�fr��namer�s      r�file_equiv_initializez SELinuxGui.file_equiv_initializefs��������'�'�)���!�!�'�'�)��A��,�,�3�3�5�D��Q�x��!��{�{�1�~�����E�!�H�W�$5�6�����a���)���%�%�/�/��a��>��%�%�/�/��a��?��%�%�/�/��a��q��(�9K�L��	
���rc	��|j�|jj�tj�D�]}|jj�}|jj
|dt|d��|d}d|vr|jd�|jj
|ddj|��|jj
|d|jdd	��|jj
|d
|jdd	��|jj
|dd
���|j�y)Nrr�roles�object_rrr�r�levelr/r
r�rT)rfrPrr��get_selinux_usersr�r�r��remover�r�rk)r:�ur�rs    r�user_initializezSELinuxGui.user_initializexs���������!�!�#��+�+�-�A��&�&�-�-�/�D����)�)�$��3�q��y�>�B��g�J�E��U�"����Z�(����)�)�$��4�9�9�U�3C�D����)�)�$��1�5�5��"�3E�F����)�)�$��1�5�5��"�3E�F����)�)�$��4�8�.�	
���rc���|j�|jj�tj�D]�}|jj�}|jj
|d|d�|jj
|d|d�|jj
|d|d�|jj
|dd���|j�y)	Nrrr�seuserr�mlsr
T)rfrIrr��get_login_mappingsr�r�rk)r:r
r�s   r�login_initializezSELinuxGui.login_initialize�s����������"�"�$��,�,�.�A��'�'�.�.�0�D�� � �*�*�4��A�f�I�>�� � �*�*�4��A�h�K�@�� � �*�*�4��A�e�H�=�� � �*�*�4��D�9�/�	
���rc��tjj|ddd��}|j||dt|j
�tjj|ddd��}|j||dt|j�tjj|ddd��}|j||dt|j�y)N�tcp�name_connectT��check_bools�	name_bind�udp)r��network�get_network_connectr�r�r�r�r�)r:r;r�s   r�network_initializezSELinuxGui.network_initialize�s������3�3�C���\`�3�a������T�5�-��9S�9S�T����3�3�C���Y]�3�^������T�5�,��8Q�8Q�R����3�3�C���Y]�3�^������T�5�,��8Q�8Q�Rrc��|j�}|j|d|�|j|d|�|j|d|�|j|dd�y)NrrrrT�r�r�)r:r�r��portTyper�r�s      rr�z&SELinuxGui.network_initial_data_insert�sM���|�|�~��
����a��'�
����a��*�
����a��*�
����a��&rc�p�d}|j�}|D]"}|d|k(r|j|�y|dz
}�$|j|dz
�}|j|d�t	d�k(r|j|�}|dz
}n|j
�}|j|d|�|j|�y)Nrr�More...)�	get_modelr[�get_iterrxr�
insert_beforer�r�)r:�comboboxr�rNrwrO�niterr�s        r�combo_set_active_textz SELinuxGui.combo_set_active_text�s������&�&�(�	��A���t�s�{��#�#�C�(���1�H�C�	��"�"�3��7�+�����u�a�(�A�i�L�8��*�*�5�1�D���'�C��#�#�%�D����D�!�S�)����C� rc��|j�}|j�}|dkry|j|�}|j|d�S�Nr)r#�
get_activer$rx)r:r&rw�indexr�s     r�combo_get_active_textz SELinuxGui.combo_get_active_text�sK���&�&�(�	��#�#�%���1�9���!�!�%�(���"�"�4��+�+rc��|�y|jj�}|jj|d|�|jj|d|�yrM)r�r�r�)r:r��val1r�s    rr�zSELinuxGui.combo_box_add�sN���;���)�)�0�0�2���"�"�,�,�T�1�c�:��"�"�,�,�T�1�d�;rc�
�|jj�}|j�d}|�y|jj	|d�}|j|j|�|j|j�y�Nrr)	rx�
get_selection�get_selectedrwrxr(r�r+rr)r:rr;r�s    rrzSELinuxGui.select_type_more�ss���%�%�3�3�5�����!�!�$���<���-�-�7�7��a�@���"�"�4�#;�#;�S�A�����4�4�5rc���|jj�}|j�\}}|j|�}|jj|�}|j
j
|d�}|�y|jjd�|jj�|j|j�|jj|�y�Nrr/)r@r2r3�convert_iter_to_child_iterr`r�rxr?r4r<r�r�r6r�)r:r�rowr�r�r;s      rrz$SELinuxGui.advanced_item_button_push�s����+�+�9�9�;���&�&�(���t��/�/��5���*�*�E�E�d�K���(�(�2�2�4��;���;���"�"�+�+�B�/��#�#�(�(�*����T�5�5�6����&�&�s�+rc��|jj|�}|jj|�}|jj	|d�}|j
j
d�|jj�|j|j�|jj
|�|j�yr5)
r`r$r6r�rxr?r4r<r�r�r6r�r)r:r|r@rr�r;s      rrz!SELinuxGui.advanced_item_selected�s����*�*�3�3�D�9���*�*�E�E�d�K���(�(�2�2�4��;���"�"�+�+�B�/��#�#�(�(�*����T�5�5�6����&�&�s�+��!�!�#rc�Z�|r)t|�dkDr|jD]}||dk(s�yy�NrTF)r�r�)r:r;�itemss   r�find_applicationzSELinuxGui.find_application�s2���3�s�8�a�<��3�3���%��(�?��4�rc�
�|jjd�|jjd�|jjd�|jjd�|jj�}|j|�sy|j�|jjd�|jjd�|jj�|jj�|j j�|j"j�|j$j�|j&j�|j(j�|j*j�|j,j�	|ddk(rt/j0|�}|sy||_|j7�|j9|j:j=��|j?�|jA|�d|_!|jE|�|jG|�|jI|�|jK|�|jM|�|jO|�|jQ|�|jRjUtWd�|z�|jXjUtWd�|z�|jZjUtWd�|z�|j\jUtWd	�|z�|j^jUtWd
�|z�|j`jUtWd�|z�|jbjUtWd�|z�|jdjUtWd
�|z�|jfjitWd�|z�|jjjitWd�|z�|jljitWd�|z�|jfjUtWd�|z�|jjjUtWd�|z�|jljUtWd�|z�|jnjUtWd�|z�||_|jpji|j2�|js�y#t4$rY��jwxYw)NFr/Tr�/z(File path used to enter the '%s' domain.z)Files to which the '%s' domain can write.z6Network Ports to which the '%s' is allowed to connect.z5Network Ports to which the '%s' is allowed to listen.z File Types defined for the '%s'.zODisplay boolean information that can be used to modify the policy for the '%s'.z;Display file type information that can be used by the '%s'.zADisplay network ports to which the '%s' can connect or listen to.z!Application Transitions Into '%s'z!Application Transitions From '%s'zFile Transitions From '%s'zVExecutables which will transition to '%s', when executing selected domains entrypoint.zQExecutables which will transition to a different domain, when '%s' executes them.z4Files by '%s' with transitions to a different label.zADisplay applications that can transition into or out of the '%s'.):r�r{r�r�r�r4r��get_textr<r5r�r�r�r�rr�r�r�r�r�r�r�r�r��get_init_transtyperA�
IndexErrorrfr,r:r;r8�boolean_initializerZ�executable_files_initializer�writable_files_initialize�transitions_into_initialize�transitions_from_initialize�application_files_initialize�transitions_files_initializer��set_tooltip_textrr�r�r�r�r�r�r�r�r3r�r�r�r7rk)r:rr;s   rrzSELinuxGui.application_selected�s����'�'�3�3�E�:��#�#�/�/��6����&�&�u�-����"�"�2�&��#�#�,�,�.���$�$�S�)���#�#�%����%�%�d�+����(�(��.��'�'�-�-�/��!�!�'�'�)��"�"�(�(�*����$�$�&��'�'�-�-�/��'�'�-�-�/��(�(�.�.�0��%�%�+�+�-��'�'�-�-�/�	��1�v��}��1�1�#�6����#&�� �	
�����+�+�D�I�I�,@�,@�,B�C����
�����$� %����(�(��-�����$��&�&�s�+��(�(��-��(�(��-��)�)�#�.��)�)�#�.��!�!�2�2�1�5_�3`�cf�3f�g����0�0��3^�1_�be�1e�f����-�-�a�0h�.i�lo�.o�p����,�,�Q�/f�-g�jm�-m�n��"�"�3�3�A�6X�4Y�\_�4_�`��!�!�2�2�1�6G�4H�KN�4N�	O����0�0��3p�1q�tw�1w�x��!�!�2�2�1�5x�3y�|�3�	A��!�!�+�+�A�.Q�,R�UX�,X�Y��!�!�+�+�A�.Q�,R�UX�,X�Y��!�!�+�+�A�.J�,K�c�,Q�R��!�!�2�2�1�6N�4O�RU�4U�	V��!�!�2�2�1�6I�4J�MP�4P�	Q��!�!�2�2�1�5k�3l�or�3r�s��%�%�6�6�q�9|�7}�AD�8D�	E�����*�*�4�4�T�5E�5E�F������E�	��	�s�
U�*U�	U�Uc��tj�tj�|_tj�|_yrH)r�r8�
get_fcdict�fcdict�get_local_file_paths�local_file_pathsr�s rr8zSELinuxGui.reinit+s-�������)�)�+��� (� =� =� ?��rc��i|_|jd�D�]�}|j�}t|�dk(r�#|ddk(r�,|d|jvri|j|d<|ddk(rd|ddk(i|jd|d	<|dd
k(r|d|dd
�|jd
|d	<|ddk(rd|di|jd|d	<|ddk(rd|d|dd�|jd|d	<|ddk(rd|di|jd|d	|df<|ddk(r"|d|d|dd�|jd|d	<|ddk(r_|ddk(r8d|jvri|jd<d|di|jd|d	<nd|di|jd|d	|df<|ddk(s���d|ddk7i|jd|d	<���d|jvryd|jfd |jffD];\}}||jdvs�|j|jd|d��=tD].}||jvs�|jj|ii��0y)!Nrarrz-Dr#�activerz-1rr'r
r)rr�r+r�r(�s0)r
r��roler&���r*r )�maskr�r�r$z-er%r�r)�enabledr�rdre)�	cust_dictrjr�r�r�r[rJ�update)r:r�rO�rec�semodule�buttons      rr,z)SELinuxGui.previously_modified_initialize0s���������4��A��'�'�)�C��3�x�1�}���1�v��~���1�v�T�^�^�+�)+����s�1�v�&��1�v��"�6>��A��$��5O����y�)�#�b�'�2��1�v�� �>A�!�f�s�ST�v�3V����w�'��B��0��1�v��$�8>��A��7G����{�+�C��G�4��1�v���<@�3�q�6�[^�_`�[a�2b����v�&�s�2�w�/��1�v���>D�c�!�f�=M����v�&��B���R��'9�:��1�v���;>�q�6�s�ST�v�_b�cd�_e�2f����v�&�s�2�w�/��1�v��#��q�6�T�>�'�t�~�~�=�;=����'7�8�CJ�C�PQ�F�BS�D�N�N�#3�4�c�"�g�?�EK�S�QR�V�DT�D�N�N�:�.��B���Q��/@�A��1�v��!�5>��A��$��4O����x�(��R��1�9!�<�4�>�>�)��".��0N�0N�!O�Re�gk�hF�hF�RG�!H��H�f��4�>�>�(�3�3��!�!�$�.�.��":�8�"D�Y�"O�P�!H��A�����&����%�%�q�"�g�.�rc���tj|�|_|jj�D]�}t	|j|�dk(r�|j|d}|j|dD]i}||f|j
dvr6|j
d||fddk(r�1||j
d||fdk7r�L|j
|j|||��k��y)Nrrr$r�r�r�)r��get_entrypoints�entrypointsrJr�rI�files_initial_data_insertr�)r:rA�exe�
file_classr@s     rrCz&SELinuxGui.executable_files_initializeZs���#�3�3�K�@����#�#�(�(�*�C��4�#�#�C�(�)�Q�.���)�)�#�.�q�1�J��(�(��-�a�0���*�%����z�)B�B��}�}�Z�0�$�
�1C�D�X�N�RV�V� ��d�m�m�J�7��z�8J�K�F�S�S� ��.�.�t�/N�/N�PT�VY�[e�f�
1�	+rc��	tj|d�d}tj|�d}||k7S#t$rYywxYw)NrrF)rR�matchpathcon�
getfileconrU)r:r@�con�curs    r�
mislabeledzSELinuxGui.mislabeledhsO��	��&�&�t�Q�/��2�C��$�$�T�*�1�-�C��#�:����	��	�s�58�	A�Ac��|j|�sytj|d�d}tj|�d}d|_|j|dd�|j|dd�|j|dd�|j|d|j
d�d�|j|d	|j
d�d�y)
NrrTr
rr�:rr)rfrRrbrcrZr�rj)r:�treer@r�r'rdres       r�set_mislabeledzSELinuxGui.set_mislabeledps������t�$���"�"�4��+�A�.��� � ��&�q�)�� $������u�a��&����t�Q��%����u�a��&����t�Q��	�	�#��q� 1�2����t�Q��	�	�#��q� 1�2rc	��tj|�|_|jj�D]�}t	|j|�dkr(|j|jd|td���F|j|d}|j|dD]i}||f|jdvr6|jd||fddk(r�1||jd||fdk7r�L|j|j|||��k��y)	Nrz	all filesrrr$r�r�r�)	r��get_writable_files�writable_filesrJr�r^r�rrI)r:rA�writer`r@s     rrDz$SELinuxGui.writable_files_initialize~s��&�9�9�+�F����(�(�-�-�/�E��4�&�&�u�-�.��2��.�.�t�/L�/L�d�TY�[\�]h�[i�j���,�,�U�3�A�6�J��+�+�E�2�1�5���*�%����z�)B�B��}�}�Z�0�$�
�1C�D�X�N�RV�V� ���
�
�j� 9�4��:L� M�f� U�U� ��.�.�t�/L�/L�d�TY�[e�f�
6�0rc��|jd�}|�td�}d}n�||f|jv}tj|�D]:}|j|�}|j|d|�|j
||||��<|r3|j|�}|j|�}|j|�}|j|d|�|j|d|�|j|d|�|j|d|�y)NzMISSING FILE PATHFrrrr )r�rrNr��	find_filer�rjr)	r:rwr@�
selinux_labelr`r�r��pr's	         rr^z$SELinuxGui.files_initial_data_insert�s�������%���<��(�)�D��F��J�'�4�+@�+@�@�F��'�'��-��!�(�(��.���#�#�E�1�a�0��#�#�I�q�$��>�.���{�{�4�(��!�[�[��7�
�!�[�[��4�
����D�!�T�*����D�!�]�3����D�!�Z�0����D�!�V�,rc��d|zS)Nz	<b>%s</b>r�r:rs  rrzSELinuxGui.markup�s���Q��rc	�`�|r,tjddtjdd|��Sy)Nz</b>$r/z^<b>)�re�subrts  r�unmarkupzSELinuxGui.unmarkup�s(����6�6�'�2�r�v�v�f�b�!�'<�=�=�rc��tj|�|_|jj�D]�}t	|j|�dk(r�|j|d}|j|dD]�}tj
||j��}||f|jdvr6|jd||fddk(r�R||jd||fdk7r�m|j|j|||�����y)Nrr)rr$r�r�r�)
r��get_file_types�
file_typesrJr��get_descriptionrrIr^r�)r:rAr;r`r@�descs      rrGz'SELinuxGui.application_files_initialize�s���"�1�1�+�>����?�?�'�'�)�C��4�?�?�3�'�(�A�-������-�a�0�J�����,�Q�/���/�/��D�K�K�H���*�%����z�)B�B��}�}�Z�0�$�
�1C�D�X�N�RV�V� ��d�m�m�J�7��z�8J�K�F�S�S� ��.�.�t�/O�/O�QU�W[�]g�h�0�	*rc�d�d}|jD]}t|j|�dkDs�yyr:)rIr�)r:rOrKs   r�modifiedzSELinuxGui.modified�s3��
�����A��4�=�=��#�$�q�(���rc���tj|�D]Z}|D]S\}}||jdvr|jd|d}tj|�}|j	|||��U�\y)Nr#rP)r��	get_boolsrI�boolean_desc�boolean_initial_data_insert)r:rA�blistrrPr}s      rrBzSELinuxGui.boolean_initialize�sp���'�'��4�E�"�	��6���
�
�i�0�0�!�]�]�9�5�a�8��B�F��,�,�Q�/���0�0��D�&�A�	#�5rc�2�|jj�}|jj|d|�|jj|d|�|jj|d|�|jj|dtd��y)Nrrrr
r")r�r�r�r)r:r�r}rPr�s     rr�z&SELinuxGui.boolean_initial_data_insert�sz���%�%�,�,�.�����(�(��q�&�9����(�(��q�$�7����(�(��q�#�6����(�(��q�!�I�,�?rc��tj|�D]6}d}d}d}d|vr|d}d|vr|d}d|vr|d}|j|||��8y)Nr#�target�source)r��get_transitions_into�$transitions_into_initial_data_insert)r:rAr�rP�
executabler�s      rrEz&SELinuxGui.transitions_into_initialize�sh���.�.�{�;�A��F��J��F��A�~��9����1�}��x�[�
��1�}��8����5�5�f�j�&�Q�<rc�F�|jj�}|dk7r+|jj|dt|dd�n|jj|dd�|jj|d|�|jj|d|�y)Nrr�Defaultr)r�r�r�rU)r:rPr�r�r�s     rr�z/SELinuxGui.transitions_into_initial_data_insert�s����.�.�5�5�7���T�>��+�+�5�5�d�A�w�v�a�y�QR�|�?T�U��+�+�5�5�d�A�y�I��'�'�1�1�$��:�F��'�'�1�1�$��6�Brc��tj|�D]a}d}d}d}d|vr|d}d|vr|d}d|vr|d}|j||�	|j|dD]}|j|||���cy#t$rY�pwxYw)Nr#r��	transtype�regex)r��get_transitions�$transitions_from_initial_data_insertrL�KeyError)r:rAr�rPr�r��executable_types       rrFz&SELinuxGui.transitions_from_initialize�s����)�)�+�6�A��F��J��I��A�~��9����1�}�"#�H�+���a���k�N�	��5�5�f�o�y�Y�
�"&�+�+�o�">�w�"G�J��=�=�f�j�R[�\�#H�7���
��
�s�*A;�;	B�Bc���|jjd�}|dk(r;|jj|dd�|jj|dd�n�|jj|�}|jj|dt|dd�d}|ddr*|jj|dt	d�|z�n)|jj|dt	d	�|z�|jj|d|dd�|jj|dd
�|jj|d|�|jj|d|�y)Nrr�rFr)z<span foreground="blue"><u>z</u></span>rz:To disable this transition, go to the %sBoolean section%s.z9To enable this transition, go to the %sBoolean section%s.Tr
)r�r�r�rUr)r:rPr�r�r�r'rs       rr�z/SELinuxGui.transitions_from_initial_data_insert�ss���.�.�5�5�d�;���T�>��+�+�5�5�d�A�y�I��+�+�5�5�d�A�u�E��3�3�:�:�4�@�E��+�+�5�5�d�A�w�v�a�y�QR�|�?T�U�B�F��a�y��|��/�/�9�9�%��Q�HD�FE�HN�FN�P��/�/�9�9�%��Q�HC�FD�GM�FM�O�
�+�+�5�5�e�Q��q�	�!��M��+�+�5�5�e�Q��E��'�'�1�1�$��:�F��'�'�1�1�$��9�Erc��tj|�D]+}d|vr|d}nd}|j|d|d|d|��-y)N�filenamer��classr�)r��get_file_transitions�%transitions_files_initial_data_insert)r:rArOr�s    rrHz'SELinuxGui.transitions_files_initializesP���.�.�{�;�A��Q���Z�=�����6�6�q��{�A�g�J�PQ�R]�P^�`h�i�<rc�.�|jj�}|jj|d|�|jj|d|�|jj|d|�|dk(rd}|jj|d|�y)Nrrr�*r
)r�r�r�)r:r@�tclass�destrr�s      rr�z0SELinuxGui.transitions_files_initial_data_inserts����.�.�5�5�7���'�'�1�1�$��4�@��'�'�1�1�$��6�B��'�'�1�1�$��4�@��4�<��D��'�'�1�1�$��4�@rc��|j�d|_d|_d|_d|_|j
j
d�|jj�|jjd�|jjd�|jjd�|jjd�|jj�rK|j j#t$�|j&|_|jjd�|j(j��r|j+|j�|jjd�|jj|j,�|jj|j,�|jj|j,�|j j#t.�|d|j0k(r|d}n|j0j3�}|t4k(r|j6|_t9d�}nK|t:k(r|j<|_t9d�}n%|t>k(r|j@|_t9d�}|jBjEt9d�|jFd	�z�|jHjEt9d
�||jFd	�z�|j
jEt9d�||jFd	�z�|jJj��rl|jjM�|jjd�|j j#tN�|d|jPk(r|d}n|jPj3�}|tRk(r|jT|_t9d�}|tVk(r|jX|_t9d
�}|jBjEt9d�|jFd�z�|jHjEt9d�|jF|d�z�|j
jEt9d�|jF|d�z�|jZj�r�|j j#t\�|d|j^k(r|d}n|j^j3�}|t`k(r|jb|_|tdk(r|jf|_|thk(r|jj|_|jlj�r9|j j#tn�|jpj�|jrj�rI|ju�|j j#tv�|jpj�|jxj�r�|j j#tz�|jjM�|jjd�|j||_|jBjEt9d��|jHjEt9d��|j
jEt9d��|j~j�r�|j j#t��|jjM�|jjd�|j�|_|jBjEt9d��|jHjEt9d��|j
jEt9d��|j�j�r�|j j#t��|jjM�|jjd�|j�|_|jBjEt9d��|jHjEt9d��|j
jEt9d��|j j3�|_E|j�r;|jpjM�|jj��|_|jj��|_|jj��|_t�d|jj���D]u}|jj�|�}|s�!|j��d}t�|t�j��s�O|jj�||j�d��w|jj��j��|j
j
d�y)NFTrrr��writablerAz4Add new %(TYPE)s file path for '%(DOMAIN)s' domains.)�TYPE�DOMAINz3Delete %(TYPE)s file paths for '%(DOMAIN)s' domain.z�Modify %(TYPE)s file path for '%(DOMAIN)s' domain. Only bolded items in the list can be selected, this indicates they were modified previously.r�zlisten for inbound connectionszMAdd new port definition to which the '%(APP)s' domain is allowed to %(PERM)s.)r��PERMzVDelete modified port definitions to which the '%(APP)s' domain is allowed to %(PERM)s.zMModify port definitions to which the '%(APP)s' domain is allowed to %(PERM)s.z%Add new SELinux User/Role definition.z.Delete modified SELinux User/Role definitions.z7Modify selected modified SELinux User/Role definitions.z!Add new Login Mapping definition.z*Delete modified Login Mapping definitions.z3Modify selected modified Login Mapping definitions.z$Add new File Equivalence definition.z-Delete modified File Equivalence definitions.z�Modify selected modified File Equivalence definitions. Only bolded items in the list can be selected, this indicates they were modified previously.)Rr	r|�treesort�
treefilterrwr�r�r�r�r�r{r�r�r�r�r+r3r7rsr�r�r�rZrvr�r�r�r�rr�r�r�r�r�rIrAr�r�r�r�r�r�r�r�r�r�rzr�r�r�r�r�r�r�rqr�r�rrrnr�rkr�rRrgr�rHror�rar9r#r�r��
get_column�	get_cells�
isinstancer�CellRendererText�
set_sort_func�	stripsortr2�unselect_all)r:rr��categoryr��colr�s       rr*zSELinuxGui.tab_change s}��������
���
����������(�(��/��"�"�'�'�)����+�+�E�2��'�'�3�3�E�:��#�#�/�/��6����&�&�u�-��$�$�/�/�1����0�0��?� �1�1�D�M��#�#�/�/��5��"�"�-�-�/��O�O�D�6�6�7��#�#�/�/��5��+�+�7�7��8M�8M�N��'�'�3�3�D�4I�4I�J����*�*�4�+@�+@�A����0�0��<��A�w�$�3�3�3��Q����1�1�B�B�D���� � $� >� >��
��\�?���-�'� $� <� <��
��Z�=���(�"� $� ?� ?��
��]�+���O�O�,�,�Q�/e�-f�rz�GK�GW�GW�jX�.X�
Y����/�/��2g�0h�t|�IM�IY�IY�lZ�1Z�
[����/�/��3D�1E�QY�ei�eu�eu�Hv�1v�
w��$�$�/�/�1��&�&�+�+�-��#�#�/�/��5����0�0��>��A�w�$�5�5�5��Q����3�3�D�D�F���
�%� $� 9� 9��
��Y�<����$� $� 8� 8��
��=�>���O�O�,�,�Q�/~�-�KO�K[�K[�em�Cn�.n�
o����/�/��3K�1L�W[�Wg�Wg�qy�Oz�1z�
{����/�/��3B�1C�NR�N^�N^�hp�Fq�1q�
r��(�(�3�3�5����0�0�1A�B��A�w�$�9�9�9��Q����7�7�H�H�J���-�-� $� >� >��
��+�+� $� >� >��
��-�-� $� >� >��
��#�#�.�.�0����0�0��=��O�O� � �"��%�%�0�0�2���� ����0�0��?��O�O� � �"��!�!�,�,�.����0�0��;��&�&�+�+�-��#�#�/�/��5� �.�.�D�M��O�O�,�,�Q�/V�-W�X����/�/��2b�0c�d����/�/��2k�0l�m��"�"�-�-�/����0�0��<��&�&�+�+�-��#�#�/�/��5� �/�/�D�M��O�O�,�,�Q�/R�-S�T����/�/��2^�0_�`����/�/��2g�0h�i��'�'�2�2�4����0�0��A��&�&�+�+�-��#�#�/�/��5� �4�4�D�M��O�O�,�,�Q�/U�-V�W����/�/��2a�0b�c����/�/��3H�1I�
J��(�(�9�9�;��
��=�=��O�O� � �"� �M�M�3�3�5�D�M�"�m�m�5�5�7�D�O�!�_�_�6�6�8�D�N��1�d�n�n�:�:�<�=���m�m�.�.�q�1����=�=�?�1�-�D�!�$��(<�(<�=����4�4�Q�����M�>�
�M�M�'�'�)�6�6�8����(�(��/rc���|j�\}}|j|j||��}|j|j||��}t||�SrH)�get_sort_column_idrxrxr)	r:r��row1�row2�	user_data�sort_columnrr/�val2s	         rr�zSELinuxGui.stripsort�sR���1�1�3���Q��}�}�U�_�_�T�;�?�@���}�}�U�_�_�T�;�?�@���4���rc��|jj|�}|jj|�}|jj	�|j
j
td�|jj|d�z�tj|j|jj|d��}|D]"}|j|d|d|d|d��$|j|j
�y)NzBoolean %s Allow Rulesrr�r�r��permlist)r�r$r6r�rr�r�rr�rxr��get_boolean_rulesrA�display_more_detail_initr�)r:�windowsr@�itr�rs      rruzSELinuxGui.display_more_detail�s���
�
 �
 �
)�
)�$�
/��
�
 �
 �
;�
;�B�
?���.�.�4�4�6��'�'�1�1�!�4L�2M�PT�Pf�Pf�Pp�Pp�qs�uv�Pw�2w�x��*�*�4�+;�+;�T�=S�=S�=]�=]�^`�bc�=d�e���A��)�)�!�H�+�q��{�A�g�J�PQ�R\�P]�^������7�7�8rc��|jj�}|jj|dd|�d|�d|�ddj|��d�	�y)Nrzallow � rhz { z };)r�r�r�r�)r:r�r��
class_type�
permissionr�s      rr�z#SELinuxGui.display_more_detail_init�s^���5�5�<�<�>���.�.�8�8��q�^d�fl�nx�z}�{C�{C�DN�{O�CP�	Qrc�@�d|_|jtk(rt|jj	td�|jz�|jjtd�|jz�|j|�y|jtk(r�|jj	td�|jz�|jjtd�|jz�|j|�|jj�}|t k(r|j"j	d�n|j"j	d�d|_|jt&k(r`|j(j	td	��|j*jtd
��|j-|�d|_|jt.k(r`|j0j	td��|j2jtd��|j5|�d|_|jt6k(r�|j8j	d
�|j:j	d
�|j<j	td��|j>jtd��d|_|jA|j>�|jC�y)NFzGAdd Network Port for %s.  Ports will be created when update is applied.zAdd Network Port for %szMAdd File Labeling for %s. File labels will be created when update is applied.�Add File Labeling for %szex: /usr/sbin/Foobarzex: /var/lib/FoobarTzGAdd Login Mapping. User Mapping will be created when Update is applied.zAdd Login MappingzQAdd SELinux User Role. SELinux user roles will be created when update is applied.zAdd SELinux Usersr/zMAdd File Equivalency Mapping. Mapping will be created when update is applied.zAdd SELinux File Equivalency)"r�r9r�r�r4rrAr�r��init_network_dialogrvr�r��init_files_dialogr�r�r�r�rWr�rerK�login_init_dialogr�rmrN�user_init_dialogr�r^r_r]rcr��new_updatesr�s   rrzSELinuxGui.add_button_clicked�s�������:�:��%��$�$�-�-�q�1z�/{�@D�@P�@P�/P�
Q��%�%�/�/��3L�1M�QU�Qa�Qa�0a�b��$�$�T�*���:�:��#��"�"�+�+�Q�/~�-�DH�DT�DT�-T�
U��#�#�-�-�q�1K�/L�PT�P`�P`�.`�a��"�"�4�(��-�-�>�>�@�E��� ��%�%�.�.�/E�F��%�%�.�.�/D�E�#�D���:�:��#����%�%�q�)r�'s�u��#�#�-�-�a�0C�.D�E��"�"�4�(�#�D���:�:��"��O�O�$�$�a�({�&|�~��"�"�,�,�Q�/B�-C�D��!�!�$�'�#�D���:�:��(��(�(�1�1�"�5��&�&�/�/��3��!�!�*�*�A�.}�,~�
A��(�(�2�2�1�5S�3T�U�#�D���O�O�D�8�8�9����rc�2�||_|j�yrH)rUr�)r:rIs  rr�zSELinuxGui.show_popup�s��#������
rc�n�|jj�|jjd�yr�)rUr�rIr�r�s  rrzSELinuxGui.close_popup�s)�������!����!�!�$�'�rc���d}|jr.|j�}|s|jjd�yd|_|j
tk(r|j|�|j
tk(�r\|jjtd�|jz�|jjtd�|jz�d|_|j!|�d|_d}d}|j"j%�}|t&k(r�|j(j+|�}||_|j,j/|d�}|j0j|�|j,j/|d�}|dk7r|j3|j4|�|j,j/|d�}|dk7r|j3|j6|�|t8k(r�|j:j+|�}||_|j<j/|d�}|j0j|�|j<j/|d�}	|	dk7r|j3|j4|	�|j<j/|d�}|dk7r|j3|j6|�|t>k(r�|j@j+|�}||_|jBj/|d�}|j0j|�	|jBj/|d�}
|
jEd	�djEd
�}
|jBj/|d�}	|	dk7r|j3|j4|	�
d}|dk7r|j3|j6|�|j
tHk(�rI|jK|�|jLj|jNj/|d��|jPj|jNj/|d��|jRj|jNj/|d��|j3|jT|jNj/|d��|jVjtd��|jXjtd
��|j[|jX�|j
t\k(�r|j_|�|j`j|jbj/|d��|jdj|jbj/|d��|j3|jf|jbj/|d��|jhjtd��|jjjtd��|j[|jj�|j
tlk(r�|jnj|jq|jrj/|d���|jtj|jq|jrj/|d���|jvjtd��|jxjtd��d|_=|j[|jx�yy#tF$rY���wxYw)NFTzPModify File Labeling for %s. File labels will be created when update is applied.r��Modifyrrrz<b>z</b>r
zUModify SELinux User Role. SELinux user roles will be modified when update is applied.zModify SELinux UserszLModify Login Mapping. Login Mapping will be modified when Update is applied.zModify Login MappingzPModify File Equivalency Mapping. Mapping will be created when update is applied.zModify SELinux File Equivalency)>r|rrr�r�r�r9r��modify_button_network_clickedrvr�r4rrAr�r��delete_old_itemr�r�r�r�r�r6r�rxr�r(r�r�r�r�r�r�r�r�rjr�r�r�rVrPrXrYrSrmrNr�r�r�rDrIrFrBrerKr�r^rxrbr_r]rcrW)r:rr��	operationrr�r@�ftyper�r��get_types           rrz SELinuxGui.modify_button_clicked�s%�����=�=��)�)�+�D���"�"�0�0��7������:�:��%��.�.�t�4��:�:��#��"�"�+�+�Q�0B�.C�GK�GW�GW�-W�
X��#�#�-�-�q�1K�/L�PT�P`�P`�.`�a�#'�D� ��"�"�4�(��D�K� �I��C��-�-�>�>�@�E��� ��3�3�N�N�t�T��'+��$��6�6�@�@��q�I���%�%�.�.�t�4��7�7�A�A�$��J���D�=��.�.�t�/G�/G��O��8�8�B�B�4��K���T�>��.�.�t�/H�/H�&�Q��
�%��1�1�L�L�T�R��'+��$��4�4�>�>�t�Q�G���%�%�.�.�t�4��4�4�>�>�t�Q�G���4�<��.�.�t�/G�/G��N��6�6�@�@��q�I���T�>��.�.�t�/H�/H�&�Q��� ��4�4�O�O�PT�U��'+��$��7�7�A�A�$��J���%�%�.�.�t�4��#�?�?�I�I�$�PQ�R�H�'�~�~�e�4�Q�7�=�=�f�E�H��7�7�A�A�$��J���4�<��.�.�t�/G�/G��N�!�!����T�>��.�.�t�/H�/H�&�Q��:�:��"��!�!�$�'�� � �)�)�$�*=�*=�*G�*G��a�*P�Q��%�%�.�.�t�/B�/B�/L�/L�T�ST�/U�V����(�(��)<�)<�)F�)F�t�Q�)O�P��&�&�t�'?�'?��AT�AT�A^�A^�_c�ef�Ag�h��O�O�$�$�a�(�'A�
C��"�"�,�,�Q�/E�-F�G��O�O�D�2�2�3��:�:��#��"�"�4�(��!�!�*�*�4�+?�+?�+I�+I�$�PQ�+R�S�� � �)�)�$�*>�*>�*H�*H��q�*Q�R��&�&�t�'A�'A�4�CW�CW�Ca�Ca�bf�hi�Cj�k����%�%�q�)w�'x�z��#�#�-�-�a�0F�.G�H��O�O�D�3�3�4��:�:��(��(�(�1�1�$�-�-��@Y�@Y�@c�@c�dh�jk�@l�2m�n��&�&�/�/��
�
�d�>W�>W�>a�>a�bf�hi�>j�0k�l��!�!�*�*�A�/A�-B�
D��(�(�2�2�1�5V�3W�X�#�D���O�O�D�8�8�9�
)��9&����s�6?]$�$	]1�0]1c��|jj|�}|jj|d�}|j|j|�|j|j�|jj�yr*)	rwr$rxr(r�r�r�rrr�)r:ri�locrr�r�s      rr�zSELinuxGui.populate_type_combo=sj���.�.�7�7��<���/�/�9�9�$��B���"�"�4�#;�#;�U�C�����/�/�0��#�#�(�(�*rc�b�|dk(ry|jd�rd}nd}|j|�dS)N�	_script_t�_tr)�endswithrj)r:rC�
split_chars   r�strip_domainzSELinuxGui.strip_domainDs6���T�>���?�?�;�'�$�J��J��|�|�J�'��*�*rc�8�|D]}|j|�s�yy)NTF)�
startswith)r:r��exclude_listr=s    r�exclude_typezSELinuxGui.exclude_typeMs ���A����q�!���rc��	�g}|jjd�|j|j�|jj�}|jj�|jj�|j|j�}|jD]b}|dj|�s�|d|jk7s�+|djd�r�@|j|j|d���d|jj�	tj D]J}|jj�}|jj#|dtj |��L|t$k(r�|j&dk7r�|j&j)�D]�}|j|�r7|jj�}|jj#|d|�|jj�}|jj#|d|���|jj+d�|jjd��n�|t,k(r�|j.dk7r�|j.j)�D]�}	|	j|�rW|j1|	|�sE|	|j2vr7|jj�}|jj#|d|	�|jj�}|jj#|d|	���|jj+d�n�|t4k(r�|j2dk7r�tj6�D]�}
|
j|�s�|
j|�rI|j1|
|�s7|jj�}|jj#|d|
�|jj�}|jj#|d|
���|jj+d�|j<j+d�|j>jAd�|jj�}|jj#|dtCd��y#t8$rt;d�Y��wxYw)	NTr�	httpd_sysrFr�rQr")"r�r�r�r�r�r�r�rr�r�rAr�r�r�rwr��
file_type_strr�r�r]rJr[r�rmr�r{r��get_all_file_typesr�r>r�r�r4r)r:rr�r��compare�d�filesr�r_rnr;s           rr�zSELinuxGui.init_files_dialogSs������!�!�/�/��5�����/�/�0��)�)�:�:�<���!�!�'�'�)��"�"�(�(�*��#�#�D�$4�$4�5���+�+�A���t���w�'�A�a�D�D�4D�4D�,D�Q�q�T�_�_�]h�Mi��#�#�D�$5�$5�a��d�$;�<�,�	
�'�'�-�-�/�"	�!�/�/���1�1�8�8�:���*�*�4�4�T�1�h�>T�>T�UZ�>[�\�0��� �T�%5�%5��%=��+�+�0�0�2�C��~�~�g�.�#�8�8�?�?�A���1�1�;�;�D�!�S�I��:�:�A�A�C�D��3�3�=�=�d�A�s�K�3��)�)�4�4�Q�7��)�)�7�7��>��-�'�D�,?�,?�4�,G�!�0�0�5�5�7�E��'�'��0��9J�9J�5�R^�9_�di�mq�m|�m|�d|�#�8�8�?�?�A���1�1�;�;�D�!�U�K��:�:�A�A�C�D��3�3�=�=�d�A�u�M�8��)�)�4�4�Q�7��(�"�t���$�'>�#�6�6�8�C��~�~�g�.��>�>�'�2�4�;L�;L�S�R^�;_�#'�#<�#<�#C�#C�#E�D� �5�5�?�?��a��M�#�>�>�E�E�G���7�7�A�A�$��3�O�
9��)�)�4�4�Q�7�	
� � �+�+�A�.����%�%�d�+��(�(�/�/�1���!�!�+�+�D�!�Q�y�\�B��
�	��'�N��	�s�.I=S�,B.S�S(�'S(c�:�|j�}|s|jjd�y|jj	td�|jz�|jjtd�|jz�d|_	|j|�d}d}d|_|j�}|jj|d�}|jj	|�|jj|d�}|dk(r|jj!d�n |d	k(r|j"j!d�|jj|d
�}|dk7r|j%|j&|�||_	y)NFzJModify Network Port for %s.  Ports will be created when update is applied.zModify Network Port for %sr�rTrrrr)rrr�r�r�r4rrAr�r�r�r�r�rwrxr�r�r[r�r(r�)r:rr�r�rr&r�r�s        rr�z(SELinuxGui.modify_button_network_clicked�sp���%�%�'������,�,�U�3��� � �)�)�1�-y�+z�C�O�O�+O�	P��!�!�+�+�Q�/K�-L�PT�P`�P`�,`�a�#���� � ��&��	�������%�%�'���~�~�'�'��a�0��� � �)�)�$�/��>�>�+�+�D�!�4���u���#�#�.�.�t�4�
��
��#�#�.�.�t�4��~�~�'�'��a�0���4�<��&�&�t�'F�'F��M�#��rc��|j|j�|jj�}|jj�|jjd�	|tk(r.tjj|jddd��}nf|tk(r]tjj|jddd��}|tjj|jddd��z
}g}j�D]<}||D]2\}}||dd	gzvs�|jd
�r�"|j!|��4�>|j#�|j%|j�}|ddk(r|dd}|d
z}d}	d}
|D]Q}|j'|�r|	}
|jj!�}|jj)|d|�|	dz
}	�S|j*j-|
�|j0j-d�|j2jd�y#t.$rY�BwxYw)Nr/rrTrrr�port_t�unreserved_port_t�_typerr�rrrrQ)r�r�r�r�r�rr�r4r�r�rrrAr�rJr�r�r�r�r�r�r�r[r�r�r�)r:rr�r��
port_typesrKr�r��short_domainrN�foundr�s            rr�zSELinuxGui.init_network_dialog�s'������1�1�2��+�+�<�<�>���(�(�.�.�0�� � �)�)�"�-� 	��
�%��'�'�;�;�D�<L�<L�e�Uc�qu�;�v���,�&��'�'�;�;�D�<L�<L�e�U`�nr�;�s����(�(�<�<�T�=M�=M�u�Va�os�<�t�t���J��Y�Y�[�� $�Q��H�A�u��
�h�8K�-L� L�L��:�:�g�.�$�"�)�)�!�,�!(�!�
�O�O���,�,�T�-=�-=�>�L��B��3�&�+�C�R�0��'�#�-�L��C��E����<�<��-��E��7�7�>�>�@���0�0�:�:�4��A�F��q��� �
�+�+�6�6�u�=�
	
���*�*�4�0����'�'��-��	�	��	�s�,CI�3CI�	I�Ic��|j|�}|jj�dk(rNtj�D]6}||dk(s�|jj|j
dd���8yy�Nr/rr�)r-rFr?r�rr4r�)r:�comborrr
s     rrz'SELinuxGui.login_seuser_combobox_change�sl���+�+�E�2�����(�(�*�b�0��/�/�1���Q�v�Y�&��(�(�1�1�!�%�%���2D�E�2�1rc��|j|�}|jj�dk(rNtj�D]6}||dk(s�|jj|j
dd���8yyr�)r-rYr?r��
get_all_rolesr4r�)r:r�r�seroler
s     rrz%SELinuxGui.user_roles_combobox_change�sl���+�+�E�2�����'�'�)�R�/��+�+�-���Q�v�Y�&��'�'�0�0����w��1C�D�.�0rc���d}|jsy|jj�}|sy|j�\}}|r.|j|�}|r|jj|�}|SrH)r|r2r3r6r�)r:r�r7r�s    rrrzSELinuxGui.get_selected_iter�sj�����}�}���m�m�)�)�+�����)�)�+���$���6�6�t�<�D�����A�A�$�G���rc�6�|jjd�|j�}|dk(r|jjd�y|j|r|j|dsy|jj|j|d�y)NFr)r�r�rrrw)r:rr�s   rr�zSELinuxGui.cursor_changed�s������(�(��/��%�%�'���4�<����,�,�U�3���~�~�d�#�4�>�>�$�+?��+C�����(�(�����)=�b�)A�Brc��|j|j�|jj�t	j
�}|j
�|D]B}|jj�}|jj|dt|���D|jjd�|jjd�y�Nrr/)
r�rKrfrr��
get_all_usersr�r�r�r�rDr4rF)r:rr�r
r�s     rr�zSELinuxGui.login_init_dialog�s�������/�/�0��#�#�)�)�+��&�&�(��
�
�
���A��.�.�5�5�7�D��'�'�1�1�$��3�q�6�B��	
���&�&�r�*����%�%�b�)rc��|j|j�|jj�t	j
�}|j
�|D]B}|jj�}|jj|dt|���D|jjd�|jjd�yr�)
r�rNrlrr�r�r�r�r�r�rVr4rY)r:rrr�r�s     rr�zSELinuxGui.user_init_dialog�s�������.�.�/��!�!�'�'�)��&�&�(��
�
�
���A��,�,�3�3�5�D��%�%�/�/��a��Q��@��	
���%�%�b�)����$�$�R�(rc�2�|jrPd|j�z}|j�	|jj	|�|j�yy#tj
j$r}|j|�Yd}~�Ed}~wwxYw)Nzboolean -m -%d deny_ptrace)	r6r+rfr:�semanager<r=r�rk)r:�checkbutton�
update_bufferr=s    rr�zSELinuxGui.on_disable_ptrace	s{�����8�;�;Q�;Q�;S�S�M��O�O��
��	�	�"�"�=�1�
������
�?�?�0�0�
��
�
�1�
�
��
�s�A�B�;B�Bc���|jj���fd�}g}|jtk(rh|j	�s|j|j�S|jD].}|d|jdvs�|j||���0|jtk(r�|jj�}|j	�sl|tk(r|j|j�S|tk(r|j|j�S|t k(r|j#|j�S|jD]-}|d|df|jdvs�|j|��/|jt$k(rm|j	�s|j'|j�S|jD]3}|d|df|jdvs�|j||���5|jt(k(r`|j	�dk(s|j+�S|jD].}|d|jd	vs�|j||���0|jt,k(r]|j	�s|j/�S|jD].}|d|jd
vs�|j||���0|jt0k(r`|j	�dk(s|j3�S|jD].}|d|jdvs�|j||���0|jj5�|D]M}|jj�}t7d��D]"}|jj9||||��$�Oy)Nc�V��g}td��D]}|j||��|Sr*)r�r�)r7�lrOrAs   �r�dup_rowz1SELinuxGui.on_show_modified_only.<locals>.dup_rows.����A��1�f�%������Q�� �&��Hrrr#rr$rr&Tr%r(r')rwr�r9rsr+rBrArVr�rvr�r�r�rCr�rDr�rGr�rr�rr�rr�rrr�r�)	r:r�r��append_listr7r�r�rOrAs	        @rr z SELinuxGui.on_show_modified_onlys7������-�-�/��	����:�:��&��)�)�+��.�.�t�/?�/?�@�@��~�~���q�6�T�^�^�I�6�6��&�&�w�s�|�4�&��:�:��#��-�-�>�>�@�E��)�)�+��H�$��;�;�D�<L�<L�M�M��M�)��9�9�$�:J�:J�K�K��H�$��<�<�T�=M�=M�N�N��~�~����F�C��F�#�t�~�~�j�'A�A��&�&�s�+�&��:�:��%��)�)�+��.�.�t�/?�/?�@�@��~�~����F�C��F�#�t�~�~�f�'=�=��&�&�w�s�|�4�&��:�:��(��)�)�+�t�3��1�1�3�3��~�~���q�6�T�^�^�,<�=�=��&�&�w�s�|�4�&��:�:��"��)�)�+��+�+�-�-��~�~���q�6�T�^�^�F�3�3��&�&�w�s�|�4�&��:�:��#��)�)�+�t�3��,�,�.�.��~�~���q�6�T�^�^�G�4�4��&�&�w�s�|�4�&�	
�������C��>�>�(�(�*�D��1�f�%�����(�(��q�#�a�&�9�&�rc��|jd�}|j|d|�|j|d|�|j|d|�y�Nrrrr)	r:rir;r�r�r@�fclassr�r�s	         r�init_modified_files_liststorez(SELinuxGui.init_modified_files_liststoreWs@���{�{�4� �����t�Q��%����t�Q��&����t�Q��'rc��td�y)Nzrestore to default clicked...r�r�s  r�restore_to_defaultzSELinuxGui.restore_to_default]s��
�-�.rc��|j|j�|jjd�|jjd�yr�)r+r:r�r�r�r�s  rrzSELinuxGui.invalid_entry_retry`s>������0�0�1����-�-�d�3��!�!�/�/��5rc� �t|�dk(s|ddk7rx|jj�|jj	d�|j
j	d�|jjtd�|z�yy)Nrr>FzAThe entry '%s' is not a valid path.  Paths must begin with a '/'.T)	r�r:r�r�r�r�r;r4r)r:�
insert_txts  r�error_check_fileszSELinuxGui.error_check_fileses����z�?�a��:�a�=�C�#7��#�#�(�(�*��#�#�1�1�%�8��%�%�3�3�E�:��"�"�+�+�Q�/r�-s�xB�-B�
C��rc�D�	t|�}|dks|dkDrt�	y#t$rw|jj�|jjd�|jjd�|jjtd��YywxYw)NriFz'Port number must be between 1 and 65536T)
�int�
ValueErrorr:r�r�r�r�r;r4r)r:r&�pnums   r�error_check_networkzSELinuxGui.error_check_networkns���		��t�9�D��a�x�4�%�<� � �(���
�	��#�#�(�(�*��#�#�1�1�%�8��%�%�3�3�E�:��"�"�+�+�Q�/X�-Y�[��	�s��A=B�Bc���|jr]|j|j�td�k(r5|jj�|jj�yyy)Nr")r6r-r�rr�r�rrr�r�s  rr)zSELinuxGui.show_more_types{sW������)�)�$�*B�*B�C�q��|�S��'�'�,�,�.��+�+�0�0�2�T�rc��|j�|j|j�}|jj	�}|j
j	�}|jr�|j�}|jj|d�}|jj|d�}|jj|d�}|jj|d|�|jj|d|�|jj|d|�d|||||d�|jd|<n1|jjd�}d||d�|jd|<|jj|d|�|jj|d|�|jj|d|�|j�y)	Nrrr�-m)r�r�r�oldrange�	oldseuser�oldnamer'�-a)r�r�r)rr-rBrFr?rDr�rrrIrxrwr�rIr�r�)	r:rr�	mls_rangerr�rrrs	         rr�zSELinuxGui.update_to_login�s��������+�+�D�,F�,F�G���(�(�1�1�3�	��$�$�-�-�/���;�;��)�)�+�D��*�*�4�4�T�1�=�G��,�,�6�6�t�Q�?�I��+�+�5�5�d�A�>�H��N�N�$�$�T�1�g�6��N�N�$�$�T�1�i�8��N�N�$�$�T�1�h�7�6:�Y�Z`�nv�FO�\c�,d�D�M�M�'�"�4�(��>�>�(�(��.�D�6:�Y�Z`�+a�D�M�M�'�"�4�(���� � ��q�$�/���� � ��q�&�1���� � ��q�)�4����rc	���|j�|j|j�}|jj	�}|j
j	�}|jj	�}|j�r|j�}|jj|d�}|jj|d�}|jj|d�}	|jj|d�}
|jj|d|�|jj|d|�|jj|d|	�|jj|d|
�d||||
|	||d�|jd|<nL|jjd�}|s|rd|||d	�|jd|<nd|d
�|jd|<|jj|d|�|jj|d|�|jj|d|�|jj|d|�|j�y)Nrrr
rr)r�r�r
rRr�oldlevel�oldrolesrr(r)r�r�r
rR)r�rR)rr-rSrXr?rYrVr�rrrPrxrwr�rIr�r�)r:rrr
rrr�rrrrs           rr�zSELinuxGui.update_to_user�s�������*�*�4�+C�+C�D���)�)�2�2�4���'�'�0�0�2�	��#�#�,�,�.���;�;��)�)�+�D��)�)�3�3�D�!�<�G��*�*�4�4�T�1�=�H��*�*�4�4�T�1�=�H��*�*�4�4�T�1�=�H��N�N�$�$�T�1�g�6��N�N�$�$�T�1�h�7��N�N�$�$�T�1�h�7��N�N�$�$�T�1�h�7�59�I�X]�gl�{C�QY�go�|C�+D�D�M�M�&�!�$�'��>�>�(�(��.�D��E�9=�	�\a�kp�.q��
�
�f�%�d�+�9=�u�.M��
�
�f�%�d�+���� � ��q�$�/���� � ��q�%�0���� � ��q�%�0���� � ��q�)�4����rc��|j�|jj�}|jj�}|jr~|j�}|j
|jj|d��}|j
|jj|d��}d|||d�|jd|<n0|jjd�}d|d�|jd|<|jj|d|j|��|jj|d|j|��y)Nrrr)r��src�oldsrc�olddestr%r�r�r)rr_r?r^r�rrrxrwr�rIr�r)r:rr�rr�rrs       rr�zSELinuxGui.update_to_file_equiv�s�������)�)�2�2�4���*�*�3�3�5���;�;��)�)�+�D��m�m�D�N�N�$<�$<�T�1�$E�F�G��]�]�4�>�>�#;�#;�D�!�#D�E�F�?C�C�[a�nu�4v�D�M�M�*�+�D�1��>�>�(�(��.�D�?C�C�4P�D�M�M�*�+�D�1���� � ��q�$�+�+�d�*;�<���� � ��q�$�+�+�c�*:�;rc�L�|j�d|_|jj�}|j	|�ry|j|j�}|jj�}|j|j�}|jr�|j�}|j|jj|d��}|j|jj|d��}|jj|d�}	d||||	d�|jd||f<n2|jj!d�}d|d	�|jd||f<|jj|d|j#|��|jj|d|j#|��|jj|d|j#|��d
|_|j$j'd
�|j)�y)NTrrrr)r�r��oldtype�oldpath�oldclassr$r�r�r�F)rrXr�r?r	r-r�r�r�r�rr�unmarkrwrxr�rIr�rr�r[r�)
r:rr@�setyperr�r�r!�	oldsetype�	oldtclasss
          rr�zSELinuxGui.update_to_files�s�����������$�$�-�-�/���!�!�$�'���+�+�D�,D�,D�E���"�"�+�+�-���+�+�D�,E�,E�F���;�;��)�)�+�D��k�k�$�.�.�":�":�4��"C�D�G����D�N�N�$<�$<�T�1�$E�F�I����0�0��q�9�I�CG�QW�dm�{B�PY�9Z�D�M�M�*�%�t�V�n�5��>�>�(�(��.�D�CG�QW�8X�D�M�M�*�%�t�V�n�5���� � ��q�$�+�+�d�*;�<���� � ��q�$�+�+�f�*=�>���� � ��q�$�+�+�f�*=�>�����"�"�-�-�e�4����rc�0�d|_|jj�}|j|�ry|jj�rd}nd}|j
|j�}|jj�}|jr�|j�}|j|jj|d��}|j|jj|d��}|j|jj|d��}	d|||	||d�|jd	||f<n3|jj!d�}d
||d�|jd	||f<|jj|d|�|jj|d|�|jj|d|�d|_|j"j%�|j&j)d�|j+�y)
NTrrrrrr)r�r�rr �oldprotocol�oldportsr&r)r�r�rF)rYr�r?rr�r+r-r�r�r�rrr$rwrxr�rIr�r�r�rIr�r�)
r:rr�r�r%rr�r*r)r&s
          rr�zSELinuxGui.update_to_network�s�������(�(�1�1�3���#�#�E�*���"�"�-�-�/��H��H��+�+�D�,K�,K�L���$�$�-�-�/���;�;��)�)�+�D��{�{�4�>�>�#;�#;�D�!�#D�E�H��+�+�d�n�n�&>�&>�t�Q�&G�H�K����D�N�N�$<�$<�T�1�$E�F�I�BF�PV�_b�ox�JU�ck�8l�D�M�M�&�!�5�(�"3�4��>�>�(�(��.�D�BF�PV�_b�7c�D�M�M�&�!�5�(�"3�4���� � ��q�%�0���� � ��q�(�3���� � ��q�&�1� ����!�!�&�&�(����!�!�$�'����rc	�	�d}|jjd�|jtk(r�|jj�|jd}|D]�\}}|||fd}|jj�}|jj|d|�|jj|d|�|jj|d|���|j|j�y|jtk(r�|jj�|jd}|D]�\}	}
||	|
fd}|jj�}|jj|d|	�|jj|d|�|jj|dtj|
���|j|j�y|jt k(�r|j"j�|jd	}|D]�}||d
}
||j%dd�}||j%d
d�}|j"j�}|j"j|d|�|j"j|d|
�|j"j|d|�|j"j|d|���|j|j&�y|jt(k(r�|j*j�|jd}|D]�}||d}||j%dd�}|j*j�}|j*j|d|�|j*j|d|�|j*j|d|���|j|j,�y|jt.k(r�|j0j�|j2D]�}|ds�	|j0j�}|j0j|d|j5|d��|j0j|d|j5|d����|j|j6�yy)N�AddFr&r�rrr
r$r(rRr�r/r
rr'rr)rIr�r9r�r�rrVr�r�r�r�rvr�r�r�r�r�r[r�r\r�rLrMr�rerbrxrf)r:rr��	port_dictr�r�r%r��
fcontext_dictr@r��	user_dictr(rrr
�
login_dictr'rr;s                    rrz SELinuxGui.delete_button_clickeds%���	����!�!�%�(��:�:��%��)�)�/�/�1����v�.�I�#,���x�"�E�8�#4�5�f�=���4�4�;�;�=���-�-�7�7��a��G��-�-�7�7��a��J��-�-�7�7��a��H�$-�
�O�O�D�6�6�7���:�:��#��'�'�-�-�/� �N�N�:�6�M� -���f�&��f�~�6�v�>���2�2�9�9�;���+�+�5�5�d�A�t�D��+�+�5�5�d�A�v�F��+�+�5�5�d�A�x�?U�?U�V\�?]�^�!.�
�O�O�D�4�4�5���:�:��"��&�&�,�,�.����v�.�I�!��!�$���/����o�)�)�'�2�6��!�$��+�+�G�R�8���1�1�8�8�:���*�*�4�4�T�1�d�C��*�*�4�4�T�1�e�D��*�*�4�4�T�1�e�D��*�*�4�4�T�1�c�B�"�
�O�O�D�3�3�4���:�:��#��'�'�-�-�/�����0�J�#��#�E�*�8�4�� ��'�+�+�G�R�8���2�2�9�9�;���+�+�5�5�d�A�v�F��+�+�5�5�d�A�u�E��+�+�5�5�d�A�s�C�
$�
�O�O�D�4�4�5���:�:��(��,�,�2�2�4��2�2����8��;�;�B�B�D�D��4�4�>�>�t�Q��
�
�V[�\]�V^�H_�`��4�4�>�>�t�Q��
�
�V[�\]�V^�H_�`�	3�

�O�O�D�9�9�:��)rc�0�|j�|jtk(r7|jD](}|ds�	d|dd�|jd|d|df<�*|jt
k(r>|jD]/}|ds�	d|dd�|jd|dt|df<�1|jtk(r6|jD]'}|ds�	d|d|d	d
�|jd|d<�)|jtk(r:|jD]+}|ds�	d|d|d|dd�|jd
|d<�-|jtk(r2|jD]#}|ds�	d|dd�|jd|d<�%|j�y)Nrr�r
r#r&rrr$r)r�rRr�r()r�r'rr�r'rr%)rr9r�r�rIrvr��reverse_file_type_strr�r[r�rLr�rer��r:r�deletes   rrz!SELinuxGui.on_save_delete_clickedDs��������:�:��%��7�7���!�9�OS�]c�de�]f�Dg�D�M�M�&�)�6�!�9�f�Q�i�*@�A�8��:�:��#��5�5���!�9�jn�x~�@A�yB�`C�D�M�M�*�-�v�a�y�:O�PV�WX�PY�:Z�.[�\�6��:�:��"��4�4���!�9�BF�PV�WX�PY�dj�kl�dm�7n�D�M�M�&�)�&��)�4�5��:�:��#��5�5���!�9�CG�RX�YZ�R[�gm�no�gp�|B�CD�|E�9F�D�M�M�'�*�6�!�9�5�6��:�:��(��:�:���!�9�LP�Y_�`a�Yb�Ac�D�M�M�"2�3�F�1�I�>�;�	
���rc�R�|jD]}t|d|d|d��yr)r�r>r3s   r�!on_save_delete_file_equiv_clickedz,SELinuxGui.on_save_delete_file_equiv_clicked\s*���1�1�F��&��)�V�A�Y��q�	�3�2rc�"�||d||d<yr*r)r:r�r@r�s    rr�zSELinuxGui.on_toggle_update`s��"�4�[��^�+��d��A�rc��d}|D]A}|d|dk(r/|d|dk(r$|j|�}|j|�y|dz
}�Cy)Nrrr)r$r)r:rwr�rNr;r�s      r�ipage_deletezSELinuxGui.ipage_deletecsZ�����E��Q�x�3�q�6�!�e�A�h�#�a�&�&8� �)�)�#�.��� � ��&���1�H�C�rc��|sy|jj|�}|jj|�}|j|d�}|j	|d|j|d��|j|d�}||j
dvr|j
d|=nd|i|j
d|<|j
�y)Nrrr#rP)r�r$r6rxr�rIr�)r:r�r@r�r�rrPs       rr�zSELinuxGui.on_togglels������"�"�+�+�D�1���"�"�=�=�d�C�����t�Q�'��
����a�U�_�_�T�1�%=�!=�>�����q�)���4�=�=��+�+��
�
�i�(��.�.6��-?�D�M�M�)�$�T�*����rc�b�|j�|_|jj�yrH)r?rBr`�refilter)r:�entryrs   rrz#SELinuxGui.get_advanced_filter_datazs"���.�.�*����#�#�,�,�.rc�b�|j�|_|jj�yrH)r?rBr�r<)r:r�rs   rr�zSELinuxGui.get_filter_data~s$��"�*�*�,������ � �"rc��d|_|jj�|jdD�]5}|jd|d}|jj	d�}|jj|dd�|jj|dt
j|��|jj|dt|jd|d�|jj|dd�|jj	|�}|jj|dtd	�|z�|jj|dd
���8|jdD�]�\}}|jd||fd}|jd||fd}|jj	d�}|jj|dd�|jj|d|�|jj|dd�|d
k(r3|jj|dtd�|jz�|dk(r3|jj|dtd�|jz�|dk(r3|jj|dtd�|jz�|jj	|�}|jj|dd
�|jj|dtd�|z�|jj	|�}|jj|dd
�|jj|dtd�tj|z�|jj	|�}|jj|dd
�|jj|dtd�|z����|jdD�]q\}	}
|jd|	|
fd}|jj	d�}|jj|dd�|jj|d|�|jj|dd�|d
k(r3|jj|dtd�|jz�|dk(r3|jj|dtd�|jz�|dk(r3|jj|dtd�|jz�|jj	|�}|jj|dtd�|	z�|jj|dd
�|jj	|�}|jj|dtd�|
z�|jj|dd
�|jd|	|
fd}|jj	|�}|jj|dd
�|jj|dtd�|z���t|jdD�]e}|jd|d}|jj	d�}|jj|dd�|jj|d|�|jj|dd�|d
k(r&|jj|dtd��|dk(r&|jj|dtd��|dk(r&|jj|dtd��|jj	|�}|jj|dtd �|z�|jj|dd
�|jj	|�}|jj|dd
�|jd|d!}|jj|dtd"�|z�|jd|jd#d$�}
|jj	|�}|jj|dd
�|jj|dtd%�|
z���h|jd&D�]e}|jd&|d}|jj	d�}|jj|dd�|jj|d|�|jj|dd�|d
k(r&|jj|dtd'��|dk(r&|jj|dtd(��|dk(r&|jj|dtd)��|jj	|�}|jj|dd
�|jj|dtd*�|z�|jj	|�}|jj|dd
�|jd&|d+}|jj|dtd,�|z�|jd&|jd#d$�}
|jj	|�}|jj|dd
�|jj|dtd%�|
z���h|jd-D�]�}|jd-|d}|jj	d�}|jj|dd�|jj|d|�|jj|dd�|d
k(r&|jj|dtd.��|dk(r&|jj|dtd/��|dk(r&|jj|dtd0��|jj	|�}|jj|dd
�|jj|dtd1�|z�|jj	|�}|jj|dd
�|jd-|d2}|jj|dtd3�|z����|j|j�y)4NTr#r�rrrrPr
zSELinux name: %sFr$r�rzAdd file labeling for %sr�zDelete file labeling for %srzModify file labeling for %sz
File path: %szFile class: %szSELinux file type: %sr&zAdd ports for %szDelete ports for %szModify ports for %szNetwork ports: %szNetwork protocol: %sr(zAdd userzDelete userzModify userzSELinux User : %srRz	Roles: %sr�r/zMLS/MCS Range: %sr'zAdd login mappingzDelete login mappingzModify login mappingzLogin Name : %srzSELinux User: %sr%zAdd file equiv labeling.zDelete file equiv labeling.zModify file equiv labeling.zFile path : %srzEquivalence: %s)rWr�rrIr�r�r�r�r�rrAr�r�r�r�)r:r�boolsr�r�r'r@r�r%r&r�r(rrr'rrs                 r�
update_guizSELinuxGui.update_gui�s���������#�#�%��]�]�9�-�E��
�
�i�0��7��A�I��(�(�/�/��5�D��!�!�+�+�D�!�T�:��!�!�+�+�D�!�X�5J�5J�5�5Q�R��!�!�+�+�D�!�V�D�M�M�)�<T�UZ�<[�\d�<e�5f�g��!�!�+�+�D�!�T�:��)�)�0�0��6�E��!�!�+�+�E�1�q�9K�7L�PU�6U�V��!�!�+�+�E�1�e�<�.�!�M�M�*�5�L�D�&��
�
�j�1�4��.�A�(�K�I��]�]�:�.��f�~�>�v�F�F��(�(�/�/��5�D��!�!�+�+�D�!�T�:��!�!�+�+�D�!�Y�?��!�!�+�+�D�!�T�:��D� ��%�%�/�/��a�!�<V�:W�[_�[k�[k�9k�l��D� ��%�%�/�/��a�!�<Y�:Z�^b�^n�^n�9n�o��D� ��%�%�/�/��a�!�<Y�:Z�^b�^n�^n�9n�o��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�q��7I�T�6Q�R��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�q�9I�7J�h�Nd�Nd�ek�Nl�6l�m��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�q�9P�7Q�U[�6[�\�-6�0#�m�m�F�3�N�D�(��
�
�f�-�t�X�.>�?��I�I��(�(�/�/��5�D��!�!�+�+�D�!�T�:��!�!�+�+�D�!�Y�?��!�!�+�+�D�!�T�:��D� ��%�%�/�/��a�!�<N�:O�SW�Sc�Sc�9c�d��D� ��%�%�/�/��a�!�<Q�:R�VZ�Vf�Vf�9f�g��D� ��%�%�/�/��a�!�<Q�:R�VZ�Vf�Vf�9f�g��)�)�0�0��6�E��!�!�+�+�E�1�q�9L�7M�QU�6U�V��!�!�+�+�E�1�e�<��)�)�0�0��6�E��!�!�+�+�E�1�q�9O�7P�T\�6\�]��!�!�+�+�E�1�e�<��]�]�6�*�D�(�+;�<�V�D�F��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�q�9P�7Q�U[�6[�\�-4�0�M�M�&�)�D��
�
�f�-�d�3�H�=�I��(�(�/�/��5�D��!�!�+�+�D�!�T�:��!�!�+�+�D�!�Y�?��!�!�+�+�D�!�T�:��D� ��%�%�/�/��a��:��G��D� ��%�%�/�/��a��=�9I�J��D� ��%�%�/�/��a��=�9I�J��)�)�0�0��6�E��!�!�+�+�E�1�q�9L�7M�QU�6U�V��!�!�+�+�E�1�e�<��)�)�0�0��6�E��!�!�+�+�E�1�e�<��M�M�&�)�$�/��7�E��!�!�+�+�E�1�q��~��6N�O��-�-��'��-�1�1�'�2�>�C��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�a�8K�6L�s�6R�S�/*�2�]�]�7�+�E��
�
�g�.�u�5�h�?�I��(�(�/�/��5�D��!�!�+�+�D�!�T�:��!�!�+�+�D�!�Y�?��!�!�+�+�D�!�T�:��D� ��%�%�/�/��a��;N�9O�P��D� ��%�%�/�/��a��;Q�9R�S��D� ��%�%�/�/��a��;Q�9R�S��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�q�9J�7K�u�6T�U��)�)�0�0��6�E��!�!�+�+�E�1�e�<��]�]�7�+�E�2�8�<�F��!�!�+�+�E�1�q�9K�7L�PV�6V�W��-�-��(��/�3�3�G�R�@�C��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�a�8K�6L�s�6R�S�/,�2�M�M�"2�3�D��
�
�&6�7��=�h�G�I��(�(�/�/��5�D��!�!�+�+�D�!�T�:��!�!�+�+�D�!�Y�?��!�!�+�+�D�!�T�:��D� ��%�%�/�/��a�!�<V�:W�Y��D� ��%�%�/�/��a�!�<Y�:Z�\��D� ��%�%�/�/��a�!�<Y�:Z�\��)�)�0�0��6�E��!�!�+�+�E�1�e�<��!�!�+�+�E�1�q�9I�7J�d�6R�S��)�)�0�0��6�E��!�!�+�+�E�1�e�<��-�-� 0�1�$�7��>�C��!�!�+�+�E�1�q�9J�7K�s�6R�S�'4�*	
����*�*�+rc�^�|jj�r|j|_|jj�r|j|_|jj�r|j|_|j
j�r|j
|_yyrH)r�r+r�r�r�r�r�s r�set_active_application_buttonz(SELinuxGui.set_active_application_button	s����$�$�/�/�1�!%�!:�!:�D���"�"�-�-�/�!%�!8�!8�D���(�(�3�3�5�!%�!>�!>�D���$�$�/�/�1�!%�!:�!:�D��2rc�$�|jj�|jjd�|jjd�|j
jd�|jjd�|jjd�|jjd�|jjd�|jjd�|r|jjd�yy)NFr/)
rJr�r�r{r�r�r�rqrrrkrgr�r4)r:rs  rr6zSELinuxGui.clearbuttons	s����#�#�(�(�*��!�!�-�-�e�4����+�+�E�2��!�!�-�-�e�4��%�%�1�1�%�8�� � �,�,�U�3��"�"�.�.�u�5����*�*�5�1����+�+�E�2���!�!�*�*�2�.�rc�N�|j�|jjd�|jjd�|jjt
d��|jjd�|j�|j�y)NT�System)
r6rqr{rrr7r3rr[r*r�r�s rr2zSELinuxGui.show_system_page"	sv������� � �,�,�T�2��"�"�.�.�t�4��*�*�4�4�Q�x�[�A�� � �+�+�D�1��������rc�n�|j�|j�|jjd�|jjt
d��|j�|j�|jjd�|jjd�y)NTzFile Equivalence)r6rror[r7r3rr*r�r�r�r�r�s  rr
zSELinuxGui.show_file_equiv_page+	s��������"�"�$��$�$�/�/��5��*�*�4�4�Q�7I�5J�K������������%�%�d�+����(�(��.rc��|j�|jjd�|jjd�|jjt
d��|jjd�|j�|j�|j�|j�|jjd�|jjd�y)NT�Users)r6rgr{rkr7r3rr[r*rrr�r�r�r�r�s r�show_users_pagezSELinuxGui.show_users_page5	s����������+�+�D�1����*�*�4�0��*�*�4�4�Q�w�Z�@����*�*�4�0��������������������%�%�d�+����(�(��.rc�t�|jd�|jjd�|jjd�|jjd�|j
jd�|jj
d�|j�|j�y�NFT)	r6r�r{r�r�r�r[r*r�r�s rr5z!SELinuxGui.show_applications_pageB	s������%� ��!�!�-�-�d�3����+�+�D�1��!�!�-�-�d�3��%�%�1�1�$�7��!�!�,�,�T�2��������rc�$�|j�yrH)r2r�s  rrzSELinuxGui.system_interfaceL	s�����rc�$�|j�yrH)rJr�s  rrzSELinuxGui.users_interfaceO	s�����rc��g}d}|jj�}|j�dk(r�|jD]�}|jj|�}|jj
|�}|jj
|�}|dk7s�Z|jj|d�dk(r|j|�|dz
}��|D]}|jj|��y|jdk7r�|jj�|tk(r|j|j�y|tk(r|j!|j�y|t"k(r|j%|j�yyy)NrTrFr)r�r�r+rwr�r$r6r�rxr�rrArr�rCr�rDr�rG)	r:r�r�iterlistrNr�r;r��iterss	         rr
z SELinuxGui.show_mislabeled_filesR	sL�������)�)�:�:�<���!�!�#�t�+������}�}�-�-�c�2���}�}�?�?��E�����A�A�$�G���4�<��~�~�/�/��a�8�E�A� ����-��1�H�C�(�"�����%�%�e�,�"��
�
��
%��N�N� � �"��� ��0�0��1A�1A�B��-�'��.�.�t�/?�/?�@��(�"��1�1�$�2B�2B�C�#�
&rc��tj|�djd�d}tj|d�djd�d}|j	td�|||d�zd��tjjk(r,|jj|�|j�yy)	NrrhrrzbRun restorecon on %(PATH)s to change its type from %(CUR_CONTEXT)s to the default %(DEF_CONTEXT)s?)�PATH�CUR_CONTEXT�DEF_CONTEXTzrestorecon dialog)�title)rRrcrjrb�verifyrr�ResponseType�YESr:�
restoreconr)r:r@rerds    rryzSELinuxGui.fix_mislabeledk	s���� � ��&�q�)�/�/��4�Q�7���"�"�4��+�A�.�4�4�S�9�!�<���;�;�q�}�~�KO�`c�tw�Bx�x�@S�;�T�X[�Xh�Xh�Xl�Xl�l��I�I� � ��&��%�%�'�lrc��|jj|j��|jj|j��yrH)r�r�rrKr�s  rr�zSELinuxGui.new_updatesr	s6�����(�(�����9����(�(�����9rc��|j�|j�td�k(|_|jr%|jjtd��y|jjtd��y)N�UpdatezUpdate ChangeszRevert Changes)rA�	get_labelrrWr�r��r:rZrs   rrz#SELinuxGui.update_or_revert_changesv	s`�������'�'�)�Q�x�[�8����;�;����(�(��+;�)<�=����(�(��+;�)<�=rc��|j�|jr|j�n|j�d|_|j|jj��d|_|j�|j�|j�|jj�yrL)
rrW�update_the_system�revert_datar6r,r:r;r	rr�r�rr�s  rrz%SELinuxGui.apply_changes_button_press~	s��������;�;��"�"�$����� ����+�+�D�I�I�,@�,@�,B�C���������!�!�#��������#�#�%rc�F�|j�|j�}|j�	|jj	|�|j�|j�y#tj
j$r}t|�Yd}~�Nd}~wwxYwrH)
r�
format_updaterfr:r�r<r=r>rkr@)r:rr�r=s    rrazSELinuxGui.update_the_system�	sy�������*�*�,�
�����	��I�I���}�-�	
�����
�
������,�,�	��!�H�H��	�s�A.�.B �B�B c�:�dddddd�}|D]}||k(s�	||cSy)Nrrr)zExecutable FileszWritable FileszApplication File Type�Inbound�Outbound�Booleansr)r:�lookup�ipage_values�values    r�ipage_value_lookupzSELinuxGui.ipage_value_lookup�	s6��,-��]^�kl�z{�|��!�E����#�E�*�*�"�rc�p�|jd�d}|jd�d}|dk(r||_y|S)Nz: rrzSELinux name)rj�bool_revert)r:�	attribute�bool_ids   r�get_attributes_updatez SELinuxGui.get_attributes_update�	s>���O�O�D�)�!�,�	��/�/�$�'��*���n�$�(�D���rc�"�|j�d}|jD�]l}|dvr1|j|D]}|d|j||d|fzz
}�!|dvr�|j|D]�}|j||ddk(r	|d|zz
}�$d	|j||vrL|d
|j||d�d|j||d�d
|j||d	�d|�d�	z
}��|d
|j||d�d|j||d�d|�d�z
}��|dvr�|j|D]�}|j||ddk(r	|d|zz
}�$d|j||vrvd	|j||vrb|d|j||d�d|j||d�d
|j||d	�d|j||d�d|�d�z
}��|d|j||d�d|j||d�d|�d�z
}��|dvrj|j|D]X}|j||ddk(r	|d|zz
}�$|d|j||d�d|j||d�d|�d�z
}�Z|dvr�|j|D]n}|j||ddk(r	|d|zz
}�$|d|j||d�d|j||d�d|j||d �d|�d�	z
}�p|d!vs���|j|D]d\}}|j|||fddk(r
|d"|�d|�d�z
}�-|d#|j|d�d|j||d�d$|�d|�d�	z
}�f��o|S)%Nr/r#zboolean -m -%d %s
rPr'r�r�zlogin -d %s
r�zlogin z -s rz -r r�rar(zuser -d %s
r
zuser z -L z -R rRr%zfcontext -d %s
z	fcontext z -e rr$z -t r�z -f r�r&zport -d -p zport z -p )rbrI)	r:r�rKrr�r
rr&r�s	         rrdzSELinuxGui.format_update�	s@�������
����A��I�~����q�)�A�!�%:�d�m�m�A�>N�q�>Q�RZ�>[�]^�=_�%_�_�M�*��G�|����q�)�A��}�}�Q�'��*�8�4��<�%��1�)<�<�
� �D�M�M�!�$4�Q�$7�7�%��
�
�VW�HX�YZ�H[�\d�He�gk�gt�gt�uv�gw�xy�gz�|D�hE�GK�GT�GT�UV�GW�XY�GZ�[b�Gc�ef�*g�g�
�%�$�-�-�PQ�BR�ST�BU�V^�B_�ae�an�an�op�aq�rs�at�u}�a~�AB�*C�C�
�
*��F�{����q�)�A��}�}�Q�'��*�8�4��<�%��!�);�;�
� �D�M�M�!�$4�Q�$7�7�G�t�}�}�UV�GW�XY�GZ�<Z�%�T�]�]�[\�M]�^_�M`�ai�Mj�lp�ly�ly�z{�l|�}~�l�AH�mI�KO�KX�KX�YZ�K[�\]�K^�_f�Kg�im�iv�iv�wx�iy�z{�i|�}C�iD�FG�*H�H�
�%����q�AQ�RS�AT�U]�A^�`d�`m�`m�no�`p�qr�`s�tz�`{�}~�)��
�
*��$�$����q�)�A��}�}�Q�'��*�8�4��<�%�);�a�)?�?�
�%�T�]�]�ST�EU�VW�EX�Ya�Eb�dh�dq�dq�rs�dt�uv�dw�x}�d~�AB�*C�C�
�	*��J�����q�)�A��}�}�Q�'��*�8�4��<�%�);�a�)?�?�
�%�4�=�=�YZ�K[�\]�K^�_g�Kh�jn�jw�jw�xy�jz�{|�j}�E�kF�HL�HU�HU�VW�HX�YZ�H[�\c�Hd�fg�*h�h�
�	*��F�{�&*�m�m�A�&6�N�D�(��}�}�Q�'��x�(8�9�(�C�t�K�%��4�)P�P�
�%�t�}�}�UV�GW�XY�GZ�[c�Gd�fj�fs�fs�tu�fv�wx�fy�{A�gB�DL�NR�*S�S�
�	'7�I�T�rc���d}g}d}|jD]*}|j|ds|j|�|dz
}�,|j�|D]}|j|��y)Nrr/r)r�r��reverserQ)r:rN�remove_listr�r;s     rrbzSELinuxGui.revert_data�	so�������
��*�*�E��(�(��-�a�0��"�"�3�'��1�H�C�+�	�����C��O�O�C� �rc�
�|j�tdk(}|r|jtd�n|jtd�|jj	|�|j
j	|�yrM)r?�ADVANCED_LABELr4rvr{rv�r:�labelr�advanceds    rr(z!SELinuxGui.reveal_advanced_system�	se���>�>�#�~�a�'8�8����N�N�>�!�,�-��N�N�>�!�,�-�� � �,�,�X�6��(�(�4�4�X�>rc�v�|j�tdk(}|r|jtd�n|jtd�|jj	|�|j
j	|�|jj	|�|jj	|�yrM)r?rwr4r�r{r�r�r�rxs    rr�zSELinuxGui.reveal_advanced�	s����>�>�#�~�a�'8�8����N�N�>�!�,�-��N�N�>�!�,�-����(�(��2����(�(��2����*�*�8�4����*�*�8�4rc���|j�tdk(r)|jtd�|j�y|jtd�|j	|j
�yr1)r?�ADVANCED_SEARCH_LABELr4rr�r<)r:ryrs   rrz)SELinuxGui.on_show_advanced_search_window�	sY���>�>��4�Q�7�7��N�N�0��3�4������N�N�0��3�4��O�O�D�7�7�8rc�2�|rK|jj|jtd��|jjd�y|jj|jtd��|jjd�y)NzSystem Status: EnforcingTzSystem Status: Permissive)r�rVr�rr�r[r�)r:rks  rrXzSELinuxGui.set_enforce_text�	si����O�O� � ����!�4N�2O�P��)�)�4�4�T�:��O�O� � ����!�4O�2P�Q��*�*�5�5�d�;rc��|jsy|jj|j��|j	|j��yrH)r6r:�
setenforcer+rX�r:rZs  rrzSELinuxGui.set_enforce
s@�������	�	���V�.�.�0�1����f�/�/�1�2rc�@�|jj�}|dk(ryd|_|jj�|jj|�|jdk(r|j|�y|jdk(r|j|�yy)NF�Import�Export)	r^�get_filenamerWr�r�r4rV�
import_config�
export_config)r:rr�s   rrzSELinuxGui.on_browse_select
s����#�#�0�0�2���t��� ������������&�&�x�0�����)����x�(�
�
�
�8�
+����x�(�,rc�P�|jj�}|jj�r1|j	d�s|jj|dz�yy|j	d�r0|j
d�d}|jj|�yy)N�(/.*)?r)r�r?r�r+r�r4rj)r:rr@s   rrzSELinuxGui.recursive_path
s����$�$�-�-�/���%�%�0�0�2��=�=��*��%�%�.�.�t�h��?�+�
�]�]�8�
$��:�:�h�'��*�D��!�!�*�*�4�0�%rc�n�|j�}|jr|jd�d|_yy�Nr/F)r?rWr4)r:�	entry_objr�txts    rrzSELinuxGui.highlight_entry_text!
s4��� � �"��������r�"�$�D��rc��|j�}|dk(ry|jd�r|jjd�tj
D]j}|j
|�s�|jD]G}|djtj
|�s�)|j|j|d��I�ly)Nr/r�Tr)
r?r�r�r[r��DEFAULT_DIRSr�r�r(r�)r:r=�textr�r�s     rrz#SELinuxGui.autofill_add_files_entry'
s����~�~����2�:���=�=��"��&�&�1�1�$�7��&�&�A����q�!��2�2�A���t�}�}�X�%:�%:�1�%=�>��2�2�4�3K�3K�Q�q�T�R�3�'rc��|jjd�|_|jj�}|jj	�}yr�)r��get_col�boolean_column_1�	get_width�get_cell_renderers)r:r�width�renderers    rrzSELinuxGui.resize_columns3
sC�� $� 5� 5� =� =�a� @����%�%�/�/�1���(�(�;�;�=�rc�8�|jj�yrH)r^r�r�s  rrzSELinuxGui.browse_for_files8
��������rc�8�|jj�yrH)r^r�r�s  rrzSELinuxGui.close_config_window;
r�rc���|j|jj�k(ry|jt	d��t
jjk(r&|jj|j�y|jj|j|j��|jjd�|jj�|_y)Nz�Changing the policy type will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system.  Do you wish to continue?T)
r�rvr+rWrrrX�NOr[r:r%r-�relabel_on_bootr�s  rr%z SELinuxGui.change_default_policy>
s������t�?�?�J�J�L�L���;�;�q�V�W�X�\_�\l�\l�\o�\o�o��,�,�7�7��8H�8H�I���	�	�'�'��(B�(B�4�Cc�Cc�(d�e��	�	�!�!�$�'��;�;�F�F�H��rc���|jsy|j|�|j�r8|jj	|j�j
��yyrH)r6�enabled_changedr+r:r&r^r�r�s  rr&zSELinuxGui.change_default_modeJ
sQ���������V�$������I�I�)�)�&�*:�*:�*<�*B�*B�*D�E�rc���|jjtjj�|jjd�|jj
�d|_y)NzImport Configurationr�)r^�
set_actionr�FileChooserAction�OPENr�r�rVr�s  rr!zSELinuxGui.import_config_showQ
sQ�����#�#�C�$9�$9�$>�$>�?����"�"�#9�:�������%��rc���|jjtjj�|jjd�|jj
�d|_y)NzExport Configurationr�)r^r�rr��SAVEr�r�rVr�s  rr"zSELinuxGui.export_config_showX
sQ�����#�#�C�$9�$9�$>�$>�?����"�"�#9�:�������%��rc���|j�|jj�}t|d�}|j	|�|j�|j
�y)N�w)rfr:r;r�rnr�rk)r:r�r�r�s    rr�zSELinuxGui.export_config^
sJ�������i�i�"�"�$��
�(�C�
 ��
����
�
���
����rc���t|d�}|j�}|j�|j�	|jj|�|j�y#t$rY�wxYw)Nr�)r�r�r�rfr:r�rUrk)r:r�r�r�s    rr�zSELinuxGui.import_configf
se��
�(�C�
 ���g�g�i��
���
�����	��I�I���s�#�	
������	��	�s�A*�*	A6�5A6c�`�|||f|vri||||f<||f||||fvr|||	|
d�||||f||f<yy)N)r�r�changed�oldr)r:rEr;r�r�rr�qr�rr�r�s           r�init_dictionaryzSELinuxGui.init_dictionaryq
sd����	�"�#�-�)+�C��U�I�%�&�
�q�6��S�%��2�3�3�8=�c�V]�fi�/j�C��U�I�%�&�q�!�t�,�4rc�D�|jd�d}|dk(ry|dk(ryy)N�-r�0F�1T)rj)r:rs  r�translate_boolzSELinuxGui.translate_boolw
s,��
�G�G�C�L��O����8����8��rc�8�|jj�}tjj	d�}|r|ry|s|sy	|j
j
|�y#t
jj$r}|j|�Yd}~yd}~wwxYw)NrS)
rtr+rYr@rZr:r�r<r=r�)r:rrPrZr=s     rr'zSELinuxGui.relabel_on_reboot~
sv���$�$�/�/�1��������0���f���f��	��I�I�%�%�f�-�����,�,�	��J�J�q�M�M��	�s�A!�!B�>B�Bc�\�|j�|jjd�|jj	d�|j
|k(r]|j
|j�|j|j�td�k(r|jjd�|j|k(rO|jr|j
|j�n'|jr|j
|j�|jj!�s|j"j!�r�|j$j'd�|jj'd�|j(j'd�|j*j'd�|j"j'd�|j,j'd�|j.j1�t2dk(r"|j.j5t2d�y)NFTr"rr)r�r�r[rIr�rrr�r�r-r�rr:rXrYr�r��get_visibler�r�r{r�r�r�r6r?r}r4)r:rIrs   rr+zSELinuxGui.closewindow�
s������
��"�"�-�-�e�4����!�!�$�'��&�&�&�0��O�O�D�3�3�4��)�)�$�*B�*B�C�q��|�S��(�(�3�3�A�6��"�"�f�,��~�~����� 7� 7�8��!�!����� 9� 9�:����+�+�-��1G�1G�1S�1S�1U��$�$�0�0��6�� � �,�,�U�3�� � �,�,�U�3��&�&�2�2�4�8��"�"�.�.�u�5��"�"�.�.�u�5��#�#�,�,�.�2G��2J�J��$�$�-�-�.C�A�.F�G�rc��|jj�j|j�|j	�yrH)rI�
get_window�
set_cursorrOr�r�s rrfzSELinuxGui.wait_mouse�
s-������� �+�+�D�,<�,<�=����rc��|jj�j|j�|j	�yrH)rIr�r�rQr�r�s rrkzSELinuxGui.ready_mouse�
s-������� �+�+�D�,=�,=�>����rc�l�tjddtjjtjj
|�}|j
|�|jtjj�|j�|j�}|j�|Sr*)
r�
MessageDialog�MessageType�INFO�ButtonsType�YES_NOr��set_position�WindowPosition�MOUSE�show_all�run�destroy)r:�messagerV�dlg�rcs     rrWzSELinuxGui.verify�
s|������a����)=�)=� #��� 6� 6� '�)��	�
�
�e������+�+�1�1�2�����
�W�W�Y�����
��	rc�H�tjddtjjtjj
|�}|j
tjj�|j�|j�|j�yr*)rr�r��ERRORr��CLOSEr�r�r�r�r�r�)r:r�r�s   rr�zSELinuxGui.error�
si������a����)>�)>� #��� 5� 5� '�)��	����+�+�1�1�2��������	����
rc���|j�sy|j�}|dk(rc|jtk7rP|j	td��tjjk(r|jjd�|dk7rc|jtk(rP|j	td��tjjk(r|jjd�||_	y)Nrca�Changing to SELinux disabled requires a reboot.  It is not recommended.  If you later decide to turn SELinux back on, the system will be required to relabel.  If you just want to see if SELinux is causing a problem on your system, you can go to permissive mode which will only log errors and not enforce SELinux policy.  Permissive mode does not require a reboot.  Do you wish to continue?Tz�Changing to SELinux enabled will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system.  Do you wish to continue?)r+r^r�rrWrrrXr�r�r[)r:�radiorys   rr�zSELinuxGui.enabled_changed�
s������!�����!���J��4�#4�#4��#@��{�{�1�e�f�g�kn�k{�k{�k~�k~�~��#�#�.�.�t�4��J��4�#4�#4��#@��{�{�1�]�^�_�cf�cs�cs�cv�cv�v��#�#�.�.�t�4�#��rc�p�|jjd�|jjd�yr�)r�r4r�r[r�s  rr	zSELinuxGui.clear_filters�
s*�����"�"�2�&����*�*�5�1rc��|jsy|j�|jj�r|jjd�n|jjd�|j
�y)Nzmodule -e unconfinedzmodule -d unconfined)r6rfr�r+r:r�rkr�s  rr#zSELinuxGui.unconfined_toggle�
s\�����������(�(�3�3�5��I�I���5�6��I�I���5�6����rc��|jsy|j�|jj�r|jjd�n|jjd�|j
�y)Nzmodule -e permissivedomainszmodule -d permissivedomains)r6rfr�r+r:r�rkr�s  rr$zSELinuxGui.permissive_toggle�
s\�����������(�(�3�3�5��I�I���<�=��I�I���<�=����rc���t|j�dkDr@|jtd�td��tj
jk(ry|j�y)Nra0You are attempting to close the application without applying your changes.
    *    To apply changes you have made during this session, click No and click Update.
    *    To leave the application without applying your changes, click Yes.  All changes that you have made during this session will be lost.zLoss of data DialogT)r�r�rWrrrXr�r?r_s   rrzSELinuxGui.confirmation_close�
sz���t�$�$�%��)��{�{�1�R�S�UV�Wl�Um�n�ru�rB�rB�rE�rE�E���	�	�rc�.�tjd�yr*)�sys�exitr�s  rr?zSELinuxGui.quit�
s
������r)NF)T)r/)��__name__�
__module__�__qualname__rFr@rQr/rnrr�r�r�rrrr�r�r�rrzrbr�rrrrr�r(r-r�rrrr<rr8r,rCrfrjrDr^rrxrGrrBr�rEr�rFr�rHr�r*r�rur�rr�rrr�r�r�r�r�r�rrrrr�r�r�r�r rrrr	rr)r�r�r�r�r�rrr6r�r9r�rr�rArCr6r2r
rJr5rrr
ryr�rrrarlrqrdrbr(r�rrXrrrrrrrrr%r&r!r"r�r�r�r�r'r+rfrkrWr�r�r	r#r$rr?rrrr-r-ts���z�x"�
��>�"6�*!��
*���>%�@,�*��?���&	W��$
�	�S�'�!�$,�<�6�,�$��@�D@�
(/�Tg��3�g� -�(��

i��B�@�R�C��$F�,j�A�{0�z�	9�Q�'�R��
W:�r+�+��3C�j$�4).�VF�E��C�	*�	)��B:�H(�/�6�
��3��0�>
<��:�>?�B�04�,���/�#�E,�N;�/��/�/�� ��D�2(�:�>�&�	���-�^
!�?�	5�9�<�3�
)�1�%�
S�>�
 � �
I�F�&�&��	�k����0��	��$�2����rr-�__main__)A�gi�require_version�
gi.repositoryrrr�sepolicy.sedbusrr�r�rRrrr	�sepolicy.network�sepolicy.manpager:rYrv�unicodedata�PROGNAME�gettext�kwargs�version_info�translationr�r�builtinsr��__dict__�ImportError�__builtin__rr2r�rrUr�rrDrwr}r�r�r�r�r�r�r�r�rsrvr�rzr�r�r�r�r�r8rJrWr-r�r�rrr�<module>r�s
��6
�����5�%� ����'�
���3�3����	�	����,��
�F�
���$�� ��y������H�	#�1�	#��	#�"�	#�A�	
�	�	�A���	�	�	�A�78��(�0�0��3�4�
 �
�T�7�A�e�H�
��
�I�,��(��	$�����M�"�A�m�$4�5���/�0�!�4H�2I�J���
������������
����
�
�
�����
�
�
�	��
�����
�
�h�����
�w)�w)�rS�z���L�E���mU,�,��!$����#����,��$+����S�!�,�s0�!?E�F�E+�*F�+F�F�F�F