3 YÉj¤ã@sdddlmZddlZeejd<ddlZddlZddlZddlZddl Zddl m Z ddl m Z ddlmZddlmZddlmZmZmZdd lmZdd lmZdd lmZdd lmZdd lmZddl m!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3ddl m4Z4ddl5m6Z6Gdd„dejj7j8ƒZ9dS)é)ÚGObjectNZgobject)Úconfig)ÚDEFAULT_ZONE_TARGET)ÚWatcher)Úlog)Úhandle_exceptionsÚdbus_handle_exceptionsÚdbus_service_method)ÚFirewallDConfigIcmpType)ÚFirewallDConfigService)ÚFirewallDConfigZone)ÚFirewallDConfigPolicy)ÚFirewallDConfigIPSet)ÚFirewallDConfigHelper)ÚIcmpType)ÚIPSet)ÚHelper)ÚLockdownWhitelist)ÚDirect)Údbus_to_pythonÚcommand_of_senderÚcontext_of_senderÚ uid_of_senderÚ user_of_uidÚ%dbus_introspection_prepare_propertiesÚ!dbus_introspection_add_properties)Úerrors)Ú FirewallErrorcs@ eZdZdZdZejjZe ‡fdd„ƒZ e dd„ƒZ e dd„ƒZ e d d „ƒZ e d d „ƒZe d d„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe dd„ƒZe dd „ƒZe d!d"„ƒZe d#d$„ƒZe d%d&„ƒZe d'd(„ƒZe d)d*„ƒZe d+d,„ƒZe d-d.„ƒZe d/d0„ƒZ e!d1d2„ƒZ"e!d3d4„ƒZ#e!d5d6„ƒZ$e%ej&d7d8d9�e!dîd;d<„ƒƒZ'e%ej&d=d>d9�e!dïd?d@„ƒƒZ(e)jj*j+ejjƒe%ej&dAdB�e!dðdCdD„ƒƒƒZ,ej-j.ej&dEdF�dGdH„ƒZ/e)jj*j+ejj0ƒe%ej1d=dI�e!dñ‡fdJdK„ ƒƒƒZ2e%ejj3e4j5dI�e!dòdLdM„ƒƒZ6e%ejj3e4j5dB�e!dódNdO„ƒƒZ7ej-j.ejj3ƒe!dPdQ„ƒƒZ8e%ejj3d=dB�e!dôdRdS„ƒƒZ9e%ejj3d=dB�e!dõdTdU„ƒƒZ:e%ejj3d=dVd9�e!dödWdX„ƒƒZ;e%ejj3dYdI�e!d÷dZd[„ƒƒZe%ejj3d=dVd9�e!dúd`da„ƒƒZ?e%ejj3dYdI�e!dûdbdc„ƒƒZ@e%ejj3d=dB�e!düddde„ƒƒZAe%ejj3d=dB�e!dýdfdg„ƒƒZBe%ejj3d=dVd9�e!dþdhdi„ƒƒZCe%ejj3dYdI�e!dÿdjdk„ƒƒZDe%ejj3dldB�e!�ddmdn„ƒƒZEe%ejj3dldB�e!�ddodp„ƒƒZFe%ejj3dldVd9�e!�ddqdr„ƒƒZGe%ejj3dsdI�e!�ddtdu„ƒƒZHe%ejjIdvdI�e!�ddwdx„ƒƒZJe%ejjIdYdI�e!�ddydz„ƒƒZKe%ejjId=d{d9�e!�dd|d}„ƒƒZLe%ejjId=eMj5d{d9�e!�dd~d„ƒƒZNej-j.ejjId=dF�e!d€d�„ƒƒZOe%ejjIdvdI�e!�dd‚dƒ„ƒƒZPe%ejjIdYdI�e!�d d„d…„ƒƒZQe%ejjId=d{d9�e!�d d†d‡„ƒƒZRe%ejjId=eSj5d{d9�e!�d dˆd‰„ƒƒZTej-j.ejjId=dF�e!dŠd‹„ƒƒZUe%ejjIdvdI�e!�d dŒd�„ƒƒZVe%ejjIdYdI�e!�d dŽd�„ƒƒZWe%ejjId=d{d9�e!�dd�d‘„ƒƒZXe%ejjId’d{d9�e!�dd“d”„ƒƒZYe%ejjId•d{d9�e!�dd–d—„ƒƒZZej-j.ejjId=dF�e!d˜d™„ƒƒZ[e%ejjIdvdI�e!�ddšd›„ƒƒZ\e%ejjIdYdI�e!�ddœd�„ƒƒZ]e%ejjId=d{d9�e!�ddždŸ„ƒƒZ^e%ejjId=d=d9�e!�dd d¡„ƒƒZ_e%ejjId=d=d9�e!�dd¢d£„ƒƒZ`e%ejjId¤d{d9�e!�dd¥d¦„ƒƒZae%ejjId•d{d9�e!�dd§d¨„ƒƒZbej-j.ejjId=dF�e!d©dª„ƒƒZce%ejjIdvdI�e!�dd«d¬„ƒƒZde%ejjIdYdI�e!�dd­d®„ƒƒZee%ejjId=d{d9�e!�dd¯d°„ƒƒZfe%ejjId•d{d9�e!�dd±d²„ƒƒZgej-j.ejjId=dF�e!d³d´„ƒƒZhe%ejjIdvdI�e!�ddµd¶„ƒƒZie%ejjIdYdI�e!�dd·d¸„ƒƒZje%ejjId=d{d9�e!�dd¹dº„ƒƒZke%ejjId=elj5d{d9�e!�dd»d¼„ƒƒZmej-j.ejjId=dF�e!d½d¾„ƒƒZne%ejjoepj5dI�e!�d d¿dÀ„ƒƒZqe%ejjoepj5dB�e!�d!dÁd„ƒƒZrej-j.ejjoƒe!dÃdÄ„ƒƒZse%ejjodÅdB�e!�d"dÆdÇ„ƒƒZte%ejjodÅdB�e!�d#dÈdÉ„ƒƒZue%ejjodÅdVd9�e!�d$dÊdË„ƒƒZve%ejjod7dYd9�e!�d%dÌdÍ„ƒƒZwe%ejjodÎdÏd9�e!�d&dÐdÑ„ƒƒZxe%ejjodÒdB�e!�d'dÓdÔ„ƒƒZye%ejjodÒdB�e!�d(dÕdÖ„ƒƒZze%ejjodÒdVd9�e!�d)d×dØ„ƒƒZ{e%ejjodÅdB�e!�d*dÙdÚ„ƒƒZ|e%ejjodÅdÛd9�e!�d+dÜdÝ„ƒƒZ}e%ejjodÎdÞd9�e!�d,dßdà„ƒƒZ~e%ejjodádB�e!�d-dâd㄃ƒZe%ejjodádB�e!�d.däd儃ƒZ€e%ejjodádVd9�e!�d/dæd焃ƒZ�e%ejjod=dèd9�e!�d0dédꄃƒZ‚e%ejjodëdI�e!�d1dìd턃ƒZƒ‡Z„S(2ÚFirewallDConfigzFirewallD main classTcs–tt|ƒj||Ž||_|d|_|d|_|jƒt|jdƒ|_ |j j tj ƒ|j j tj ƒ|j j tj ƒ|j j tjƒ|j j tjƒ|j j tjƒ|j j tjƒ|j j tjƒ|j j tjƒ|j j tjƒ|j j tjƒ|j j tjƒtjjtjƒ�r>xBttjtjƒƒD].}dtj|f}tjj|ƒ�r |j j |ƒ�q W|j jtjƒ|j jtjƒ|j jtjƒt |tj!j"dddddddddddddœ ƒdS)Nrééz%s/%sZ readwrite) Ú CleanupOnExitÚCleanupModulesOnExitÚ IPv6_rpfilterÚLockdownÚ MinimalMarkÚIndividualCallsÚ LogDeniedÚAutomaticHelpersÚFirewallBackendÚFlushAllOnReloadÚ RFC3964_IPv4ÚAllowZoneDrifting)#ÚsuperrÚ__init__rÚbusnameÚpathÚ _init_varsrÚ watch_updaterÚwatcherÚ add_watch_dirÚFIREWALLD_IPSETSÚETC_FIREWALLD_IPSETSÚFIREWALLD_ICMPTYPESÚETC_FIREWALLD_ICMPTYPESÚFIREWALLD_HELPERSÚETC_FIREWALLD_HELPERSÚFIREWALLD_SERVICESÚETC_FIREWALLD_SERVICESÚFIREWALLD_ZONESÚETC_FIREWALLD_ZONESÚFIREWALLD_POLICIESÚETC_FIREWALLD_POLICIESÚosÚexistsÚsortedÚlistdirÚisdirZadd_watch_fileÚLOCKDOWN_WHITELISTÚFIREWALLD_DIRECTÚFIREWALLD_CONFrÚdbusÚDBUS_INTERFACE_CONFIG)ÚselfZconfÚargsÚkwargsÚfilenamer0)Ú __class__©ú/usr/lib/python3.6/config.pyr.FsP  zFirewallDConfig.__init__cCs2g|_d|_g|_d|_g|_d|_g|_d|_g|_d|_ g|_ d|_ x$|j j ƒD]}|j|j j|ƒƒqTWx$|j jƒD]}|j|j j|ƒƒqzWx$|j jƒD]}|j|j j|ƒƒq Wx$|j jƒD]}|j|j j|ƒƒqÆWx$|j jƒD]}|j|j j|ƒƒqìWx&|j jƒD]}|j|j j|ƒƒ�qWdS)Nr)ÚipsetsÚ ipset_idxÚ icmptypesÚ icmptype_idxÚservicesÚ service_idxÚzonesÚzone_idxÚhelpersÚ helper_idxÚpolicy_objectsÚpolicy_object_idxrZ get_ipsetsÚ _addIPSetZ get_ipsetZ get_icmptypesÚ _addIcmpTypeZ get_icmptypeZ get_servicesÚ _addServiceZ get_serviceZ get_zonesÚ_addZoneZget_zoneZ get_helpersÚ _addHelperZ get_helperZget_policy_objectsÚ _addPolicyZget_policy_object)rKÚipsetÚicmptypeÚserviceÚzoneÚhelperÚpolicyrPrPrQr1ts0zFirewallDConfig._init_varscCsdS)NrP)rKrPrPrQÚ__del__�szFirewallDConfig.__del__cCsüx&t|jƒdkr&|jjƒ}|jƒ~qWx&t|jƒdkrN|jjƒ}|jƒ~q*Wx&t|jƒdkrv|jjƒ}|jƒ~qRWx&t|jƒdkrž|jjƒ}|jƒ~qzWx&t|jƒdkrÆ|jjƒ}|jƒ~q¢Wx&t|jƒdkrî|jjƒ}|jƒ~qÊW|j ƒdS)Nr) ÚlenrRÚpopÚ unregisterrTrVrXrZr\r1)rKÚitemrPrPrQÚreload”s2      zFirewallDConfig.reloadc CsJ|tjkrÐ|jtjjƒ}tjdtjƒy|jjƒWn2tk rf}ztj d||fƒdSd}~XnX|jtjjƒj ƒ}x2t |j ƒƒD]"}||krˆ||||krˆ||=qˆWt |ƒdkrÌ|jtjj|gƒdS|jtjƒsè|jtjƒoð|jdƒ�r‚y|jj|ƒ\}}Wn4tk �r<}ztj d||fƒdSd}~XnX|dk�rT|j|ƒn*|dk�rj|j|ƒn|dk�rF|j|ƒ�nÄ|jtjƒ�sž|jtjƒ�r8|jdƒ�r8y|jj|ƒ\}}Wn4tk �rò}ztj d ||fƒdSd}~XnX|dk�r |j|ƒn*|dk�r |j|ƒn|dk�rF|j|ƒ�n|jtjƒ�sT|jtjƒ�rr|jdƒ�rìy|jj|ƒ\}}Wn4tk �r¨}ztj d ||fƒdSd}~XnX|dk�rÀ|j |ƒn*|dk�rÖ|j!|ƒn|dk�rn|j"|ƒn‚|jtjƒ�rF|j#tjd ƒj$d ƒ}t |ƒd k�s&d |k�r*dSt%j&j'|ƒ�rT|j(j)|ƒ�sn|j(j*|ƒn|j(j)|ƒ�rF|j(j+|ƒ�nÔ|jtj,ƒ�sŽ|jtj-ƒ�r(|jdƒ�r(y|jj.|ƒ\}}Wn4tk �râ}ztj d||fƒdSd}~XnX|dk�rú|j/|ƒn*|dk�r|j0|ƒn|dk�rF|j1|ƒ�n|jtj2ƒ�sD|jtj3ƒ�rÞ|jdƒ�rÞy|jj4|ƒ\}}Wn4tk �r˜}ztj d||fƒdSd}~XnX|dk�r°|j5|ƒn*|dk�rÆ|j6|ƒn|dk�rF|j7|ƒ�nh|tj8k�r:y|jj9ƒWn4tk �r,}ztj d||fƒdSd}~XnX|j:ƒ�n |tj;k�r”y|jj<ƒWn4tk �rˆ}ztj d||fƒdSd}~XnX|j=ƒn²|jtj>ƒ�s°|jtj?ƒ�rF|jdƒ�rFy|jj@|ƒ\}}Wn4tk �r}ztj d||fƒdSd}~XnX|dk�r|jA|ƒn*|dk�r2|jB|ƒn|dk�rF|jC|ƒdS)Nz,config: Reloading firewalld config file '%s'z+Failed to load firewalld.conf file '%s': %srz.xmlz%Failed to load icmptype file '%s': %sÚnewÚremoveÚupdatez$Failed to load service file '%s': %sz!Failed to load zone file '%s': %sÚú/rz"Failed to load ipset file '%s': %sz#Failed to load helper file '%s': %sz/Failed to load lockdown whitelist file '%s': %sz)Failed to load direct rules file '%s': %sz#Failed to load policy file '%s': %s)DrrHÚGetAllrIrJrÚdebug1Zupdate_firewalld_confÚ ExceptionÚerrorÚcopyÚlistÚkeysrkÚPropertiesChangedÚ startswithr7r8ÚendswithZupdate_icmptype_from_pathr_ÚremoveIcmpTypeÚ_updateIcmpTyper;r<Zupdate_service_from_pathr`Ú removeServiceÚ_updateServicer=r>Zupdate_zone_from_pathraÚ removeZoneÚ _updateZoneÚreplaceÚstriprAr0rEr3Z has_watchr4Z remove_watchr5r6Zupdate_ipset_from_pathr^Ú removeIPSetÚ _updateIPSetr9r:Zupdate_helper_from_pathrbÚ removeHelperÚ _updateHelperrFZupdate_lockdown_whitelistÚLockdownWhitelistUpdatedrGZ update_directÚUpdatedr?r@Zupdate_policy_object_from_pathrcÚ removePolicyÚ _updatePolicy) rKÚnameZ old_propsÚmsgZpropsÚkeyZwhatÚobjÚ_namerPrPrQr2°s                                                    zFirewallDConfig.watch_updaterc CsPt||j||j|jdtjj|jfƒ}|jj|ƒ|jd7_|j|j ƒ|S)Nz%s/%dr) r rrUr/rIZDBUS_PATH_CONFIG_ICMPTYPErTÚappendÚ IcmpTypeAddedr�)rKr’Úconfig_icmptyperPrPrQr_As   zFirewallDConfig._addIcmpTypecCsPxJ|jD]@}|jj|jkr|jj|jkr|jj|jkr||_|j|jƒqWdS)N)rTr’r�r0rNrŒ)rKr’rerPrPrQr€Ms  zFirewallDConfig._updateIcmpTypecCsød}xT|jD]J}|jƒ}|j||kr ||j|jƒ|jj|j|ƒ|_|j|jjƒq Wx\|jD]R}|jƒ}d|krb|j|dkrb|dj|jƒ|jj |j|ƒ|_|j|jjƒqbWx:|j D]0}|j|krÀ|j |jƒ|j ƒ|j j|ƒ~qÀWdS)NéZ icmp_blocks) rXÚ getSettingsr�rqrÚset_zone_configr’rŒr\Úset_policy_object_config_dictrTÚRemovedrm)rKr’ÚindexrgÚsettingsrirerPrPrQrVs&      zFirewallDConfig.removeIcmpTypec CsPt||j||j|jdtjj|jfƒ}|jj|ƒ|jd7_|j|j ƒ|S)Nz%s/%dr) r rrWr/rIZDBUS_PATH_CONFIG_SERVICErVr”Ú ServiceAddedr�)rKr’Úconfig_servicerPrPrQr`ps  zFirewallDConfig._addServicecCsPxJ|jD]@}|jj|jkr|jj|jkr|jj|jkr||_|j|jƒqWdS)N)rVr’r�r0rNrŒ)rKr’rfrPrPrQr‚{s  zFirewallDConfig._updateServicecCsød}xT|jD]J}|jƒ}|j||kr ||j|jƒ|jj|j|ƒ|_|j|jjƒq Wx\|jD]R}|jƒ}d|krb|j|dkrb|dj|jƒ|jj |j|ƒ|_|j|jjƒqbWx:|j D]0}|j|krÀ|j |jƒ|j ƒ|j j|ƒ~qÀWdS)Nr rV) rXr˜r�rqrr™r’rŒr\ršrVr›rm)rKr’rœrgr�rirfrPrPrQr�„s&      zFirewallDConfig.removeServicec CsPt||j||j|jdtjj|jfƒ}|jj|ƒ|jd7_|j|j ƒ|S)Nz%s/%dr) r rrYr/rIZDBUS_PATH_CONFIG_ZONErXr”Ú ZoneAddedr�)rKr’Ú config_zonerPrPrQražs  zFirewallDConfig._addZonecCsPxJ|jD]@}|jj|jkr|jj|jkr|jj|jkr||_|j|jƒqWdS)N)rXr’r�r0rNrŒ)rKr’rgrPrPrQr„©s  zFirewallDConfig._updateZonecCs@x:|jD]0}|j|kr|j|jƒ|jƒ|jj|ƒ~qWdS)N)rXr’r›r�rmrq)rKr’rgrPrPrQrƒ±s     zFirewallDConfig.removeZonec CsPt||j||j|jdtjj|jfƒ}|jj|ƒ|jd7_|j|j ƒ|S)Nz%s/%dr) r rr]r/rIZDBUS_PATH_CONFIG_POLICYr\r”Ú PolicyAddedr�)rKr’Ú config_policyrPrPrQrcºs  zFirewallDConfig._addPolicycCsPxJ|jD]@}|jj|jkr|jj|jkr|jj|jkr||_|j|jƒqWdS)N)r\r’r�r0rNrŒ)rKr’rirPrPrQrŽÅs  zFirewallDConfig._updatePolicycCs@x:|jD]0}|j|kr|j|jƒ|jƒ|jj|ƒ~qWdS)N)r\r’r›r�rmrq)rKr’rirPrPrQr�Ís     zFirewallDConfig.removePolicyc CsPt||j||j|jdtjj|jfƒ}|jj|ƒ|jd7_|j|j ƒ|S)Nz%s/%dr) rrrSr/rIZDBUS_PATH_CONFIG_IPSETrRr”Ú IPSetAddedr�)rKr’Ú config_ipsetrPrPrQr^Ös  zFirewallDConfig._addIPSetcCsPxJ|jD]@}|jj|jkr|jj|jkr|jj|jkr||_|j|jƒqWdS)N)rRr’r�r0rNrŒ)rKr’rdrPrPrQrˆás  zFirewallDConfig._updateIPSetcCs@x:|jD]0}|j|kr|j|jƒ|jƒ|jj|ƒ~qWdS)N)rRr’r›r�rmrq)rKr’rdrPrPrQr‡és     zFirewallDConfig.removeIPSetc CsPt||j||j|jdtjj|jfƒ}|jj|ƒ|jd7_|j|j ƒ|S)Nz%s/%dr) rrr[r/rIZDBUS_PATH_CONFIG_HELPERrZr”Ú HelperAddedr�)rKr’Ú config_helperrPrPrQrbôs  zFirewallDConfig._addHelpercCsPxJ|jD]@}|jj|jkr|jj|jkr|jj|jkr||_|j|jƒqWdS)N)rZr’r�r0rNrŒ)rKr’rhrPrPrQrŠÿs  zFirewallDConfig._updateHelpercCs@x:|jD]0}|j|kr|j|jƒ|jƒ|jj|ƒ~qWdS)N)rZr’r›r�rmrq)rKr’rhrPrPrQr‰s     zFirewallDConfig.removeHelpercCs¦|jjƒr¢|dkr tjdƒdStjƒ}t||ƒ}|jjd|ƒrDdSt||ƒ}|jjd|ƒr`dSt |ƒ}|jjd|ƒrzdSt ||ƒ}|jjd|ƒr–dSt t j dƒ‚dS)Nz&Lockdown not possible, sender not set.ÚcontextÚuidÚuserÚcommandzlockdown is enabled)rZlockdown_enabledrrxrIZ SystemBusrZ access_checkrrrrrZ ACCESS_DENIED)rKÚsenderZbusr¨r©rªr«rPrPrQÚ accessChecks$     zFirewallDConfig.accessCheckcCsF|dkrtjjd|ƒ‚|jjƒj|ƒ}|dkrH|dkr>tj}tj|ƒS|dkrr|dkr`tj}nt |ƒ}tj |ƒS|dkrš|dkr�tj rŒdnd}tj|ƒS|dkrÂ|dkr¸tj r´dnd}tj|ƒS|dk�rð|dk�rætj �râdnd}tj|ƒS|dk�r|dk�rtj�rdnd}tj|ƒS|dk�rL|dk�rBtj�r>dnd}tj|ƒS|dk�rp|dk�rftj}tj|ƒS|d k�r”|dk�rŠtj}tj|ƒS|d k�r¸|dk�r®tj}tj|ƒS|d k�ræ|dk�rÜtj�rØdnd}tj|ƒS|d k�r|dk�r tj�rdnd}tj|ƒS|d k�rB|dk�r8tj�r4dnd}tj|ƒSdS)NÚ DefaultZoner%r!r"r$r#r&r'r(r)r*r+r,zDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not existÚyesÚno) r®r%r!r"r$r#r&r'r(r)r*r+r,)rIÚ exceptionsÚ DBusExceptionrÚget_firewalld_confÚgetZ FALLBACK_ZONEÚStringZFALLBACK_MINIMAL_MARKÚintÚInt32ZFALLBACK_CLEANUP_ON_EXITZ FALLBACK_CLEANUP_MODULES_ON_EXITZFALLBACK_LOCKDOWNZFALLBACK_IPV6_RPFILTERZFALLBACK_INDIVIDUAL_CALLSZFALLBACK_LOG_DENIEDZFALLBACK_AUTOMATIC_HELPERSZFALLBACK_FIREWALL_BACKENDZFALLBACK_FLUSH_ALL_ON_RELOADZFALLBACK_RFC3964_IPV4ZFALLBACK_ALLOW_ZONE_DRIFTING)rKÚpropÚvaluerPrPrQÚ _get_property+s|                              zFirewallDConfig._get_propertycCsT|dkrtj|j|ƒƒS|dkr0tj|j|ƒƒS|dkrHtj|j|ƒƒS|dkr`tj|j|ƒƒS|dkrxtj|j|ƒƒS|dkr�tj|j|ƒƒS|dkr¨tj|j|ƒƒS|dkrÀtj|j|ƒƒS|d krØtj|j|ƒƒS|d k�ròtj|j|ƒƒS|d k�r tj|j|ƒƒS|d k�r&tj|j|ƒƒS|d k�r@tj|j|ƒƒStjjd|ƒ‚dS)Nr®r%r!r"r$r#r&r'r(r)r*r+r,zDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not exist)rIrµrºr·r±r²)rKr¸rPrPrQÚ_get_dbus_propertyos:    z"FirewallDConfig._get_dbus_propertyZssÚv)Ú in_signatureÚ out_signatureNcCsxt|tƒ}t|tƒ}tjd||ƒ|tjjkr8|j|ƒS|tjjtjj gkr^tj j d|ƒ‚ntj j d|ƒ‚|j|ƒS)Nzconfig.Get('%s', '%s')zDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not existzJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist) rÚstrrrvrrIrJr»ÚDBUS_INTERFACE_CONFIG_DIRECTÚDBUS_INTERFACE_CONFIG_POLICIESr±r²)rKÚinterface_nameÚ property_namer¬rPrPrQÚGet�s      zFirewallDConfig.GetÚsza{sv}c Csxt|tƒ}tjd|ƒi}|tjjkrDxBdD]}|j|ƒ||<q,Wn&|tjjtjj gkrZntj j d|ƒ‚tj |dd�S)Nzconfig.GetAll('%s')r®r%r!r"r$r#r&r'r(r)r*r+r,zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not existZsv)Ú signature) r®r%r!r"r$r#r&r'r(r)r*r+r,) rr¿rrvrrIrJrºrÀrÁr±r²Z Dictionary)rKrÂr¬ÚretÚxrPrPrQru§s"    zFirewallDConfig.GetAllZssv)r½c CsÔt|tƒ}t|tƒ}t|ƒ}tjd|||ƒ|j|ƒ|tjjk�r˜|dk�rz|dkrv|jƒdkrvt t j d||fƒ‚|dkrœ|tj krœt t j d||fƒ‚|dkrÂ|tj krÂt t j d||fƒ‚|d k�rî|jƒdk�rît t j d||fƒ‚|d k�r|jƒdk�rt t j d||fƒ‚|d k�rF|jƒdk�rFt t j d||fƒ‚|jjƒj||ƒ|jjƒjƒ|j|||igƒn|dk�r†ntjjd|ƒ‚n8|tjjtjjgk�rÀtjjd|ƒ‚ntjjd|ƒ‚dS)Nzconfig.Set('%s', '%s', '%s')r!r$r"r#r&r'r)r*r+r,r¯r°ÚtrueÚfalsez '%s' for %sr%r(zDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not existzJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist) 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()rr¿rrvr­rrIrJÚlowerrrZ INVALID_VALUEZLOG_DENIED_VALUESZFIREWALL_BACKEND_VALUESr³ÚsetÚwriter|r±r²rÀrÁ)rKrÂrÃZ new_valuer¬rPrPrQÚSetÀsz                 zFirewallDConfig.Setzsa{sv}as)rÆcCs.t|tƒ}t|ƒ}t|ƒ}tjd|||ƒdS)Nz*config.PropertiesChanged('%s', '%s', '%s'))rr¿rrv)rKrÂZchanged_propertiesZinvalidated_propertiesrPrPrQr|s  z!FirewallDConfig.PropertiesChanged)r¾cs4tjdƒtt|ƒj|j|jjƒƒ}t||t j j ƒS)Nzconfig.Introspect()) rZdebug2r-rÚ Introspectr0r/Zget_busrrrIrJ)rKr¬Údata)rOrPrQrÏs   zFirewallDConfig.IntrospectcCstjdƒ|jjƒjjƒS)Nz&config.policies.getLockdownWhitelist())rrvrÚ get_policiesÚlockdown_whitelistÚ export_config)rKr¬rPrPrQÚgetLockdownWhitelists z$FirewallDConfig.getLockdownWhitelistcCs@tjdƒt|ƒ}|jjƒjj|ƒ|jjƒjjƒ|jƒdS)Nz)config.policies.setLockdownWhitelist(...)) rrvrrrÑrÒÚ import_configrÍr‹)rKr�r¬rPrPrQÚsetLockdownWhitelist&s  z$FirewallDConfig.setLockdownWhitelistcCstjdƒdS)Nz*config.policies.LockdownWhitelistUpdated())rrv)rKrPrPrQr‹0sz(FirewallDConfig.LockdownWhitelistUpdatedcCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz1config.policies.addLockdownWhitelistCommand('%s')r) rrrvr­rzrÔrrÚALREADY_ENABLEDr”rÖ)rKr«r¬r�rPrPrQÚaddLockdownWhitelistCommand7s     z+FirewallDConfig.addLockdownWhitelistCommandcCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz4config.policies.removeLockdownWhitelistCommand('%s')r) rrrvr­rzrÔrrÚ NOT_ENABLEDrqrÖ)rKr«r¬r�rPrPrQÚremoveLockdownWhitelistCommandDs    z.FirewallDConfig.removeLockdownWhitelistCommandÚbcCs$t|ƒ}tjd|ƒ||jƒdkS)Nz3config.policies.queryLockdownWhitelistCommand('%s')r)rrrvrÔ)rKr«r¬rPrPrQÚqueryLockdownWhitelistCommandRsz-FirewallDConfig.queryLockdownWhitelistCommandÚascCstjdƒ|jƒdS)Nz.config.policies.getLockdownWhitelistCommands()r)rrvrÔ)rKr¬rPrPrQÚgetLockdownWhitelistCommands[s z,FirewallDConfig.getLockdownWhitelistCommandscCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz1config.policies.addLockdownWhitelistContext('%s')r) rrrvr­rzrÔrrr×r”rÖ)rKr¨r¬r�rPrPrQÚaddLockdownWhitelistContextds     z+FirewallDConfig.addLockdownWhitelistContextcCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz4config.policies.removeLockdownWhitelistContext('%s')r) rrrvr­rzrÔrrrÙrqrÖ)rKr¨r¬r�rPrPrQÚremoveLockdownWhitelistContextqs    z.FirewallDConfig.removeLockdownWhitelistContextcCs$t|ƒ}tjd|ƒ||jƒdkS)Nz3config.policies.queryLockdownWhitelistContext('%s')r)rrrvrÔ)rKr¨r¬rPrPrQÚqueryLockdownWhitelistContextsz-FirewallDConfig.queryLockdownWhitelistContextcCstjdƒ|jƒdS)Nz.config.policies.getLockdownWhitelistContexts()r)rrvrÔ)rKr¬rPrPrQÚgetLockdownWhitelistContextsˆs z,FirewallDConfig.getLockdownWhitelistContextscCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz.config.policies.addLockdownWhitelistUser('%s')é) rrrvr­rzrÔrrr×r”rÖ)rKrªr¬r�rPrPrQÚaddLockdownWhitelistUser‘s     z(FirewallDConfig.addLockdownWhitelistUsercCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz1config.policies.removeLockdownWhitelistUser('%s')rã) rrrvr­rzrÔrrrÙrqrÖ)rKrªr¬r�rPrPrQÚremoveLockdownWhitelistUseržs     z+FirewallDConfig.removeLockdownWhitelistUsercCs$t|ƒ}tjd|ƒ||jƒdkS)Nz0config.policies.queryLockdownWhitelistUser('%s')rã)rrrvrÔ)rKrªr¬rPrPrQÚqueryLockdownWhitelistUser«s z*FirewallDConfig.queryLockdownWhitelistUsercCstjdƒ|jƒdS)Nz+config.policies.getLockdownWhitelistUsers()rã)rrvrÔ)rKr¬rPrPrQÚgetLockdownWhitelistUsers³s z)FirewallDConfig.getLockdownWhitelistUsersÚicCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz+config.policies.addLockdownWhitelistUid(%d)é) rrrvr­rzrÔrrr×r”rÖ)rKr©r¬r�rPrPrQÚaddLockdownWhitelistUid¼s     z'FirewallDConfig.addLockdownWhitelistUidcCs^t|ƒ}tjd|ƒ|j|ƒt|jƒƒ}||dkrBttj|ƒ‚|dj |ƒ|j |ƒdS)Nz.config.policies.removeLockdownWhitelistUid(%d)ré) rrrvr­rzrÔrrrÙrqrÖ)rKr©r¬r�rPrPrQÚremoveLockdownWhitelistUidÉs     z*FirewallDConfig.removeLockdownWhitelistUidcCs$t|ƒ}tjd|ƒ||jƒdkS)Nz-config.policies.queryLockdownWhitelistUid(%d)ré)rrrvrÔ)rKr©r¬rPrPrQÚqueryLockdownWhitelistUidÖs z)FirewallDConfig.queryLockdownWhitelistUidZaicCstjdƒ|jƒdS)Nz*config.policies.getLockdownWhitelistUids()ré)rrvrÔ)rKr¬rPrPrQÚgetLockdownWhitelistUidsÞs z(FirewallDConfig.getLockdownWhitelistUidsZaocCstjdƒ|jS)z"list ipsets objects paths zconfig.listIPSets())rrvrR)rKr¬rPrPrQÚ listIPSetsés zFirewallDConfig.listIPSetscCs4tjdƒg}x|jD]}|j|jjƒqWt|ƒS)zget ipset names zconfig.getIPSetNames())rrvrRr”r’r�rC)rKr¬rRr’rPrPrQÚ getIPSetNamesñs   zFirewallDConfig.getIPSetNamesÚocCsFt|tƒ}tjd|ƒx|jD]}|jj|kr|SqWttj |ƒ‚dS)z-object path of ipset with given name zconfig.getIPSetByName('%s')N) rr¿rrvrRr’r�rrZ INVALID_IPSET)rKrdr¬r’rPrPrQÚgetIPSetByNameüs     zFirewallDConfig.getIPSetByNamecCsDt|tƒ}t|ƒ}tjd|ƒ|j|ƒ|jj||ƒ}|j|ƒ}|S)z/add ipset with given name and settings zconfig.addIPSet('%s'))rr¿rrvr­rZ new_ipsetr^)rKrdr�r¬r’r¥rPrPrQÚaddIPSet s    zFirewallDConfig.addIPSetcCst|tƒ}tjd|ƒdS)Nzconfig.IPSetAdded('%s'))rr¿rrv)rKrdrPrPrQr¤s zFirewallDConfig.IPSetAddedcCstjdƒ|jS)z%list icmptypes objects paths zconfig.listIcmpTypes())rrvrT)rKr¬rPrPrQÚ listIcmpTypes s zFirewallDConfig.listIcmpTypescCs4tjdƒg}x|jD]}|j|jjƒqWt|ƒS)zget icmptype names zconfig.getIcmpTypeNames())rrvrTr”r’r�rC)rKr¬rTr’rPrPrQÚgetIcmpTypeNames(s   z FirewallDConfig.getIcmpTypeNamescCsFt|tƒ}tjd|ƒx|jD]}|jj|kr|SqWttj |ƒ‚dS)z0object path of icmptype with given name zconfig.getIcmpTypeByName('%s')N) rr¿rrvrTr’r�rrZINVALID_ICMPTYPE)rKrer¬r’rPrPrQÚgetIcmpTypeByName3s     z!FirewallDConfig.getIcmpTypeByNamecCsDt|tƒ}t|ƒ}tjd|ƒ|j|ƒ|jj||ƒ}|j|ƒ}|S)z2add icmptype with given name and settings zconfig.addIcmpType('%s'))rr¿rrvr­rZ new_icmptyper_)rKrer�r¬r’r–rPrPrQÚ addIcmpType@s    zFirewallDConfig.addIcmpTypecCstjd|ƒdS)Nzconfig.IcmpTypeAdded('%s'))rrv)rKrerPrPrQr•OszFirewallDConfig.IcmpTypeAddedcCstjdƒ|jS)z$list services objects paths zconfig.listServices())rrvrV)rKr¬rPrPrQÚ listServicesVs zFirewallDConfig.listServicescCs4tjdƒg}x|jD]}|j|jjƒqWt|ƒS)zget service names zconfig.getServiceNames())rrvrVr”r’r�rC)rKr¬rVr’rPrPrQÚgetServiceNames^s   zFirewallDConfig.getServiceNamescCsFt|tƒ}tjd|ƒx|jD]}|jj|kr|SqWttj |ƒ‚dS)z/object path of service with given name zconfig.getServiceByName('%s')N) rr¿rrvrVr’r�rrZINVALID_SERVICE)rKrfr¬r’rPrPrQÚgetServiceByNameis     z FirewallDConfig.getServiceByNamezs(sssa(ss)asa{ss}asa(ss))cCsDt|tƒ}t|ƒ}tjd|ƒ|j|ƒ|jj||ƒ}|j|ƒ}|S)z1add service with given name and settings zconfig.addService('%s'))rr¿rrvr­rZ new_servicer`)rKrfr�r¬r’rŸrPrPrQÚ addServicevs    zFirewallDConfig.addServicezsa{sv}cCsDt|tƒ}t|ƒ}tjd|ƒ|j|ƒ|jj||ƒ}|j|ƒ}|S)z1add service with given name and settings zconfig.addService2('%s'))rr¿rrvr­rZnew_service_dictr`)rKrfr�r¬r’rŸrPrPrQÚ addService2…s    zFirewallDConfig.addService2cCstjd|ƒdS)Nzconfig.ServiceAdded('%s'))rrv)rKrfrPrPrQrž”szFirewallDConfig.ServiceAddedcCstjdƒ|jS)z!list zones objects paths zconfig.listZones())rrvrX)rKr¬rPrPrQÚ listZones›s zFirewallDConfig.listZonescCs4tjdƒg}x|jD]}|j|jjƒqWt|ƒS)zget zone names zconfig.getZoneNames())rrvrXr”r’r�rC)rKr¬rXr’rPrPrQÚ getZoneNames£s   zFirewallDConfig.getZoneNamescCsFt|tƒ}tjd|ƒx|jD]}|jj|kr|SqWttj |ƒ‚dS)z,object path of zone with given name zconfig.getZoneByName('%s')N) rr¿rrvrXr’r�rrZ INVALID_ZONE)rKrgr¬r’rPrPrQÚ getZoneByName®s     zFirewallDConfig.getZoneByNamecCszt|tƒ}tjd|ƒg}x(|jD]}||jjkr"|j|jjƒq"Wt |ƒdkrjdj |ƒd|t |ƒfS|rv|dSdS)z4name of zone the given interface belongs to zconfig.getZoneOfInterface('%s')rú zE (ERROR: interface '%s' is in %s zone XML files, can be only in one)rrs) rr¿rrvrXr’Z interfacesr”r�rkÚjoin)rKZifacer¬rÇr’rPrPrQÚgetZoneOfInterface»s     z"FirewallDConfig.getZoneOfInterfacecCszt|tƒ}tjd|ƒg}x(|jD]}||jjkr"|j|jjƒq"Wt |ƒdkrjdj |ƒd|t |ƒfS|rv|dSdS)z1name of zone the given source belongs to zconfig.getZoneOfSource('%s')rrÿzB (ERROR: source '%s' is in %s zone XML files, can be only in one)rrs) rr¿rrvrXr’Zsourcesr”r�rkr)rKÚsourcer¬rÇr’rPrPrQÚgetZoneOfSourceÏs     zFirewallDConfig.getZoneOfSourcez's(sssbsasa(ss)asba(ssss)asasasasa(ss)b)cCsht|tƒ}t|ƒ}tjd|ƒ|j|ƒ|ddkrLt|ƒ}t|d<t|ƒ}|jj ||ƒ}|j |ƒ}|S)z.add zone with given name and settings zconfig.addZone('%s')éÚdefault) rr¿rrvr­rzrÚtuplerZnew_zonera)rKrgr�r¬Z _settingsr’r¡rPrPrQÚaddZoneãs     zFirewallDConfig.addZonecCs`t|tƒ}t|ƒ}tjd|ƒ|j|ƒd|krD|ddkrDt|d<|jj||ƒ}|j|ƒ}|S)z.add zone with given name and settings zconfig.addZone('%s')Útargetr) rr¿rrvr­rrZ new_zone_dictra)rKrgr�r¬r’r¡rPrPrQÚaddZone2÷s    zFirewallDConfig.addZone2cCstjd|ƒdS)Nzconfig.ZoneAdded('%s'))rrv)rKrgrPrPrQr szFirewallDConfig.ZoneAddedcCstjdƒ|jS)z$list policies objects paths zconfig.listPolicies())rrvr\)rKr¬rPrPrQÚ listPoliciess zFirewallDConfig.listPoliciescCs4tjdƒg}x|jD]}|j|jjƒqWt|ƒS)zget policy names zconfig.getPolicyNames())rrvr\r”r’r�rC)rKr¬Zpoliciesr’rPrPrQÚgetPolicyNamess   zFirewallDConfig.getPolicyNamescCsFt|tƒ}tjd|ƒx|jD]}|jj|kr|SqWttj |ƒ‚dS)z.object path of policy with given name zconfig.getPolicyByName('%s')N) rr¿rrvr\r’r�rrZINVALID_POLICY)rKrir¬r’rPrPrQÚgetPolicyByName"s     zFirewallDConfig.getPolicyByNamecCsDt|tƒ}t|ƒ}tjd|ƒ|j|ƒ|jj||ƒ}|j|ƒ}|S)z0add policy with given name and settings zconfig.addPolicy('%s'))rr¿rrvr­rZnew_policy_object_dictrc)rKrir�r¬r’r£rPrPrQÚ addPolicy/s    zFirewallDConfig.addPolicycCstjd|ƒdS)Nzconfig.PolicyAdded('%s'))rrv)rKrirPrPrQr¢>szFirewallDConfig.PolicyAddedcCstjdƒ|jS)z#list helpers objects paths zconfig.listHelpers())rrvrZ)rKr¬rPrPrQÚ listHelpersGs zFirewallDConfig.listHelperscCs4tjdƒg}x|jD]}|j|jjƒqWt|ƒS)zget helper names zconfig.getHelperNames())rrvrZr”r’r�rC)rKr¬rZr’rPrPrQÚgetHelperNamesOs   zFirewallDConfig.getHelperNamescCsFt|tƒ}tjd|ƒx|jD]}|jj|kr|SqWttj |ƒ‚dS)z.object path of helper with given name zconfig.getHelperByName('%s')N) rr¿rrvrZr’r�rrZINVALID_HELPER)rKrhr¬r’rPrPrQÚgetHelperByNameZs     zFirewallDConfig.getHelperByNamecCsDt|tƒ}t|ƒ}tjd|ƒ|j|ƒ|jj||ƒ}|j|ƒ}|S)z0add helper with given name and settings zconfig.addHelper('%s'))rr¿rrvr­rZ new_helperrb)rKrhr�r¬r’r§rPrPrQÚ addHelpergs    zFirewallDConfig.addHelpercCst|tƒ}tjd|ƒdS)Nzconfig.HelperAdded('%s'))rr¿rrv)rKrhrPrPrQr¦vs zFirewallDConfig.HelperAddedcCstjdƒ|jjƒjƒS)Nzconfig.direct.getSettings())rrvrÚ get_directrÓ)rKr¬rPrPrQr˜s zFirewallDConfig.getSettingscCs<tjdƒt|ƒ}|jjƒj|ƒ|jjƒjƒ|jƒdS)Nzconfig.direct.update())rrvrrrrÕrÍrŒ)rKr�r¬rPrPrQrr‡s  zFirewallDConfig.updatecCstjdƒdS)Nzconfig.direct.Updated())rrv)rKrPrPrQrŒ’szFirewallDConfig.UpdatedZssscCsŽt|ƒ}t|ƒ}t|ƒ}tjd|||fƒ|j|ƒt|||fƒ}t|jƒƒ}||dkrrttj d|||fƒ‚|dj |ƒ|j |ƒdS)Nz(config.direct.addChain('%s', '%s', '%s')rz chain '%s' already is in '%s:%s') rrrvr­rrzr˜rrr×r”rr)rKÚipvÚtableÚchainr¬Úidxr�rPrPrQÚaddChain™s   zFirewallDConfig.addChaincCsŽt|ƒ}t|ƒ}t|ƒ}tjd|||fƒ|j|ƒt|||fƒ}t|jƒƒ}||dkrrttj d|||fƒ‚|dj |ƒ|j |ƒdS)Nz+config.direct.removeChain('%s', '%s', '%s')rzchain '%s' is not in '%s:%s') rrrvr­rrzr˜rrrÙrqrr)rKrrrr¬rr�rPrPrQÚ removeChain¬s    zFirewallDConfig.removeChaincCsJt|ƒ}t|ƒ}t|ƒ}tjd|||fƒt|||fƒ}||jƒdkS)Nz*config.direct.queryChain('%s', '%s', '%s')r)rrrvrr˜)rKrrrr¬rrPrPrQÚ queryChain¿szFirewallDConfig.queryChaincCsft|ƒ}t|ƒ}tjd||fƒg}x:|jƒdD]*}|d|kr4|d|kr4|j|dƒq4W|S)Nz#config.direct.getChains('%s', '%s')rrrã)rrrvr˜r”)rKrrr¬rÇrrPrPrQÚ getChainsËszFirewallDConfig.getChainsrsza(sss)cCstjdƒ|jƒdS)Nzconfig.direct.getAllChains()r)rrvr˜)rKr¬rPrPrQÚ getAllChainsØs zFirewallDConfig.getAllChainsZsssiasc Cs®t|ƒ}t|ƒ}t|ƒ}t|ƒ}t|ƒ}tjd||||dj|ƒfƒ|j|ƒ|||||f}t|jƒƒ}||dkrŽttj d||||fƒ‚|dj |ƒ|j t |ƒƒdS)Nz1config.direct.addRule('%s', '%s', '%s', %d, '%s')z','rz"rule '%s' already is in '%s:%s:%s') rrrvrr­rzr˜rrr×r”rrr) rKrrrÚpriorityrLr¬rr�rPrPrQÚaddRuleás    zFirewallDConfig.addRulec Cs®t|ƒ}t|ƒ}t|ƒ}t|ƒ}t|ƒ}tjd||||dj|ƒfƒ|j|ƒ|||||f}t|jƒƒ}||dkrŽttj d||||fƒ‚|dj |ƒ|j t |ƒƒdS)Nz4config.direct.removeRule('%s', '%s', '%s', %d, '%s')z','rzrule '%s' is not in '%s:%s:%s') rrrvrr­rzr˜rrrÙrqrrr) rKrrrrrLr¬rr�rPrPrQÚ removeRuleös    zFirewallDConfig.removeRulecCsdt|ƒ}t|ƒ}t|ƒ}t|ƒ}t|ƒ}tjd||||dj|ƒfƒ|||||f}||jƒdkS)Nz3config.direct.queryRule('%s', '%s', '%s', %d, '%s')z','r)rrrvrr˜)rKrrrrrLr¬rrPrPrQÚ queryRule szFirewallDConfig.queryRulecCsœt|ƒ}t|ƒ}t|ƒ}tjd|||fƒ|j|ƒt|jƒƒ}xF|ddd…D]2}|||f|d|d|dfkrT|dj|ƒqTW|jt|ƒƒdS)Nz+config.direct.removeRules('%s', '%s', '%s')rrrã) rrrvr­rzr˜rqrrr)rKrrrr¬r�ZrulerPrPrQÚ removeRuless   zFirewallDConfig.removeRulesza(ias)cCs„t|ƒ}t|ƒ}t|ƒ}tjd|||fƒg}xN|jƒdD]>}|d|kr>|d|kr>|d|kr>|j|d|dfƒq>W|S)Nz(config.direct.getRules('%s', '%s', '%s')rrrãrér)rrrvr˜r”)rKrrrr¬rÇrrPrPrQÚgetRules)s$zFirewallDConfig.getRulesz a(sssias)cCstjdƒ|jƒdS)Nzconfig.direct.getAllRules()r)rrvr˜)rKr¬rPrPrQÚ getAllRules8s zFirewallDConfig.getAllRulesZsascCs‚t|ƒ}t|ƒ}tjd|dj|ƒfƒ|j|ƒ||f}t|jƒƒ}||dkrfttj d||fƒ‚|dj |ƒ|j |ƒdS)Nz(config.direct.addPassthrough('%s', '%s')z','rãzpassthrough '%s', '%s') rrrvrr­rzr˜rrr×r”rr)rKrrLr¬rr�rPrPrQÚaddPassthroughAs   zFirewallDConfig.addPassthroughcCs‚t|ƒ}t|ƒ}tjd|dj|ƒfƒ|j|ƒ||f}t|jƒƒ}||dkrfttj d||fƒ‚|dj |ƒ|j |ƒdS)Nz+config.direct.removePassthrough('%s', '%s')z','rãzpassthrough '%s', '%s') rrrvrr­rzr˜rrrÙrqrr)rKrrLr¬rr�rPrPrQÚremovePassthroughSs   z!FirewallDConfig.removePassthroughcCs@t|ƒ}t|ƒ}tjd|dj|ƒfƒ||f}||jƒdkS)Nz*config.direct.queryPassthrough('%s', '%s')z','rã)rrrvrr˜)rKrrLr¬rrPrPrQÚqueryPassthroughds z FirewallDConfig.queryPassthroughZaascCsNt|ƒ}tjd|ƒg}x.|jƒdD]}|d|kr(|j|dƒq(W|S)Nz#config.direct.getPassthroughs('%s')rãrr)rrrvr˜r”)rKrr¬rÇrrPrPrQÚgetPassthroughsos zFirewallDConfig.getPassthroughsza(sas)cCstjdƒ|jƒdS)Nz"config.direct.getAllPassthroughs()rã)rrvr˜)rKr¬rPrPrQÚgetAllPassthroughs{s z"FirewallDConfig.getAllPassthroughs)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)…Ú__name__Ú __module__Ú __qualname__Ú__doc__Z persistentrrIZPK_ACTION_CONFIGZdefault_polkit_auth_requiredrr.r1rjror2r_r€rr`r‚r�rar„rƒrcrŽr�r^rˆr‡rbrŠr‰rr­rºr»r ZPROPERTIES_IFACErÄruÚslipZpolkitZ require_authrÎrfÚsignalr|ZPK_ACTION_INFOZINTROSPECTABLE_IFACErÏrÁrZDBUS_SIGNATURErÔrÖr‹rØrÚrÜrÞrßràrárârärårærçrêrërìrírJrîrïrñrròr¤rórôrõrrör•r÷rørùrúrûržrürýrþrrrr r r r r r r¢rrrrrr¦rÀrr˜rrrŒrrrrrrrrr r!r"r#r$r%r&r'Ú __classcell__rPrP)rOrQr>sv.            D ! D                                     r):Z gi.repositoryrÚsysÚmodulesrArIZ dbus.serviceZ slip.dbusr,Zslip.dbus.serviceZfirewallrZfirewall.core.baserZfirewall.core.watcherrZfirewall.core.loggerrZfirewall.server.decoratorsrrr Zfirewall.server.config_icmptyper Zfirewall.server.config_servicer Zfirewall.server.config_zoner Zfirewall.server.config_policyr Zfirewall.server.config_ipsetrZfirewall.server.config_helperrZfirewall.core.io.icmptyperZfirewall.core.io.ipsetrZfirewall.core.io.helperrZ#firewall.core.io.lockdown_whitelistrZfirewall.core.io.directrZfirewall.dbus_utilsrrrrrrrrZfirewall.errorsrrfZObjectrrPrPrPrQÚs6                 $