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__/__init__.cpython-312.pyc
�

�j����6�ddlZddlZddlZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZdZ	ddl Z iZ!ejDd
krde!d<e jFefddie!�ddi��Z$e$j@Z%dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7d Z8d!Z9d"Z:d#Z;d$Z<iZ=d%e=d&<d'e=d(<d)e=d*<d)e=d+<d)e=d,<d-e=d.<d/e=d0<d1e=d2<d3e=d4<d3e=d5<d6e=d7<d6e=d8<d9e=d:<d;e=d<<iZ>e%d=�e>d><e%d?�e>d@<e%dA�e>dB<e%dC�e>dD<e%dE�e>dF<e%dG�e>dH<e%dI�e>dJ<e%dK�e>dL<iZ?d>e?dM<d@e?dN<dBe?dO<dDe?dP<dFe?dQ<dHe?dR<dJe?dS<dLe?dT<da@daAdaBdaCdaDgaEdaFdaGdaHdaIdaJdaKdaLdaMdaNdaOdaPdaQdaRdaSdaTdaUdaVdaWdaXdU�ZYd�dV�ZZdW�Z[dX�Z\dY�Z]dZ�Z^d�d[�Z_d\�Z`d�d]�Zad^�Zbd_�Zcd`�Zdda�Zedb�Zfdc�Zgdd�Zhgfde�Zigfdf�Zjdg�Zkej��fdh�Zmej��fdi�Znej��fdj�Zoej��fdk�Zpdl�Zqdm�Zrdn�Zsdo�Ztdp�Zudq�Zvdr�Zwds�Zxdt�Zydu�Zzdv�Z{dw�Z|dx�Z}dy�Z~dz�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�e�fd��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d�d��Z�d�d��Z�d��Z�d��Z�d��Z�d��Z�y#	ddl&Z&e'e&jPd<n#e)$rddl*Z*e+e*jPd<YnwxYwY��qxYw)��N)�	BoolQuery)�PortconQuery)�
SELinuxPolicy)�
ObjClassQuery)�
RBACRuleQuery)�	RoleQuery)�TERuleQuery)�TypeAttributeQuery)�	TypeQuery)�	UserQueryzselinux-python)�T�unicode�	localedirz/usr/share/locale�fallback�_��r
�����allow�
auditallow�
neverallow�	dontaudit�source�target�permlist�class�
transition�
role_allow�etc_tz/etc�tmp_tz/tmp�unit_file_tz/usr/lib/systemd/systemz/lib/systemd/systemz/etc/systemd/system�var_cache_tz
/var/cache�	var_lib_tz/var/lib�log_tz/var/log�	var_run_tz/var/runz/run�
var_lock_tz	/run/lockz
/var/run/lock�var_spool_tz
/var/spool�	content_tz/var/wwwz	all files�azregular file�f�	directory�dzcharacter device�czblock device�bzsocket file�sz
symbolic link�lz
named pipe�p�z--z-dz-cz-bz-sz-lz-pc�n�|jdd�d}	t|�|fS#t$rd|fcYSwxYw)Nz/policy.rr)�rsplit�int�
ValueError)�policy_path�	extensions  �6/usr/lib/python3.12/site-packages/sepolicy/__init__.py�policy_sortkeyr=�sF���"�"�:�q�1�!�4�I���9�~�{�*�*�����+�~���s�$�
4�4c���	|tj�z}tjd|z�}|jt��|dS#YnxYwtt
d���)Nz%s.*��key���zNo SELinux Policy installed)�selinux�selinux_binary_policy_path�glob�sortr=r9r)�root�path�policiess   r<�get_installed_policyrI�s_��
��g�8�8�:�:���9�9�V�d�]�+���
�
�.�
�)���|���
���
�Q�4�5�
6�6s�A	A�Ac��tjtj��|�d��}|sy|jt��|dS)z?Get the path to the policy file located in the given store namez/policy/policy.*Nr?rA)rDrB�selinux_pathrEr=)�storerHs  r<�get_store_policyrM�sA���y�y�!�.�.�0�%�9�:�H����M�M�n�M�%��B�<��c�x�dadadadadadadadada	t|�a
y#ttd�|z��xYw)NzFailed to read %s policy file)
�all_domains�all_attributes�bools�	all_types�role_allows�users�roles�
file_types�
port_typesr�_polr9r��policy_files r<�policyr\�s_���K��N��E��I��K��E��E��J��J�K��[�)���K���:�;�k�I�J�J�s� �9c�6�t|�}|syt|�y�N)rMr\)rLr[s  r<�load_store_policyr_�s��"�5�)�K���
�;�rNc�.�t�}t|�yr^)rIr\rZs r<�init_policyra�s��&�(�K�
�;�rNc��ts
t�|tk(rott�}||_t|j
��}|r5t|�dkr'd|_||_t|j
��}d�|D�S|tk(r/tt�}|r||_d�|j
�D�S|tk(r/tt�}|r||_d�|j
�D�S|tk(r�tt�}|rZ|jd�D�cgc]
}t!|���}}t|�dk(r||_nt|�dk(r|d|df|_tj$rd�|j
�D�Sd	�|j
�D�S|t&k(rVt)t�}|r||_tj$rd
�|j
�D�Sd�|j
�D�S|t*k(r/t-t�}|r||_d�|j
�D�S|t.k(r/t1t�}|r||_d
�|j
�D�St3d��cc}w)Nrc3�K�|]q}ttt|j���t|�t	|j
�ttt|j
���d����sy�w))�aliases�name�
permissive�
attributesN)�list�map�strrd�bool�ispermissiverg��.0�xs  r<�	<genexpr>zinfo.<locals>.<genexpr>�s[�����
�a�	�C��Q�Y�Y�[�1�2���F��q�~�~�.��s�3�����7�8�	
�
�s�A7A9c
3��K�|]]}t|�ttt|j���ttt|j	���d����_y�w))rerV�typesN)rjrhri�expandrrrms  r<rpzinfo.<locals>.<genexpr>�sO���� ��a���F��#�c�1�8�8�:�.�/��#�c�1�7�7�9�-�.�
��s�A#A%c	3�K�|]7}t|�ttt|j���d����9y�w))rerrN)rjrhrirsrms  r<rpzinfo.<locals>.<genexpr>�s:���� ��a���F��#�c�1�8�8�:�.�/�
��s�=?�-rrc3�K�|]�}|jjt|j�t|jj
�t|jj�|jjd�����y�w))�high�protocol�range�type�lowN)�portsrwrjrx�context�range_�type_r{rms  r<rpzinfo.<locals>.<genexpr>�sa����$�#�!��������
�
�O��Q�Y�Y�-�-�.��A�I�I�O�O�,��w�w�{�{��#�s�BB	c3��K�|]c}|jjt|j�t|jj
�|jjd����ey�w))rwrxrzr{N)r|rwrjrxr}rr{rms  r<rpzinfo.<locals>.<genexpr>sO���� �
�a�	�G�G�L�L��A�J�J����	�	���(��7�7�;�;�	
�
�s�A)A+c	3��K�|][}t|j�t|�ttt|j��t|j
�d����]y�w))ryrerV�levelN)rj�	mls_rangerhrirV�	mls_levelrms  r<rpzinfo.<locals>.<genexpr>sP����$�
#�!�	�Q�[�[�)��A���c�#�q�w�w�/�0��Q�[�[�)�	�
#�s�A!A#c3�zK�|]3}t|�ttt|j��d����5y�w))rerVN)rjrhrirVrms  r<rpzinfo.<locals>.<genexpr>s8���� ��a���F��#�c�1�7�7�+�,�
��s�9;c3�LK�|]}t|�|jd����y�w))re�stateN)rjr�rms  r<rpzinfo.<locals>.<genexpr>s,���� ��a���F��W�W�
��s�"$c3�^K�|]%}t|�t|j�d����'y�w))rerN)rjrh�permsrms  r<rpzinfo.<locals>.<genexpr>(s0���� ��a���F��Q�W�W�
�
��s�+-zInvalid type)rYra�TYPErrerh�results�len�alias�ROLEr�	ATTRIBUTEr
�PORTr�splitr8r|�mls�USERr�BOOLEANr�TCLASSrr9)�setypere�qr��ir|s      r<�infor��sZ����
�
��~��d�O������q�y�y�{�#���C��L�1�$��A�F��A�G��1�9�9�;�'�G��
��	�
�4���d�O����A�F� ��9�9�;�	 �	 �
�9�	��t�$����A�F� ��9�9�;� �	 �

�4�������%)�Z�Z��_�5�_��S��V�_�E�5��5�z�Q������U��q�� ��8�U�1�X�.����8�8�$��y�y�{�
$�
$� �
�9�9�;� �	 �
�4���d�O����A�F��8�8�$�
�y�y�{�$�
$� ��9�9�;� �	 �

�7�	��d�O����A�F� ��9�9�;� �	 �

�6�	��$�����A�F� ��9�9�;� �	 ���(�(��w6s�&Jc��t|j�t|j�t|j�t|j�d�}	i}|j
jD]}|j|t|�<�|j
jd	i|��|jk(}||d<	ttt|j��|d<	t|j�|d<	|j
jD�cgc]}t|�|jf��c}|d<	t|j
�|d<	|j|d<|S#t$rd}Y��wxYw#t$rY��wxYw#t$rY��wxYwcc}w#t$rY�jwxYw#t$rY�`wxYw#t$rY|SwxYw)
N)rzrrrT�enabledr�	transtype�booleans�conditional�filename�)rj�ruletyperr�tclassr�r�r��evaluate�conditional_block�AttributeErrorrhrir��defaultr�)�ruler/�	boolstate�booleanr�r1s      r<�_setools_rule_to_dictr�1s����D�M�M�"��d�k�k�"��d�k�k�"��T�[�[�!�		�A�	��	��'�'�0�0�G�&-�m�m�I�c�'�l�#�1�,�$�"�"�+�+�8�i�8�D�<R�<R�R��
�A�i�L�
��S��d�j�j�1�2��*�
�
��T�\�\�*��+��
�48�4D�4D�4M�4M�N�4M�q�#�a�&�!�'�'�*�4M�N��*�
�
��t�/�/�0��-��
��
�
��*�
�
�H��?�������
��
��
�
��
��O���
��
��
�
��
��
�
���H�
�s�AE �9&E1� F�9F�F�/F�6F#�F2� E.�-E.�1	E=�<E=�	F�F�F�	F �F �#	F/�.F/�2	F?�>F?c��ts
t�|si}tttt
tttg�}|D]#}||vs�tddj|�z��d}t|vrt|t�}d}t|vrt|t�}d}t|vr!t|t�jd�}g}g}t|vr|j!t�t
|vr|j!t
�t|vr|j!t�t|vr|j!t�t#|�dkDrTt%t||||��}	t&|vr|t&|	_||	j+�D�
cgc]
}
t-|
���c}
z
}t|vrXgd�}t%t||||��}	t&|vr|t&|	_||	j+�D�
cgc]
}
t-|
���c}
z
}t|vrfdg}t/t||||��}	|	j+�D]<}
|j!t|
j0�t|
j2�d���>|Scc}
wcc}
w)	NzType has to be in %s� �,r)r�rrr�)�type_transition�type_change�type_memberr)rr)rYra�set�ALLOW�
AUDITALLOW�
NEVERALLOW�	DONTAUDIT�
TRANSITION�
ROLE_ALLOWr9�join�SOURCErj�TARGET�CLASSr��appendr�r	�PERMSr�r�r�rrr)rr�seinfo�valid_typesr�rrr��toret�tertypesr�ro�rtypes�ratypes�rs              r<�searchr�cs8����
�����u�j�*�i��Z�X�Y�K�����$��3�c�h�h�{�6K�K�L�L���F�
����V�F�^�$��
�F�
����V�F�^�$��
�F�����V�E�]�#�)�)�#�.���E��H���~�������U�����
�#��U�����
�#��E�����	�"�
�8�}�q����!)�%�%�%�	
'���F�?��U�m�A�G�
�A�I�I�K�@�K�q�'��*�K�@�@���U��B����!'�%�%�%�	
'���F�?��U�m�A�G�
�A�I�I�K�@�K�q�'��*�K�@�@���U���)���$�#*�!'�!'�!'�	
)������A��L�L�C����M�$'����M�3�
4���L��7A��As�I3�,I8c�������	�i}g}�g�	�g�	�	tt�fd�t���ddz
�		�tt�fd�t���ddz
�td�t���	fd�t	���}	|D]9}|j|d|d|d	fd
��||vs�'|j
|�i}�;	|S#Y��xYw#Y�qxYw#t$r|cYSwxYw)Nc���|d�k(S�Nrer�)ro�srcs �r<�<lambda>z"get_conditionals.<locals>.<lambda>�s���!�F�)�s�*:rNrrgc���|d�k(Sr�r�)ro�dests �r<r�z"get_conditionals.<locals>.<lambda>�s���1�V�9��+<rNc��|Sr^r�)�ys r<r�z"get_conditionals.<locals>.<lambda>�s��1rNc�v��|d�vxr0|d�vxr't��j|t�xrd|vS)Nrrr�)r��issubsetr�)ro�	dest_list�perm�src_lists ���r<r�z"get_conditionals.<locals>.<lambda>�sO����(��x�'�#��(��y�(�#��D�	�"�"�1�U�8�,�#���"�#rNrr�r�)rr�)rh�filter�get_all_types_infori�get_all_allow_rules�updater��KeyError)
r�r�r�r��tdict�tlist�allowsr�r�r�s
`` `    @@r<�get_conditionalsr��s����E��E��u�H���I�
��D�� :�<N�<P�Q�R�ST�U�Vb�c�c��
��T�&�!<�>P�>R�S�T�UV�W�Xd�e�e�	���f�&#�
$�%�'�(�F���A��L�L�A�h�K��=�AQ�ST�U^�S_�@`�a�b��E�!����U�#���	��L��-
���
��������s.�)C
�)C�	(C�2C�
C�C�C&�%C&c
��d}|D]}|dds�d}ntd�|djttd�|���fzS)NFr�rTz-- Allowed %s [ %s ]z || c�(�d|dd|ddfzS)Nz%s=%dr�rrr��ros r<r�z.get_conditionals_format_text.<locals>.<lambda>�s8��w�Z[�\i�Zj�kl�Zm�op�q~�o�AB�pC�ZD�PDrN)rr�r�ri)�condr�ros   r<�get_conditionals_format_textr��sp���G�
���]��A���G���
�
#�$�����S��FD�FJ�BK�>L�2M�(N�N�NrNc�@�ttt|��ddS)Nrrr)rhr�r�)�	attributes r<�get_types_from_attributer��s����Y�	�*�+�A�.�w�7�7rNc��g}i}t�D].}|jt|��s�|j|��0t	�}|D]}	||dt
||df||<�|S#t$rg||<Y�2wxYw�N�regex�ftype)�get_all_file_types�
startswith�gen_short_namer��
get_fcdict�
file_type_strr�)r��flist�mpathsr-�fcdicts     r<�get_file_typesr��s����E�
�F�
�
!���<�<��v�.�/��L�L��O�"��\�F�
��	����7�+�]�6�!�9�W�;M�-N�O�F�1�I��
�M���	��F�1�I�	�s�A.�.A?�>A?c�r�|s|S	ttt|��dS#ttf$r|cYSwxYw)z�Return the real name of a type

    * If 'name' refers to a type alias, return the corresponding type name.
    * Otherwise return the original name (even if the type does not exist).
    re)�nextr�r��RuntimeError�
StopIteration)res r<�get_real_type_namer��sA�������D��t�$�%�f�-�-���-�(�����s�"�6�6c��t�}g}i}ttg|ddgdd��}|�t|�dk(r|St	�}ddg}|D]}|d|vr�d	|vr|d	s�|djd
�r.|d|vr�1|d|vs�9|d|k7s�B|j
|d��Wt|d�D]}||vs�|j
|����|D]}		||	dt||	df||	<�|S#t$rg||	<Y�2wxYw)
N�open�write�file)rrrr�	proc_type�sysctl_typerr��_tr�r�)
r�r�r�r�r��endswithr�r�r�r�)
r�rW�
all_writesr�rr�rgr��tr-s
          r<�get_writable_filesr�sK��#�%�J��J�
�F��u�g�&�v�w�>O�Z`�a�b�H���3�x�=�A�-��
�
�\�F��}�-�J�
���X�;�*�$����>��Y�<���X�;����%���{�*�,����{�*�,��X�;�&�(��%�%�a��k�2�-�a��k�:���J�&��%�%�a�(�;��"��	����7�+�]�6�!�9�W�;M�-N�O�F�1�I��
�M���	��F�1�I�	�s�C.�.C?�>C?c�:��tjj|�r|gS	tjd|z�}|}|j
d�r|dddz}tjj|��	�ddk7r�dz
�	tjd|z�}t�fd�tj���D�cgc]}|j|�s�|��c}S#td|�gcYSxYw#t$rtd�Y��wxYwcc}w#gcYSxYw)	Nz%s$zbad reg:z(/.*)?i�����/rAztry failed got an IndexErrorc����|zSr^r�)rorGs �r<r�zfind_file.<locals>.<lambda>3s	�����rN)�osrG�exists�re�compile�printr��dirname�
IndexErrorri�listdir�match)�reg�patr4rorGs    @r<�	find_filers���	�w�w�~�~�c���u����j�j��#��&��	�A��z�z�(��
�c�r�F�S�L��
�7�7�?�?�1��D�.���8�s�?��C�K�D���j�j��#��&���1�2�:�:�d�3C�D�U�D�a��	�	�RS���D�U�U��#�
�j�#���	���.�
�,�-�.��
V����	�sA�C �8
C5�<D�D�D�D� C2�5D�D�D�Dc��t|�}|j�D]:}|jd�s�||vs�||D]}t|�D]	}|cccS��<y)N�_exec_t)�get_entrypoints�keysr�r)�domain�exclude_list�executable_files�exerGr-s      r<�find_all_filesr8sZ��&�v�.���$�$�&���<�<�	�"�s�,�'>�(��-��"�4��A��H�)�.�'�
rNc��t�}	|jd�r&||vr"||dD]}t|�D]}|ccS�y#t$rYywxYw)Nrr�)r�r�rr�)rrr�rGr-s     r<�find_entrypoint_pathrBsc��
�\�F�
��<�<�	�"�s�,�'>��s��G�,��"�4��A��H�)�-�
���
���
�s�3A�A�	A�Ac�2�	t|d�5}|D]8}|j�}|s�|djd�r�+|d|d�||d<�:	ddd�|S#1swY|SxYw#t$r)}|jtj
k7r�Yd}~|Sd}~wwxYw)Nr�r�#r)�equiv�modify)r�r�r��OSError�errno�ENOENT)�edict�fc_pathr�fd�er-s      r<�read_file_equivr'Ns����
�'�3�
�2����G�G�I���Q�q�T�_�_�S�1�,-�a�D�F�"C�E�!�A�$�K�� ��L� ��L�����7�7�e�l�l�"��#��L���s>�A$�A�A�A�
A$�A!�A$�!A$�$	B�-B�Bc�T�trtSiatt|dzd��atS)Nz.subsT�r)�file_equiv_modifiedr'�r$s r<�get_file_equiv_modifiedr,[s-���"�"���)�*=�w��?P�Y]�^���rNc�f�trtSt|�att|dzd��atS)Nz
.subs_distFr))�
file_equivr,r'r+s r<�get_file_equivr/ds.�����(��1�J� ��W�|�-C�E�R�J��rNc���trtSga	t|dzd�5}|j�}ddd�D]Y}|j
�}t|�dk(r�"	t|�dkDr
t|d}nd}tj|d|f��[tS#1swY�mxYw#t$r*}|jtj
k7r�gcYd}~Sd}~wwxYw#t$rY��wxYw)N�.localr�rrrr,)�local_filesr��	readlinesr r!r"r�r��trans_file_type_strr�r�)r$r%�fcr&r��recr�s       r<�get_local_file_pathsr7ms�������K��
�'�H�$�c�
*�b�����B�+����g�g�i���s�8�q�=��	��3�x�!�|�+�C��F�3��������A����/����'+�
*�����7�7�e�l�l�"���	�����	��	�sE�B(�B�B(�7C�B%�!B(�(	C�1C�C�C�	C*�)C*c��trtSt|d�}|j�}|j�t|dzd�}||j�z
}|j�ia	t|dzd�5}||j�z
}ddd�|D]~}|j�}	t|�dkDr
t|d}nd}|djd�d}|tvrt|d	j|d
�n|d
g|d�t|<��d	dgitd
<d	dgitd<d	dgitd<d	dgitd<d	dgitd<d	dgitd<d	dgitd<d	dgitd<d	dgitd<tS#1swY��xYw#t$r)}|j
t
jk7r�Yd}~��.d}~wwxYw#Y��9xYw)Nr�z	.homedirsr1rrr,rA�:r�r)r�r�z
all log files�logfilezall user tmp files�
user_tmp_typezall user home files�user_home_typezall virtual image files�virt_image_typezBall files on file systems which do not support extended attributes�	noxattrfsz)all sandbox content in tmpfs file systems�sandbox_tmpfs_typez&all user content in tmpfs file systems�user_tmpfs_typezall files on the system�	file_typezAuse this label for random content that will be shared using samba�
samba_share_t)r�r�r3�closer r!r"r�r�r4r�)r$r%r5r&r�r6r�rs        r<r�r��s���
��
�	
�g�s�	�B�	����B��H�H�J�	
�g��#�S�	)�B��"�,�,�.��B��H�H�J�
�F��
�'�H�$�c�
*�b��"�,�,�.� �B�+����g�g�i��	��3�x�!�|�+�C��F�3�����B��
�
�c�"�1�%�A��F�{��q�	�'�"�)�)�#�a�&�1�'*�1�v�h��?��q�	��� !�?�"3�4�F�9��&�)=�(>�?�F�?�� '�*?�)@�A�F���!(�+D�*E� F�F���"�%i�$j�k�F�;��$+�.Y�-Z�#[�F�� �!(�+S�*T� U�F���"�%>�$?�@�F�;��&�)l�(m�n�F�?���M�?+�
*�����7�7�e�l�l�"��#����"	��s=�.F�=F�F�/A+G�F�F�	G�#G�G�Gc��	ttgddi�D�cgc]
}|d|k(s�|��c}Scc}w#ttf$rYywxYw)Nr�processr��r�r��	TypeErrorr��r�ros  r<�get_transitions_intorI�sU��
�!�:�,��)�0D�E�b�E�a��;��[a�Ia��E�b�b��b���~�&�
���
���1�
,�,�1�1�A�Ac�V�	ttg|dd��S#ttf$rYywxYw)NrE�rrrF)r�s r<�get_transitionsrM�s5��
��z�l�v�	�$J�K�K���~�&�
���
�s��(�(c��	ttgd|i�D�cgc]
}|ddk7s�|��c}Scc}w#ttf$rYywxYw)NrrrErFrHs  r<�get_file_transitionsrO�sU��
�!�:�,��6�0B�C�_�C�a�q��z�U^�G^��C�_�_��_���~�&�
���
�rJc��g}ttgd|i�}|D](}d|vs�	|dD]}||vs�|j|���*|S#Y�1xYw)Nrr�)r�r�r�)r�r��boollistrr4r1s      r<�get_boolean_rulesrR�sb���H��u�g��&�1�2�H�
����?�
��:��A��!�|� ����*�'���O��
��s�A�A�A	c��td�S)N�
entry_type)r�r�rNr<�get_all_entrypointsrU�s
��#�L�1�1rNc���tttg|dgdg��}|j�D�cgc]'}|j|k(s�t|j���)c}Scc}w)Nr��
entrypoint)r�rr�r�)r	rYr�r�rrjr)r�r�ros   r<�get_entrypoint_typesrX�sS���D�#�W�!�"�8�'�.�		*�A�
$%�9�9�;�E�;�a�!�(�(�f�2D�C����M�;�E�E��Es�A�Ac����tj|�djd�d�	tt	�fd�ttgddd����}|dd	S#tttf$rYywxYw)
Nrr9rc���|d�k(S)Nrr�)rorWs �r<r�z$get_init_transtype.<locals>.<lambda>�s���A�h�K�:�,ErN�init_trErLrr�)
rB�
getfileconr�rhr�r�r�rGr�r)rG�entrypointsrWs  @r<�get_init_transtyper^�s�����#�#�D�)�!�,�2�2�3�7��:�J�
��6�"E�v�z�l�go�{D�]E�HF�G�H���1�~�k�*�*���~�z�2�
���
�s�1A�A6�5A6c���ttdgddg��}g}|j�D]-}	|j|k(r|j	|j
��/|S#t$rY�=wxYw�Nr�r[rE)r�rr�)r	rYr�r�r�rr�)r�r�r]r�s    r<�get_init_entrypointra�ss���D�/�0�#�%�;�	(�A��K�
�Y�Y�[��	��y�y�I�%��"�"�1�8�8�,�������	��	�s�*A�	A&�%A&c�2�ttdgddg��}i}|j�D]]}	t|j�}||vr(||jt|j��nt|j�g||<�_|S#t$rY�mwxYwr`)r	rYr�rjr�r�rr�)r�r]r�r�s    r<�get_init_entrypoints_strrcs����D�/�0�#�%�;�	(�A��K�
�Y�Y�[��	��A�I�I��I��K�'��I�&�-�-�c�!�(�(�m�<�*-�a�h�h�-���I�&��
�����	��	�s�AB
�
	B�Bc
��	td�ttgd|dd���}t|�dS#tt
f$rYywxYw)Nc��|dS)Nr�r�r�s r<r�z,get_init_entrypoint_target.<locals>.<lambda>s��A�k�NrNr[rE)rrrr)rir�r�rhrGr)rWr]s  r<�get_init_entrypoint_targetrfs_��
��2�F�J�<�T\�hr�~G�JH�5I�J���K� ��#�#���z�"�
���
�s�-0�A�Ac��t�}i}t|�D]}	||dt||df||<�|S#t$rg||<Y�2wxYwr�)r�rXr�r�)r�r�r�r-s    r<rrsh��
�\�F�
�F�
!�&�
)��	����7�+�]�6�!�9�W�;M�-N�O�F�1�I�*�
�M���	��F�1�I�	�s�:�A�
Ac���tt�dkDrtSt�tj�}	t|�}t
j�}|j|�t|jj��a|j�tj!�tS#tjjd|z�tjd�Y�UxYw)Nrz#could not open interface info [%s]
r)r��methods�gen_interfaces�defaults�interface_infor��
interfaces�InterfaceSet�	from_filerhrrC�sys�stderrr��exitrE)�fnr%�ifss   r<�get_methodsru)s���
�7�|�a������	�	 �	 �	"�B�	�
�"�X���%�%�'���
�
�b���s�~�~�*�*�,�-��
���
�
�L�L�N��N����
�
���?�"�D�E������s�A#B5�59C0c�d�t� tt�D�cgc]}|d��	c}atScc}wr�)rSr�r�r�s r<�
get_all_typesrw>s/����(,�T�
�3�
�1�Q�v�Y�
�3�	����4s�-c�J�t�ttt��atSr^)�all_types_inforhr�r�r�rNr<r�r�Ds�����d�4�j�)���rNc�j�t�(ttttd��dd�atS)N�
userdomainrrr)�
user_typesrhr�r�r�rNr<�get_user_typesr}Js.�����$�t�I�|�<�=�a�@��I�J�
��rNc�@�trtSiatttg��}|j	�D]b}t|j�}t|j�}|dk(s|dk(r�8|tvrt|j|��Y|gt|<�dtS)N)r��system_r)	rTrrYr�r�rjrrr�)r�r�r��tgts    r<�get_all_role_allowsr�Qs�������K��d�e�W�-�A�
�Y�Y�[���!�(�(�m���!�(�(�m���*���z� 1���+�����#�#�C�(� #�u�K�����rNc��ddl}g}tt��}|D]i}|jddz|�}t	|�dkDs�(t	|jddz|d��dk(s�N|d|vs�V|j|d��k|S)Nrz(.*)%sz_exec_t$z_initrc$)r�sortedrw�findallr�r�)rrPrrr��ms     r<�get_all_entrypoint_domainsr�es���
��K��=�?�#�E�
���B�J�J�x�*�,�a�0���q�6�A�:��:�2�:�:�h��3�Q�q�T�:�;�q�@�Q�q�T�Q\�E\��"�"�1�Q�4�(�	�
�rNc��	ddlm}t	j
�}t	j�}	tj|�jtj|�jkry	tj�dk7rttd���t|d�d�y#t$r	ddlm}Y��wxYw#t$rY�`wxYw)Nr)�getstatusoutputzEYou must regenerate interface info by running /usr/bin/sepolgen-ifgenz/usr/bin/sepolgen-ifgenr)�commandsr��ImportError�
subprocessrkrl�headersr�stat�st_mtimer �getuidr9rr	)r��ifiler�s   r<rjrjqs���/�,�
�#�#�%�E���� �G�
�
�7�7�7��$�$������(?�(?�?��@�

�y�y�{�a����b�c�d�d�	�/�3�
4�Q�
7�8���/�.�/���
��
�s"�B2�?C�2C�C�	C�Cc���trttfSiaiatt�D]�}|d|dk(rt	|d�}nt	|d��dt	|d���}|d|dftvr!t|d|dfj|�n|gt|d|df<d|vr|d|dft|d|d|df<��|dt|d|d|df<��ttfS)Nr{rwrurzrxry)�portrecs�
portrecsbynumr�r�rjr�)r��ports  r<�
gen_port_dictr��s����-�(�(��M��H�
�$�Z���U�8�q��y� ��q��x�=�D�!�!�E�(�m�S��6��^�<�D�
�f�I�q��}�%��1��a��i��:��/�0�7�7��=�48�6�H�a��i��:��/�0��a�<�CD�V�9�a�PW�j�BY�M�1�U�8�Q�v�Y��*�
�>�?�CD�V�9�M�1�U�8�Q�v�Y��*�
�>�?�� 
�m�$�$rNc�j�ts(ttttd��dd�atS)Nrrrr)rPrhr�r�r�rNr<�get_all_domainsr��s+����4��Y�� 9�:�1�=�g�F�G���rNc���trtSts
t�tt�}|j	�D�cgc]}t|�dk7s�t|���c}atScc}w)N�object_r)rVrYrarr�rj�r�ros  r<�
get_all_rolesr��sO�������
��$��A��Y�Y�[�A�[��C��F�j�,@�S��V�[�A�E��L��
Bs�A(�
A(c���tsYttt��atj
r1tD](}dj
|djd��|d<�*tS)Nr5ryr�)�selinux_user_listrhr�r�rYr�r�r�r�s r<�get_selinux_usersr��sL��� ��d��,���8�8�&���W�W�Q�w�Z�%5�%5�c�%:�;��'�
�'��rNc
��trtSttj�d�}|j	�}|j�ga|j
d�D]t}|j�}t|�dk(s|jd�r�3|j
d�}tj|d|ddj|dd�d���vtS)	Nr��
rrr9rr)re�seuserr�)�login_mappingsr�rB�selinux_usersconf_path�readrCr��stripr�r�r�r�)r%�bufr1ros    r<�get_login_mappingsr��s������	
�g�,�,�.��	4�B�
�'�'�)�C��H�H�J��N�
�Y�Y�t�_��
�G�G�I���q�6�Q�;�!�,�,�s�+��
�G�G�C�L�����q��t�q��t�C�H�H�Q�q�r�U�O�T�U���rNc�>�ttd�t���S)Nc��|dSr�r�r�s r<r�zget_all_users.<locals>.<lambda>�s���&�	rN)r�rir�r�rNr<�
get_all_usersr��s���#�)�+<�+>�?�@�@rNc�v�trtSttttd��dd�atS)NrArrr)rWrhr�r�r�r�rNr<r�r���1������f�T�)�[�9�:�1�=�g�F�G�J��rNc�v�trtSttttd��dd�atS)N�	port_typerrr)rXrhr�r�r�r�rNr<�get_all_port_typesr��r�rNc�J�tsttt��atSr^)rRrhr�r�r�rNr<�
get_all_boolsr��s����T�'�]�#���LrNc�\�dj|dt|�jd��S)Nr�r)r�r�r�)r-�trims  r<�prettyprintr��s(���8�8�A�k��D�	�z�N�(�(��-�.�.rNc��|Sr^r�)r-s r<�markupr��s���HrNc�4
�d||�z}|jd�r|dt|d�zzS|jd�r|dt|d�zzS|jd�r|dt|d�zzS|jd�r|d	t|d�zzS|jd
�r|dt|d�zzS|jd�r|dt|d�zzS|jd
�s|jd�r|dzS|jd�r|dzS|jd�r|dt|d�zzS|jd�r|dt|d�zzS|jd�r|dt|d�zzS|jd�r|dt|d�zzS|jd�r|d|dtd�zzS|jd�r|dt|d�zzS|jd�r|dt|d�zzS|jd�r|dt|d�zzS|jd �r|dt|d �zzS|jd!�r|d"t|d!�zzS|jd#�r|d$t|d#�zzS|jd%�r|d&t|d%�zzS|jd'�r|d(t|d'�zzS|jd)�r|d*t|d)�zzS|jd+�r|d$t|d+�zzS|jd,�r|d-t|d,�zzS|jd.�r|d/t|d.�zzS|jd0�r|d1t|d0�zzS|jd2�r|d3t|d2�zzS|jd4�r|d1t|d4�zzS|jd5�r|d1t|d5�zzS|jd6�r|d1t|d6�zzS|jd5�r|d7t|d5�zzS|jd8�r|d9t|d8�zzS|jd:�r|d;t|d:�zzS|jd<�r|d=t|d<�zzS|jd>�r|d?t|d>�zzS|jd@�r|dAzS|jdB�r|dCt|dB�zzS|dDt|dE�zzS)FNz+Set files with the %s type, if you want to �
_var_run_tz8store the %s files under the /run or /var/run directory.�_pid_tz,store the %s files under the /run directory.�
_var_lib_tz0store the %s files under the /var/lib directory.�_var_tz,store the %s files under the /var directory.�_var_spool_tz2store the %s files under the /var/spool directory.�_spool_t�_cache_t�_var_cache_tz/store the files under the /var/cache directory.�	_keytab_tz)treat the files as kerberos keytab files.�_lock_tzEtreat the files as %s lock data, stored under the /var/lock directory�_log_tzKtreat the data as %s log data, usually stored under the /var/log directory.�	_config_tzRtreat the files as %s configuration data, usually stored under the /etc directory.�_conf_trz,transition an executable to the %s_t domain.�_cgi_content_tz"treat the files as %s cgi content.�
_rw_content_tz)treat the files as %s read/write content.�_rw_t�_write_t�_db_tz'treat the files as %s database content.�
_ra_content_tz*treat the files as %s read/append content.�_cert_tz'treat the files as %s certificate data.�_key_tztreat the files as %s key data.�	_secret_tz"treat the files as %s secret data.�_ra_t�_ro_tz(treat the files as %s read/only content.�
_modules_tztreat the files as %s modules.�
_content_tztreat the files as %s content.�_state_tz!treat the files as %s state data.�_files_t�_file_t�_data_tztreat the data as %s content.�_tmp_tz1store %s temporary files in the /tmp directories.�_etc_tz'store %s files in the /etc directories.�_home_tz+store %s files in the users home directory.�_tmpfs_tz&store %s files on a tmpfs file system.�_unit_file_tz#treat files as a systemd unit file.�_htaccess_tz#treat the file as a %s access file.ztreat the files as %s data.r�)r�r�r�)r-r��txts   r<�get_descriptionr��s���
7�&��)�
C�C��z�z�,���O�R]�^_�am�Rn�n�n�n��z�z�(���C�k�RS�U]�F^�^�^�^��z�z�,���G�+�VW�Ye�Jf�f�f�f��z�z�(���C�k�RS�Ua�Fb�b�b�b��z�z�.�!��I�K�XY�[e�Lf�f�f�f��z�z�*���I�K�XY�[e�Lf�f�f�f��z�z�*�����N�!;��F�F�F��z�z�+���@�@�@��z�z�)���\�_j�kl�nw�_x�x�x�x��z�z�(���b�ep�qr�t|�e}�}�}�}��z�z�+���i�lw�xy�|G�mH�H�H�	H��z�z�)���i�lw�xy�|E�mF�F�F�	F��z�z�)���C�a�HX�#�i�.��FY�Y�Y�Y��z�z�"�#��9�K��K[�<\�\�\�\��z�z�/�"��@�;�q�Ra�Cb�b�b�b��z�z�'���@�;�q�RY�CZ�Z�Z�Z��z�z�*���@�;�q�R\�C]�]�]�]��z�z�'���>��Q�PW�AX�X�X�X��z�z�/�"��A�K�PQ�Sb�Dc�c�c�c��z�z�)���>��Q�PY�AZ�Z�Z�Z��z�z�(���6��Q��9Q�Q�Q�Q��z�z�+���9�K��;�<W�W�W�W��z�z�'���A�K�PQ�SZ�D[�[�[�[��z�z�'���?�+�a�QX�BY�Y�Y�Y��z�z�,���5��A�|�8T�T�T�T��z�z�,���5��A�|�8T�T�T�T��z�z�*���8�;�q�*�;U�U�U�U��z�z�*���5��A�z�8R�R�R�R��z�z�)���5��A�y�8Q�Q�Q�Q��z�z�)���5��A�y�8Q�Q�Q�Q��z�z�)���4�{�1�i�7P�P�P�P��z�z�(���H�;�WX�Zb�Kc�c�c�c��z�z�(���>��Q�PX�AY�Y�Y�Y��z�z�)���B�[�QR�T]�E^�^�^�^��z�z�*���=��A�z�@Z�Z�Z�Z��z�z�.�!��:�:�:��z�z�-� ��:�[��M�=Z�Z�Z�Z��.��Q��1E�E�E�ErNc
�r�ts,tttd�t	t
����atS)Nc��|dSr�r�r�s r<r�z$get_all_attributes.<locals>.<lambda>Ps��1�V�9rN)rQrhr�rir�r�r�rNr<�get_all_attributesr�Ms&����f�S�)<�d�9�o�%N�O�P���rNc�,�|D]}||tvs�yy)NFT)r�)�dictr�r�s   r<�_dict_has_permsr�Ts �����t�E�{�"���rNc���t�}|jd�rt|�}|dd}n|}|dz|vrtd|z��|ddk(r|dddz}||fS|dz}||fS)Nr����zdomain %s_t does not existrAr/r)r�r�r�r9)r�rP�
domainname�
short_names    r<r�r�[s���!�#�K�
���t��#�F�+���C�R�[�
��
��D���+��5�
�B�C�C��"�~������_�s�*�
�
�
�#�#� �#�%�
��
�#�#rNc�:�tsttg�atSr^)�all_allow_rulesr�r�r�rNr<r�r�ks��� �%��/���rNc��tsDttddttg��}|j�D�cgc]
}t
|���c}atScc}w)Nz.*T)r��
boolean_regexr�)�all_bool_rulesr	rYr�r�r�r�r�s  r<�get_all_bool_rulesr�qsI�����d�$�*/��);�
=��<=�I�I�K�H�K�q�/��2�K�H�����Is�Ac�L�tstttg��atSr^)�all_transitionsrhr�r�r�rNr<�get_all_transitionsr�ys����v�z�l�3�4���rNc���g}g}t��\}}td�t�fd�t���D]�}|D]�}t	|t
�s�	t
j|d�}|dj|�s|dj|�r,|d|f|vs�_|d|f|vs�j|j|d|f���|d|f|vs��|d|f|vs��|j|d|f�����||fS#t$r|d}Y��wxYw)Nc��|dS)Nr�r�r�s r<r�zget_bools.<locals>.<lambda>�s��1�Z�=rNc� ��d|vxr|d�k(S)Nr�rr�)ror�s �r<r�zget_bools.<locals>.<lambda>�s���:��?�;d�q�QY�{�^d�Od�;drNrr)r�rir�r��
isinstance�tuplerB�security_get_boolean_activer r�r�)r�rR�domainboolsr�r�r�r1r�s`       r<�	get_boolsr�s"����E��K�+�F�3��J�
�
�(�&�1d�fx�fz�*{�
|���A��a��'��
�!�=�=�a��d�C����t���z�*�a��d�o�o�j�.I��a�D�'�?�+�5�1�Q�4�W��:M�U`�:`��&�&��!��g��7��a�D�'�?�%�/�Q�q�T�w�;�4G�u�4T��L�L�!�A�$���1��}�
������
��A�$��
�s�C/�/D�?Dc�H�tstj�datS)Nr)r�rB�security_get_boolean_namesr�rNr<�get_all_booleansr��s����5�5�7��:���OrNc���	tj|�}|j�}|j�|S#t$r/t|�}|j�}|j�Y|SwxYwr^)�gzipr�r�rC�IOError)rGr%r�s   r<�
policy_xmlr��sb���
�Y�Y�t�_���g�g�i��
���
�
�J��	��
�$�Z���g�g�i��
���
��J�	�s�59�4A1�0A1c���trtSddl}ia	|jjj	t|��}|j
d�D�]�}|j
d�D�]A}|j
d�D]�}|jd�jd�jjd�}tjdd|�}|jd	�|jd
�|ft|jd	�<��|j
d�D]�}|jd�jd�jjd�}tjdd|�}|jd	�|jd
�|ft|jd	�<����D|j
d�D]|}|jd�jd�jjd�}tjdd|�}d|jd
�|ft|jd	�<�~���|j
d�D]|}|jd�jd�jjd�}tjdd|�}d|jd
�|ft|jd	�<�~	tS#t$rYtSwxYw)
Nr�layer�module�tunable�descr4r�r�re�dftvalrk�global)�
booleans_dict�xml.etree.ElementTree�etree�ElementTree�
fromstringr�r��find�textr�r�sub�getr�)rG�xml�treer3r�r1rr�s        r<�
gen_bool_dictr�sS����� ��M�
��y�y�$�$�/�/�
�4�0@�A�����g�&�A��Y�Y�x�(�����9�-�A��6�6�&�>�.�.�s�3�8�8�>�>�t�D�D��6�6�$��T�2�D�45�E�E�&�M�1�5�5��?�TX�3Y�M�!�%�%��-�0�.����6�*�A��6�6�&�>�.�.�s�3�8�8�>�>�t�D�D��6�6�$��T�2�D�45�E�E�&�M�1�5�5��?�TX�3Y�M�!�%�%��-�0�+�)��\�\�&�)���v�v�f�~�*�*�3�/�4�4�:�:�4�@���v�v�d�C��.��08�!�%�%��/�4�/P�
�a�e�e�F�m�,�*�'����i�(�A��6�6�&�>�&�&�s�+�0�0�6�6�t�<�D��6�6�$��T�*�D�,4�a�e�e�H�o�t�+L�M�!�%�%��-�(�)�����
����
�s�J<K�	K(�'K(c�V�t�}||vrt||d�Std�S)Nr�unknown)rr)r�rs  r<�boolean_categoryr�s0��!�O�M��-����w�'��*�+�+���|�rNc���t�}||vrt||d�S|jd�}td�j|ddj	|dd���S)NrrzAllow {subject} to {rest}rr�r)�subject�rest)rrr��formatr�)r�rrs   r<�boolean_descr�sg��!�O�M��-����w�'��*�+�+��}�}�S�!���,�-�4�4�T�!�W�3�8�8�TX�YZ�Y[�T\�K]�4�^�^rNc��ddl}d}	ddl}|jd��}|S#ttt
t|jf$rd}Y|SwxYw)Nrr5T)�pretty�Misc)r��distrore�ModuleNotFoundErrorr r��UnicodeError�CalledProcessError)r��system_releasers   r<�get_os_versionr#�sW����N� �����D��1�����
 ��'�<��A^�A^�_� ����� �s� �&A
�	A
c�P�dadadadadadadadadada	da	da
dadada
dadadadayr^)rQrPrSr�rrRr�rWr2rir�r�rXrTrVr|r�r�r�rNr<�reinitr%�sd��(�N��K��I��H��M��E�
�F��J��K��G��G��H��M��J��K��E��J��N��rN)rr^)z#/usr/share/selinux/devel/policy.xml)�r!rBrD�sepolgen.defaultsrk�sepolgen.interfacesrmrprrr��setools.boolqueryr�setools.portconqueryr�setools.policyrepr�setools.objclassqueryr�setools.rbacrulequeryr�setools.rolequeryr�setools.terulequeryr	�setools.typeattrqueryr
�setools.typequeryr�setools.userqueryr�PROGNAME�gettext�kwargs�version_info�translationrr�builtinsrj�__dict__r��__builtin__rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��DEFAULT_DIRSr�r4rYr*r.r2r�rirSryr|rTr�r�rPrVr�r�rWrXrRrQr�rr�r�r�r=rIrMr\r_rar�r�r�r�r�r�r�r�rrrrr'�selinux_file_context_pathr,r/r7r�rIrMrOrRrUrXr^rarcrfrrurwr�r}r�r�rjr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr#r%r�rNr<�<module>r<s���

���$�(�
�	�	��'�-�+�/�/�'�+�4�'�'���,��
�F�
���$�� ��y������H�	#�1�	#��	#�"�	#�A�	
�	�	�A�	����
�	�����
��	
����
�
�
�
��	�	��	������
�
�
�
�����V����V��*7��
&�'�&3��
"�#�&3��
"�#�*��\��&��Z��"��Z��&��Z��"��V��(��[�� ,��_��*��\��&��Z���
��{�^�
�c���~�&�
�c���{�^�
�c���)�*�
�c���~�&�
�c���}�%�
�c����'�
�c���|�_�
�c������B����D����D����D����D����D����D����D������
�
���	
��
���	���
�
������
���������
�
�
�
��������
��������7��K�4��i)�X/
�dG�T�BN�8���!�H�6)+��,.�	�
�%F�G�$E�$E�$G��=�7�<�<�>��"C��!B�!B�!D��89�w�8�8�:�+�\����2�F��
��$���*����(	�9�$%�4�
���$A����/�
�%�ZF�z��$� ��� �*�	��>�_�	�&��}%,�,��!$����#����,��$+����S�!�,��s0�(?K � L�#K7�6L�7L�L�L�L