/usr/lib/python3.9/site-packages/firewall/__pycache__
NameSizeModeActions
client.cpython-39.opt-1.pyc1351840644editdlrm
client.cpython-39.pyc1351840644editdlrm
command.cpython-39.opt-1.pyc179030644editdlrm
command.cpython-39.pyc179030644editdlrm
dbus_utils.cpython-39.opt-1.pyc63550644editdlrm
dbus_utils.cpython-39.pyc63550644editdlrm
errors.cpython-39.opt-1.pyc38160644editdlrm
errors.cpython-39.pyc38160644editdlrm
functions.cpython-39.opt-1.pyc154450644editdlrm
functions.cpython-39.pyc154450644editdlrm
fw_types.cpython-39.opt-1.pyc30030644editdlrm
fw_types.cpython-39.pyc30030644editdlrm
__init__.cpython-39.opt-1.pyc1440644editdlrm
__init__.cpython-39.pyc1440644editdlrm
Edit: /usr/lib/python3.9/site-packages/firewall/__pycache__/functions.cpython-39.pyc (15445B)
a F‡©j+Jã@s¦gd¢ZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z 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_PIDFILEcCs"i|]}|dkr|dks|d“qS)ééN©)Ú.0Úir(r(ú6/usr/lib/python3.9/site-packages/firewall/functions.pyÚ +sr,é c Cstt|tƒr|}nT|r| ¡}z t|ƒ}Wn:tybzt |¡}Wntjy\YYdS0Yn0|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+r4s   rcCsÀt|tƒst|tƒr|St|tƒs*| ¡rDt|ƒ}|dkr@|fS|S| d¡}t|ƒdkrÀ|d ¡rÀ|d ¡rÀt|dƒ}t|dƒ}|dkrÀ|dkrÀ||krª||fS||krº||fS|fSg}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¦dSt|ƒdk�r¸dS|dS)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+rKsL $      rú:cCsX|dkr dSt|ƒ}t|tƒr*|dkr*dSt|ƒdkr>d|Sd|d||dfSdS)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)rr1r2r?)r7Z delimiterÚ_ranger(r(r+r…s rcCst|ƒ}t|ƒ}t|ƒdkr‚t|ƒdkr@t|dƒt|dƒkSt|ƒdkrþt|dƒt|dƒkrþt|dƒt|dƒkrþdSn|t|ƒdkrþt|ƒdkrþt|dƒt|dƒkrþt|dƒt|dƒkrþt|dƒt|dƒkrþt|dƒt|dƒkrþdSdS)Nr:r"r9TF)rr?r)r7r@Z_portrFr(r(r+ÚportInPortRange—s.   ÿÿ  ÿÿþþrGcCsPt|ƒ}t|ƒdkr$|d|df}tt|ƒ}ttdd„|ƒdd„d�}g}|D]Æ}|d|dkr€|d|dkr€| |¡qP|d|dkrÌ|d|dkrÌ|d|dkrÌ| |¡|d|df}qP|d|dkrP|d|dkrP|d|dkrP| |¡|d|df}qPttdd„|ƒƒ}|d|dk�rF|df}|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"cSs t|ƒdkr|d|dfS|S©Nr:r"©r?©Úxr(r(r+Ú¶óz#coalescePortRange..cSs|dS©Nr"r(rJr(r(r+rL¶rM©ÚkeycSs|d|dkr|dfS|S©Nr"r:r(rJr(r(r+rLÉrM©rr?ÚmapÚsortedrBr<)Z new_rangeÚrangesZcoalesced_rangeÚ_rangesÚremoved_rangesr@r(r(r+ÚcoalescePortRange©s.     ÿ  ÿ  rXcCsÄt|ƒ}t|ƒdkr$|d|df}tt|ƒ}ttdd„|ƒdd„d�}g}g}|D�]@}|d|dkr†|d|dkr†| |¡qT|d|dkrÜ|d|dkrÜ|d|dkrÜ| |¡| |dd|df¡qT|d|dk�r8|d|dk�r8|d|dk�r8| |¡| |d|ddf¡qT|d|dkrT|d|dkrT| |¡| |d|ddf¡| |dd|df¡qTttdd„|ƒƒ}ttdd„|ƒƒ}||fS) zü break a port range from existing list of port ranges @param remove_range tuple/list/string @param ranges list of tuple/list/string @return tuple of (list of ranges added after breaking up, list of removed original ranges) r:r"cSs t|ƒdkr|d|dfS|SrHrIrJr(r(r+rLÜrMz breakPortRange..cSs|dSrNr(rJr(r(r+rLÜrMrOcSs|d|dkr|dfS|SrQr(rJr(r(r+rLõrMcSs|d|dkr|dfS|SrQr(rJr(r(r+rLörMrR)Z remove_rangerUrVrWZ added_rangesr@r(r(r+ÚbreakPortRangeÏs6      ÿ $ÿ   rYcCs0zt t|ƒ|¡}Wntjy*YdS0|S)zÞ Check and Get service name from port and proto string combination using socket.getservbyport @param port string or id @param protocol string @return Service name if port and protocol are valid, else None N)r5Z getservbyportr2r6)r7ÚprotoÚnamer(r(r+rús rcCs.zt tj|¡Wntjy(YdS0dS)zh Check IPv4 address. @param ip address string @return True if address is valid, else False FT)r5Ú inet_ptonZAF_INETr6©Úipr(r(r+rs rcCs | d¡S)z� Normalize the IPv6 address This is mostly about converting URL-like IPv6 address to normal ones. e.g. [1234::4321] --> 1234:4321 z[])r3r]r(r(r+Ú normalizeIP6sr_cCs2zt tjt|ƒ¡Wntjy,YdS0dS)zh Check IPv6 address. @param ip address string @return True if address is valid, else False FT)r5r\ZAF_INET6r_r6r]r(r(r+rs rcCsž| d¡}|dkr<|d|…}||dd…}|r6|sDdSn|}d}t|ƒsPdS|ršd|vrdt|ƒSz t|ƒ}Wnty„YdS0|dks–|dkršdSdS) Nú/r.r:FÚ.r"é T)Úfindrr2r4©r^ÚindexÚaddrÚmaskr*r(r(r+r*s(    rcCs | t¡S©N)Ú translateÚNOPRINT_TRANS_TABLE)Zrule_strr(r(r+r!Bsr!cCsŽ| d¡}|dkr<|d|…}||dd…}|r6|sDdSn|}d}t|ƒsPdS|rŠz t|ƒ}WntytYdS0|dks†|dkrŠdSdS)Nr`r.r:Fr"é€T)rcrr2r4rdr(r(r+rEs$    rc Cs`z t|ƒ}Wn:tyFzt |¡Wntjy@YYdS0Yn0|dksX|dkr\dSdS)NFr"éÿT)r2r4r5Zgetprotobynamer6)Zprotocolr*r(r(r+r [s  r cCs:|r6| ¡rt|ƒdkr6dSn|dkr*dS|dkr6dSdS)NiFÚNoneTZpmtu)r=r2)Ztcp_mss_clamp_valuer(r(r+r js r cCs0|rt|ƒdkrdSdD]}||vrdSqdS)z¬ Check interface string @param interface string @return True if interface is valid (maximum 16 chars and does not contain ' ', '/', '!', ':', '*'), else False éF)ú r`ú!Ú*TrI)ZifaceÚchr(r(r+r us r cCs<zt|dƒ}Wnty"YdS0|dkr8|dkr8dSdS)Nr"Fr/T©r2r4©ÚvalrKr(r(r+r ˆs r cCs<zt|dƒ}Wnty"YdS0|dkr8|dkr8dSdS)Nr"FlÿÿTrsrtr(r(r+r ’s r cCsÐtj t¡sdSz6ttdƒ�}| ¡}Wdƒn1s:0YWntyZYdS0tj d|¡spdSz:td|dƒ�}| ¡}Wdƒn1sž0YWnty¾YdS0d|vrÌdSdS)zv Check if firewalld is active @return True if there is a firewalld pid file and the pid is used by firewalld FÚrNz/proc/%sz/proc/%s/cmdlineZ firewalldT)ÚosÚpathÚexistsr%ÚopenÚreadlineÚ Exception)ÚfdÚpidZcmdliner(r(r+r œs"  * * r c Csfz,tj t¡st td¡tjddtdd�WSty`}zt  d|¡‚WYd}~n d}~00dS)NièZwtztemp.F)ÚmodeÚprefixÚdirÚdeletez#Failed to create temporary file: %s) rwrxryr$ÚmkdirÚtempfileZNamedTemporaryFiler|r#r6)Úmsgr(r(r+r¹s  ÿrc Cstz8t|dƒ�}| ¡WdƒWS1s,0YWn6tyn}zt d||f¡WYd}~n d}~00dS)NrvzFailed to read file "%s": %s)rzÚ readlinesr|r#r6)ÚfilenameÚfÚer(r(r+rÄs  ,(rc Csvz8t|dƒ�}| |¡Wdƒn1s,0YWn8typ}z t d||f¡WYd}~dSd}~00dS)NÚwz Failed to write to file "%s": %sFT)rzÚwriter|r#r6)r‡Úlinerˆr‰r(r(r+rÌs ,rcCs(|dkrtddƒS|dkr$tddƒSdS)NÚipv4z/proc/sys/net/ipv4/ip_forwardz1 Úipv6z&/proc/sys/net/ipv6/conf/all/forwardingF)r)Úipvr(r(r+rÕs   rcCs| dd¡ dd¡S)NÚ_r8z nf-conntrack-rE)Úreplace)Úmoduler(r(r+Úget_nf_conntrack_short_nameÜsr“cCs¶t|ƒ}|dks<|dks<|dus 65535z'%s': port is invalidz'%s': port is ambiguousz'%s': range start >= endFT)rr?r#Zdebug2)r7rFr(r(r+rßs  ÿÿrcCs(|dkrt|ƒS|dkr t|ƒSdSdS©Nr�rŽF)rr©r�Úsourcer(r(r+rîs rcCs(|dkrt|ƒS|dkr t|ƒSdSdSr”)rrr•r(r(r+rös rcCsNt|ƒdkrJdD]}||dkrdSqdD]}||tjvr,dSq,dSdS)Né)r9ééé érDF) r"r:ééééé é é é érnT)r?ÚstringZ hexdigits)Zmacr*r(r(r+rþs  rcCs$g}|D]}||vr| |¡q|Srh)rB)Z_listÚoutputrKr(r(r+r s  rcCsHz.t d|¡}t| ¡d ¡ƒ}| ¡WntyBYdS0|S)z Get parent for pid zps -o ppid -h -p %d 2>/dev/nullr"N)rwÚpopenr2r†r3Úcloser|)r~rˆr(r(r+rs  rcCsBddlm}ddlm}ttt| ¡ƒƒ}d|t|ƒtdƒS)z¬ iptables limits length of chain to (currently) 28 chars. The longest chain we create is POST__allow, which leaves 28 - 11 = 17 chars for . r")ÚPOLICY_CHAIN_PREFIX©Ú SHORTCUTSéZ_allow)Zfirewall.core.ipXtablesr©Úfirewall.core.baser«ÚmaxrSr?Úvalues)r©r«Úlongest_shortcutr(r(r+rs  rcCs.ddlm}ttt| ¡ƒƒ}d|tdƒS)z© Netfilter limits length of chain to (currently) 28 chars. The longest chain we create is POST__allow, which leaves 28 - 11 = 17 chars for . r"rªr¬Z__allow)r­r«r®rSr?r¯)r«r°r(r(r+r's rcCsRt|ƒdkst|ƒt d¡kr"dS|D]&}|tjvr&|tjvr&|dvr&dSq&dS)Nr:ÚSC_LOGIN_NAME_MAXF)rar8r�ú$T)r?rwÚsysconfr¥Z ascii_lettersÚdigits)ÚuserÚcr(r(r+r1s ÿþrcCsDt|tƒr,z t|ƒ}Wnty*YdS0|dkr@|dkr@dSdS)NFr"iÿÿÿT)r1Ústrr2r4)Úuidr(r(r+r;s   rcCsHt|ƒdkst|ƒdkrdSdD]}||vr dSq |ddkrDdSdS)Nr:iF)ú|Ú úr"r`TrI)Zcommandrrr(r(r+rEs rcCs†| d¡}t|ƒdvrdS|ddkr>|ddd…dkr>dS|ddd…d krVdS|d dd…d krndSt|d ƒdkr‚dSd S)NrD)r�r˜Fr"Úrootr0Z_ur:Z_rr9Z_trœT)r>r?)ÚcontextrCr(r(r+rOs   rcCs8dttƒvr d dd„|Dƒ¡Sd dd„|Dƒ¡SdS)NÚquoterocss|]}t |¡VqdSrh)Úshlexr¾©r)Úar(r(r+Ú crMzjoinArgs..css|]}t |¡VqdSrh)Úpipesr¾rÀr(r(r+rÂerM)r�r¿rA)Úargsr(r(r+ras rcCs t |¡Srh)r¿r>)Z_stringr(r(r+rgsr)rD)5Ú__all__r5rwZos.pathr¿rÃr¥r„Zfirewall.core.loggerr#Zfirewall.configr$r%r@rjrrrrGrXrYrrr_rrr!rr r r r r r rrrrr“rrrrrrrrrrrrrrr(r(r(r+Úsd  ú : &+