3 YÉjbÀã@sVdgZddlmZmZddlZeejd<ddlZddlZddlZddl Z ddl Z ddl m Z ddlmZddlmZddlmZdd lmZdd lmZmZmZmZdd lmZdd lmZmZm Z m!Z!m"Z"m#Z#m$Z$dd l%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.m/Z/m0Z0ddl1m2Z2ddl m3Z3ddl4m5Z5Gdd„de jj6j7ƒZ8dS)Ú FirewallDé)ÚGLibÚGObjectNZgobject)Úconfig)ÚFirewall)Ú Rich_Rule)Úlog)ÚFirewallClientZoneSettings)Údbus_handle_exceptionsÚdbus_service_methodÚhandle_exceptionsÚFirewallDBusException)ÚFirewallDConfig)Údbus_to_pythonÚcommand_of_senderÚcontext_of_senderÚ uid_of_senderÚ user_of_uidÚ%dbus_introspection_prepare_propertiesÚ!dbus_introspection_add_properties)Ú check_config)ÚIPSet)ÚIcmpType)ÚHelper)Únm_get_bus_nameÚnm_get_connection_of_interfaceÚnm_set_zone_of_connection)Úifcfg_set_zone_of_interface)Úerrors)Ú FirewallErrorcs”"eZdZdZdZejjZe ‡fdd„ƒZ dd„Z e dd„ƒZ e d d „ƒZ ed d „ƒZed d„ƒZedd„ƒZedd„ƒZedd„ƒZeejddd�e�d­dd„ƒƒZeejddd�e�d®dd„ƒƒZejjjejjƒeejdd �e�d¯d!d"„ƒƒƒZejjejd#d$�d%d&„ƒZejjjejjƒeej dd'�e�d°‡fd(d)„ ƒƒƒZ!ejjjejjƒeejj"d*d*d�e�d±d+d,„ƒƒƒZ#ejjjejjƒeejj"d*d*d�e�d²d-d.„ƒƒƒZ$ejjejj"ƒed/d0„ƒƒZ%ejjjejjƒeejj"d*d*d�e�d³d1d2„ƒƒƒZ&ejjjejjƒeejj"d*d*d�e�d´d3d4„ƒƒƒZ'ejjjejj(ƒeejj)d*d*d�e�dµd5d6„ƒƒƒZ*ejjjejj(ƒeejj)d*d*d�e�d¶d7d8„ƒƒƒZ+ejjjejj,ƒeejj)d*d9d�e�d·d:d;„ƒƒƒZ-ejjejj)d*d$�edd?„ƒƒZ/ejjjejj(ƒeejj)dd*d�e�d¸d@dA„ƒƒƒZ0ejjjejj(ƒeejj)dd*d�e�d¹dBdC„ƒƒƒZ1ejjjejj,ƒeejj)dd9d�e�dºdDdE„ƒƒƒZ2ejjjejj,ƒeejj)d*dFd�e�d»dGdH„ƒƒƒZ3ejjejj)dd$�edIdJ„ƒƒZ4ejjejj)dd$�edKdL„ƒƒZ5ejjjejj(ƒeejj)dMd*d�e�d¼dNdO„ƒƒƒZ6ejjjejj(ƒeejj)dMd*d�e�d½dPdQ„ƒƒƒZ7ejjjejj,ƒeejj)dMd9d�e�d¾dRdS„ƒƒƒZ8ejjjejj,ƒeejj)d*dTd�e�d¿dUdV„ƒƒƒZ9ejjejj)dMd$�edWdX„ƒƒZ:ejjejj)dMd$�edYdZ„ƒƒZ;ejjjejj(ƒeejj)dd*d�e�dÀd[d\„ƒƒƒZejjjejj,ƒeejj)d*dFd�e�dÃdadb„ƒƒƒZ?ejjejj)dd$�edcdd„ƒƒZ@ejjejj)dd$�ededf„ƒƒZAejjjejj(ƒeejj)dd*d�e�dÄdgdh„ƒƒƒZBejjjejj(ƒeejj)dd*d�e�dÅdidj„ƒƒƒZCejjjejj,ƒeejj)dd9d�e�dÆdkdl„ƒƒƒZDejjjejj,ƒeejj)d*dFd�e�dÇdmdn„ƒƒƒZEejjejj)dd$�edodp„ƒƒZFejjejj)dd$�edqdr„ƒƒZGejjjejjƒeejj"d*d*d�e�dÈdsdt„ƒƒƒZHejjjejjƒeejj"d*d*d�e�dÉdudv„ƒƒƒZIejjjejjƒeejj"d*d9d�e�dÊdwdx„ƒƒƒZJejjejj"d*d$�edydz„ƒƒZKejjejj"d*d$�ed{d|„ƒƒZLejjjejjMƒeejj"dd}d�e�dËd~d„ƒƒƒZNejjjejjMƒeejjOddd�e�dÌd€d�„ƒƒƒZPejjjejjMƒeejjOd‚d �e�dÍdƒd„„ƒƒƒZQejjejjOd‚d$�ed…d†„ƒƒZRejjjejjMƒeejjSddd�e�dÎd‡dˆ„ƒƒƒZTejjjejjMƒeejjSd‚d �e�dÏd‰dŠ„ƒƒƒZUejjejjSd‚d$�ed‹dŒ„ƒƒZVejjjejjƒeejj"d*dFd�e�dÐd�dŽ„ƒƒƒZWejjjejjMƒeejj"dd�d�e�dÑd�d‘„ƒƒƒZXejjjejjMƒeejj"ddd�e�dÒd’d“„ƒƒƒZYejjjejjƒeejj"d*dFd�e�dÓd”d•„ƒƒƒZZejjjejjMƒeejj"de[j\d�e�dÔd–d—„ƒƒƒZ]ejjjejjMƒeejj"d*dd�e�dÕd˜d™„ƒƒƒZ^ejjjejjƒeejj"dd*d�e�dÖdšd›„ƒƒƒZ_ejjejj"dd$�edœd�„ƒƒZ`ejjjejjMƒeejj"d*dd�e�d×dždŸ„ƒƒƒZaejjjejjƒeejj"dd*d�e�dØd d¡„ƒƒƒZbejjejj"dd$�ed¢d£„ƒƒZcejjjejjƒeejj"d*dd�e�dÙd¤d¥„ƒƒƒZdejjjejjƒeejj"dd*d�e�dÚd¦d§„ƒƒƒZeejjejj"dd$�ed¨d©„ƒƒZfejjjejjƒeejjSd*dFd�e�dÛdªd«„ƒƒƒZgejjjejjƒeejjSd*d¬d�e�dÜd­d®„ƒƒƒZhejjjejjƒeejjOd*dFd�e�dÝd¯d°„ƒƒƒZiejjjejjƒeejjOd*d¬d�e�dÞd±d²„ƒƒƒZjejjjejjƒeejjOddd�e�dßd³d´„ƒƒƒZkejjjejjƒeejjOddd�e�dàdµd¶„ƒƒƒZlejjjejjMƒeejjOdd9d�e�dád·d¸„ƒƒƒZmejjjejjƒeejjOddd�e�dâd¹dº„ƒƒƒZnejjjejjƒeejjOddd�e�dãd»d¼„ƒƒƒZoejjjejjƒeejjOddd�e�däd½d¾„ƒƒƒZpejjjejjƒeejjOddd�e�dåd¿dÀ„ƒƒƒZqejjjejjMƒeejjOdd9d�e�dædÁd„ƒƒƒZrejjjejjMƒeejjOddFd�e�dçdÃdÄ„ƒƒƒZsejjejjOdd$�edÅdÆ„ƒƒZtejjejjOdd$�edÇdÈ„ƒƒZuejjejjOdd$�edÉdÊ„ƒƒZvejjejjOdd$�edËdÌ„ƒƒZwejjjejjƒeejjOddd�e�dèdÍd΄ƒƒƒZxejjjejjƒeejjOddd�e�dédÏdЄƒƒƒZyejjjejjƒeejjOddd�e�dêdÑdÒ„ƒƒƒZzejjjejjMƒeejjOdd9d�e�dëdÓdÔ„ƒƒƒZ{ejjjejjMƒeejjOddFd�e�dìdÕdÖ„ƒƒƒZ|ejjejjOdd$�ed×dØ„ƒƒZ}ejjejjOdd$�edÙdÚ„ƒƒZ~ejjejjOdd$�edÛdÜ„ƒƒZedÝdÞ„ƒZ€ejjjejjƒeejjOdßdd�e�dídàdᄃƒƒZ�ejjjejjƒeejjOddd�e�dîdâd㄃ƒƒZ‚ejjjejjMƒeejjOdd9d�e�dïdäd儃ƒƒZƒejjjejjMƒeejjOddFd�e�dðdæd焃ƒƒZ„ejjejjOdßd$�edèd鄃ƒZ…ejjejjOdd$�edêd넃ƒZ†edìd턃Z‡ejjjejjƒeejjOdßdd�e�dñdîdƒƒZˆejjjejjƒeejjOddd�e�dòdðdñ„ƒƒƒZ‰ejjjejjMƒeejjOdd9d�e�dódòd󄃃ƒZŠejjjejjMƒeejjOddFd�e�dôdôdõ„ƒƒƒZ‹ejjejjOdßd$�edöd÷„ƒƒZŒejjejjOdd$�edødù„ƒƒZ�edúdû„ƒZŽejjjejjƒeejjOdüdd�e�dõdýdþ„ƒƒƒZ�ejjjejjƒeejjOdÿdd�e�dö�d�d„ƒƒƒZ�ejjjejjMƒeejjOdÿd9d�e�d÷�d�d„ƒƒƒZ‘ejjjejjMƒeejjOd�dd�e�dø�d�d„ƒƒƒZ’ejjejjOdüd$�e�dù�d�d „ƒƒZ“ejjejjOdÿd$�e�d �d „ƒƒZ”e�d �d „ƒZ•ejjjejjƒeejjOdßdd�e�dú�d�d„ƒƒƒZ–ejjjejjƒeejjOddd�e�dû�d�d„ƒƒƒZ—ejjjejjMƒeejjOdd9d�e�dü�d�d„ƒƒƒZ˜ejjjejjMƒeejjOddFd�e�dý�d�d„ƒƒƒZ™ejjejjOdßd$�e�dþ�d�d„ƒƒZšejjejjOdd$�e�d�d„ƒƒZ›e�d�d„ƒZœejjjejjƒeejjOdüdd�e�dÿ�d�d„ƒƒƒZ�ejjjejjƒeejjOdÿdd�e�d�d�d„ƒƒƒZžejjjejjMƒeejjOdÿd9d�e�d�d �d!„ƒƒƒZŸejjjejjMƒeejjOd�dd�e�d�d"�d#„ƒƒƒZ ejjejjOdüd$�e�d�d$�d%„ƒƒZ¡ejjejjOdÿd$�e�d&�d'„ƒƒZ¢e�d(�d)„ƒZ£ejjjejjƒeejjO�d*dd�e�d�d+�d,„ƒƒƒZ¤ejjjejjƒeejjOddd�e�d�d-�d.„ƒƒƒZ¥ejjjejjMƒeejjOdd9d�e�d�d/�d0„ƒƒƒZ¦ejjejjO�d*d$�e�d�d1�d2„ƒƒZ§ejjejjOdd$�e�d3�d4„ƒƒZ¨e�d5�d6„ƒZ©ejjjejjƒeejjO�d7dd�e�d�d8�d9„ƒƒƒZªejjjejjƒeejjO�d:dd�e�d �d;�d<„ƒƒƒZ«ejjjejjMƒeejjO�d:d9d�e�d �d=�d>„ƒƒƒZ¬ejjjejjMƒeejjOd�dd�e�d �d?�d@„ƒƒƒZ­ejjejjO�d7d$�e�d �dA�dB„ƒƒZ®ejjejjO�d:d$�e�dC�dD„ƒƒZ¯e�dE�dF„ƒZ°ejjjejjƒeejjOdßdd�e�d �dG�dH„ƒƒƒZ±ejjjejjƒeejjOddd�e�d�dI�dJ„ƒƒƒZ²ejjjejjMƒeejjOdd9d�e�d�dK�dL„ƒƒƒZ³ejjjejjMƒeejjOddFd�e�d�dM�dN„ƒƒƒZ´ejjejjOdßd$�e�d�dO�dP„ƒƒZµejjejjOdd$�e�dQ�dR„ƒƒZ¶ejjjejjƒeejjOddd�e�d�dS�dT„ƒƒƒZ·ejjjejjƒeejjOddd�e�d�dU�dV„ƒƒƒZ¸ejjjejjMƒeejjOdd9d�e�d�dW�dX„ƒƒƒZ¹ejjejjOdd$�e�dY�dZ„ƒƒZºejjejjOdd$�e�d[�d\„ƒƒZ»ejjjejj¼ƒeejj½dÿd*d�e�d�d]�d^„ƒƒƒZ¾ejjjejj¼ƒeejj½dÿd*d�e�d�d_�d`„ƒƒƒZ¿ejjjejjÀƒeejj½dÿd9d�e�d�da�db„ƒƒƒZÁejjjejjÀƒeejj½ddFd�e�d�dc�dd„ƒƒƒZÂejjjejjÀƒeejj½d*�ded�e�d�df�dg„ƒƒƒZÃejjejj½dÿd$�e�dh�di„ƒƒZÄejjejj½dÿd$�e�dj�dk„ƒƒZÅejjjejj¼ƒeejj½�dld*d�e�d�dm�dn„ƒƒƒZÆejjjejj¼ƒeejj½�dld*d�e�d�do�dp„ƒƒƒZÇejjjejj¼ƒeejj½dÿd*d�e�d�dq�dr„ƒƒƒZÈejjjejjÀƒeejj½�dld9d�e�d�ds�dt„ƒƒƒZÉejjjejjÀƒeejj½dÿ�dud�e�d�dv�dw„ƒƒƒZÊejjjejjÀƒeejj½d*�dxd�e�d�dy�dz„ƒƒƒZËejjejj½�dld$�e�d{�d|„ƒƒZÌejjejj½�dld$�e�d}�d~„ƒƒZÍejjjejj¼ƒeejj½�ddd�e�d �d€�d�„ƒƒƒZÎejjjejj¼ƒeejj½�dd*d�e�d!�d‚�dƒ„ƒƒƒZÏejjjejj¼ƒeejj½�dd*d�e�d"�d„�d…„ƒƒƒZÐejjjejjÀƒeejj½�dd9d�e�d#�d†�d‡„ƒƒƒZÑejjjejjÀƒeejj½d*�dˆd�e�d$�d‰�dŠ„ƒƒƒZÒejjjejj¼ƒeejj½d*d*d�e�d%�d‹�dŒ„ƒƒƒZÓejjjejjÀƒeejj½d�dd�e�d&�d��dŽ„ƒƒƒZÔejjejj½�dd$�e�d��d�„ƒƒZÕejjejj½�dd$�e�d‘�d’„ƒƒZÖejjjejj׃eejj"d*d*d�e�d'�d“�d”„ƒƒƒZØejjjejjƒeejjÙdd9d�e�d(�d•�d–„ƒƒƒZÚejjjejjƒeejjÙd*dFd�e�d)�d—�d˜„ƒƒƒZÛejjjejjMƒeejjÙdeÜj\d�e�d*�d™�dš„ƒƒƒZÝejjjejjƒeejjÙdd*d�e�d+�d›�dœ„ƒƒƒZÞejjjejjƒeejjÙdd*d�e�d,�d��dž„ƒƒƒZßejjjejjƒeejjÙdd9d�e�d-�dŸ�d „ƒƒƒZàejjjejjƒeejjÙddFd�e�d.�d¡�d¢„ƒƒƒZáejjjejjƒeejjÙ�dd �e�d/�d£�d¤„ƒƒƒZâejjejjÙdd$�e�d¥�d¦„ƒƒZãejjejjÙdd$�e�d§�d¨„ƒƒZäejjjejjƒeejj"d*dFd�e�d0�d©�dª„ƒƒƒZåejjjejjMƒeejj"deæj\d�e�d1�d«�d¬„ƒƒƒZç‡ZèS(2rzFirewallD main classTcs`tt|ƒj||Žtƒ|_|d|_|d|_|jƒt|t j j ƒt |jj |jt j j ƒ|_ dS)Nré)ÚsuperrÚ__init__rÚfwÚbusnameÚpathÚstartrrÚdbusÚDBUS_INTERFACErZDBUS_PATH_CONFIG)ÚselfÚargsÚkwargs)Ú __class__©ú/usr/lib/python3.6/firewalld.pyr"Is   zFirewallD.__init__cCs |jƒdS)N)Ústop)r)r-r-r.Ú__del__TszFirewallD.__del__cCstjdƒi|_|jjƒS)Nzstart())rÚdebug1Ú _timeoutsr#r&)r)r-r-r.r&Ws zFirewallD.startcCstjdƒ|jjƒS)Nzstop())rr1r#r/)r)r-r-r.r/_s zFirewallD.stopcCs°|jjjƒr¬|dkr"tjdƒdStjƒ}t||ƒ}|jjjd|ƒrHdSt ||ƒ}|jjjd|ƒrfdSt |ƒ}|jjjd|ƒr‚dSt ||ƒ}|jjjd|ƒr dSt t jdƒ‚dS)Nz&Lockdown not possible, sender not set.ÚcontextÚuidÚuserÚcommandzlockdown is enabled)r#ÚpoliciesÚquery_lockdownrÚerrorr'Z SystemBusrZ access_checkrrrrrZ ACCESS_DENIED)r)ÚsenderZbusr3r4r5r6r-r-r.Ú accessCheckhs$     zFirewallD.accessCheckcCs&||jkri|j|<||j||<dS)N)r2)r)ÚzoneÚxÚtagr-r-r.Ú addTimeouts  zFirewallD.addTimeoutcCs<||jkr8||j|kr8tj|j||ƒ|j||=dS)N)r2rÚ source_remove)r)r<r=r-r-r.Ú removeTimeout…szFirewallD.removeTimeoutcCsTxD|jD]:}x&|j|D]}tj|j||ƒqW|j|jƒqW|jjƒdS)N)r2rr@Úclear)r)r<r=r-r-r.Úcleanup_timeouts‹s  zFirewallD.cleanup_timeoutscCsd|dkrtjtjƒS|dkr6tjdtjjtjjfƒS|dkrNtj|jjƒƒS|dkrhtj|jj dƒƒS|dkr€tj |jj dƒS|d krštj|jj d ƒƒS|d kr°tj|jj ƒS|d krÈtj |jj dƒS|d krÞtj|jjƒS|dk�rötj|jjƒS|dk�rtj |jjdƒS|dk�r$tjdƒS|dk�r:tjidƒS|dk�rPtjidƒStjjd|ƒ‚dS)NÚversionÚinterface_versionz%d.%dÚstateÚIPv4Úipv4Ú IPv4ICMPTypesÚsÚIPv6Úipv6Ú IPv6_rpfilterÚ IPv6ICMPTypesÚBRIDGErÚ IPSetTypesÚnf_conntrack_helper_settingFÚnf_conntrack_helpersÚsasÚnf_nat_helperszDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not exist)r'ÚStringrÚVERSIONZDBUS_INTERFACE_VERSIONZDBUS_INTERFACE_REVISIONr#Z get_stateZBooleanZis_ipv_enabledZArrayZipv4_supported_icmp_typesZipv6_rpfilter_enabledZipv6_supported_icmp_typesZebtables_enabledZ ipset_enabledZipset_supported_typesÚ DictionaryÚ exceptionsÚ DBusException)r)Zpropr-r-r.Ú _get_property–s@          zFirewallD._get_propertyZssÚv)Ú in_signatureÚ out_signatureNcCs~t|tƒ}t|tƒ}tjd||ƒ|tjjkr8|j|ƒS|tjjtjj tjj tjj gkrjtj j d|ƒ‚ntj j d|ƒ‚dS)NzGet('%s', '%s')zDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not existzJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist)rÚstrrr1rr'r(rZÚDBUS_INTERFACE_ZONEÚDBUS_INTERFACE_DIRECTÚDBUS_INTERFACE_POLICIESÚDBUS_INTERFACE_IPSETrXrY)r)Úinterface_nameÚ property_namer:r-r-r.ÚGetÆs      z FirewallD.GetrJza{sv}cCs„t|tƒ}tjd|ƒi}|tjjkrDxNdD]}|j|ƒ||<q,Wn2|tjjtjj tjj tjj gkrfntj j d|ƒ‚tj|dd�S)Nz GetAll('%s')rDrErFrGrKrMrOrrPrQrRrTrIrNzJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not existZsv)Ú signature)rDrErFrGrKrMrOrrPrQrRrTrIrN)rr^rr1rr'r(rZr_r`rarbrXrYrW)r)rcr:Úretr=r-r-r.ÚGetAllÝs&    zFirewallD.GetAllZssv)r\cCs´t|tƒ}t|tƒ}t|ƒ}tjd|||ƒ|j|ƒ|tjjkrn|dkr\tjj d|ƒ‚q°tjj d|ƒ‚nB|tjj tjj tjj tjj gkr tjj d|ƒ‚ntjj d|ƒ‚dS)NzSet('%s', '%s', '%s')rDrErFrGrKrMrOrrPrQrRrTrIrNzGorg.freedesktop.DBus.Error.PropertyReadOnly: Property '%s' is read-onlyzDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not existzJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist)rDrErFrGrKrMrOrrPrQrRrTrIrN)rr^rr1r;rr'r(rXrYr_r`rarb)r)rcrdZ new_valuer:r-r-r.ÚSetøs:         z FirewallD.Setzsa{sv}as)rfcCs.t|tƒ}t|ƒ}t|ƒ}tjd|||ƒdS)Nz#PropertiesChanged('%s', '%s', '%s'))rr^rr1)r)rcZchanged_propertiesZinvalidated_propertiesr-r-r.ÚPropertiesChangeds  zFirewallD.PropertiesChanged)r]cs4tjdƒtt|ƒj|j|jjƒƒ}t||t j j ƒS)Nz Introspect()) rZdebug2r!rÚ Introspectr%r$Zget_busrrr'r()r)r:Údata)r,r-r.rk&s   zFirewallD.IntrospectÚcCs*tjdƒ|jjƒ|jjƒ|jƒdS)z#Reload the firewall rules. zreload()N)rr1r#ÚreloadrÚReloaded)r)r:r-r-r.rn4s   zFirewallD.reloadcCs,tjdƒ|jjdƒ|jjƒ|jƒdS)z™Completely reload the firewall. Completely reload the firewall: Stops firewall, unloads modules and starts the firewall again. zcompleteReload()TN)rr1r#rnrro)r)r:r-r-r.ÚcompleteReloadCs   zFirewallD.completeReloadcCstjdƒdS)Nz Reloaded())rr1)r)r-r-r.roSszFirewallD.ReloadedcCstjdƒt|jƒdS)z&Check permanent configuration zcheckPermanentConfig()N)rr1rr#)r)r:r-r-r.ÚcheckPermanentConfigXs zFirewallD.checkPermanentConfigc CsÎtjdƒd}|jjƒ}xÂ|jjjƒD]²}|j|ƒ}yj||kr€|jj|ƒ}|j ƒ|krptjd|ƒ|j |ƒqœtjd|ƒntjd|ƒ|jj ||ƒWq&t k rÖ}ztj d||fƒd}WYdd}~Xq&Xq&W|jjƒ}xÈ|jjjƒD]¸}|j|ƒ}yn||k�rR|jj|ƒ}|j ƒ|k�rBtjd |ƒ|j |ƒntjd |ƒntjd |ƒ|jj||ƒWqôt k �rª}ztj d ||fƒd}WYdd}~XqôXqôW|jjƒ}xÊ|jjjƒD]º}yx|j|ƒ}||k�r&|jj|ƒ}|j ƒ|k�rtjd |ƒ|j |ƒntjd|ƒntjd|ƒ|jj||ƒWn:t k �r~}ztj d||fƒd}WYdd}~XnX�qÈW|jjƒ}tƒ}�x”|jjjƒD�]‚}|j|ƒ}t|ƒ} |dk �r~d} xH| j ƒD]<} |jjj!|| ƒ|k�rÖtjd|| fƒ| j"| ƒd} �qÖWxV| j ƒD]J} y,t#| ƒ} | �rNt$|| ƒ�rN| j"| ƒd} Wnt k �rfYnX�q W| �r~~| j%ƒ}x| j ƒD]} t&|| ƒ�qˆWyP||k�rÎ|jj'|ƒ}tjd|ƒ|j(|ƒntjd|ƒ|jj)||ƒWn:t k �r&}ztj d||fƒd}WYdd}~XnX�q¦W|jj*ƒ}xž|jj+j,ƒD]Ž}|j-|ƒ}yB||k�rx|jj.|ƒ}|j |ƒntjd|ƒ|jj/||ƒWn:t k �rÐ}ztj d||fƒd}WYdd}~XnX�qFW|jj0ƒ}xÊ|jj1j2ƒD]º}|j3|ƒ}yn||k�rN|jj4|ƒ}|j ƒ|k�r>tjd|ƒ|j |ƒntjd|ƒntjd|ƒ|jj5||ƒWn:t k �r¦}ztj d||fƒd}WYdd}~XnX�qðW|jj6j7ƒ|jj6j8ƒ|jj6j9ƒf}y6|jj ƒ|k�rútjdƒ|jj |ƒn tjdƒWn6t k �r<}ztj d|ƒd}WYdd}~XnX|jj:j;j<ƒ}y6|jj ƒ|k�rvtjdƒ|jj=|ƒn tjdƒWn6t k �r¸}ztj d |ƒd}WYdd}~XnX|�rÊt>t?j@ƒ‚dS)!z-Make runtime configuration permanent zcopyRuntimeToPermanent()FzCopying service '%s' settingsz$Service '%s' is identical, ignoring.zCreating service '%s'z/Runtime To Permanent failed on service '%s': %sTNzCopying icmptype '%s' settingsz%IcmpType '%s' is identical, ignoring.zCreating icmptype '%s'z0Runtime To Permanent failed on icmptype '%s': %szCopying ipset '%s' settingsz"IPSet '%s' is identical, ignoring.zCreating ipset '%s'z-Runtime To Permanent failed on ipset '%s': %szEZone '%s': interface binding for '%s' has been added by NM, ignoring.zCopying zone '%s' settingszCreating zone '%s'z,Runtime To Permanent failed on zone '%s': %szCreating policy '%s'z.Runtime To Permanent failed on policy '%s': %szCopying helper '%s' settingsz#Helper '%s' is identical, ignoring.zCreating helper '%s'z.Runtime To Permanent failed on helper '%s': %szCopying direct configurationz,Direct configuration is identical, ignoring.z7Runtime To Permanent failed on direct configuration: %szCopying policies configurationz.Policies configuration is identical, ignoring.z9Runtime To Permanent failed on policies configuration: %s)Arr1rZgetServiceNamesr#ÚserviceÚ get_servicesÚgetServiceSettingsZgetServiceByNameZ getSettingsÚupdateÚ addServiceÚ ExceptionÚwarningZgetIcmpTypeNamesÚicmptypeÚ get_icmptypesÚgetIcmpTypeSettingsZgetIcmpTypeByNameZ addIcmpTypeZ getIPSetNamesÚipsetÚ get_ipsetsÚgetIPSetSettingsZgetIPSetByNameZaddIPSetZ getZoneNamesrr<Ú get_zonesÚgetZoneSettings2r Ú getInterfacesZinterface_get_senderÚremoveInterfacerrZgetSettingsDictrZ getZoneByNameZupdate2ZaddZone2ZgetPolicyNamesÚpolicyÚ"get_policies_not_derived_from_zoneÚgetPolicySettingsZgetPolicyByNameZ addPolicyZgetHelperNamesÚhelperÚ get_helpersÚgetHelperSettingsZgetHelperByNameZ addHelperÚdirectÚget_all_chainsÚ get_all_rulesÚget_all_passthroughsr7Úlockdown_whitelistÚ export_configZsetLockdownWhitelistrrZRT_TO_PERM_FAILED) r)r:r9Z config_namesÚnameZconfZconf_objÚeZ nm_bus_nameÚsettingsZchangedÚ interfaceZ connectionr-r-r.ÚruntimeToPermanentds$                                               zFirewallD.runtimeToPermanentcCs,tjdƒ|j|ƒ|jjjƒ|jƒdS)z!Enable lockdown policies zpolicies.enableLockdown()N)rr1r;r#r7Zenable_lockdownÚLockdownEnabled)r)r:r-r-r.ÚenableLockdown2s   zFirewallD.enableLockdowncCs,tjdƒ|j|ƒ|jjjƒ|jƒdS)z"Disable lockdown policies zpolicies.disableLockdown()N)rr1r;r#r7Zdisable_lockdownÚLockdownDisabled)r)r:r-r-r.ÚdisableLockdown>s   zFirewallD.disableLockdownÚbcCstjdƒ|jjjƒS)z+Retuns True if lockdown is enabled zpolicies.queryLockdown())rr1r#r7r8)r)r:r-r-r.Ú queryLockdownJs zFirewallD.queryLockdowncCstjdƒdS)NzLockdownEnabled())rr1)r)r-r-r.r”UszFirewallD.LockdownEnabledcCstjdƒdS)NzLockdownDisabled())rr1)r)r-r-r.r–ZszFirewallD.LockdownDisabledcCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)zAdd lockdown command z*policies.addLockdownWhitelistCommand('%s')N) rr^rr1r;r#r7r�Z add_commandÚLockdownWhitelistCommandAdded)r)r6r:r-r-r.ÚaddLockdownWhitelistCommandcs   z%FirewallD.addLockdownWhitelistCommandcCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)z Remove lockdown command z-policies.removeLockdownWhitelistCommand('%s')N) rr^rr1r;r#r7r�Zremove_commandÚLockdownWhitelistCommandRemoved)r)r6r:r-r-r.ÚremoveLockdownWhitelistCommandps   z(FirewallD.removeLockdownWhitelistCommandcCs(t|tƒ}tjd|ƒ|jjjj|ƒS)zQuery lockdown command z,policies.queryLockdownWhitelistCommand('%s'))rr^rr1r#r7r�Z has_command)r)r6r:r-r-r.ÚqueryLockdownWhitelistCommand}s z'FirewallD.queryLockdownWhitelistCommandÚascCstjdƒ|jjjjƒS)zAdd lockdown command z'policies.getLockdownWhitelistCommands())rr1r#r7r�Z get_commands)r)r:r-r-r.ÚgetLockdownWhitelistCommands‰s z&FirewallD.getLockdownWhitelistCommandscCstjd|ƒdS)Nz#LockdownWhitelistCommandAdded('%s'))rr1)r)r6r-r-r.rš”sz'FirewallD.LockdownWhitelistCommandAddedcCstjd|ƒdS)Nz%LockdownWhitelistCommandRemoved('%s'))rr1)r)r6r-r-r.rœ™sz)FirewallD.LockdownWhitelistCommandRemovedÚicCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)zAdd lockdown uid z&policies.addLockdownWhitelistUid('%s')N) rÚintrr1r;r#r7r�Zadd_uidÚLockdownWhitelistUidAdded)r)r4r:r-r-r.ÚaddLockdownWhitelistUid s   z!FirewallD.addLockdownWhitelistUidcCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)zRemove lockdown uid z)policies.removeLockdownWhitelistUid('%s')N) rr¢rr1r;r#r7r�Z remove_uidÚLockdownWhitelistUidRemoved)r)r4r:r-r-r.ÚremoveLockdownWhitelistUid­s   z$FirewallD.removeLockdownWhitelistUidcCs(t|tƒ}tjd|ƒ|jjjj|ƒS)zQuery lockdown uid z(policies.queryLockdownWhitelistUid('%s'))rr¢rr1r#r7r�Zhas_uid)r)r4r:r-r-r.ÚqueryLockdownWhitelistUidºs z#FirewallD.queryLockdownWhitelistUidZaicCstjdƒ|jjjjƒS)zAdd lockdown uid z#policies.getLockdownWhitelistUids())rr1r#r7r�Zget_uids)r)r:r-r-r.ÚgetLockdownWhitelistUidsÆs z"FirewallD.getLockdownWhitelistUidscCstjd|ƒdS)NzLockdownWhitelistUidAdded(%d))rr1)r)r4r-r-r.r£Ñsz#FirewallD.LockdownWhitelistUidAddedcCstjd|ƒdS)NzLockdownWhitelistUidRemoved(%d))rr1)r)r4r-r-r.r¥Ösz%FirewallD.LockdownWhitelistUidRemovedcCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)zAdd lockdown user z'policies.addLockdownWhitelistUser('%s')N) rr^rr1r;r#r7r�Zadd_userÚLockdownWhitelistUserAdded)r)r5r:r-r-r.ÚaddLockdownWhitelistUserÝs   z"FirewallD.addLockdownWhitelistUsercCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)zRemove lockdown user z*policies.removeLockdownWhitelistUser('%s')N) rr^rr1r;r#r7r�Z remove_userÚLockdownWhitelistUserRemoved)r)r5r:r-r-r.ÚremoveLockdownWhitelistUserês   z%FirewallD.removeLockdownWhitelistUsercCs(t|tƒ}tjd|ƒ|jjjj|ƒS)zQuery lockdown user z)policies.queryLockdownWhitelistUser('%s'))rr^rr1r#r7r�Zhas_user)r)r5r:r-r-r.ÚqueryLockdownWhitelistUser÷s z$FirewallD.queryLockdownWhitelistUsercCstjdƒ|jjjjƒS)zAdd lockdown user z$policies.getLockdownWhitelistUsers())rr1r#r7r�Z get_users)r)r:r-r-r.ÚgetLockdownWhitelistUserss z#FirewallD.getLockdownWhitelistUserscCstjd|ƒdS)Nz LockdownWhitelistUserAdded('%s'))rr1)r)r5r-r-r.r©sz$FirewallD.LockdownWhitelistUserAddedcCstjd|ƒdS)Nz"LockdownWhitelistUserRemoved('%s'))rr1)r)r5r-r-r.r«sz&FirewallD.LockdownWhitelistUserRemovedcCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)zAdd lockdown context z*policies.addLockdownWhitelistContext('%s')N) rr^rr1r;r#r7r�Z add_contextÚLockdownWhitelistContextAdded)r)r3r:r-r-r.ÚaddLockdownWhitelistContexts   z%FirewallD.addLockdownWhitelistContextcCs@t|tƒ}tjd|ƒ|j|ƒ|jjjj|ƒ|j |ƒdS)z Remove lockdown context z-policies.removeLockdownWhitelistContext('%s')N) rr^rr1r;r#r7r�Zremove_contextÚLockdownWhitelistContextRemoved)r)r3r:r-r-r.ÚremoveLockdownWhitelistContext's   z(FirewallD.removeLockdownWhitelistContextcCs(t|tƒ}tjd|ƒ|jjjj|ƒS)zQuery lockdown context z,policies.queryLockdownWhitelistContext('%s'))rr^rr1r#r7r�Z has_context)r)r3r:r-r-r.ÚqueryLockdownWhitelistContext4s z'FirewallD.queryLockdownWhitelistContextcCstjdƒ|jjjjƒS)zAdd lockdown context z'policies.getLockdownWhitelistContexts())rr1r#r7r�Z get_contexts)r)r:r-r-r.ÚgetLockdownWhitelistContexts@s z&FirewallD.getLockdownWhitelistContextscCstjd|ƒdS)Nz#LockdownWhitelistContextAdded('%s'))rr1)r)r3r-r-r.r¯Ksz'FirewallD.LockdownWhitelistContextAddedcCstjd|ƒdS)Nz%LockdownWhitelistContextRemoved('%s'))rr1)r)r3r-r-r.r±Psz)FirewallD.LockdownWhitelistContextRemovedcCs*tjdƒ|j|ƒ|jjƒ|jƒdS)znEnable panic mode. All ingoing and outgoing connections and packets will be blocked. zenablePanicMode()N)rr1r;r#Zenable_panic_modeÚPanicModeEnabled)r)r:r-r-r.ÚenablePanicModeYs   zFirewallD.enablePanicModecCs*tjdƒ|j|ƒ|jjƒ|jƒdS)zˆDisable panic mode. Enables normal mode: Allowed ingoing and outgoing connections will not be blocked anymore zdisablePanicMode()N)rr1r;r#Zdisable_panic_modeÚPanicModeDisabled)r)r:r-r-r.ÚdisablePanicModegs   zFirewallD.disablePanicModecCstjdƒ|jjƒS)NzqueryPanicMode())rr1r#Zquery_panic_mode)r)r:r-r-r.ÚqueryPanicModevs zFirewallD.queryPanicModecCstjdƒdS)NzPanicModeEnabled())rr1)r)r-r-r.rµszFirewallD.PanicModeEnabledcCstjdƒdS)NzPanicModeDisabled())rr1)r)r-r-r.r·„szFirewallD.PanicModeDisabledz&(sssbsasa(ss)asba(ssss)asasasasa(ss)b)cCs$t|tƒ}tjd|ƒ|jjj|ƒS)NzgetZoneSettings(%s))rr^rr1r#r<Zget_config_with_settings)r)r<r:r-r-r.ÚgetZoneSettings�s  zFirewallD.getZoneSettingscCs$t|tƒ}tjd|ƒ|jjj|ƒS)NzgetZoneSettings2(%s))rr^rr1r#r<Úget_config_with_settings_dict)r)r<r:r-r-r.r€—s  zFirewallD.getZoneSettings2zsa{sv}cCsBt|tƒ}tjd|ƒ|j|ƒ|jjj|||ƒ|j||ƒdS)NzsetZoneSettings2(%s)) rr^rr1r;r#r<Úset_config_with_settings_dictÚ ZoneUpdated)r)r<r‘r:r-r-r.ÚsetZoneSettings2 s    zFirewallD.setZoneSettings2cCstjd||fƒdS)Nzzone.ZoneUpdated('%s', '%s'))rr1)r)r<r‘r-r-r.r½ªszFirewallD.ZoneUpdatedcCs$t|tƒ}tjd|ƒ|jjj|ƒS)Nzpolicy.getPolicySettings(%s))rr^rr1r#rƒr»)r)rƒr:r-r-r.r…¯s  zFirewallD.getPolicySettingscCsBt|tƒ}tjd|ƒ|j|ƒ|jjj|||ƒ|j||ƒdS)Nzpolicy.setPolicySettings(%s)) rr^rr1r;r#rƒr¼Ú PolicyUpdated)r)rƒr‘r:r-r-r.ÚsetPolicySettings¸s    zFirewallD.setPolicySettingscCstjd||fƒdS)Nz policy.PolicyUpdated('%s', '%s'))rr1)r)rƒr‘r-r-r.r¿ÂszFirewallD.PolicyUpdatedcCstjdƒ|jjjƒS)NzlistServices())rr1r#rrrs)r)r:r-r-r.Ú listServicesÇs zFirewallD.listServicesz(sssa(ss)asa{ss}asa(ss))cCs–t|tƒ}tjd|ƒ|jjj|ƒ}|jƒ}g}x\tdƒD]P}|j |d|krr|j t j t ||j |dƒƒƒq:|j ||j |dƒq:Wt|ƒS)NzgetServiceSettings(%s)ér)rr^rr1r#rrÚ get_serviceÚexport_config_dictÚrangeZIMPORT_EXPORT_STRUCTUREÚappendÚcopyÚdeepcopyÚgetattrÚtuple)r)rrr:ÚobjZ conf_dictZ conf_listr¡r-r-r.rtÒs  "zFirewallD.getServiceSettingscCs,t|tƒ}tjd|ƒ|jjj|ƒ}|jƒS)NzgetServiceSettings2(%s))rr^rr1r#rrrÃrÄ)r)rrr:rËr-r-r.ÚgetServiceSettings2æs  zFirewallD.getServiceSettings2cCstjdƒ|jjjƒS)NzlistIcmpTypes())rr1r#ryrz)r)r:r-r-r.Ú listIcmpTypesðs zFirewallD.listIcmpTypescCs(t|tƒ}tjd|ƒ|jjj|ƒjƒS)NzgetIcmpTypeSettings(%s))rr^rr1r#ryZ get_icmptyperŽ)r)ryr:r-r-r.r{ûs  zFirewallD.getIcmpTypeSettingscCstjdƒ|jjƒS)NzgetLogDenied())rr1r#Zget_log_denied)r)r:r-r-r.Ú getLogDenied s zFirewallD.getLogDeniedcCsXt|tƒ}tjd|ƒ|j|ƒ|jj|ƒ|j|ƒ|jjƒ|j jƒ|j ƒdS)NzsetLogDenied('%s')) rr^rr1r;r#Zset_log_deniedÚLogDeniedChangedrnrro)r)Úvaluer:r-r-r.Ú setLogDenieds      zFirewallD.setLogDeniedcCstjd|ƒdS)NzLogDeniedChanged('%s'))rr1)r)rÐr-r-r.rÏ"szFirewallD.LogDeniedChangedcCstjdƒdS)NzgetAutomaticHelpers()Úno)rr1)r)r:r-r-r.ÚgetAutomaticHelpers+s zFirewallD.getAutomaticHelperscCs&t|tƒ}tjd|ƒ|j|ƒdS)NzsetAutomaticHelpers('%s'))rr^rr1r;)r)rÐr:r-r-r.ÚsetAutomaticHelpers6s zFirewallD.setAutomaticHelperscCstjd|ƒdS)NzAutomaticHelpersChanged('%s'))rr1)r)rÐr-r-r.ÚAutomaticHelpersChangedBsz!FirewallD.AutomaticHelpersChangedcCstjdƒ|jjƒS)NzgetDefaultZone())rr1r#Zget_default_zone)r)r:r-r-r.ÚgetDefaultZoneKs zFirewallD.getDefaultZonecCs<t|tƒ}tjd|ƒ|j|ƒ|jj|ƒ|j|ƒdS)NzsetDefaultZone('%s'))rr^rr1r;r#Zset_default_zoneÚDefaultZoneChanged)r)r<r:r-r-r.ÚsetDefaultZoneTs    zFirewallD.setDefaultZonecCstjd|ƒdS)NzDefaultZoneChanged('%s'))rr1)r)r<r-r-r.r×`szFirewallD.DefaultZoneChangedcCstjdƒ|jjjƒS)Nzpolicy.getPolicies())rr1r#rƒr„)r)r:r-r-r.Ú getPoliciesks zFirewallD.getPoliciesz a{sa{sas}}cCs\tjdƒi}xH|jjjƒD]8}i||<|jjj|ƒ||d<|jjj|ƒ||d<qW|S)Nzpolicy.getActivePolicies()Z ingress_zonesZ egress_zones)rr1r#rƒZ)get_active_policies_not_derived_from_zoneZlist_ingress_zonesZlist_egress_zones)r)r:r7rƒr-r-r.ÚgetActivePoliciesss zFirewallD.getActivePoliciescCstjdƒ|jjjƒS)Nzzone.getZones())rr1r#r<r)r)r:r-r-r.ÚgetZones†s zFirewallD.getZonescCs�tjdƒi}x||jjjƒD]l}|jjj|ƒ}|jjj|ƒ}t|ƒt|ƒdkri||<t|ƒdkrp|||d<t|ƒdkr|||d<qW|S)Nzzone.getActiveZones()rÚ interfacesÚsources)rr1r#r<rÚlist_interfacesÚ list_sourcesÚlen)r)r:Zzonesr<rÜrÝr-r-r.ÚgetActiveZones�s    zFirewallD.getActiveZonescCs2t|tƒ}tjd|ƒ|jjj|ƒ}|r.|SdS)z¸Return the zone an interface belongs to. :Parameters: `interface` : str Name of the interface :Returns: str. The name of the zone. zzone.getZoneOfInterface('%s')rm)rr^rr1r#r<Zget_zone_of_interface)r)r’r:r<r-r-r.ÚgetZoneOfInterface£s zFirewallD.getZoneOfInterfacecCs2t|tƒ}tjd|ƒ|jjj|ƒ}|r.|SdS)Nzzone.getZoneOfSource('%s')rm)rr^rr1r#r<Zget_zone_of_source)r)Úsourcer:r<r-r-r.ÚgetZoneOfSource¶s  zFirewallD.getZoneOfSourcecCsdS)NFr-)r)r<r:r-r-r.Ú isImmutableÃszFirewallD.isImmutablecCsRt|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj|||ƒ}|j||ƒ|S)zPAdd an interface to a zone. If zone is empty, use default zone. zzone.addInterface('%s', '%s')) rr^rr1r;r#r<Z add_interfaceÚInterfaceAdded)r)r<r’r:Ú_zoner-r-r.Ú addInterfaceÏs    zFirewallD.addInterfacecCs"t|tƒ}t|tƒ}|j|||ƒS)z£Change a zone an interface is part of. If zone is empty, use default zone. This function is deprecated, use changeZoneOfInterface instead )rr^ÚchangeZoneOfInterface)r)r<r’r:r-r-r.Ú changeZoneàs  zFirewallD.changeZonecCsRt|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj|||ƒ}|j||ƒ|S)z[Change a zone an interface is part of. If zone is empty, use default zone. z&zone.changeZoneOfInterface('%s', '%s')) rr^rr1r;r#r<Zchange_zone_of_interfaceÚZoneOfInterfaceChanged)r)r<r’r:rçr-r-r.réîs    zFirewallD.changeZoneOfInterfacecCsPt|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj||ƒ}|j||ƒ|S)zkRemove interface from a zone. If zone is empty, remove from zone the interface belongs to. z zone.removeInterface('%s', '%s')) rr^rr1r;r#r<Zremove_interfaceÚInterfaceRemoved)r)r<r’r:rçr-r-r.r‚ÿs    zFirewallD.removeInterfacecCs6t|tƒ}t|tƒ}tjd||fƒ|jjj||ƒS)z^Return true if an interface is in a zone. If zone is empty, use default zone. zzone.queryInterface('%s', '%s'))rr^rr1r#r<Zquery_interface)r)r<r’r:r-r-r.ÚqueryInterfaces  zFirewallD.queryInterfacecCs&t|tƒ}tjd|ƒ|jjj|ƒS)z]Return the list of interfaces of a zone. If zone is empty, use default zone. zzone.getInterfaces('%s'))rr^rr1r#r<rÞ)r)r<r:r-r-r.r�s zFirewallD.getInterfacescCstjd||fƒdS)Nzzone.InterfaceAdded('%s', '%s'))rr1)r)r<r’r-r-r.ræ+szFirewallD.InterfaceAddedcCstjd||fƒdS)z, This signal is deprecated. zzone.ZoneChanged('%s', '%s')N)rr1)r)r<r’r-r-r.Ú ZoneChanged0szFirewallD.ZoneChangedcCs"tjd||fƒ|j||ƒdS)Nz'zone.ZoneOfInterfaceChanged('%s', '%s'))rr1rî)r)r<r’r-r-r.rë8s z FirewallD.ZoneOfInterfaceChangedcCstjd||fƒdS)Nz!zone.InterfaceRemoved('%s', '%s'))rr1)r)r<r’r-r-r.rì?szFirewallD.InterfaceRemovedcCsRt|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj|||ƒ}|j||ƒ|S)zLAdd a source to a zone. If zone is empty, use default zone. zzone.addSource('%s', '%s')) rr^rr1r;r#r<Z add_sourceÚ SourceAdded)r)r<rãr:rçr-r-r.Ú addSourceHs    zFirewallD.addSourcecCsRt|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj|||ƒ}|j||ƒ|S)zXChange a zone an source is part of. If zone is empty, use default zone. z#zone.changeZoneOfSource('%s', '%s')) rr^rr1r;r#r<Zchange_zone_of_sourceÚZoneOfSourceChanged)r)r<rãr:rçr-r-r.ÚchangeZoneOfSourceYs    zFirewallD.changeZoneOfSourcecCsPt|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj||ƒ}|j||ƒ|S)zeRemove source from a zone. If zone is empty, remove from zone the source belongs to. zzone.removeSource('%s', '%s')) rr^rr1r;r#r<Z remove_sourceÚ SourceRemoved)r)r<rãr:rçr-r-r.Ú removeSourcejs    zFirewallD.removeSourcecCs6t|tƒ}t|tƒ}tjd||fƒ|jjj||ƒS)z[Return true if an source is in a zone. If zone is empty, use default zone. zzone.querySource('%s', '%s'))rr^rr1r#r<Z query_source)r)r<rãr:r-r-r.Ú querySource{s  zFirewallD.querySourcecCs&t|tƒ}tjd|ƒ|jjj|ƒS)zZReturn the list of sources of a zone. If zone is empty, use default zone. zzone.getSources('%s'))rr^rr1r#r<rß)r)r<r:r-r-r.Ú getSourcesˆs zFirewallD.getSourcescCstjd||fƒdS)Nzzone.SourceAdded('%s', '%s'))rr1)r)r<rãr-r-r.rï–szFirewallD.SourceAddedcCstjd||fƒdS)Nz$zone.ZoneOfSourceChanged('%s', '%s'))rr1)r)r<rãr-r-r.rñ›szFirewallD.ZoneOfSourceChangedcCstjd||fƒdS)Nzzone.SourceRemoved('%s', '%s'))rr1)r)r<rãr-r-r.ró szFirewallD.SourceRemovedcCsHtjd||fƒ|j||=t|d�}|jjj||ƒ|j||ƒdS)Nz%zone.disableTimedRichRule('%s', '%s'))Úrule_str)rr1r2rr#r<Ú remove_ruleÚRichRuleRemoved)r)r<ÚrulerËr-r-r.ÚdisableTimedRichRule©s   zFirewallD.disableTimedRichRuleZssicCs†t|tƒ}t|tƒ}t|tƒ}tjd||fƒt|d�}|jjj|||ƒ}|dkrtt j ||j ||ƒ}|j |||ƒ|j |||ƒ|S)Nzzone.addRichRule('%s', '%s'))r÷r)rr^r¢rr1rr#r<Úadd_rulerÚtimeout_add_secondsrûr?Ú RichRuleAdded)r)r<rúÚtimeoutr:rËrçr>r-r-r.Ú addRichRule±s     zFirewallD.addRichRulecCs\t|tƒ}t|tƒ}tjd||fƒt|d�}|jjj||ƒ}|j||ƒ|j ||ƒ|S)Nzzone.removeRichRule('%s', '%s'))r÷) rr^rr1rr#r<rørArù)r)r<rúr:rËrçr-r-r.ÚremoveRichRuleÅs     zFirewallD.removeRichRulecCs@t|tƒ}t|tƒ}tjd||fƒt|d�}|jjj||ƒS)Nzzone.queryRichRule('%s', '%s'))r÷)rr^rr1rr#r<Ú query_rule)r)r<rúr:rËr-r-r.Ú queryRichRuleÓs    zFirewallD.queryRichRulecCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.getRichRules('%s'))rr^rr1r#r<Z list_rules)r)r<r:r-r-r.Ú getRichRulesÞs zFirewallD.getRichRulescCstjd|||fƒdS)Nz"zone.RichRuleAdded('%s', '%s', %d))rr1)r)r<rúrÿr-r-r.rþêszFirewallD.RichRuleAddedcCstjd||fƒdS)Nz zone.RichRuleRemoved('%s', '%s'))rr1)r)r<rúr-r-r.rùïszFirewallD.RichRuleRemovedcCs>tjd||fƒ|j||=|jjj||ƒ|j||ƒdS)Nz$zone.disableTimedService('%s', '%s'))rr1r2r#r<Úremove_serviceÚServiceRemoved)r)r<rrr-r-r.ÚdisableTimedServiceøs zFirewallD.disableTimedServicecCsŠt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒ|jjj||||ƒ}|dkrxt j ||j ||ƒ}|j |||ƒ|j |||ƒ|S)Nzzone.addService('%s', '%s', %d)r)rr^r¢rr1r;r#r<Z add_servicerrýrr?Ú ServiceAdded)r)r<rrrÿr:rçr>r-r-r.rvÿs     zFirewallD.addServicecCs\t|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj||ƒ}|j||ƒ|j ||ƒ|S)Nzzone.removeService('%s', '%s')) rr^rr1r;r#r<rrAr)r)r<rrr:rçr-r-r.Ú removeServices     zFirewallD.removeServicecCs6t|tƒ}t|tƒ}tjd||fƒ|jjj||ƒS)Nzzone.queryService('%s', '%s'))rr^rr1r#r<Z query_service)r)r<rrr:r-r-r.Ú queryService&s  zFirewallD.queryServicecCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.getServices('%s'))rr^rr1r#r<Z list_services)r)r<r:r-r-r.Ú getServices1s zFirewallD.getServicescCstjd|||fƒdS)Nz!zone.ServiceAdded('%s', '%s', %d))rr1)r)r<rrrÿr-r-r.r=szFirewallD.ServiceAddedcCstjd||fƒdS)Nzzone.ServiceRemoved('%s', '%s'))rr1)r)r<rrr-r-r.rCszFirewallD.ServiceRemovedcCsHtjd|||fƒ|j|||f=|jjj|||ƒ|j|||ƒdS)Nz'zone.disableTimedPort('%s', '%s', '%s'))rr1r2r#r<Ú remove_portÚ PortRemoved)r)r<ÚportÚprotocolr-r-r.ÚdisableTimedPortLs zFirewallD.disableTimedPortZsssicCsžt|tƒ}t|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒ|jjj|||||ƒ}|dkrŠt j ||j |||ƒ}|j |||f|ƒ|j ||||ƒ|S)Nzzone.addPort('%s', '%s', '%s')r)rr^r¢rr1r;r#r<Zadd_portrrýrr?Ú PortAdded)r)r<rrrÿr:rçr>r-r-r.ÚaddPortTs       zFirewallD.addPortZssscCspt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒ|jjj|||ƒ}|j|||fƒ|j |||ƒ|S)Nz!zone.removePort('%s', '%s', '%s')) rr^rr1r;r#r<r rAr )r)r<rrr:rçr-r-r.Ú removePortks    zFirewallD.removePortcCsDt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|jjj|||ƒS)Nz zone.queryPort('%s', '%s', '%s'))rr^rr1r#r<Z query_port)r)r<rrr:r-r-r.Ú queryPort}s    zFirewallD.queryPortZaascCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.getPorts('%s'))rr^rr1r#r<Z list_ports)r)r<r:r-r-r.ÚgetPorts‰s zFirewallD.getPortsrcCstjd||||fƒdS)Nz$zone.PortAdded('%s', '%s', '%s', %d))rr1)r)r<rrrÿr-r-r.r•szFirewallD.PortAddedcCstjd|||fƒdS)Nz"zone.PortRemoved('%s', '%s', '%s'))rr1)r)r<rrr-r-r.r ›szFirewallD.PortRemovedcCs>tjd||fƒ|j||=|jjj||ƒ|j||ƒdS)Nz%zone.disableTimedProtocol('%s', '%s'))rr1r2r#r<Úremove_protocolÚProtocolRemoved)r)r<rr-r-r.ÚdisableTimedProtocol¥s zFirewallD.disableTimedProtocolcCsˆt|tƒ}t|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj||||ƒ}|dkrvt j ||j ||ƒ}|j |||ƒ|j |||ƒ|S)Nzzone.enableProtocol('%s', '%s')r)rr^r¢rr1r;r#r<Z add_protocolrrýrr?Ú ProtocolAdded)r)r<rrÿr:rçr>r-r-r.Ú addProtocol¬s     zFirewallD.addProtocolcCs\t|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj||ƒ}|j||ƒ|j ||ƒ|S)Nzzone.removeProtocol('%s', '%s')) rr^rr1r;r#r<rrAr)r)r<rr:rçr-r-r.ÚremoveProtocolÁs     zFirewallD.removeProtocolcCs6t|tƒ}t|tƒ}tjd||fƒ|jjj||ƒS)Nzzone.queryProtocol('%s', '%s'))rr^rr1r#r<Zquery_protocol)r)r<rr:r-r-r.Ú queryProtocolÑs  zFirewallD.queryProtocolcCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.getProtocols('%s'))rr^rr1r#r<Zlist_protocols)r)r<r:r-r-r.Ú getProtocolsÜs zFirewallD.getProtocolscCstjd|||fƒdS)Nz"zone.ProtocolAdded('%s', '%s', %d))rr1)r)r<rrÿr-r-r.rèszFirewallD.ProtocolAddedcCstjd||fƒdS)Nz zone.ProtocolRemoved('%s', '%s'))rr1)r)r<rr-r-r.rîszFirewallD.ProtocolRemovedcCsJtjd|||fƒ|j|d||f=|jjj|||ƒ|j|||ƒdS)Nz-zone.disableTimedSourcePort('%s', '%s', '%s')Úsport)rr1r2r#r<Úremove_source_portÚSourcePortRemoved)r)r<rrr-r-r.ÚdisableTimedSourcePort÷s z FirewallD.disableTimedSourcePortcCs t|tƒ}t|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒ|jjj|||||ƒ}|dkrŒt j ||j |||ƒ}|j |d||f|ƒ|j ||||ƒ|S)Nz$zone.addSourcePort('%s', '%s', '%s')rr)rr^r¢rr1r;r#r<Zadd_source_portrrýr!r?ÚSourcePortAdded)r)r<rrrÿr:rçr>r-r-r.Ú addSourcePortÿs         zFirewallD.addSourcePortcCsrt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒ|jjj|||ƒ}|j|d||fƒ|j |||ƒ|S)Nz'zone.removeSourcePort('%s', '%s', '%s')r) rr^rr1r;r#r<rrAr )r)r<rrr:rçr-r-r.ÚremoveSourcePorts      zFirewallD.removeSourcePortcCsDt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|jjj|||ƒS)Nz&zone.querySourcePort('%s', '%s', '%s'))rr^rr1r#r<Zquery_source_port)r)r<rrr:r-r-r.ÚquerySourcePort)s      zFirewallD.querySourcePortcCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.getSourcePorts('%s'))rr^rr1r#r<Zlist_source_ports)r)r<r:r-r-r.ÚgetSourcePorts6s zFirewallD.getSourcePortscCstjd||||fƒdS)Nz*zone.SourcePortAdded('%s', '%s', '%s', %d))rr1)r)r<rrrÿr-r-r.r"BszFirewallD.SourcePortAddedcCstjd|||fƒdS)Nz(zone.SourcePortRemoved('%s', '%s', '%s'))rr1)r)r<rrr-r-r.r Hs zFirewallD.SourcePortRemovedcCs(|j|d=|jjj|ƒ|j|ƒdS)NÚ masquerade)r2r#r<Úremove_masqueradeÚMasqueradeRemoved)r)r<r-r-r.ÚdisableTimedMasqueradeRs z FirewallD.disableTimedMasqueradeZsicCstt|tƒ}t|tƒ}tjd|ƒ|j|ƒ|jjj|||ƒ}|dkrdt j ||j |ƒ}|j |d|ƒ|j ||ƒ|S)Nzzone.addMasquerade('%s')rr')rr^r¢rr1r;r#r<Zadd_masqueraderrýr*r?ÚMasqueradeAdded)r)r<rÿr:rçr>r-r-r.Ú addMasqueradeXs     zFirewallD.addMasqueradecCsJt|tƒ}tjd|ƒ|j|ƒ|jjj|ƒ}|j|dƒ|j |ƒ|S)Nzzone.removeMasquerade('%s')r') rr^rr1r;r#r<r(rAr))r)r<r:rçr-r-r.ÚremoveMasqueradels    zFirewallD.removeMasqueradecCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.queryMasquerade('%s'))rr^rr1r#r<Zquery_masquerade)r)r<r:r-r-r.ÚqueryMasquerade{s zFirewallD.queryMasqueradecCstjd||fƒdS)Nzzone.MasqueradeAdded('%s', %d))rr1)r)r<rÿr-r-r.r+…szFirewallD.MasqueradeAddedcCstjd|ƒdS)Nzzone.MasqueradeRemoved('%s'))rr1)r)r<r-r-r.r)ŠszFirewallD.MasqueradeRemovedcCs@|j|||||f=|jjj|||||ƒ|j|||||ƒdS)N)r2r#r<Úremove_forward_portÚForwardPortRemoved)r)r<rrÚtoportÚtoaddrr-r-r.Údisable_forward_port“szFirewallD.disable_forward_portZsssssic CsÆt|tƒ}t|tƒ}t|tƒ}t|tƒ}t|tƒ}t|tƒ}tjd|||||fƒ|j|ƒ|jjj|||||||ƒ}|dkr®t j ||j |||||ƒ} |j |||||f| ƒ|j ||||||ƒ|S)Nz1zone.addForwardPort('%s', '%s', '%s', '%s', '%s')r)rr^r¢rr1r;r#r<Zadd_forward_portrrýr3r?ÚForwardPortAdded) r)r<rrr1r2rÿr:rçr>r-r-r.ÚaddForwardPort™s&        zFirewallD.addForwardPortZssssscCs”t|tƒ}t|tƒ}t|tƒ}t|tƒ}t|tƒ}tjd|||||fƒ|j|ƒ|jjj|||||ƒ}|j|||||fƒ|j |||||ƒ|S)Nz4zone.removeForwardPort('%s', '%s', '%s', '%s', '%s')) rr^rr1r;r#r<r/rAr0)r)r<rrr1r2r:rçr-r-r.ÚremoveForwardPort¶s      zFirewallD.removeForwardPortcCs`t|tƒ}t|tƒ}t|tƒ}t|tƒ}t|tƒ}tjd|||||fƒ|jjj|||||ƒS)Nz3zone.queryForwardPort('%s', '%s', '%s', '%s', '%s'))rr^rr1r#r<Zquery_forward_port)r)r<rrr1r2r:r-r-r.ÚqueryForwardPortÌs     zFirewallD.queryForwardPortcCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.getForwardPorts('%s'))rr^rr1r#r<Zlist_forward_ports)r)r<r:r-r-r.ÚgetForwardPortsÝs zFirewallD.getForwardPortscCstjd||||||fƒdS)Nz7zone.ForwardPortAdded('%s', '%s', '%s', '%s', '%s', %d))rr1)r)r<rrr1r2rÿr-r-r.r4észFirewallD.ForwardPortAddedcCstjd|||||fƒdS)Nz5zone.ForwardPortRemoved('%s', '%s', '%s', '%s', '%s'))rr1)r)r<rrr1r2r-r-r.r0ðszFirewallD.ForwardPortRemovedcCs>tjd||fƒ|j||=|jjj||ƒ|j||ƒdS)Nz&zone.disableTimedIcmpBlock('%s', '%s'))rr1r2r#r<Úremove_icmp_blockÚIcmpBlockRemoved)r)r<Úicmpr:r-r-r.ÚdisableTimedIcmpBlockús zFirewallD.disableTimedIcmpBlockcCsŠt|tƒ}t|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj||||ƒ}|dkrxt j ||j |||ƒ}|j |||ƒ|j |||ƒ|S)Nz zone.enableIcmpBlock('%s', '%s')r)rr^r¢rr1r;r#r<Zadd_icmp_blockrrýr<r?ÚIcmpBlockAdded)r)r<r;rÿr:rçr>r-r-r.Ú addIcmpBlocks      zFirewallD.addIcmpBlockcCs\t|tƒ}t|tƒ}tjd||fƒ|j|ƒ|jjj||ƒ}|j||ƒ|j ||ƒ|S)Nz zone.removeIcmpBlock('%s', '%s')) rr^rr1r;r#r<r9rAr:)r)r<r;r:rçr-r-r.ÚremoveIcmpBlocks     zFirewallD.removeIcmpBlockcCs6t|tƒ}t|tƒ}tjd||fƒ|jjj||ƒS)Nzzone.queryIcmpBlock('%s', '%s'))rr^rr1r#r<Zquery_icmp_block)r)r<r;r:r-r-r.ÚqueryIcmpBlock&s  zFirewallD.queryIcmpBlockcCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nzzone.getIcmpBlocks('%s'))rr^rr1r#r<Zlist_icmp_blocks)r)r<r:r-r-r.Ú getIcmpBlocks1s zFirewallD.getIcmpBlockscCstjd|||fƒdS)Nz#zone.IcmpBlockAdded('%s', '%s', %d))rr1)r)r<r;rÿr-r-r.r==szFirewallD.IcmpBlockAddedcCstjd||fƒdS)Nz!zone.IcmpBlockRemoved('%s', '%s'))rr1)r)r<r;r-r-r.r:CszFirewallD.IcmpBlockRemovedcCs@t|tƒ}tjd|ƒ|j|ƒ|jjj||ƒ}|j|ƒ|S)Nz zone.addIcmpBlockInversion('%s')) rr^rr1r;r#r<Zadd_icmp_block_inversionÚIcmpBlockInversionAdded)r)r<r:rçr-r-r.ÚaddIcmpBlockInversionLs    zFirewallD.addIcmpBlockInversioncCs>t|tƒ}tjd|ƒ|j|ƒ|jjj|ƒ}|j|ƒ|S)Nz#zone.removeIcmpBlockInversion('%s')) rr^rr1r;r#r<Zremove_icmp_block_inversionÚIcmpBlockInversionRemoved)r)r<r:rçr-r-r.ÚremoveIcmpBlockInversionZs    z"FirewallD.removeIcmpBlockInversioncCs&t|tƒ}tjd|ƒ|jjj|ƒS)Nz"zone.queryIcmpBlockInversion('%s'))rr^rr1r#r<Zquery_icmp_block_inversion)r)r<r:r-r-r.ÚqueryIcmpBlockInversionhs z!FirewallD.queryIcmpBlockInversioncCstjd|ƒdS)Nz"zone.IcmpBlockInversionAdded('%s'))rr1)r)r<r-r-r.rBrsz!FirewallD.IcmpBlockInversionAddedcCstjd|ƒdS)Nz$zone.IcmpBlockInversionRemoved('%s'))rr1)r)r<r-r-r.rDwsz#FirewallD.IcmpBlockInversionRemovedcCs`t|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒ|jjj|||ƒ|j|||ƒdS)Nz!direct.addChain('%s', '%s', '%s')) rr^rr1r;r#r‰Z add_chainÚ ChainAdded)r)ÚipvÚtableÚchainr:r-r-r.ÚaddChain‚s    zFirewallD.addChaincCs`t|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒ|jjj|||ƒ|j|||ƒdS)Nz$direct.removeChain('%s', '%s', '%s')) rr^rr1r;r#r‰Z remove_chainÚ ChainRemoved)r)rHrIrJr:r-r-r.Ú removeChain�s    zFirewallD.removeChaincCsDt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|jjj|||ƒS)Nz#direct.queryChain('%s', '%s', '%s'))rr^rr1r#r‰Z query_chain)r)rHrIrJr:r-r-r.Ú queryChainžs    zFirewallD.queryChaincCs6t|tƒ}t|tƒ}tjd||fƒ|jjj||ƒS)Nzdirect.getChains('%s', '%s'))rr^rr1r#r‰Z get_chains)r)rHrIr:r-r-r.Ú getChainsªs  zFirewallD.getChainsza(sss)cCstjdƒ|jjjƒS)Nzdirect.getAllChains())rr1r#r‰rŠ)r)r:r-r-r.Ú getAllChainsµs zFirewallD.getAllChainscCstjd|||fƒdS)Nz#direct.ChainAdded('%s', '%s', '%s'))rr1)r)rHrIrJr-r-r.rG¾szFirewallD.ChainAddedcCstjd|||fƒdS)Nz%direct.ChainRemoved('%s', '%s', '%s'))rr1)r)rHrIrJr-r-r.rLÃs zFirewallD.ChainRemovedZsssiascCsŽt|tƒ}t|tƒ}t|tƒ}t|tƒ}tdd„|Dƒƒ}tjd||||dj|ƒfƒ|j|ƒ|jj j |||||ƒ|j |||||ƒdS)Ncss|]}t|tƒVqdS)N)rr^)Ú.0r¡r-r-r.ú ×sz$FirewallD.addRule..z*direct.addRule('%s', '%s', '%s', %d, '%s')z',') rr^r¢rÊrr1Újoinr;r#r‰rüÚ RuleAdded)r)rHrIrJÚpriorityr*r:r-r-r.ÚaddRuleÍs     zFirewallD.addRulecCsŽt|tƒ}t|tƒ}t|tƒ}t|tƒ}tdd„|Dƒƒ}tjd||||dj|ƒfƒ|j|ƒ|jj j |||||ƒ|j |||||ƒdS)Ncss|]}t|tƒVqdS)N)rr^)rQr¡r-r-r.rRèsz'FirewallD.removeRule..z-direct.removeRule('%s', '%s', '%s', %d, '%s')z',') rr^r¢rÊrr1rSr;r#r‰røÚ RuleRemoved)r)rHrIrJrUr*r:r-r-r.Ú removeRuleÞs     zFirewallD.removeRulecCsˆt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|j|ƒxF|jjj|||ƒD]0\}}|jjj|||||ƒ|j |||||ƒqPWdS)Nz$direct.removeRules('%s', '%s', '%s')) rr^rr1r;r#r‰Ú get_rulesrørW)r)rHrIrJr:rUr*r-r-r.Ú removeRulesïs    zFirewallD.removeRulescCsnt|tƒ}t|tƒ}t|tƒ}t|tƒ}tdd„|Dƒƒ}tjd||||dj|ƒfƒ|jjj |||||ƒS)Ncss|]}t|tƒVqdS)N)rr^)rQr¡r-r-r.rR sz&FirewallD.queryRule..z,direct.queryRule('%s', '%s', '%s', %d, '%s')z',') rr^r¢rÊrr1rSr#r‰r)r)rHrIrJrUr*r:r-r-r.Ú queryRuleþs    zFirewallD.queryRuleza(ias)cCsDt|tƒ}t|tƒ}t|tƒ}tjd|||fƒ|jjj|||ƒS)Nz!direct.getRules('%s', '%s', '%s'))rr^rr1r#r‰rY)r)rHrIrJr:r-r-r.ÚgetRules s    zFirewallD.getRulesz a(sssias)cCstjdƒ|jjjƒS)Nzdirect.getAllRules())rr1r#r‰r‹)r)r:r-r-r.Ú getAllRules s zFirewallD.getAllRulescCs"tjd||||dj|ƒfƒdS)Nz,direct.RuleAdded('%s', '%s', '%s', %d, '%s')z',')rr1rS)r)rHrIrJrUr*r-r-r.rT" szFirewallD.RuleAddedcCs"tjd||||dj|ƒfƒdS)Nz.direct.RuleRemoved('%s', '%s', '%s', %d, '%s')z',')rr1rS)r)rHrIrJrUr*r-r-r.rW( szFirewallD.RuleRemovedrScCsØt|tƒ}tdd„|Dƒƒ}tjd|dj|ƒfƒ|j|ƒy|jjj ||ƒSt k rÒ}zh|d krzt ddd d gƒ}n t d d gƒ}t|ƒ}|j t jkrÀtt |ƒ|@ƒd kr¸tj|ƒt|ƒ‚‚WYdd}~XnXdS) Ncss|]}t|tƒVqdS)N)rr^)rQr¡r-r-r.rR9 sz(FirewallD.passthrough..zdirect.passthrough('%s', '%s')z','rHrLz-Cz--checkz-Lz--listr)rHrL)rr^rÊrr1rSr;r#r‰Ú passthroughrÚsetÚcoderZCOMMAND_FAILEDràrxr )r)rHr*r:r9Z query_argsÚmsgr-r-r.r^2 s"      zFirewallD.passthroughcCs\t|ƒ}tdd„|Dƒƒ}tjd|dj|ƒfƒ|j|ƒ|jjj||ƒ|j ||ƒdS)Ncss|]}t|ƒVqdS)N)r)rQr¡r-r-r.rRT sz+FirewallD.addPassthrough..z!direct.addPassthrough('%s', '%s')z',') rrÊrr1rSr;r#r‰Zadd_passthroughÚPassthroughAdded)r)rHr*r:r-r-r.ÚaddPassthroughM s zFirewallD.addPassthroughcCs\t|ƒ}tdd„|Dƒƒ}tjd|dj|ƒfƒ|j|ƒ|jjj||ƒ|j ||ƒdS)Ncss|]}t|ƒVqdS)N)r)rQr¡r-r-r.rRb sz.FirewallD.removePassthrough..z$direct.removePassthrough('%s', '%s')z',') rrÊrr1rSr;r#r‰Zremove_passthroughÚPassthroughRemoved)r)rHr*r:r-r-r.ÚremovePassthrough[ s zFirewallD.removePassthroughcCsBt|ƒ}tdd„|Dƒƒ}tjd|dj|ƒfƒ|jjj||ƒS)Ncss|]}t|ƒVqdS)N)r)rQr¡r-r-r.rRp sz-FirewallD.queryPassthrough..z#direct.queryPassthrough('%s', '%s')z',')rrÊrr1rSr#r‰Zquery_passthrough)r)rHr*r:r-r-r.ÚqueryPassthroughi s zFirewallD.queryPassthroughza(sas)cCstjdƒ|jjjƒS)Nzdirect.getAllPassthroughs())rr1r#r‰rŒ)r)r:r-r-r.ÚgetAllPassthroughsu s zFirewallD.getAllPassthroughscCs.tjdƒxt|jƒƒD]}|j|ŽqWdS)Nzdirect.removeAllPassthroughs())rr1Úreversedrgre)r)r:r^r-r-r.ÚremoveAllPassthroughs~ s zFirewallD.removeAllPassthroughscCs"t|ƒ}tjd|ƒ|jjj|ƒS)Nzdirect.getPassthroughs('%s'))rrr1r#r‰Zget_passthroughs)r)rHr:r-r-r.ÚgetPassthroughs‰ s zFirewallD.getPassthroughscCstjd|dj|ƒfƒdS)Nz#direct.PassthroughAdded('%s', '%s')z',')rr1rS)r)rHr*r-r-r.rb“ szFirewallD.PassthroughAddedcCstjd|dj|ƒfƒdS)Nz%direct.PassthroughRemoved('%s', '%s')z',')rr1rS)r)rHr*r-r-r.rd™ szFirewallD.PassthroughRemovedcCsdS)zÈ PK_ACTION_ALL implies all other actions, i.e. once a subject is authorized for PK_ACTION_ALL it's also authorized for any other action. Use-case is GUI (RHBZ#994729). Nr-)r)r:r-r-r.Ú authorizeAll¡ s zFirewallD.authorizeAllcCs$t|ƒ}tjd|ƒ|jjj|ƒS)Nzipset.queryIPSet('%s'))rrr1r#r|Z query_ipset)r)r|r:r-r-r.Ú queryIPSet° szFirewallD.queryIPSetcCstjdƒ|jjjƒS)Nzipsets.getIPSets())rr1r#r|r})r)r:r-r-r.Ú getIPSetsº s zFirewallD.getIPSetscCs(t|tƒ}tjd|ƒ|jjj|ƒjƒS)NzgetIPSetSettings(%s))rr^rr1r#r|Z get_ipsetrŽ)r)r|r:r-r-r.r~à s  zFirewallD.getIPSetSettingscCsLt|ƒ}t|ƒ}tjd||fƒ|j|ƒ|jjj||ƒ|j||ƒdS)Nzipset.addEntry('%s', '%s'))rrr1r;r#r|Z add_entryÚ EntryAdded)r)r|Úentryr:r-r-r.ÚaddEntryÏ s  zFirewallD.addEntrycCsLt|ƒ}t|ƒ}tjd||fƒ|j|ƒ|jjj||ƒ|j||ƒdS)Nzipset.removeEntry('%s', '%s'))rrr1r;r#r|Z remove_entryÚ EntryRemoved)r)r|ror:r-r-r.Ú removeEntryÜ s  zFirewallD.removeEntrycCs2t|ƒ}t|ƒ}tjd||fƒ|jjj||ƒS)Nzipset.queryEntry('%s', '%s'))rrr1r#r|Z query_entry)r)r|ror:r-r-r.Ú queryEntryé szFirewallD.queryEntrycCs$t|ƒ}tjd|ƒ|jjj|ƒS)Nzipset.getEntries('%s'))rrr1r#r|Ú get_entries)r)r|r:r-r-r.Ú getEntriesô szFirewallD.getEntriescCs”t|ƒ}t|tƒ}tjd|dj|ƒƒ|jjj|ƒ}|jjj||ƒt |ƒ}t |ƒ}x||D]}|j ||ƒq^Wx||D]}|j ||ƒq|WdS)Nzipset.setEntries('%s', '[%s]')ú,) rÚlistrr1rSr#r|rtZ set_entriesr_rnrq)r)r|Zentriesr:Z old_entriesZold_entries_setZ entries_setror-r-r.Ú setEntriesþ s zFirewallD.setEntriescCs&t|ƒ}t|ƒ}tjd||fƒdS)Nzipset.EntryAdded('%s', '%s'))rrr1)r)r|ror-r-r.rn szFirewallD.EntryAddedcCs&t|ƒ}t|ƒ}tjd||fƒdS)Nzipset.EntryRemoved('%s', '%s'))rrr1)r)r|ror-r-r.rq szFirewallD.EntryRemovedcCstjdƒ|jjjƒS)Nzhelpers.getHelpers())rr1r#r†r‡)r)r:r-r-r.Ú getHelpers! s zFirewallD.getHelperscCs(t|tƒ}tjd|ƒ|jjj|ƒjƒS)NzgetHelperSettings(%s))rr^rr1r#r†Z get_helperrŽ)r)r†r:r-r-r.rˆ* s  zFirewallD.getHelperSettings)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)N)N)N)N)N)N)N)N)r)N)N)N)N)r)N)N)N)N)r)N)N)N)r)N)N)N)N)r)N)N)N)N)r)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 persistentrr'ZPK_ACTION_CONFIGZdefault_polkit_auth_requiredr r"r0r&r/r r;r?rArCrZr ZPROPERTIES_IFACErerhÚslipZpolkitZ require_authrirrÚsignalrjZPK_ACTION_INFOZINTROSPECTABLE_IFACErkr(rnrprorqr“ZPK_ACTION_POLICIESrar•r—ZPK_ACTION_POLICIES_INFOr™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·ZPK_ACTION_CONFIG_INFOrºr_r€r¾r½ZDBUS_INTERFACE_POLICYr…rÀr¿rÁrtrÌrÍrZDBUS_SIGNATUREr{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þrùrrvr r r rrrrrrrrr rrrrrrrr!r#r$r%r&r"r r*r,r-r.r+r)r3r5r6r7r8r4r0r<r>r?r@rAr=r:rCrErFrBrDZPK_ACTION_DIRECTr`rKrMZPK_ACTION_DIRECT_INFOrNrOrPrGrLrVrXrZr[r\r]rTrWr^rcrerfrgrirjrbrdZ PK_ACTION_ALLrkrbrlrmrr~rprrrsrurxrnrqryrrˆÚ __classcell__r-r-)r,r.rAsì      0 "         K                                                                                                                                                                           )9Ú__all__Z gi.repositoryrrÚsysÚmodulesrÇr'Z dbus.serviceZ slip.dbusr~Zslip.dbus.serviceZfirewallrZfirewall.core.fwrZfirewall.core.richrZfirewall.core.loggerrZfirewall.clientr Zfirewall.server.decoratorsr r r r Zfirewall.server.configrZfirewall.dbus_utilsrrrrrrrZfirewall.core.io.functionsrZfirewall.core.io.ipsetrZfirewall.core.io.icmptyperZfirewall.core.io.helperrZfirewall.core.fw_nmrrrZfirewall.core.fw_ifcfgrrZfirewall.errorsrrrZObjectrr-r-r-r.Ús2       $