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âdgZddlZddlZddlZddlZddlmZddlmZddl m Z m Z m Z ddl mZmZmZddlmZmZmZddlmZmZmZdd lmZmZmZdd lmZmZm Z dd lm!Z!dd l"m#Z#Gd d„de$ƒZ%dS)ÚFirewallConfigéN)Úconfig)Úlog)ÚIcmpTypeÚicmptype_readerÚicmptype_writer)ÚServiceÚservice_readerÚservice_writer)ÚZoneÚ zone_readerÚ zone_writer)ÚIPSetÚ ipset_readerÚ ipset_writer)ÚHelperÚ helper_readerÚ helper_writer)ÚPolicyÚ policy_readerÚ policy_writer)Úerrors)Ú FirewallErrorc@s$eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dGdH„Z&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+dSdT„Z,dUdV„Z-dWdX„Z.dYdZ„Z/d[d\„Z0d]d^„Z1d_d`„Z2dadb„Z3dcdd„Z4dedf„Z5dgdh„Z6didj„Z7dkdl„Z8dmdn„Z9dodp„Z:dqdr„Z;dsdt„Zdydz„Z?d{d|„Z@d}d~„ZAdd€„ZBd�d‚„ZCdƒd„„ZDd…d†„ZEd‡dˆ„ZFd‰dŠ„ZGd‹dŒ„ZHd�dŽ„ZId�d�„ZJd‘d’„ZKd“d”„ZLd•d–„ZMd—d˜„ZNd™dš„ZOd›dœ„ZPd�dž„ZQdŸd „ZRd¡d¢„ZSd£d¤„ZTd¥d¦„ZUd§d¨„ZVd©dª„ZWd«d¬„ZXd­d®„ZYd¯d°„ZZd±d²„Z[d³d´„Z\dµd¶„Z]d·d¸„Z^d¹dº„Z_d»d¼„Z`d½d¾„Zad¿dÀ„ZbdÁd„ZcdÃdÄ„ZddÅdÆ„ZedÇS)ÈrcCs||_|jƒdS)N)Ú_fwÚ_FirewallConfig__init_vars)ÚselfÚfw©rú/usr/lib/python3.6/fw_config.pyÚ__init__(szFirewallConfig.__init__cCsHd|j|j|j|j|j|j|j|j|j|j |j |j |j |j |j|jfS)Nz>%s(%r, %r, %r, %r, %r, %r, %r, %r, %r, %r, %r, %r, %r, %r, %r))Ú __class__Ú_ipsetsÚ _icmptypesÚ _servicesÚ_zonesÚ_helpersZpolicy_objectsÚ_builtin_ipsetsÚ_builtin_icmptypesÚ_builtin_servicesÚ_builtin_zonesÚ_builtin_helpersÚ_builtin_policy_objectsÚ_firewalld_confÚ _policiesÚ_direct)rrrrÚ__repr__,s zFirewallConfig.__repr__cCs^i|_i|_i|_i|_i|_i|_i|_i|_i|_i|_ i|_ i|_ d|_ d|_ d|_dS)N)r!r"r#r$r%Ú_policy_objectsr&r'r(r)r*r+r,r-r.)rrrrZ __init_vars6szFirewallConfig.__init_varscCs4x,t|jjƒƒD]}|j|jƒ|j|=qWx,t|jjƒƒD]}|j|jƒ|j|=q>Wx,t|jjƒƒD]}|j|jƒ|j|=qlWx,t|jjƒƒD]}|j|jƒ|j|=qšWx,t|jjƒƒD]}|j|jƒ|j|=qÈWx,t|jjƒƒD]}|j|jƒ|j|=qöWx.t|j jƒƒD]}|j |jƒ|j |=�q$Wx.t|j jƒƒD]}|j |jƒ|j |=�qTWx.t|j jƒƒD]}|j |jƒ|j |=�q„Wx.t|j jƒƒD]}|j |jƒ|j |=�q´W|j �rð|j jƒ|` d|_ |j�r |jjƒ|`d|_|j�r(|jjƒ|`d|_|jƒdS)N)Úlistr&ÚkeysÚcleanupr!r'r"r(r#r)r$r*r%r,r-r.r)rÚxrrrr3GsV         zFirewallConfig.cleanupcCs |jjjƒS)N)rÚpoliciesZquery_lockdown)rrrrÚlockdown_enabled~szFirewallConfig.lockdown_enabledcCs|jjj||ƒS)N)rr5Ú access_check)rÚkeyÚvaluerrrr7�szFirewallConfig.access_checkcCs ||_dS)N)r,)rÚconfrrrÚset_firewalld_conf†sz!FirewallConfig.set_firewalld_confcCs|jS)N)r,)rrrrÚget_firewalld_conf‰sz!FirewallConfig.get_firewalld_confcCs(tjjtjƒs|jjƒn |jjƒdS)N)ÚosÚpathÚexistsrZFIREWALLD_CONFr,ÚclearÚread)rrrrÚupdate_firewalld_confŒs z$FirewallConfig.update_firewalld_confcCs ||_dS)N)r-)rr5rrrÚ set_policies”szFirewallConfig.set_policiescCs|jS)N)r-)rrrrÚ get_policies—szFirewallConfig.get_policiescCs,tjjtjƒs|jjjƒn |jjjƒdS)N) r=r>r?rZLOCKDOWN_WHITELISTr-Zlockdown_whitelistr3rA)rrrrÚupdate_lockdown_whitelistšsz(FirewallConfig.update_lockdown_whitelistcCs ||_dS)N)r.)rZdirectrrrÚ set_direct¢szFirewallConfig.set_directcCs|jS)N)r.)rrrrÚ get_direct¥szFirewallConfig.get_directcCs(tjjtjƒs|jjƒn |jjƒdS)N)r=r>r?rZFIREWALLD_DIRECTr.r3rA)rrrrÚ update_direct¨s zFirewallConfig.update_directcCs$ttt|jjƒƒt|jjƒƒƒƒS)N)ÚsortedÚsetr1r!r2r&)rrrrÚ get_ipsets°szFirewallConfig.get_ipsetscCs$|jr||j|j<n ||j|j<dS)N)Úbuiltinr&Únamer!)rÚobjrrrÚ add_ipset´szFirewallConfig.add_ipsetcCs8||jkr|j|S||jkr(|j|Sttj|ƒ‚dS)N)r!r&rrÚ INVALID_IPSET)rrMrrrÚ get_ipsetºs     zFirewallConfig.get_ipsetcCst|j|jkrttj|jƒ‚nB|j|j|kr@ttjd|jƒ‚n|j|jkr^ttjd|jƒ‚|j|ƒ|j|jS)Nzself._ipsets[%s] != objz'%s' not a built-in ipset)rMr!rrÚ NO_DEFAULTSr&Ú _remove_ipset)rrNrrrÚload_ipset_defaultsÁs    z"FirewallConfig.load_ipset_defaultscCs|jƒS)N)Ú export_config)rrNrrrÚget_ipset_configÍszFirewallConfig.get_ipset_configcCsj|jrPtj|ƒ}|j|ƒtj|_d|_|j|jkr:d|_|j|ƒt|ƒ|S|j|ƒt|ƒ|SdS)NF) rLÚcopyÚ import_configrÚETC_FIREWALLD_IPSETSr>ÚdefaultrOr)rrNr:r4rrrÚset_ipset_configÐs     zFirewallConfig.set_ipset_configcCsx||jks||jkr$ttjd|ƒ‚tƒ}|j|ƒ|j|ƒ||_d||_ t j |_ d|_ d|_t|ƒ|j|ƒ|S)Nznew_ipset(): '%s'z%s.xmlFT)r!r&rrÚ NAME_CONFLICTrÚ check_namerXrMÚfilenamerrYr>rLrZrrO)rrMr:r4rrrÚ new_ipsetàs     zFirewallConfig.new_ipsetcCsÊtjj|ƒ}tjj|ƒ}tjj|ƒsÐ|tjkr„xœ|jjƒD]D}|j|}|j |kr:|j|=|j |j krvd|j |j fSd|fSq:WnHxF|j jƒD]8}|j |}|j |kr�|j |=|j |jkrÄd|fSdSq�WdSt j d|ƒyt||ƒ}Wn0tk �r}zt jd||ƒdSd}~XnX|j |j k�rJ|j |jk�rJ|j|ƒd|fS|tjk�rˆ|j |jk�r€|j|j j|_||j|j <d|fS|j |j k�rÆ|j |j =||j |j <|j |jk�rÂd|fSd Sd S) NÚupdateÚremovezLoading ipset file '%s'z"Failed to load ipset file '%s': %sÚnew)NN)NN)NN)NN)NN)r=r>ÚbasenameÚdirnamer?rrYr!r2r^rMr&rÚdebug1rÚ ExceptionÚerrorrOrZ)rrMr^r>r4rNÚmsgrrrÚupdate_ipset_from_pathósP                z%FirewallConfig.update_ipset_from_pathcCs¬|j|jkrttj|jƒ‚|jtjkr>ttjd|jtjfƒ‚d|j|jf}yt j |d|ƒWn:t k rœ}zt j d||ƒtj|ƒWYdd}~XnX|j|j=dS)Nz '%s' != '%s'z %s/%s.xmlz%s.oldzBackup of file '%s' failed: %s)rMr!rrrPr>rrYÚINVALID_DIRECTORYÚshutilÚmoverfrrgr=ra)rrNrMrhrrrrS8s   zFirewallConfig._remove_ipsetcCs$|js|j r ttjd|jƒ‚dS)Nz'%s' is built-in ipset)rLrZrrZ BUILTIN_IPSETrM)rrNrrrÚcheck_builtin_ipsetIsz"FirewallConfig.check_builtin_ipsetcCs|j|ƒ|j|ƒdS)N)rmrS)rrNrrrÚ remove_ipsetNs zFirewallConfig.remove_ipsetcCs$|j|ƒ|j||ƒ}|j|ƒ|S)N)rmÚ _copy_ipsetrS)rrNrMr_rrrÚ rename_ipsetRs   zFirewallConfig.rename_ipsetcCs|j||jƒƒS)N)r_rU)rrNrMrrrroXszFirewallConfig._copy_ipsetcCs$ttt|jjƒƒt|jjƒƒƒƒS)N)rIrJr1r"r2r')rrrrÚ get_icmptypes]szFirewallConfig.get_icmptypescCs$|jr||j|j<n ||j|j<dS)N)rLr'rMr")rrNrrrÚ add_icmptypeaszFirewallConfig.add_icmptypecCs8||jkr|j|S||jkr(|j|Sttj|ƒ‚dS)N)r"r'rrÚINVALID_ICMPTYPE)rrMrrrÚ get_icmptypegs     zFirewallConfig.get_icmptypecCst|j|jkrttj|jƒ‚nB|j|j|kr@ttjd|jƒ‚n|j|jkr^ttjd|jƒ‚|j|ƒ|j|jS)Nzself._icmptypes[%s] != objz'%s' not a built-in icmptype)rMr"rrrRr'Ú_remove_icmptype)rrNrrrÚload_icmptype_defaultsns    z%FirewallConfig.load_icmptype_defaultscCs|jƒS)N)rU)rrNrrrÚget_icmptype_configzsz"FirewallConfig.get_icmptype_configcCsj|jrPtj|ƒ}|j|ƒtj|_d|_|j|jkr:d|_|j|ƒt|ƒ|S|j|ƒt|ƒ|SdS)NF) rLrWrXrÚETC_FIREWALLD_ICMPTYPESr>rZrrr)rrNr:r4rrrÚset_icmptype_config}s     z"FirewallConfig.set_icmptype_configcCsx||jks||jkr$ttjd|ƒ‚tƒ}|j|ƒ|j|ƒ||_d||_ t j |_ d|_ d|_t|ƒ|j|ƒ|S)Nznew_icmptype(): '%s'z%s.xmlFT)r"r'rrr\rr]rXrMr^rrxr>rLrZrrr)rrMr:r4rrrÚ new_icmptype�s     zFirewallConfig.new_icmptypecCsÊtjj|ƒ}tjj|ƒ}tjj|ƒsÐ|tjkr„xœ|jjƒD]D}|j|}|j |kr:|j|=|j |j krvd|j |j fSd|fSq:WnHxF|j jƒD]8}|j |}|j |kr�|j |=|j |jkrÄd|fSdSq�WdSt j d|ƒyt||ƒ}Wn0tk �r}zt jd||ƒdSd}~XnX|j |j k�rJ|j |jk�rJ|j|ƒd|fS|tjk�rˆ|j |jk�r€|j|j j|_||j|j <d|fS|j |j k�rÆ|j |j =||j |j <|j |jk�rÂd|fSd Sd S) Nr`razLoading icmptype file '%s'z%Failed to load icmptype file '%s': %srb)NN)NN)NN)NN)NN)r=r>rcrdr?rrxr"r2r^rMr'rrerrfrgrrrZ)rrMr^r>r4rNrhrrrÚupdate_icmptype_from_path sP                z(FirewallConfig.update_icmptype_from_pathcCs¬|j|jkrttj|jƒ‚|jtjkr>ttjd|jtjfƒ‚d|j|jf}yt j |d|ƒWn:t k rœ}zt j d||ƒtj|ƒWYdd}~XnX|j|j=dS)Nz '%s' != '%s'z %s/%s.xmlz%s.oldzBackup of file '%s' failed: %s)rMr"rrrsr>rrxrjrkrlrfrrgr=ra)rrNrMrhrrrruås  zFirewallConfig._remove_icmptypecCs$|js|j r ttjd|jƒ‚dS)Nz'%s' is built-in icmp type)rLrZrrZBUILTIN_ICMPTYPErM)rrNrrrÚcheck_builtin_icmptypeösz%FirewallConfig.check_builtin_icmptypecCs|j|ƒ|j|ƒdS)N)r|ru)rrNrrrÚremove_icmptypeûs zFirewallConfig.remove_icmptypecCs$|j|ƒ|j||ƒ}|j|ƒ|S)N)r|Ú_copy_icmptyperu)rrNrMrzrrrÚrename_icmptypeÿs   zFirewallConfig.rename_icmptypecCs|j||jƒƒS)N)rzrU)rrNrMrrrr~szFirewallConfig._copy_icmptypecCs$ttt|jjƒƒt|jjƒƒƒƒS)N)rIrJr1r#r2r()rrrrÚ get_services szFirewallConfig.get_servicescCs$|jr||j|j<n ||j|j<dS)N)rLr(rMr#)rrNrrrÚ add_serviceszFirewallConfig.add_servicecCs<||jkr|j|S||jkr(|j|Sttjd|ƒ‚dS)Nzget_service(): '%s')r#r(rrÚINVALID_SERVICE)rrMrrrÚ get_services     zFirewallConfig.get_servicecCst|j|jkrttj|jƒ‚nB|j|j|kr@ttjd|jƒ‚n|j|jkr^ttjd|jƒ‚|j|ƒ|j|jS)Nzself._services[%s] != objz'%s' not a built-in service)rMr#rrrRr(Ú_remove_service)rrNrrrÚload_service_defaultss    z$FirewallConfig.load_service_defaultscCsr|jƒ}g}x\tdƒD]P}|j|d|krN|jtjt||j|dƒƒƒq|j||j|dƒqWt|ƒS)Nér)Úexport_config_dictÚrangeÚIMPORT_EXPORT_STRUCTUREÚappendrWÚdeepcopyÚgetattrÚtuple)rrNÚ conf_dictÚ conf_listÚirrrÚget_service_config's"z!FirewallConfig.get_service_configcCs|jƒS)N)r‡)rrNrrrÚget_service_config_dict3sz&FirewallConfig.get_service_config_dictcCs–i}x&t|ƒD]\}}|||j|d<qW|jr|tj|ƒ}|j|ƒtj|_d|_|j|jkrfd|_|j |ƒt |ƒ|S|j|ƒt |ƒ|SdS)NrF) Ú enumerater‰rLrWÚimport_config_dictrÚETC_FIREWALLD_SERVICESr>rZr�r )rrNr:rŽr�r9r4rrrÚset_service_config6s      z!FirewallConfig.set_service_configcCsj|jrPtj|ƒ}|j|ƒtj|_d|_|j|jkr:d|_|j|ƒt|ƒ|S|j|ƒt|ƒ|SdS)NF) rLrWr”rr•r>rZr�r )rrNr:r4rrrÚset_service_config_dictJs     z&FirewallConfig.set_service_config_dictcCs¤||jks||jkr$ttjd|ƒ‚i}x&t|ƒD]\}}||tj|d<q2Wtƒ}|j|ƒ|j |ƒ||_ d||_ t j |_d|_d|_t|ƒ|j|ƒ|S)Nznew_service(): '%s'rz%s.xmlFT)r#r(rrr\r“rr‰r]r”rMr^rr•r>rLrZr r�)rrMr:rŽr�r9r4rrrÚ new_serviceZs"     zFirewallConfig.new_servicecCsx||jks||jkr$ttjd|ƒ‚tƒ}|j|ƒ|j|ƒ||_d||_ t j |_ d|_ d|_t|ƒ|j|ƒ|S)Nznew_service(): '%s'z%s.xmlFT)r#r(rrr\rr]r”rMr^rr•r>rLrZr r�)rrMr:r4rrrÚnew_service_dictqs     zFirewallConfig.new_service_dictcCsÊtjj|ƒ}tjj|ƒ}tjj|ƒsÐ|tjkr„xœ|jjƒD]D}|j|}|j |kr:|j|=|j |j krvd|j |j fSd|fSq:WnHxF|j jƒD]8}|j |}|j |kr�|j |=|j |jkrÄd|fSdSq�WdSt j d|ƒyt||ƒ}Wn0tk �r}zt jd||ƒdSd}~XnX|j |j k�rJ|j |jk�rJ|j|ƒd|fS|tjk�rˆ|j |jk�r€|j|j j|_||j|j <d|fS|j |j k�rÆ|j |j =||j |j <|j |jk�rÂd|fSd Sd S) Nr`razLoading service file '%s'z$Failed to load service file '%s': %srb)NN)NN)NN)NN)NN)r=r>rcrdr?rr•r#r2r^rMr(rrer rfrgr�rZ)rrMr^r>r4rNrhrrrÚupdate_service_from_path„sP                z'FirewallConfig.update_service_from_pathcCs¬|j|jkrttj|jƒ‚|jtjkr>ttjd|jtjfƒ‚d|j|jf}yt j |d|ƒWn:t k rœ}zt j d||ƒtj|ƒWYdd}~XnX|j|j=dS)Nz '%s' != '%s'z %s/%s.xmlz%s.oldzBackup of file '%s' failed: %s)rMr#rrr‚r>rr•rjrkrlrfrrgr=ra)rrNrMrhrrrr„És  zFirewallConfig._remove_servicecCs$|js|j r ttjd|jƒ‚dS)Nz'%s' is built-in service)rLrZrrZBUILTIN_SERVICErM)rrNrrrÚcheck_builtin_serviceÚsz$FirewallConfig.check_builtin_servicecCs|j|ƒ|j|ƒdS)N)r›r„)rrNrrrÚremove_serviceßs zFirewallConfig.remove_servicecCs$|j|ƒ|j||ƒ}|j|ƒ|S)N)r›Ú _copy_servicer„)rrNrMr˜rrrÚrename_serviceãs   zFirewallConfig.rename_servicecCs|j||jƒƒS)N)r™r‡)rrNrMrrrr�észFirewallConfig._copy_servicecCs$ttt|jjƒƒt|jjƒƒƒƒS)N)rIrJr1r$r2r))rrrrÚ get_zonesîszFirewallConfig.get_zonescCs$|jr||j|j<n ||j|j<dS)N)rLr)rMr$)rrNrrrÚadd_zoneòszFirewallConfig.add_zonecCs(||jkr|j|=||jkr$|j|=dS)N)r)r$)rrMrrrÚ forget_zoneøs  zFirewallConfig.forget_zonecCs<||jkr|j|S||jkr(|j|Sttjd|ƒ‚dS)Nzget_zone(): %s)r$r)rrÚ INVALID_ZONE)rrMrrrÚget_zoneþs     zFirewallConfig.get_zonecCst|j|jkrttj|jƒ‚nB|j|j|kr@ttjd|jƒ‚n|j|jkr^ttjd|jƒ‚|j|ƒ|j|jS)Nzself._zones[%s] != objz'%s' not a built-in zone)rMr$rrrRr)Ú _remove_zone)rrNrrrÚload_zone_defaultss    z!FirewallConfig.load_zone_defaultscCsr|jƒ}g}x\tdƒD]P}|j|d|krN|jtjt||j|dƒƒƒq|j||j|dƒqWt|ƒS)Nér)r‡rˆr‰rŠrWr‹rŒr�)rrNrŽr�r�rrrÚget_zone_configs"zFirewallConfig.get_zone_configcCs|jƒS)N)r‡)rrNrrrÚget_zone_config_dictsz#FirewallConfig.get_zone_config_dictcCs¢i}x&t|ƒD]\}}|||j|d<qW|jr‚tj|ƒ}||_|j|ƒtj|_d|_|j|jkrld|_ |j |ƒt |ƒ|S||_|j|ƒt |ƒ|SdS)NrF) r“r‰rLrWÚ fw_configr”rÚETC_FIREWALLD_ZONESr>rZr r )rrNr:rŽr�r9r4rrrÚset_zone_config s$     zFirewallConfig.set_zone_configcCsv|jrVtj|ƒ}||_|j|ƒtj|_d|_|j|jkr@d|_|j|ƒt |ƒ|S||_|j|ƒt |ƒ|SdS)NF) rLrWr©r”rrªr>rZr r )rrNr:r4rrrÚset_zone_config_dict6s     z#FirewallConfig.set_zone_config_dictcCsª||jks||jkr$ttjd|ƒ‚i}x&t|ƒD]\}}||tj|d<q2Wtƒ}||_|j |ƒ|j |ƒ||_ d||_ t j|_d|_d|_t|ƒ|j|ƒ|S)Nznew_zone(): '%s'rz%s.xmlFT)r$r)rrr\r“r r‰r©r]r”rMr^rrªr>rLrZr r )rrMr:rŽr�r9r4rrrÚnew_zoneHs"    zFirewallConfig.new_zonecCs~||jks||jkr$ttjd|ƒ‚tƒ}||_|j|ƒ|j|ƒ||_ d||_ t j |_ d|_d|_t|ƒ|j|ƒ|S)Nznew_zone(): '%s'z%s.xmlFT)r$r)rrr\r r©r]r”rMr^rrªr>rLrZr r )rrMr:r4rrrÚ new_zone_dict_s    zFirewallConfig.new_zone_dictcCstjj|ƒ}tjj|ƒ}tjj|ƒsÒ|jtjƒr†xœ|jj ƒD]D}|j|}|j |kr<|j|=|j |j krxd|j |j fSd|fSqrcrdr?Ú startswithrrªr$r2r^rMr)rrer rfrgr©Úlenr rZ)rrMr^r>r4rNrhrrrÚupdate_zone_from_pathrsZ                z$FirewallConfig.update_zone_from_pathcCs®|j|jkrttj|jƒ‚|jjtjƒs@ttj d|jtjfƒ‚d|j|jf}yt j |d|ƒWn:t k rž}zt jd||ƒtj|ƒWYdd}~XnX|j|j=dS)Nz'%s' doesn't start with '%s'z %s/%s.xmlz%s.oldzBackup of file '%s' failed: %s)rMr$rrr¢r>r±rrªrjrkrlrfrrgr=ra)rrNrMrhrrrr¤¿s zFirewallConfig._remove_zonecCs$|js|j r ttjd|jƒ‚dS)Nz'%s' is built-in zone)rLrZrrZ BUILTIN_ZONErM)rrNrrrÚcheck_builtin_zoneÐsz!FirewallConfig.check_builtin_zonecCs|j|ƒ|j|ƒdS)N)r´r¤)rrNrrrÚ remove_zoneÕs zFirewallConfig.remove_zonec CsN|j|ƒ|jƒ}|j|ƒy|j||ƒ}Wn|j|j|ƒ‚YnX|S)N)r´r‡r¤r®rM)rrNrMZobj_confr­rrrÚ rename_zoneÙs  zFirewallConfig.rename_zonecCs$ttt|jjƒƒt|jjƒƒƒƒS)N)rIrJr1r0r2r+)rrrrÚget_policy_objectsçsz!FirewallConfig.get_policy_objectscCs$|jr||j|j<n ||j|j<dS)N)rLr+rMr0)rrNrrrÚadd_policy_objectësz FirewallConfig.add_policy_objectcCs<||jkr|j|S||jkr(|j|Sttjd|ƒ‚dS)Nzget_policy_object(): %s)r0r+rrÚINVALID_POLICY)rrMrrrÚget_policy_objectñs     z FirewallConfig.get_policy_objectcCst|j|jkrttj|jƒ‚nB|j|j|kr@ttjd|jƒ‚n|j|jkr^ttjd|jƒ‚|j|ƒ|j|jS)Nzself._policy_objects[%s] != objz'%s' not a built-in policy)rMr0rrrRr+Ú_remove_policy_object)rrNrrrÚload_policy_object_defaultsøs    z*FirewallConfig.load_policy_object_defaultscCs|jƒS)N)r‡)rrNrrrÚget_policy_object_config_dictsz,FirewallConfig.get_policy_object_config_dictcCsv|jrVtj|ƒ}||_|j|ƒtj|_d|_|j|jkr@d|_|j|ƒt |ƒ|S||_|j|ƒt |ƒ|SdS)NF) rLrWr©r”rÚETC_FIREWALLD_POLICIESr>rZr¸r)rrNr:r4rrrÚset_policy_object_config_dicts     z,FirewallConfig.set_policy_object_config_dictcCs~||jks||jkr$ttjd|ƒ‚tƒ}||_|j|ƒ|j|ƒ||_ d||_ t j |_ d|_d|_t|ƒ|j|ƒ|S)Nznew_policy_object(): '%s'z%s.xmlFT)r0r+rrr\rr©r]r”rMr^rr¾r>rLrZrr¸)rrMr:r4rrrÚnew_policy_object_dicts    z%FirewallConfig.new_policy_object_dictcCstjj|ƒ}tjj|ƒ}tjj|ƒsÒ|jtjƒr†xœ|jj ƒD]D}|j|}|j |kr<|j|=|j |j krxd|j |j fSd|fSqrcrdr?r±rr¾r0r2r^rMr+rrerrfrgr©r²r¸rZ)rrMr^r>r4rNrhrrrÚupdate_policy_object_from_path,sZ                z-FirewallConfig.update_policy_object_from_pathcCs®|j|jkrttj|jƒ‚|jjtjƒs@ttj d|jtjfƒ‚d|j|jf}yt j |d|ƒWn:t k rž}zt jd||ƒtj|ƒWYdd}~XnX|j|j=dS)Nz'%s' doesn't start with '%s'z %s/%s.xmlz%s.oldzBackup of file '%s' failed: %s)rMr0rrr¹r>r±rr¾rjrkrlrfrrgr=ra)rrNrMrhrrrr»ys z$FirewallConfig._remove_policy_objectcCs$|js|j r ttjd|jƒ‚dS)Nz'%s' is built-in policy)rLrZrrZBUILTIN_POLICYrM)rrNrrrÚcheck_builtin_policy_objectŠsz*FirewallConfig.check_builtin_policy_objectcCs|j|ƒ|j|ƒdS)N)rÂr»)rrNrrrÚremove_policy_object�s z#FirewallConfig.remove_policy_objectcCs$|j|ƒ|j||ƒ}|j|ƒ|S)N)rÂÚ_copy_policy_objectr»)rrNrMZnew_policy_objectrrrÚrename_policy_object“s   z#FirewallConfig.rename_policy_objectcCs|j||jƒƒS)N)rÀr‡)rrNrMrrrrÄ™sz"FirewallConfig._copy_policy_objectcCs$ttt|jjƒƒt|jjƒƒƒƒS)N)rIrJr1r%r2r*)rrrrÚ get_helpersžszFirewallConfig.get_helperscCs$|jr||j|j<n ||j|j<dS)N)rLr*rMr%)rrNrrrÚ add_helper¢szFirewallConfig.add_helpercCs8||jkr|j|S||jkr(|j|Sttj|ƒ‚dS)N)r%r*rrÚINVALID_HELPER)rrMrrrÚ get_helper¨s     zFirewallConfig.get_helpercCst|j|jkrttj|jƒ‚nB|j|j|kr@ttjd|jƒ‚n|j|jkr^ttjd|jƒ‚|j|ƒ|j|jS)Nzself._helpers[%s] != objz'%s' not a built-in helper)rMr%rrrRr*Ú_remove_helper)rrNrrrÚload_helper_defaults¯s    z#FirewallConfig.load_helper_defaultscCs|jƒS)N)rU)rrNrrrÚget_helper_config»sz FirewallConfig.get_helper_configcCsj|jrPtj|ƒ}|j|ƒtj|_d|_|j|jkr:d|_|j|ƒt|ƒ|S|j|ƒt|ƒ|SdS)NF) rLrWrXrÚETC_FIREWALLD_HELPERSr>rZrÇr)rrNr:r4rrrÚset_helper_config¾s     z FirewallConfig.set_helper_configcCsx||jks||jkr$ttjd|ƒ‚tƒ}|j|ƒ|j|ƒ||_d||_ t j |_ d|_ d|_t|ƒ|j|ƒ|S)Nznew_helper(): '%s'z%s.xmlFT)r%r*rrr\rr]rXrMr^rrÍr>rLrZrrÇ)rrMr:r4rrrÚ new_helperÎs     zFirewallConfig.new_helpercCsÊtjj|ƒ}tjj|ƒ}tjj|ƒsÐ|tjkr„xœ|jjƒD]D}|j|}|j |kr:|j|=|j |j krvd|j |j fSd|fSq:WnHxF|j jƒD]8}|j |}|j |kr�|j |=|j |jkrÄd|fSdSq�WdSt j d|ƒyt||ƒ}Wn0tk �r}zt jd||ƒdSd}~XnX|j |j k�rJ|j |jk�rJ|j|ƒd|fS|tjk�rˆ|j |jk�r€|j|j j|_||j|j <d|fS|j |j k�rÆ|j |j =||j |j <|j |jk�rÂd|fSd Sd S) Nr`razLoading helper file '%s'z#Failed to load helper file '%s': %srb)NN)NN)NN)NN)NN)r=r>rcrdr?rrÍr%r2r^rMr*rrerrfrgrÇrZ)rrMr^r>r4rNrhrrrÚupdate_helper_from_pathásP                z&FirewallConfig.update_helper_from_pathcCs¬|j|jkrttj|jƒ‚|jtjkr>ttjd|jtjfƒ‚d|j|jf}yt j |d|ƒWn:t k rœ}zt j d||ƒtj|ƒWYdd}~XnX|j|j=dS)Nz '%s' != '%s'z %s/%s.xmlz%s.oldzBackup of file '%s' failed: %s)rMr%rrrÈr>rrÍrjrkrlrfrrgr=ra)rrNrMrhrrrrÊ&s   zFirewallConfig._remove_helpercCs$|js|j r ttjd|jƒ‚dS)Nz'%s' is built-in helper)rLrZrrZBUILTIN_HELPERrM)rrNrrrÚcheck_builtin_helper7sz#FirewallConfig.check_builtin_helpercCs|j|ƒ|j|ƒdS)N)rÑrÊ)rrNrrrÚ remove_helper<s zFirewallConfig.remove_helpercCs$|j|ƒ|j||ƒ}|j|ƒ|S)N)rÑÚ _copy_helperrÊ)rrNrMrÏrrrÚ rename_helper@s   zFirewallConfig.rename_helpercCs|j||jƒƒS)N)rÏrU)rrNrMrrrrÓFszFirewallConfig._copy_helperN)fÚ__name__Ú __module__Ú __qualname__rr/rr3r6r7r;r<rBrCrDrErFrGrHrKrOrQrTrVr[r_rirSrmrnrprorqrrrtrvrwryrzr{rur|r}rr~r€r�rƒr…r‘r’r–r—r˜r™ršr„r›rœržr�rŸr r¡r£r¥r§r¨r«r¬r­r®r³r¤r´rµr¶r·r¸rºr¼r½r¿rÀrÁr»rÂrÃrÅrÄrÆrÇrÉrËrÌrÎrÏrÐrÊrÑrÒrÔrÓrrrrr'sÆ 7 E E  E  M M E)&Ú__all__rWr=Zos.pathrkZfirewallrZfirewall.core.loggerrZfirewall.core.io.icmptyperrrZfirewall.core.io.servicerr r Zfirewall.core.io.zoner r r Zfirewall.core.io.ipsetrrrZfirewall.core.io.helperrrrZfirewall.core.io.policyrrrrZfirewall.errorsrÚobjectrrrrrÚs