Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ³Y„jÊ%ã@sfdZdgZddlmZddlmZmZmZm Z ddl m Z ddl m Z ddlmZGdd„deƒZd S) z ipset backendÚ FirewallIPSeté)Úlog)Úremove_default_create_optionsÚnormalize_ipset_entryÚcheck_entry_overlaps_existingÚcheck_for_overlapping_entries)ÚIPSet)Úerrors)Ú FirewallErrorc@sÔeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z d4dd„Z dd„Z dd„Z d5dd„Z dd„Zdd„Zdd„Zd6dd „Zd!d"„Zd#d$„Zd%d&„Zd7d'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3S)8rcCs||_i|_dS)N)Ú_fwÚ_ipsets)ÚselfÚfw©rú/usr/lib/python3.6/fw_ipset.pyÚ__init__#szFirewallIPSet.__init__cCsd|j|jfS)Nz%s(%r))Ú __class__r )r rrrÚ__repr__'szFirewallIPSet.__repr__cCs|jjƒdS)N)r Úclear)r rrrÚcleanup,szFirewallIPSet.cleanupcCs||jƒkrttj|ƒ‚dS)N)Ú get_ipsetsr r Z INVALID_IPSET)r ÚnamerrrÚ check_ipset/s zFirewallIPSet.check_ipsetcCs ||jƒkS)N)r)r rrrrÚ query_ipset3szFirewallIPSet.query_ipsetcCst|jjƒƒS)N)Úsortedr Úkeys)r rrrr6szFirewallIPSet.get_ipsetscCst|jƒdkS)Nr)Úlenr )r rrrÚ has_ipsets9szFirewallIPSet.has_ipsetsFcCs&|j|ƒ|j|}|r"|j|ƒ|S)N)rr Úcheck_applied_obj)r rÚappliedÚobjrrrÚ get_ipset<s    zFirewallIPSet.get_ipsetcCs4g}|jjr|j|jjƒ|jjr0|j|jjƒ|S)N)r Znftables_enabledÚappendZnftables_backendZ ipset_enabledZ ipset_backend)r Úbackendsrrrr#Cs zFirewallIPSet.backendscCs0|j|jjkr ttjd|jƒ‚||j|j<dS)Nz'%s' is not supported by ipset.)Útyper Zipset_supported_typesr r Z INVALID_TYPEr r)r r rrrÚ add_ipsetKs zFirewallIPSet.add_ipsetcCs€|j|}|jrh| rhy x|jƒD]}|j|ƒq"WWqttk rd}zttj|ƒ‚WYdd}~XqtXn tj d|ƒ|j|=dS)Nz,Keeping ipset '%s' because of timeout option) r rr#Ú set_destroyÚ Exceptionr r ÚCOMMAND_FAILEDrÚdebug1)r rZkeepr ÚbackendÚmsgrrrÚ remove_ipsetQs    zFirewallIPSet.remove_ipsetc<Cs$|j|}�x|jƒD�]}|jdkr´|jƒ}||kr´d|jksv|jddksv|j||dksvt|jƒ||dkr´y|j|ƒWn.tk r²}zt t j |ƒ‚WYdd}~XnX|j j �rÆy|j|j|j|jƒWn0tk �r}zt t j |ƒ‚WYdd}~Xn&Xd|_d|jk�r,|jddk�r,qy|j|jƒWn0tk �rl}zt t j |ƒ‚WYdd}~XnXx¬|jD]J}y|j|j|ƒWn0tk �r¼}zt t j |ƒ‚WYdd}~XnX�qvWqy|j|j|j|j|jdƒWn0tk �r}zt t j |ƒ‚WYdd}~XqXd|_qWdS)NÚipsetÚtimeoutÚ0réT)r r#rZset_get_active_terseÚoptionsr$Úrm_def_cr_optsr&r'r r r(r Ú_individual_callsZ set_createrÚ set_flushÚentriesÚset_addÚ set_restore)r rr r*Zactiver+ÚentryrrrÚ apply_ipset]sL     &  zFirewallIPSet.apply_ipsetcCs>x8|jƒD],}|j|}d|_tjd|ƒ|j|ƒq WdS)NFzApplying ipset '%s')rr rrr)r9)r rr rrrÚ apply_ipsetsŽs  zFirewallIPSet.apply_ipsetscCs€xz|jƒD]n}|jdkrq x\|jƒD]P}y|j|ƒ|j|ƒWq$tk rr}z|jtjkrb|‚WYdd}~Xq$Xq$Wq WdS)NZnftables) r#rrÚ check_appliedr&r Úcoder Ú NOT_APPLIED)r r*r-r+rrrÚflush–s   zFirewallIPSet.flushTcCs|j||d�jS)N)r)r!r$)r rrrrrÚget_type¥szFirewallIPSet.get_typecCst|j|dd�jjdƒƒS)NT)rú,)rr!r$Úsplit)r rrrrÚ get_dimension©szFirewallIPSet.get_dimensioncCs|j|ƒ}|j|ƒdS)N)r!r)r rr rrrr;¬s zFirewallIPSet.check_appliedcCs|jsttj|jƒ‚dS)N)rr r r=r)r r rrrr°szFirewallIPSet.check_applied_objcCs.|j||d�}d|jkr*|jddkr*dSdS)N)rZfamilyZinet6Zipv6Zipv4)r!r1)r rrr rrrÚ get_family·s  zFirewallIPSet.get_familycCsÎ|j|dd�}t|ƒ}tj||j|jƒ||jkrFttj d||fƒ‚t ||jƒy$x|j ƒD]}|j |j |ƒq^WWn.tk r¤}zttj|ƒ‚WYdd}~Xn&Xd|jks¾|jddkrÊ|jj|ƒdS)NT)rz'%s' already is in '%s'r.r/)r!rrÚ check_entryr1r$r5r r ZALREADY_ENABLEDrr#r6rr'r(r")r rr8r r*r+rrrÚ add_entryÀs  zFirewallIPSet.add_entrycCs°|j|dd�}t|ƒ}||jkr4ttjd||fƒ‚y$x|jƒD]}|j|j|ƒq@WWn.t k r†}zttj |ƒ‚WYdd}~Xn&Xd|j ks |j ddkr¬|jj |ƒdS)NT)rz'%s' not in '%s'r.r/) r!rr5r r Z NOT_ENABLEDr#Z set_deleterr'r(r1Úremove)r rr8r r*r+rrrÚ remove_entryÔs zFirewallIPSet.remove_entrycCsD|j|dd�}t|ƒ}d|jkr:|jddkr:ttj|ƒ‚||jkS)NT)rr.r/)r!rr1r r ZIPSET_WITH_TIMEOUTr5)r rr8r rrrÚ query_entryæs  zFirewallIPSet.query_entrycCs|j|dd�}|jS)NT)r)r!r5)r rr rrrÚ get_entriesïszFirewallIPSet.get_entriescCs@|j|dd�}t|ƒx|D]}tj||j|jƒqWd|jksN|jddkrT||_y"x|jƒD]}|j|j ƒq`WWn.t k r¤}zt t j |ƒ‚WYdd}~XnXd|_yXxR|jƒD]F}|jjräx8|jD]}|j|j |ƒqÌWq¸|j|j |j|j|jdƒq¸WWn0t k �r4}zt t j |ƒ‚WYdd}~XnXd|_dS)NT)rr.r/)r!rrrDr1r$r5r#r4rr'r r r(rr r3r6r7)r rr5r r8r*r+rrrÚ set_entriesós.  zFirewallIPSet.set_entriesN)F)F)T)T)Ú__name__Ú __module__Ú __qualname__rrrrrrrr!r#r%r,r9r:r>r?rBr;rrCrErGrHrIrJrrrrr"s0  1   N)Ú__doc__Ú__all__Zfirewall.core.loggerrZfirewall.core.ipsetrr2rrrZfirewall.core.io.ipsetrZfirewallr Zfirewall.errorsr ÚobjectrrrrrÚs