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à=ã@sÂddljZddlZddlZddlZddlmZddlmZddl m Z m Z m Z ddl mZmZmZddlmZddlmZddlmZdd lmZdd lmZGd d „d eƒZGd d„deƒZdS)éN)Úconfig)ÚLastUpdatedOrderedDict)Ú splitArgsÚjoinArgsÚ u2b_if_py2)Ú IO_ObjectÚIO_Object_ContentHandlerÚIO_Object_XMLGenerator)Úlog)Ú ipXtables)Úebtables)Úerrors)Ú FirewallErrorc@s$eZdZdd„Zdd„Zdd„ZdS)Údirect_ContentHandlercCstj||ƒd|_dS)NF)rÚ__init__Údirect)ÚselfÚitem©rú/usr/lib/python3.6/direct.pyr(s zdirect_ContentHandler.__init__c Cs‚tj|||ƒ|jj||ƒ|dkr@|jr6ttjdƒ‚d|_�n>|dkr’|js\tj dƒdS|d}|d}|d}|jj t |ƒt |ƒt |ƒƒnì|dk�r6|js°tj d ƒdS|d}|dkrÐttj d |ƒ‚|d}|d}yt |dƒ}Wn(tk �rtj d|dƒdSXt |ƒt |ƒt |ƒ|g|_nH|dk�rl|j�sVtj dƒdS|d}t |ƒg|_ntj d|ƒdSdS)NrzMore than one direct tag.TÚchainz$Parse Error: chain outside of directÚipvÚtableÚrulez#Parse Error: rule outside of directÚipv4Úipv6Úebz"'%s' not from {'ipv4'|'ipv6'|'eb'}Úpriorityz'Parse Error: %s is not a valid priorityÚ passthroughz&Parse Error: command outside of directzUnknown XML element %s)rrr)rÚ startElementrZparser_check_element_attrsrrr Z PARSE_ERRORr ÚerrorÚ add_chainrÚ INVALID_IPVÚintÚ ValueErrorÚ_ruleÚ _passthrough)rÚnameZattrsrrrrrrrr,sT          z"direct_ContentHandler.startElementcCs¦tj||ƒ|dkrX|jrF|jjdd„t|jƒDƒƒ|jj|jŽn tj dƒd|_nJ|dkr¢|jr’|j jdd„t|jƒDƒƒ|jj |j Žn tj d ƒd|_ dS) NrcSsg|] }t|ƒ‘qSr)r)Ú.0Úxrrrú dsz4direct_ContentHandler.endElement..z2Error: rule does not have any arguments, ignoring.rcSsg|] }t|ƒ‘qSr)r)r(r)rrrr*msz0Error: passthrough does not have any arguments, z ignoring.z9Error: passthrough does not have any arguments, ignoring.) rÚ endElementZ_elementr%ÚappendrrÚadd_ruler r r&Úadd_passthrough)rr'rrrr+^s     z direct_ContentHandler.endElementN)Ú__name__Ú __module__Ú __qualname__rrr+rrrrr's2rcs<eZdZdZddBgfddddddgfgfdddgfgffZdZdd d d gd d d d gd gd œZiZ‡fdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Z d@dA„Z!‡Z"S)CÚDirectz Direct class ÚchainsÚÚrulesrÚ passthroughsz(a(sss)a(sssias)a(sas))Nrrrr)rrrrcs0tt|ƒjƒ||_tƒ|_tƒ|_tƒ|_dS)N)Úsuperr2rÚfilenamerr3r5r6)rr8)Ú __class__rrrŠs zDirect.__init__cCsdS)Nr)rÚconfrZall_confrrrÚ _check_config‘szDirect._check_configc Csg}g}x>|jD]4}x.|j|D] }|jtt|ƒt|gƒƒƒq WqW|j|ƒg}xR|jD]H}xB|j|D]4}|jt|d|d|d|dt|dƒfƒƒqnWq^W|j|ƒg}x8|jD].}x(|j|D]}|jt|t|ƒfƒƒqÐWqÀW|j|ƒt|ƒS)Nréé)r3r,ÚtupleÚlistr5r6)rÚretr)ÚkeyrrrrrÚ export_config•s$ $     zDirect.export_configcCsž|jƒ|j|ƒx†t|jƒD]x\}\}}|dkrNx||D]}|j|Žqr rRrL)rrrrrrMrAÚvaluerrrr-s     zDirect.add_rulecCsŠ|j||ƒ|||f}|t|ƒf}||jkrb||j|krb|j||=t|j|ƒdkr†|j|=n$tddj|ƒ||fd||fƒ‚dS)Nrz(Rule '%s' for table '%s' and chain '%s' z',z)with ipv '%s' and priority %d not in list)rQr>r5rTr$rL)rrrrrrMrArYrrrÚ remove_rules     zDirect.remove_rulecCsb|j||ƒ|||f}||jkr^x"|j|jƒD]}|j||=q0Wt|j|ƒdkr^|j|=dS)Nr)rQr5rPrT)rrrrrArYrrrÚ remove_rules"s   zDirect.remove_rulescCs:|j||ƒ|||f}|t|ƒf}||jko8||j|kS)N)rQr>r5)rrrrrrMrArYrrrÚ query_rule+s   zDirect.query_rulecCsF|j||ƒ|||f}||jkr*|j|Std||fd|ƒ‚dS)Nz'No rules for table '%s' and chain '%s' z with ipv '%s')rQr5r$)rrrrrArrrÚ get_rules1s     zDirect.get_rulescCs|jS)N)r5)rrrrÚ get_all_rules:szDirect.get_all_rulescCs^|j|ƒ||jkrg|j|<||j|kr>|j|j|ƒntjddj|ƒ|fdƒdS)NzPassthrough '%s' for ipv '%s'z',zalready in list, ignoring)rOr6r,r rRrL)rrrMrrrr.?s   zDirect.add_passthroughcCsl|j|ƒ||jkrN||j|krN|j|j|ƒt|j|ƒdkrh|j|=ntddj|ƒ|fdƒ‚dS)NrzPassthrough '%s' for ipv '%s'z',z not in list)rOr6rSrTr$rL)rrrMrrrÚremove_passthroughIs  zDirect.remove_passthroughcCs"|j|ƒ||jko ||j|kS)N)rOr6)rrrMrrrÚquery_passthroughSs zDirect.query_passthroughcCs.|j|ƒ||jkr|j|Std|ƒ‚dS)NzNo passthroughs for ipv '%s')rOr6r$)rrrrrÚget_passthroughsWs   zDirect.get_passthroughscCs|jS)N)r6)rrrrÚget_all_passthroughs^szDirect.get_all_passthroughscCs¸|jƒ|jjdƒs&ttjd|jƒ‚t|ƒ}tjƒ}|j |ƒt |jdƒ�b}tj dƒ}|j |ƒy|j |ƒWn8tjk r¨}zttjd|jƒƒ‚WYdd}~XnXWdQRXdS)Nz.xmlz'%s' is missing .xml suffixÚrbzNot a valid file: %s)rCr8Úendswithrr Z INVALID_NAMErÚsaxZ make_parserZsetContentHandlerÚopenZ InputSourceZ setByteStreamÚparseZSAXParseExceptionZ INVALID_TYPEZ getException)rÚhandlerÚparserÚfÚsourceÚmsgrrrÚreadcs      z Direct.readc CsBtjj|jƒr\ytj|jd|jƒWn4tk rZ}ztd|j|fƒ‚WYdd}~XnXtjjtj ƒsxtj tj dƒt j |jddd�}t |ƒ}|jƒ|jdiƒ|jdƒxR|jD]H}|\}}x:|j|D],}|jd ƒ|jd |||d œƒ|jdƒqÐWq¸Wx”|jD]Š}|\}}}xx|j|D]j\}} t| ƒd k�r@�q&|jd ƒ|jd |||d|dœƒ|jtjjt| ƒƒƒ|jd ƒ|jdƒ�q&W�q Wx||jD]r}xj|j|D]\} t| ƒd k�rÈ�q²|jd ƒ|jdd|iƒ|jtjjt| ƒƒƒ|jdƒ|jdƒ�q²W�q¢W|jdƒ|jdƒ|jƒ|jƒ~dS)Nz%s.oldzBackup of '%s' failed: %sièZwtzUTF-8)ÚmodeÚencodingrÚ z r)rrrr<rz%d)rrrrrr)ÚosÚpathÚexistsr8ÚshutilZcopy2Ú ExceptionÚIOErrorrZ ETC_FIREWALLDÚmkdirÚiorfr Z startDocumentrZignorableWhitespacer3Z simpleElementr5rTreZsaxutilsÚescaperr+r6Z endDocumentÚclose) rrlrjrhrArrrrrMrrrÚwriteusZ$                z Direct.write)r4r4r4)#r/r0r1Ú__doc__rEZDBUS_SIGNATUREZPARSER_REQUIRED_ELEMENT_ATTRSZPARSER_OPTIONAL_ELEMENT_ATTRSrr;rBrHrCrNrOrQr!rUrVrWrXr-rZr[r\r]r^r.r_r`rarbrmr{Ú __classcell__rr)r9rr2usH            r2)Zxml.saxrerqrxrtZfirewallrZfirewall.fw_typesrZfirewall.functionsrrrZfirewall.core.io.io_objectrrr Zfirewall.core.loggerr Z firewall.corer r r Zfirewall.errorsrrr2rrrrÚs        N