CasperSecurity

Current Path : /usr/lib/python3/dist-packages/ufw/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/ufw/__pycache__/parser.cpython-310.pyc

o

�Fa�|�@s�ddlZddlZddlZddlmZddlmZGdd�d�ZGdd�de�ZGdd	�d	e�Z	Gd
d�de�Z
Gdd
�d
e�ZGdd�de�ZGdd�de�Z
Gdd�de�ZGdd�de�ZGdd�d�ZGdd�d�ZdS)�N��UFWError)�debugc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
UFWCommandz"Generic class for parser commands.cCs,||_g|_||jvr|j�|�||_dS�N)�command�types�append�type)�selfr
r�r�,/usr/lib/python3/dist-packages/ufw/parser.py�__init__.s


zUFWCommand.__init__cCs&t|�dkr	t��t|d���}|S)N�r)�len�
ValueError�UFWParserResponse�lower�r�argv�rrrr
�parse5szUFWCommand.parsecCstd��)Nz!UFWCommand.help: need to overrider)r�argsrrr
�help=szUFWCommand.helpN)�__name__�
__module__�__qualname__�__doc__rrrrrrr
r,s
rc@s0eZdZdZdd�Zdd�Zdd�Zee�ZdS)	�UFWCommandRulez#Class for parsing ufw rule commandscC�d}t�|||�dS)N�rule�rr�rrr
rrr
rC�zUFWCommandRule.__init__c 
Csd}d}d}d}d}d}d}d}	d}
d}t|�dkr)|d��dkr)|�|d�t|�dkr�|d��dkrkt|�dkrkd}|�|d�d}zt|d�}Wn
ty]|d}Ynw|durjtd	|�}
|
Sn;|d��d
kr�t|�dkr|t��|d}	|	dks�|	d
kr�td�|	}t|��|d=|d=n
|d��dkr�d}	|d=|d}|dkr�|dkr�|dkr�|dkr�t��t|�}|dkr�t��d}|dkr�|d��dks�|d��dkr�|d��}|dk�r|ddk�r|d��dk�s|d��dk�r|d��}|d=t|�}d}|dk�r[|�	d�dk�s&|�	d�dk�r[td�}|d��dk�r@|d��dk�r@t|��|dk�sN|d��dk�rRt|��|d=t|�}d}d}|�rz|dk�rz|d��dk�sw|d��dk�rzd}n|dk�r�|d��dk�s�|d��dk�r�d}|dk�r�||��}
||=t|�}d|v�r�td�}t|��d|v�r�td�}t|��d}d|v�r�|�
d�}|t|�dk�r�td �}t|��||d}d!|v�r�td"�}t|��||d=||=t|�}|dk�s|d#k�rt��|}|
dk�r|d$|
7}tjj
|dd|tj�|�d%�}|�r+||_n|	dk�rAz|�|	�Wn	t�y@�w|dk�r�tj�|d��rsz
tj�|d�Wnt�yrd&}|d|_|�|dd'�Ynw|jdk�r�ztj�|d�\}}Wnt�y�}zt|��d}~wwt�d(|��s�d)|v�s�d*|v�r�td+�}t|��|}z|�|�|�|d'�d&}W�nct�y�td,�}t|��w�nQ|dddk�r�td-�}t|��d.|v�rd/|v�rd|v�rd|v�rtd0�}t|��gd1�}|�	d/�dk�sN|�	d.�dk�sN|�	d2�dk�sN|�	d3�dk�sN|�	d�dk�sN|�	d�dk�sN|�	d4�dk�sN|�	d4�dk�rV|�	d2�dk�rVtd5�}t|��d}d}|D�]�}|ddk�ry|||v�rytd6�||}t|��|d2k�r�|d|k�r�z|�||d�W�n[t�y��wtd7�}t|��|dk�s�|dk�r�|d|k�r�z"|dk�r�|�d||d�n|dk�r�|�d||d�W�nt�y��wtd8�|}t|��|d.k�r1|d|k�r)z&||d��}|dk�r	d9}d}n
tj�|d:��rd;}nd<}|�|�Wn	t�y%�wd=}n�td>�}t|��|d/k�rx|d|k�rpz&||d��}|dk�rPd9}d}n
tj�|d:��r[d;}nd<}|�|�Wn	t�yl�wd'}n}td?�}t|��|d3k�s�|d4k�r�|d|k�r�|dk�r�td@�|}t|��||d}|d4k�r�|d=k�r�||_n'||_n#t�d(|��s�d)|v�s�d*|v�r�td+�}t|��|d=k�r�|}n|}z|�||�Wnt�y��wtdA�}t|��|d7}�q\|dk�r|dk�rd&}n&|dk�r|dk�r||k�rtdB�}t|��|dk�r|}n|dk�r&|}|dk�s0|dk�r�d}|dk�rPztj�|�}Wnt�yOtdC�}t|��w|dk�r�|dk�s_|dk�rxztj�|�}WnDt�ywtdC�}t|��wztj�|�}Wnt�y�tdC�}t|��w|dk�s�||k�r�|}n|dk�r�ntdD�}t|��|jdk�r�|�|�n|dk�r�|j|k�r�tdE�|j}t|��|�r�|jtjj v�r�|d&k�r�t!dF|j�d<}|�"|�t|�}
|j#|
j$dG<||
j$d<||
j$dH<|
S)IN��anyFrr �deleterTz	delete-%d�insert��0z-1z#Cannot insert rule at position '%s'�prepend����allow�deny�reject�limit��in�out�onzInvalid interface clause��logzlog-allzOption 'log' not allowed herez!Option 'log-all' not allowed here�commentz*Option 'comment' missing required argument�'zComment may not contain "'"�
�_)�	directionr6�both�dstz^\d([0-9,:]*\d+)*$�,�:zPort ranges must be numericzBad portzWrong number of arguments�from�tozNeed 'to' or 'from' clause)�protor?r@�port�appr1r2rArBrCzImproper rule syntaxzInvalid token '%s'zInvalid 'proto' clausezInvalid '%s' clause�	0.0.0.0/0�6�v6�v4�srczInvalid 'from' clausezInvalid 'to' clausezNeed 'from' or 'to' with '%s'zInvalid 'port' clausez%Mixed IP versions for 'from' and 'to'zCould not find protocolzProtocol mismatch (from/to)z,Protocol mismatch with specified protocol %sz*Adjusting iptype to 'v4' for protocol '%s'r
�iptype)%rr�remove�int�	Exceptionrrr9r�count�index�ufw�common�UFWRule�util�
hex_encode�set_position�applications�valid_profile_name�get_services_proto�dapp�set_port�parse_port_proto�re�match�set_protocol�
set_interface�
valid_address�set_src�set_dst�sapp�protocol�ipv4_only_protocolsr�verifyr
�data) rr�actionr r
�	from_type�to_type�from_service�
to_service�
insert_pos�logtyperJ�rule_numr�err_msg�nargs�rule_direction�
has_interface�log_idxr6�comment_idx�rule_actionrBrA�e�keys�i�loc�arg�faddr�saddr�tmprrr
rGsj���**$"








�
�

���

��
 

�

��

�

�
�


�



�
��
�
�


zUFWCommandRule.parsecCs�|j}|jdks
|jdkr�|jdks|jdkr�|jdkr�|jdkr�|jdkr�|jdkr�|jdkr�|jdkr<|d|j7}|j	dkrH|d|j	7}|j
dkrbd|j
vrZ|d|j
7}n|d|j
7}n|d|j7}|jdkru|d	|j7}|jdkr�|d
|�
�7}|S|jdkr�|d|j7}|jdkr�|d|j7}n|jdkr�|d|j7}|j	dkr�|d|j	7}d
D]_}|dkr�|j}|j}|j}d}n|j}|j}|j
}d}|dks�|dkr�d}|dks�|dks�|dk�r|d||f7}|dk�rd|v�r|d|7}q�|d|7}q�|dk�r|d|7}q�d|v�r1d|v�r1|jdk�r1|jdk�r1|d7}|jdk�rJ|j
dk�rJ|jdk�rJ|d|j7}|jdk�rX|d
|�
�7}|S)zGet command string for rulerDz::/0r%r$r2z %s� z '%s'z/%sz
 comment '%s'z	 in on %sz
 out on %s)rHr<rHr?r@z %s %sz	 app '%s'z app %sz port %sz to z from z to anyz	 proto %s)rgr<rH�sportrb�interface_in�
interface_out�dportr:rmrXrcr6�get_comment)r�resrxryrBrC�dirrrr
�get_command�sv










2
�





�$zUFWCommandRule.get_commandN)rrrrrrr��staticmethodrrrr
rAsMrc@� eZdZdZdd�Zdd�ZdS)�UFWCommandRouteRulez)Class for parsing ufw route rule commandscCst�||�d|_dS)N�route)rrr
)rrrrr
rs
zUFWCommandRouteRule.__init__c	Csh|ddksJ�d|vr3|�d�}d}t|�|kr3zt||d�td�}t|��ty2Ynwd}d}d}d�|�}d|vrrd	|vrrd
}|�d�|�d
�krTd}||�|�d}|d|�|��||�|�d
d�}nt�d|�s�t�d|�s�d|vs�d|vr�td�}t|��|}d|d<t	�
||�}d|jvr�d|jd_|r�|r�|jd�
||�|S)Nrr�r&r$rz9'route delete NUM' unsupported. Use 'delete NUM' instead.r~z in on z out on r2r1r0r4z
 (in|out) on z app (in|out) z in z out z'Invalid interface clause for route ruler T)rNrrKr9rr�joinr[�searchrrrf�forwardr^)	rr�idxro�	rule_argv�	interface�strip�srrrr
rsH
�	
*
�
zUFWCommandRouteRule.parseN�rrrrrrrrrr
r��r�c@r�)�
UFWCommandAppz*Class for parsing ufw application commandscCr)NrCr!r"rrr
rZr#zUFWCommandApp.__init__cCsJd}d}d}|ddkrt��|d=t|�}|d��}|dks$|dkrO|dkr9|dd	kr9d
}|�d	�t|�}|dkr@t��t|d��d�}|rO|d
7}|dkrZ|dkrZt��|dkr�|dkret��|d��dkrpd}n$|d��dkr{d}n|d��dkr�d}n|d��dkr�d}nt��t|�}|j|jd<||jd<|S)zParse applications command.r$FrrC�info�updater4rz	--add-newTr0z[']z	-with-new�list�defaultr,�
default-allowr-�default-denyr.�default-reject�skipzdefault-skipr
�name)	rrrrJ�strr�rr
rf)rrr�rg�addnewrprrrr
r^sH

zUFWCommandApp.parseNr�rrrr
r�Xr�r�c@r�)�UFWCommandBasicz$Class for parsing ufw basic commandscCr)N�basicr!r"rrr
r�r#zUFWCommandBasic.__init__cCst|�dkr	t��t�||�S)Nr)rrrr)rrrrr
r�szUFWCommandBasic.parseNr�rrrr
r��r�r�c@r�)�UFWCommandDefaultz&Class for parsing ufw default commandscCr)Nr�r!r"rrr
r�r#zUFWCommandDefault.__init__cCsJt|�dkr	t��d}d}t|�dkrw|d��dkrF|d��dkrF|d��dkrF|d��dkrF|d��dkrF|d��dkrFt��|d���d	�rRd}n%|d���d
�r^d}n|d��dksn|d��dkrqd}n|d��}|d��dkr�d
}n|d��dkr�d}n|d��dkr�d}nt��|d|7}t|�S)Nr0r$�incoming�input�routedr��output�outgoingr1r2rr-r�r,r�r.r�z-%s)rrr�
startswithr)rrrgr:rrr
r�s8 zUFWCommandDefault.parseNr�rrrr
r��r�r�c@r�)�UFWCommandLoggingz&Class for parsing ufw logging commandscCr)N�loggingr!r"rrr
r�r#zUFWCommandLogging.__init__cCs�d}t|�dkrt��|d��dkrd}t|�S|d��dksA|d��dksA|d��dksA|d��d	ksA|d��d
krYd}|d��dkrU|d|d��7}t|�St��)
Nr$r0r�offzlogging-offr3�low�medium�high�fullz
logging-onr9�rrrr�rrrgrrr
r�s
 � �zUFWCommandLogging.parseNr�rrrr
r��r�r�c@r�)�UFWCommandStatusz%Class for parsing ufw status commandscCr)N�statusr!r"rrr
r�r#zUFWCommandStatus.__init__cCslt�||�}t|�dkrd|_|St|�dkr4|d��dkr$d|_|S|d��dkr1d|_|St��|S)Nrr��verbosezstatus-verbose�numberedzstatus-numbered)rrrrgrrrrrr
r�s���zUFWCommandStatus.parseNr�rrrr
r��r�r�c@r�)�UFWCommandShowz#Class for parsing ufw show commandscCr)N�showr!r"rrr
r�r#zUFWCommandShow.__init__cCs�d}t|�dkrt��|d��dkrd}t|�S|d��dkr'd}t|�S|d��dkr5d}t|�S|d��d	krCd
}t|�S|d��dkrQd}t|�S|d��d
kr_d}t|�S|d��dkrmd}t|�S|d��dkr{d}t|�St��)Nr$r�rawzshow-rawzbefore-ruleszshow-beforez
user-rulesz	show-userzafter-rulesz
show-afterz
logging-ruleszshow-logging�builtinsz
show-builtins�	listeningzshow-listening�addedz
show-addedr�r�rrr
r�s8����
����zUFWCommandShow.parseNr�rrrr
r��r�r�c@r�)rzClass for ufw parser responsecCs |��|_d|_d|_i|_dS)NF)rrg�dryrun�forcerf)rrgrrr
rs

zUFWParserResponse.__init__cCsPd|j}t|j���}|��|D]
}|d||j|f7}q|d7}t|�S)Nzaction='%s'z,%s='%s'�
)rgr�rfrw�sort�repr)rr�rwrxrrr
�__str__!s
zUFWParserResponse.__str__N)rrrrrr�rrrr
rsrc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�	UFWParserzClass for ufw parsercCs
i|_dSr)�commands)rrrr
r.s
zUFWParser.__init__cCsD|��t|j���vrt��|��t|j|���vrt��|��S)z=Return command if it is allowed, otherwise raise an exception)rr�r�rwr)rr
�cmdrrr
�allowed_command1s
zUFWParser.allowed_commandc
Csrd}t|�dkr|d��dkrd}|�|d�d}t|�dkr:|d��dks1|d��dkr:d}|�|d�d}d}|d��}t|�dkrk|t|j���vrk|d��t|j|���vrk|}|d��}n4|}t|j���D]$}||j|vr�t|j||t�r�t|j||d	�d
kr�qt|}nqt|dkr�d
}|�	||�}|j||}|�
|�}	||	_||	_|	S)z(Parse command. Returns a UFWParserActionFrz	--dry-runTz--forcez-fr$rr
r )
rrrJr�r�rw�
isinstancer�getattrr�rr�r�)
rrr�r�r�r
r}rxrg�responserrr
�
parse_command;sB�	
zUFWParser.parse_commandcCsz|jdus
|jdkrd|j}nd|j}|j|jvr!i|j|j<||j|jvr3td�|}t|��||j|j|<dS)z"Register a command with the parserNr$z%szCommand '%s' already exists)rr
r�r9r)r�c�keyrorrr
�register_commandis
zUFWParser.register_commandN)rrrrrr�r�r�rrrr
r�,s
.r�)r[�ufw.utilrO�ufw.applications�
ufw.commonrrrrr�r�r�r�r�r�r�rr�rrrr
�<module>s&$YA;. 
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY