HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/apparmor/__pycache__/ui.cpython-310.pyc
o

%`bE�@s~ddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
ddlmZe�Z
e
d�Zdee�vr;eZdddd	d
�Zdadd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd�dd�Zdd�Zdd �Zd!d"�Zd#d$�Z d%d&�Z!d'd(�Z"d)d*�Z#d+d,�Z$d-d.�Z%d/d0�Z&d�d2d3�Z'd4d5�Z(id6e
d7��d8e
d9��d:e
d;��d<e
d=��d>e
d?��d@e
dA��dBe
dC��dDe
dE��dFe
dG��dHe
dI��dJe
dK��dLe
dM��dNe
dO��dPe
dQ��dRe
dS��dTe
dU��dVe
dW��idXe
dY��dZe
d[��d\e
d]��d^e
d_��d`e
da��dbe
dc��dde
de��dfe
dg��dhe
di��dje
dk��dle
dm��dne
do��dpe
dq��dre
ds��dte
du��dve
dw��dxe
dy���idze
d{��d|e
d}��d~e
d��d�e
d���d�e
d���d�e
d���d�e
d���d�e
dm��d�e
d���d�e
d���d�e
d���d�e
d���d�e
d���d�e
d���d�e
d���d�e
d���d�e
d����e
d��e
d��e
d��e
d��e
d��d���Z)Gd�d��d�e*�Z+d�d��Z,d�d��Z-dS)��N)�readkey�AppArmorException�DebugLogger)�init_translation�UI�	raw_input�UP�DOWN�RIGHT�LEFT)�A�B�C�D�textcCs"ttj|ddd��tj��dS)NF)�,z: )�	sort_keys�
separators)�print�json�dumps�sys�stdout�flush��jsonout�r�-/usr/lib/python3/dist-packages/apparmor/ui.py�
write_json+srcCsdaddd�}t|�dS)a
    Currently this is only used by aa-genprof and aa-logprof, while e.g.
    aa-status generates its own JSON output.

    Remember to bump the JSON API version number if the output commands
    in this file are modified.

    Current known consumers of the JSON output:
    - YaST
    rzapparmor-json-versionz2.12��dialog�dataN)�UI_moderrrrr�
set_json_mode0s
r#cCsdadS)zOutput plaintextrN)r"rrrr�
set_text_modeAsr$cCs6td�}t�|���}|d|krtd||f��|S)N�
r zExpected response %s got %s.)rr�loads�stripr)�dialog_type�string�rhrrr�
json_responseHs
r+cCs>t�}|dkrt�}|dkrt�}t�|d�rt|}|��S)N��[F)r�ARROWS�getr')�keyrrr�getkeyPsr1cCs<t�|�tdkrd|d�}t|�dStj�|d�dS)zFacility to output normal textr�inforr%N)�debug_loggerr2r"rrr�write�rrrrr�UI_Info[s


r6cCs@t�|�tdkrd|d�}t|�dStj�d|d�dS)z!Facility to output important textr�	importantrr%N)r3�debugr"rrrr4r5rrr�UI_Importantes


r9�cCsHdtd�}t�d|�rt�d|���dS|rt|��td||f��)NzPromptUser: zInvalid hotkey forz	\((\S+)\)rz%s %s)�_�re�search�groupsr)�
translated�cmsg�msgrrr�get_translated_hotkeyosrBc	Cs$t�dt||f�|��}td}td}t|���}t|���}d}|dvr�tdkr?d||d�}t|�td�}|d	}nMtj	�
d
|d
�|dkrXtj	�
d||f�n
tj	�
d
||f�t�}|r�|��}||krrd}n||kryd}n|dkr�d}n|dkr�d}nd}q$|}|dvs(|S)NzUI_YesNo: %s: %s %s�CMD_YES�CMD_NO�
XXXINVALIDXXX)�y�nr�yesno�r r�default�response_keyr%rFz
[%s] / %s
z
%s / [%s]
rG�left�right�r3r8r"�lower�CMDSrBrr+rrr4r1)	rrJ�yes�no�yeskey�nokey�ansr�hmrrr�UI_YesNo|sB
�rWcCs�t�dt||f�|��}td}td}td}t|���}t|���}t|���}d}|dvr�tdkrId||d	�}	t|	�td�}
|
d
}nytj	�
d|d�|dkrctj	�
d
|||f�n|dkrstj	�
d|||f�ntj	�
d|||f�t�}|r�|��}||kr�d}n4||kr�d}n-||kr�d}n&|dkr�|dkr�d}n|dkr�d}n|dkr�|dkr�d}n	|dkr�d}n|}|dvs2|S)NzUI_YesNoCancel: %s: %s %srCrD�
CMD_CANCELrE)�crGrFr�yesnocancelrIrKr%rFz
[%s] / %s / %s
rGz
%s / [%s] / %s
z
%s / %s / [%s]
rYrLrMrN)rrJrQrR�cancelrSrT�	cancelkeyrUrrVrrr�UI_YesNoCancel�sZ
���$r]cs�t�dt|�f��}tdkr$d|�d�}t|�td�d}|�	�St��fdd��z&ztd|�}WntyAd	}Yn
wWt��|�	�SWt��|�	�St��w)
NzUI_GetString: %s: %s %sr�	getstringrI�responsecs
t���S�N)�readline�insert_textr�rJrr�<lambda>�s
zUI_GetString.<locals>.<lambda>r%r:)
r3r8r"rr+ra�set_startup_hookr�EOFErrorr')rrJr)rrrcr�UI_GetString�s(	����
�rgcCsbt�dt�d}tdkr d|dd�}t|�td�d}|Stj�|dd�tj�	�}|S)NzUI_GetFile: %sr�getfile�description)r rr_r%)
r3r8r"rr+rrr4�stdin�read)�file�filenamerrrr�
UI_GetFile�s�
rncCst�dt�t|�dS)NzUI_BusyStart: %s)r3r8r"r6)�messagerrr�UI_BusyStart�srpcCst�dt�dS)NzUI_BusyStop: %s)r3r8r"rrrr�UI_BusyStop�srqcCs(t�d�}tjd|||jfdd�|S)N�wzdiff -u -p %s %s > %sT)�shell)�tempfile�NamedTemporaryFile�
subprocess�call�name)�
oldprofile�
newprofile�difftemprrr�diff�s
r|cCs t�d�}|�|�|��|S)Nrr)rtrur4r)�profile�temprrr�write_profile_to_tempfiles

rcCs2t|�}t|�}t|j|j�}|��|��|Sr`)rr|rx�close)ryrz�oldtemp�newtempr{rrr�
generate_diffsr�cCs<tj�|�sttd�|��t|�}t||j�}|��|S)Nz2Can't find existing profile %s to compare changes.)	�os�path�existsrr;rr|rxr�)ryrzr�r{rrr�generate_diff_with_commentssr�FcCs:|s
t||�}d}nt||�}d}t||j�|��dS)NzView ChangeszView Changes with comments)r�r��UI_ShowFilerxr�)ryrz�commentsr{�headerrrr�
UI_Changess

r�cCs>tdkrd||d�}t|�td�ddSt�d|g�dS)Nr�changes)r r�rmr_�less)r"rr+rvrw)r�rmrrrrr�(s
r��	CMD_ALLOWz(A)llow�	CMD_OTHERz(M)ore�
CMD_AUDIT_NEWzAudi(t)�
CMD_AUDIT_OFFzAudi(t) off�CMD_AUDIT_FULLzAudit (A)ll�CMD_USER_ONz(O)wner permissions on�CMD_USER_OFFz(O)wner permissions off�CMD_DENYz(D)eny�	CMD_ABORTzAbo(r)t�CMD_FINISHEDz(F)inish�CMD_ixz	(I)nherit�CMD_pxz	(P)rofile�CMD_px_safez(P)rofile Clean Exec�CMD_cxz(C)hild�CMD_cx_safez(C)hild Clean Exec�CMD_nxz(N)amed�CMD_nx_safez(N)amed Clean Exec�CMD_uxz(U)nconfined�CMD_ux_safez(U)nconfined Clean Exec�CMD_pixz(P)rofile Inherit�CMD_pix_safez(P)rofile Inherit Clean Exec�CMD_cixz(C)hild Inherit�CMD_cix_safez(C)hild Inherit Clean Exec�CMD_nixz(N)amed Inherit�CMD_nix_safez(N)amed Inherit Clean Exec�CMD_EXEC_IX_ONz	(X) ix On�CMD_EXEC_IX_OFFz
(X) ix Off�CMD_SAVEz(S)ave Changes�CMD_NEWz(N)ew�CMD_GLOBz(G)lob�CMD_GLOBEXTzGlob with (E)xtension�
CMD_ADDHATz(A)dd Requested Hat�CMD_ADDSUBPROFILEz(A)dd Requested Subprofile�CMD_USEDEFAULTz(U)se Default Hat�CMD_SCANz%(S)can system log for AppArmor events�CMD_HELPz(H)elp�CMD_VIEW_PROFILEz(V)iew Profile�CMD_USE_PROFILEz
(U)se Profile�CMD_CREATE_PROFILEz(C)reate New Profile�CMD_UPDATE_PROFILEz(U)pdate Profile�CMD_IGNORE_UPDATEz(I)gnore Update�CMD_SAVE_CHANGES�CMD_SAVE_SELECTEDzSave Selec(t)ed Profile�CMD_VIEW_CHANGESz(V)iew Changes�CMD_VIEW_CHANGES_CLEANz!View Changes b/w (C)lean profiles�CMD_VIEWz(V)iew�CMD_ENABLE_REPOz(E)nable Repository�CMD_DISABLE_REPOz(D)isable RepositoryrCz(Y)esrDz(N)orXz(C)ancelzAllow All (N)etworkzAllow Network Fa(m)ilyz(O)verwrite Profilez(K)eep Profilez(I)gnore)�CMD_ALL_NET�CMD_NET_FAMILY�
CMD_OVERWRITE�CMD_KEEP�CMD_IGNORE_ENTRYc@sFeZdZdZdZdZdZdZdZdZ	dZ
dd�Zd	dd�Zdd�Z
dS)
�PromptQuestionNcCst�|_t�|_d|_dS)Nr)�list�headers�	functions�selected)�selfrrr�__init__ws
zPromptQuestion.__init__r:cCs.d}d}|��\}}|dkrt�d}||fS)Nr�rE)�Text_PromptUser�confirm_and_abort)r��params�cmd�argrrr�
promptUser|szPromptQuestion.promptUsercCs�|j}|j}|j}|j}|j}|j}|j}|j}|r|�d�t	�}	t
�}
|D]>}t�|d�s7t
td�|��t|}t|���}
|
�|
d�rRt
td�||d���||
|
<|r`||kr`d|}|	�|�q'd}|r�t|r�t|}td�}t||���}|
�|d�s�t
td	�|��d}|dd�}|r�|�d�}|�d�t|�|kr�t|�}|s�|d
7}dt|�d}d
}|d�|
���7}|r�|d7}|d7}d}t
�}d|||||	|d�}tj||tjd��s�d}|r�|d|7}|�r|dd�}|�r|�d�}|�d�}|||<|||d|f7}|s�|d7}|�r"||d7}|�rGt|�D]\}}||k�r5d}nd}|||d
|f7}|d7}�q)|d�|	�7}tdk�rdt|�td�}|d}|d}n
tj�|d�t ���}|�r�|dk�r�|�r�|dk�r�|d
8}d}nB|d k�r�|�r�|t|�d
k�r�|d
7}d}n*t!|�d!k�r�|}n |�r�t�d"|��r�t"|�}|dk�r�|t|�k�r�|d
}d}|
�|d�dk�r�tdk�r�tj�d#|�d$}tj||tjd�r�|
�|d��r�|
|}||fS)%Nr�FzPromptUser: Unknown command %sz;PromptUser: Duplicate hotkey for %(command)s: %(menutext)s )�command�menutextz[%s]rz*PromptUser: Invalid hotkey in default itemzPromptUser: Invalid default %s�z%-zs %s
z^(�|z|\dz)$rE�
promptuser)r �titler��explanation�options�
menu_items�default_key)�flagsr%z= %s =

�:z

z
 [%s - %s]z
  %s - %s z / rrKr��up�down�
z^\d$z
%s
�again)#r�r�r�r�rJr�r��helptext�appendr��dictrPr/rr;rBrO�pop�len�str�join�keysr<r=�
IGNORECASE�	enumerater"rr+rrr4r1�	is_number�int)r�r�r�r�r�rJr�r�r�r�r�r�r�r0r��defaulttext�defmsg�widest�header_copyr��	formatstr�function_regexprU�hdict�
jsonprompt�prompt�value�index�option�
format_optionrVrrrr��s�


��


�





�CzPromptQuestion.Text_PromptUser�r:)�__name__�
__module__�__qualname__r�r�r�r�r�rJr�r�r�r�r�rrrrr�ms
	r�cCs4ttd�d�}|dkrttd��t�d�dSdS)NzFAre you sure you want to abandon this set of profile changes and exit?rGrFzAbandoning all changes.r)rWr;r6r�exit)rUrrrr�s
�r�cCszt|�WSYdS)NF)r�)�numberrrrr�s
r�r�)F).rrr<rar�rtrv�apparmor.commonrrr�apparmor.translationsrr;r3�dir�__builtins__�inputrr.r"rr#r$r+r1r6r9rBrWr]rgrnrprqr|rr�r�r�r�rP�objectr�r�r�rrrr�<module>s$



(3
	
	
	�������	�
���
������������������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�<,