/usr/lib/python3.9/site-packages/firewall/__pycache__
Edit: /usr/lib/python3.9/site-packages/firewall/__pycache__/functions.cpython-39.pyc (15445B)
a
F‡©j+J ã @ s¦ g d ¢Z ddlZddlZddlZddlZddlZddlZddlZddlm Z ddl
mZmZ dd„ e
ddƒD ƒZdd „ Zd
d„ ZdUd
d„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Z d-d.„ Z!d/d0„ Z"d1d2„ Z#d3d4„ Z$d5d6„ Z%d7d8„ Z&d9d:„ Z'd;d<„ Z(d=d>„ Z)d?d@„ Z*dAdB„ Z+dCdD„ Z,dEdF„ Z-dGdH„ Z.dIdJ„ Z/dKdL„ Z0dMdN„ Z1dOdP„ Z2dQdR„ Z3dSdT„ Z4dS )V)!Ú getPortIDÚgetPortRangeÚportStrÚgetServiceNameÚcheckIPÚcheckIP6ÚcheckIPnMaskÚ
checkIP6nMaskÚ
checkProtocolÚcheckInterfaceÚcheckUINT16ÚcheckUINT32Úfirewalld_is_activeÚtempFileÚreadfileÚ writefileÚenable_ip_forwardingÚ
check_portÚ
check_addressÚcheck_single_addressÚ check_macÚuniqifyÚppid_of_pidÚmax_zone_name_lenÚ checkUserÚcheckUidÚcheckCommandÚcheckContextÚjoinArgsÚ splitArgsÚmax_policy_name_lenÚcheckTcpMssClampÚstripNonPrintableCharactersé N)Úlog)ÚFIREWALLD_TEMPDIRÚFIREWALLD_PIDFILEc C s" i | ]}|d kr|dk s|d“qS )é é N© )Ú.0Úir( r( ú6/usr/lib/python3.9/site-packages/firewall/functions.pyÚ
+ s r, é c C st t | tƒr| }nT| r| ¡ } zt| ƒ}W n: tyb zt | ¡}W n tjy\ Y Y dS 0 Y n0 |dkrpdS |S )zÎ Check and Get port id from port string or port id using socket.getservbyname
@param port port string or port id
@return Port id if valid, -1 if port can not be found and -2 if port is too big
éÿÿÿÿéÿÿ éþÿÿÿ)Ú
isinstanceÚintÚstripÚ
ValueErrorÚsocketZ
getservbynameÚerror)ÚportZ_idr( r( r+ r 4 s
r c C sÀ t | tƒst | tƒr| S t | tƒs*| ¡ rDt| ƒ}|dkr@|fS |S | d¡}t|ƒdkrÀ|d ¡ rÀ|d ¡ rÀt|d ƒ}t|d ƒ}|dkrÀ|dkrÀ||k rª||fS ||krº||fS |fS g }tt|ƒddƒD ]¾}td |d|… ¡ƒ}d ||d… ¡}t|ƒdk�rlt|ƒ}|dk�r’|dk�r’||k �rD|
||f¡ n&||k�r^|
||f¡ n|
|f¡ qÔ|dkrÔ|
|f¡ |t|ƒkrÔ �q”qÔt|ƒdk �r¦dS t|ƒdk�r¸dS |d S )aI Get port range for port range string or single port id
@param ports an integer or port string or port range string
@return Array containing start and end port id for a valid range or -1 if port can not be found and -2 if port is too big for integer input or -1 for invalid ranges or None if the range is ambiguous.
r" ú-é é r. N)r1 ÚtupleÚlistr2 Úisdigitr ÚsplitÚlenÚrangeÚjoinÚappend)ZportsZid1ÚsplitsZid2Zmatchedr* Zport2r( r( r+ r K sL
$
r ú:c C sX | dkrdS t | ƒ}t|tƒr*|dk r*dS t|ƒdkr>d| S d|d ||d f S dS )a Create port and port range string
@param port port or port range int or [int, int]
@param delimiter of the output string for port ranges, default ':'
@return Port or port range string, empty string if port isn't specified, None if port or port range is not valid
Ú r" Nr: z%sz%s%s%s)r r1 r2 r? )r7 Z delimiterÚ_ranger( r( r+ r … s r c C s t | ƒ}t |ƒ}t|ƒdkr‚t|ƒdkr@t|d ƒt|d ƒkS t|ƒdkrþt|d ƒt|d ƒkrþt|d ƒt|d ƒkrþdS n|t|ƒdkrþt|ƒdkrþt|d ƒt|d ƒkrþt|d ƒt|d ƒkrþt|d ƒt|d ƒkrþt|d ƒt|d ƒkrþdS dS )Nr: r" r9 TF)r r? r )r7 r@ Z_portrF r( r( r+ ÚportInPortRange— s. ÿÿÿÿþþrG c C sP t | ƒ}t|ƒdkr$|d |d f}tt |ƒ}ttdd„ |ƒdd„ d�}g }|D ]Æ}|d |d kr€|d |d kr€| |¡ qP|d |d krÌ|d |d k rÌ|d |d krÌ| |¡ |d |d f}qP|d |d krP|d |d krP|d |d krP| |¡ |d |d f}qPttdd„ |ƒƒ}|d |d k�rF|d f}|g|fS )zû Coalesce a port range with existing list of port ranges
@param new_range tuple/list/string
@param ranges list of tuple/list/string
@return tuple of (list of ranges added after coalescing, list of removed original ranges)
r: r" c S s t | ƒdkr| d | d fS | S ©Nr: r" ©r? ©Úxr( r( r+ Ú¶ ó z#coalescePortRange..c S s | d S ©Nr" r( rJ r( r( r+ rL ¶ rM ©Úkeyc S s | d | d kr| d fS | S ©Nr" r: r( rJ r( r( r+ rL É rM ©r r? ÚmapÚsortedrB r<