JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/firewall/core/io/__pycache__/lockdown_whitelist.cpython-39.pyc

a

	�	i�/�@s�ddlmZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZddl
mZmZmZmZmZddlmZddlmZGdd	�d	e	�ZGd
d�de�ZdS)�N)�config)�	IO_Object�IO_Object_ContentHandler�IO_Object_XMLGenerator)�log)�uniqify�	checkUser�checkUid�checkCommand�checkContext)�errors)�
FirewallErrorc@seZdZdd�Zdd�ZdS)�!lockdown_whitelist_ContentHandlercCst�||�d|_dS)NF)r�__init__�	whitelist)�self�item�r�G/usr/lib/python3.9/site-packages/firewall/core/io/lockdown_whitelist.pyr%sz*lockdown_whitelist_ContentHandler.__init__cCsVt�|||�|j�||�|dkr@|jr6ttjd��d|_�n|dkrr|js\t�	d�dS|d}|j�
|�n�|dkr�|js�t�	d�dSd	|vr�zt|d	�}Wn&ty�t�	d
|d	�YdS0|j�
|�nd|vr�|j�|d�n\|dk�r@|j�st�	d�dSd
|v�r.t�	d�dS|j�|d
�nt�	d|�dSdS)NrzMore than one whitelist.T�commandz)Parse Error: command outside of whitelist�name�userz&Parse Error: user outside of whitelist�idz"Parse Error: %s is not a valid uid�selinuxz)Parse Error: selinux outside of whitelist�contextzParse Error: no contextzUnknown XML element %s)r�startElementrZparser_check_element_attrsrr
rZPARSE_ERRORr�error�add_command�int�
ValueError�add_uid�add_user�add_context)rr�attrsr�uidrrrr)sN�


�



z.lockdown_whitelist_ContentHandler.startElementN)�__name__�
__module__�__qualname__rrrrrrr$srcs,eZdZdZddgfddgfddgfddgffZdZd	gZd
dgd
dgd
�ZdddgiZ�fdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Zd>d?�Z d@dA�Z!�Z"S)B�LockdownWhitelistz LockdownWhitelist class �commands��contexts�users�uidsrz
(asasasai)�_Nrr)rrrrrrcs6tt|���||_d|_g|_g|_g|_g|_dS�N)	�superr(r�filename�parserr)r+r,r-)rr1��	__class__rrrmszLockdownWhitelist.__init__cCs�|dvr,|D]}|�||dd�||�qnv|dkrJt|�s�ttj|��nX|dkrht|�s�ttj|��n:|dkr�t|�s�ttj|��n|dkr�t	|�s�ttj
|��dS)N�r)r+r,r-���rrrr$)�
_check_configr
r
r�INVALID_COMMANDr�INVALID_CONTEXTr�INVALID_USERr	�INVALID_UID)rrrZ
all_configZall_io_objects�xrrrr7xszLockdownWhitelist._check_configcCs4|jdd�=|jdd�=|jdd�=|jdd�=dSr/r5�rrrr�cleanup�szLockdownWhitelist.cleanupcCs@t|�sttj|��||jvr,|j�|�nttjd|��dS)Nz!Command "%s" already in whitelist)r
r
rr8r)�append�ALREADY_ENABLED�rrrrrr�s
�zLockdownWhitelist.add_commandcCs,||jvr|j�|�nttjd|��dS)NzCommand "%s" not in whitelist.)r)�remover
r�NOT_ENABLEDrArrr�remove_command�s

�z LockdownWhitelist.remove_commandcCs
||jvSr/�r)rArrr�has_command�szLockdownWhitelist.has_commandcCsB|jD]6}|�d�r.|�|dd��r<dSq||krdSqdS)N�*r6TF)r)�endswith�
startswith)rrZ_commandrrr�
match_command�s

zLockdownWhitelist.match_commandcCs|jSr/rEr=rrr�get_commands�szLockdownWhitelist.get_commandscCsDt|�sttjt|���||jvr0|j�|�nttjd|��dS)NzUid "%s" already in whitelist)r	r
rr;�strr-r?r@�rr$rrrr �s
�zLockdownWhitelist.add_uidcCs,||jvr|j�|�nttjd|��dS)NzUid "%s" not in whitelist.)r-rBr
rrCrMrrr�
remove_uid�s

�zLockdownWhitelist.remove_uidcCs
||jvSr/�r-rMrrr�has_uid�szLockdownWhitelist.has_uidcCs
||jvSr/rOrMrrr�	match_uid�szLockdownWhitelist.match_uidcCs|jSr/rOr=rrr�get_uids�szLockdownWhitelist.get_uidscCs@t|�sttj|��||jvr,|j�|�nttjd|��dS)NzUser "%s" already in whitelist)rr
rr:r,r?r@�rrrrrr!�s
�zLockdownWhitelist.add_usercCs,||jvr|j�|�nttjd|��dS)NzUser "%s" not in whitelist.)r,rBr
rrCrSrrr�remove_user�s

�zLockdownWhitelist.remove_usercCs
||jvSr/�r,rSrrr�has_user�szLockdownWhitelist.has_usercCs
||jvSr/rUrSrrr�
match_user�szLockdownWhitelist.match_usercCs|jSr/rUr=rrr�	get_users�szLockdownWhitelist.get_userscCs@t|�sttj|��||jvr,|j�|�nttjd|��dS)Nz!Context "%s" already in whitelist)rr
rr9r+r?r@�rrrrrr"s
�zLockdownWhitelist.add_contextcCs,||jvr|j�|�nttjd|��dS)NzContext "%s" not in whitelist.)r+rBr
rrCrYrrr�remove_context#s

�z LockdownWhitelist.remove_contextcCs
||jvSr/�r+rYrrr�has_context*szLockdownWhitelist.has_contextcCs
||jvSr/r[rYrrr�
match_context-szLockdownWhitelist.match_contextcCs|jSr/r[r=rrr�get_contexts0szLockdownWhitelist.get_contextsc
Cs�|��|j�d�s&ttjd|j��t|�}t��}|�	|�z|�
|j�Wn:tjy�}z ttjd|�
���WYd}~n
d}~00~~dS)Nz.xmlz'%s' is missing .xml suffixzNot a valid file: %s)r>r1rHr
rZINVALID_NAMEr�saxZmake_parserZsetContentHandler�parseZSAXParseExceptionZINVALID_TYPEZgetException)r�handlerr2�msgrrr�read5s$�
��zLockdownWhitelist.readc
Cs�tj�|j�r^zt�|jd|j�Wn6ty\}ztd|j|f��WYd}~n
d}~00tj�tj	�szt�
tj	d�tj|jddd�}t
|�}|��|�di�|�d�t|j�D](}|�d	�|�d
d|i�|�d�q�t|j�D],}|�d	�|�dd
t|�i�|�d�q�t|j�D]*}|�d	�|�dd|i�|�d��q(t|j�D]*}|�d	�|�dd|i�|�d��q^|�d�|�d�|��|��~dS)Nz%s.oldzBackup of '%s' failed: %si�ZwtzUTF-8)�mode�encodingr�
z  rrrrrr)�os�path�existsr1�shutil�copy2�	Exception�IOErrorrZ
ETC_FIREWALLD�mkdir�io�openrZ
startDocumentrZignorableWhitespacerr)Z
simpleElementr-rLr,r+Z
endElementZendDocument�close)rrb�frarr$rrrrr�writeFsB(






zLockdownWhitelist.write)#r%r&r'�__doc__ZIMPORT_EXPORT_STRUCTUREZDBUS_SIGNATUREZADDITIONAL_ALNUM_CHARSZPARSER_REQUIRED_ELEMENT_ATTRSZPARSER_OPTIONAL_ELEMENT_ATTRSrr7r>rrDrFrJrKr rNrPrQrRr!rTrVrWrXr"rZr\r]r^rcrs�
__classcell__rrr3rr(VsP���
	


1
r()Zxml.saxr_rgrorjZfirewallrZfirewall.core.io.io_objectrrrZfirewall.core.loggerrZfirewall.functionsrrr	r
rrZfirewall.errorsr
rr(rrrr�<module>s2
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg