a 7Irj%@sJdgZddlmZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd lmZmZdd lmZmZmZmZmZmZdd lmZdd lmZmZm Z m!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/m0Z0ddl1m2Z2ddlm3Z3ddl4m5Z5GdddeZ6dS) FirewallD)GLibN)config)Firewall) Rich_Rule)log)FirewallClientZoneSettings)FirewallDBusExceptionDbusServiceObject)dbus_handle_exceptionsdbus_service_methodhandle_exceptionsdbus_service_method_deprecateddbus_service_signal_deprecateddbus_polkit_require_auth)FirewallDConfig)dbus_to_pythoncommand_of_sendercontext_of_sender uid_of_sender user_of_uid%dbus_introspection_prepare_properties!dbus_introspection_add_properties!dbus_introspection_add_deprecated)check_on_disk_config)IPSet)IcmpType)Helper)nm_get_connection_of_interfacenm_set_zone_of_connection)ifcfg_set_zone_of_interface)errors) FirewallErrorcsV eZdZdZdZejjZe fddZ ddZ e ddZ e d d Z ed d Zed dZeejdddedddZeejdddedddZeejjeejddedddZejjejdddd Zeejjeejdd!edfd"d# Zeejjeejjd$d$dedd%d&Zeejjeejjd$d$dedd'd(Zejejjed)d*Z eejjeejjd$d$ddd+d,Z!eejjeejjd$d$dedd-d.Z"eejjeejjd$d$dedd/d0Z#eejj$eejj%d$d$dedd1d2Z&eejj$eejj%d$d$dedd3d4Z'eejj(eejj%d$d5dedd6d7Z)ejjejj%d$ded8d9Z*ejjejj%d$ded:d;Z+eejj$eejj%dd$deddd?Z-eejj(eejj%dd5dedd@dAZ.eejj(eejj%d$dBdeddCdDZ/ejjejj%ddedEdFZ0ejjejj%ddedGdHZ1eejj$eejj%dId$deddJdKZ2eejj$eejj%dId$deddLdMZ3eejj(eejj%dId5deddNdOZ4eejj(eejj%d$dPdeddQdRZ5ejjejj%dIdedSdTZ6ejjejj%dIdedUdVZ7eejj$eejj%dd$deddWdXZ8eejj$eejj%dd$deddYdZZ9eejj(eejj%dd5dedd[d\Z:eejj(eejj%d$dBdedd]d^Z;ejjejj%dded_d`Zeejj$eejj%dd$deddedfZ?eejj(eejj%dd5deddgdhZ@eejj(eejj%d$dBdeddidjZAejjejj%ddedkdlZBejjejj%ddedmdnZCeejjeejjd$d$deddodpZDeejjeejjd$d$deddqdrZEeejjeejjd$d5deddsdtZFejjejjd$dedudvZGejjejjd$dedwdxZHeejjIeejjddydeddzd{ZJeejjIeejjKdddedd|d}ZLeejjIeejjKd~dedddZMejjejjKd~deddZNddZOeejjIeejjPdddedddZQeejjIeejjPd~dedddZRejjejjPd~deddZSddZTeejjeejjd$dBdedddZUeejjIeejjdddedddZVeejjIeejjdddedddZWeejjeejjd$dBdedddZXeejjIeejjdeYjZdedddZ[eejjIeejjd$ddedddZ\eejjeejjdd$dedddZ]ejjejjddeddZ^eejjIeejjd$ddedddZ_eejjeejjdd$dedddZ`ejjejjddeddZaeejjeejjd$ddedddZbeejjeejjdd$dedddZcejjejjddeddZdeejjeejjPd$dBdedddZeeejjeejjPd$ddedddZfeejjeejjKd$dBdedddZgeejjeejjKd$ddedddZheejjeejjKdddedddZieejjeejjKdddedddZjeejjIeejjKdd5dedddZkeejjeejjKdddedddZleejjeejjKdddedddZmeejjeejjKdddedddZneejjeejjKdddedddZoeejjIeejjKdd5deddd„ZpeejjIeejjKddBdedddĄZqejjejjKddeddƄZrejjejjKddeddȄZsejjejjKddeddʄZtejjejjKddedd̄ZueejjeejjKdddeddd΄ZveejjeejjKdddedddЄZweejjeejjKdddeddd҄ZxeejjIeejjKdd5dedddԄZyeejjIeejjKddBdedddքZzejjejjKddedd؄Z{ejjejjKddeddڄZ|ejjejjKddedd܄Z}eejjeejjKdddeddd߄Z~eejjeejjKdddedddZeejjIeejjKdd5dedddZeejjIeejjKddBdedddZejjejjKddeddZejjejjKddeddZeejjeejjKdddedddZeejjeejjKdddedddZeejjIeejjKdd5dedddZeejjIeejjKddBdedddZejjejjKddeddZejjejjKddeddZeejjeejjKdddedddZeejjeejjKdddedddZeejjIeejjKdd5dedddZeejjIeejjKdddedddZejjejjKddedddZejjejjKddeddZeejjeejjKdddedddZeejjeejjKdddeddd ZeejjIeejjKdd5dedd d ZeejjIeejjKddBdedd d ZejjejjKddedddZejjejjKddeddZeejjeejjKdddedddZeejjeejjKdddedddZeejjIeejjKdd5dedddZeejjIeejjKdddedddZejjejjKddedddZejjejjKddeddZeejjeejjKdddeddd ZeejjeejjKdddedd!d"ZeejjIeejjKdd5dedd#d$ZejjejjKddedd%d&ZejjejjKdded'd(ZeejjeejjKd)ddedd*d+ZeejjeejjKd,ddedd-d.ZeejjIeejjKd,d5dedd/d0ZeejjIeejjKdddedd1d2ZejjejjKd)dedd3d4ZejjejjKd,ded5d6ZeejjeejjKdddedd7d8ZeejjeejjKdddedd9d:ZeejjIeejjKdd5dedd;d<ZeejjIeejjKddBdedd=d>ZejjejjKddedd?d@ZejjejjKddedAdBZeejjeejjKdddeddCdDZeejjeejjKdddeddEdFZeejjIeejjKdd5deddGdHZejjejjKddedIdJZejjejjKddedKdLZeejjeejjeejjdd$deddMdNZeejjeejjeejjdd$deddOdPZeejjeejjeejjdd5deddQdRZeejjeejjeejjddBded dSdTZeejjeejjeejjd$dUded dVdWZeejjejjejjddedXdYZeejjejjejjddedZd[Zeejjeejjeejjd\d$ded d]d^Zeejjeejjeejjd\d$ded d_d`Zeejjeejjeejjdd$ded dadbZeejjeejjeejjd\d5deddcddZeejjeejjeejjddededdfdgZeejjeejjeejjd$dhdeddidjZeejjejjejjd\dedkdlZeejjejjejjd\dedmdnZeejjeejjeejjdoddeddpdqZeejjeejjeejjdod$deddrdsZeejjeejjeejjdod$deddtduZeejjeejjeejjdod5deddvdwZeejjeejjeejjd$dxdeddydzZeejjeejjeejjd$d$dedd{d|Zeejjeejjeejjdddedd}d~ZeejjejjejjdodeddZeejjejjejjdodeddZeejjσeejjd$d$dedddZeejjeejjdd5dedddZeejjeejjd$dBdedddZeejjIeejjdejZdedddZeejjeejjdd$dedddZeejjeejjdd$dedddZeejjeejjdd5dedddZeejjeejjddBdedddZeejjeejjѐdoded ddZejjejjddeddZejjejjddeddZeejjeejjd$dBded!ddZeejjIeejjdejZded"ddZ߇ZS(#rzFirewallD main classTcst|_|tjjjddt}tjj t jj |d}t t ||t jj||_t jj|_t|t jj t|jj |jt jj|_ dS)NT)Zset_as_default)bus)rfwstartdbusZmainloopZglibZ DBusGMainLoop SystemBusserviceZBusNamerDBUS_INTERFACEsuperr__init__Z DBUS_PATHbusnamepathrrZDBUS_PATH_CONFIG)selfr#name __class__=/usr/lib/python3.9/site-packages/firewall/server/firewalld.pyr+Hs  zFirewallD.__init__cCs |dSN)stopr.r2r2r3__del__YszFirewallD.__del__cCstdi|_|jS)Nzstart())rdebug1Z _timeoutsr$r%r6r2r2r3r%\s zFirewallD.startcCstd|jS)Nzstop())rr8r$r5r6r2r2r3r5ds zFirewallD.stopcCs|jjr|dur"tddSt}t||}|jjd|rHdSt ||}|jjd|rfdSt |}|jjd|rdSt ||}|jjd|rdSt t jddS)Nz&Lockdown not possible, sender not set.contextuidusercommandzlockdown is enabled)r$policiesquery_lockdownrerrorr&r'rZ access_checkrrrr"r!Z ACCESS_DENIED)r.senderr#r9r:r;r<r2r2r3 accessCheckms$     zFirewallD.accessCheckcCsr|dkrttjS|dkr6tdtjjtjjfS|dkrNt|jS|dkrht|j dS|dkrt |jj dS|d krt|j d S|d krt|jj d krd ndS|dkrt |jj dS|dkrt|jjS|dkrt|jjS|dkrt |jjdS|dkr2td S|dkrHtidS|dkr^tidStjd|dS)Nversioninterface_versionz%d.%dstateIPv4ipv4 IPv4ICMPTypessIPv6ipv6 IPv6_rpfilternoFT IPv6ICMPTypesBRIDGEr IPSetTypesnf_conntrack_helper_settingnf_conntrack_helperssasnf_nat_helpersDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not exist)r&StringrZVERSIONZDBUS_INTERFACE_VERSIONZDBUS_INTERFACE_REVISIONr$Z get_stateZBooleanZis_ipv_enabledZArrayZipv4_supported_icmp_typesZ_ipv6_rpfilterZipv6_supported_icmp_typesZebtables_enabledZ ipset_enabledZipset_supported_types Dictionary exceptions DBusException)r.Zpropr2r2r3 _get_propertysF           zFirewallD._get_propertyssv) in_signature out_signatureNcCs~t|t}t|t}td|||tjjkr8||S|tjjtjj tjj tjj fvrjtj d|ntj d|dS)NzGet('%s', '%s')rTJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist)rstrrr8rr&r)rYDBUS_INTERFACE_ZONEDBUS_INTERFACE_DIRECTDBUS_INTERFACE_POLICIESDBUS_INTERFACE_IPSETrWrX)r.interface_name property_namer@r2r2r3Gets(    z FirewallD.GetrHza{sv}cCst|t}td|i}|tjjkr@dD]}||||<q*n2|tjjtjj tjj tjj fvrbntj d|tj|ddS)Nz GetAll('%s')rBrCrDrErIrKrNrrOrPrQrSrGrMr^svZ signature)rr_rr8rr&r)rYr`rarbrcrWrXrV)r.rdr@retxr2r2r3GetAlls$   zFirewallD.GetAllZssv)r\cCst|t}t|t}t|}td||||||tjjkrn|dvr\tj d|qtj d|nB|tjj tjj tjj tjj fvrtj d|ntj d|dS)NzSet('%s', '%s', '%s')rgzGorg.freedesktop.DBus.Error.PropertyReadOnly: Property '%s' is read-onlyrTr^)rr_rr8rArr&r)rWrXr`rarbrc)r.rdreZ new_valuer@r2r2r3SetsD     z FirewallD.Setzsa{sv}asricCs.t|t}t|}t|}td|||dS)Nz#PropertiesChanged('%s', '%s', '%s'))rr_rr8)r.rdZchanged_propertiesZinvalidated_propertiesr2r2r3PropertiesChanged s  zFirewallD.PropertiesChanged)r]cs`tdtt||j|j}t||t j j }t j j fD]}t |||tjtj}q>|S)Nz Introspect())rZdebug2r*r Introspectr-r,Zget_busrrr&r)rarrZ deprecatedr)r.r@data interfacer0r2r3ros zFirewallD.IntrospectcCs*td|j|j|dS)z#Reload the firewall rules. zreload()Nrr8r$reloadrReloadedr.r@r2r2r3rt*s   zFirewallD.reloadcCs,td|jd|j|dS)zCompletely reload the firewall. Completely reload the firewall: Stops firewall, unloads modules and starts the firewall again. zcompleteReload()TNrsrvr2r2r3completeReload9s   zFirewallD.completeReloadcCstddS)Nz Reloaded()rr8r6r2r2r3ruIszFirewallD.ReloadedcCs"td|jj|dS)zbreset to firewall's builtin defaults. Reloads firewalld to apply changes properly zfirewalld.reset_to_defaults()N)rr8r$rZreset_defaultsrtrvr2r2r3resetToDefaultsNs  zFirewallD.resetToDefaultscCstdt|jdS)z&Check permanent configuration zcheckPermanentConfig()N)rr8rr$rvr2r2r3checkPermanentConfigYs zFirewallD.checkPermanentConfigc Cstd|jjdkr"ttjdd}|j}|jj D]}| |}zj||vr|j |}| |krtd|||qtd|ntd||j||Wq<ty}z"td||fd }WYd }~qf}z6|j |krtd|j|n tdWn8ty(}ztd|d }WYd }~n d }~00|jj?j@A}z6|j |krbtd |jB|n td!Wn8ty}ztd"|d }WYd }~n d }~00|rttjCd S)#z-Make runtime configuration permanent zcopyRuntimeToPermanent()ZFAILEDzSaving runtime to permanent is not allowed while firewalld is in FAILED state. The permanent configuration must be fixed and then firewalld restarted. Try `firewall-offline-cmd --check-config`.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)Drr8r$_stater"r!ZRUNNING_BUT_FAILEDrZgetServiceNamesr( get_servicesgetServiceSettingsZgetServiceByNameZ getSettingsupdate addService ExceptionwarningZgetIcmpTypeNamesicmptype get_icmptypesgetIcmpTypeSettingsZgetIcmpTypeByNameZ addIcmpTypeZ getIPSetNamesipset get_ipsetsgetIPSetSettingsZgetIPSetByNameZaddIPSetZ getZoneNameszone get_zonesgetZoneSettings2rcopydeepcopy getInterfacesZ_nm_assigned_interfacesremoveInterfacerrZgetSettingsDictr Z getZoneByNameZupdate2ZaddZone2ZgetPolicyNamespolicy"get_policies_not_derived_from_zonegetPolicySettingsZgetPolicyByNameZ addPolicyZgetHelperNameshelper get_helpersgetHelperSettingsZgetHelperByNameZ addHelperdirectget_all_chains get_all_rulesget_all_passthroughsr=lockdown_whitelist export_configZsetLockdownWhitelistZRT_TO_PERM_FAILED) r.r@r?Z config_namesr/ZconfZconf_objesettingsZchangedrqZ connectionr2r2r3runtimeToPermanentesF                                           zFirewallD.runtimeToPermanentcCs,td|||jj|dS)z!Enable lockdown policies zpolicies.enableLockdown()N)rr8rAr$r=Zenable_lockdownLockdownEnabledrvr2r2r3enableLockdown7s   zFirewallD.enableLockdowncCs,td|||jj|dS)z"Disable lockdown policies zpolicies.disableLockdown()N)rr8rAr$r=Zdisable_lockdownLockdownDisabledrvr2r2r3disableLockdownCs   zFirewallD.disableLockdownbcCstd|jjS)z,Returns True if lockdown is enabled zpolicies.queryLockdown())rr8r$r=r>rvr2r2r3 queryLockdownOs zFirewallD.queryLockdowncCstddS)NzLockdownEnabled()rxr6r2r2r3rZszFirewallD.LockdownEnabledcCstddS)NzLockdownDisabled()rxr6r2r2r3r_szFirewallD.LockdownDisabledcCs@t|t}td||||jjj|| |dS)Add lockdown command z*policies.addLockdownWhitelistCommand('%s')N) rr_rr8rAr$r=rZ add_commandLockdownWhitelistCommandAddedr.r<r@r2r2r3addLockdownWhitelistCommandhs   z%FirewallD.addLockdownWhitelistCommandcCs@t|t}td||||jjj|| |dS)z Remove lockdown command z-policies.removeLockdownWhitelistCommand('%s')N) rr_rr8rAr$r=rZremove_commandLockdownWhitelistCommandRemovedrr2r2r3removeLockdownWhitelistCommandus   z(FirewallD.removeLockdownWhitelistCommandcCs(t|t}td||jjj|S)zQuery lockdown command z,policies.queryLockdownWhitelistCommand('%s'))rr_rr8r$r=rZ has_commandrr2r2r3queryLockdownWhitelistCommands z'FirewallD.queryLockdownWhitelistCommandascCstd|jjjS)rz'policies.getLockdownWhitelistCommands())rr8r$r=rZ get_commandsrvr2r2r3getLockdownWhitelistCommandss z&FirewallD.getLockdownWhitelistCommandscCstd|dS)Nz#LockdownWhitelistCommandAdded('%s')rxr.r<r2r2r3rsz'FirewallD.LockdownWhitelistCommandAddedcCstd|dS)Nz%LockdownWhitelistCommandRemoved('%s')rxrr2r2r3rsz)FirewallD.LockdownWhitelistCommandRemovedicCs@t|t}td||||jjj|| |dS)Add lockdown uid z&policies.addLockdownWhitelistUid('%s')N) rintrr8rAr$r=rZadd_uidLockdownWhitelistUidAddedr.r:r@r2r2r3addLockdownWhitelistUids   z!FirewallD.addLockdownWhitelistUidcCs@t|t}td||||jjj|| |dS)zRemove lockdown uid z)policies.removeLockdownWhitelistUid('%s')N) rrrr8rAr$r=rZ remove_uidLockdownWhitelistUidRemovedrr2r2r3removeLockdownWhitelistUids   z$FirewallD.removeLockdownWhitelistUidcCs(t|t}td||jjj|S)zQuery lockdown uid z(policies.queryLockdownWhitelistUid('%s'))rrrr8r$r=rZhas_uidrr2r2r3queryLockdownWhitelistUids z#FirewallD.queryLockdownWhitelistUidZaicCstd|jjjS)rz#policies.getLockdownWhitelistUids())rr8r$r=rZget_uidsrvr2r2r3getLockdownWhitelistUidss z"FirewallD.getLockdownWhitelistUidscCstd|dS)NzLockdownWhitelistUidAdded(%d)rxr.r:r2r2r3rsz#FirewallD.LockdownWhitelistUidAddedcCstd|dS)NzLockdownWhitelistUidRemoved(%d)rxrr2r2r3rsz%FirewallD.LockdownWhitelistUidRemovedcCs@t|t}td||||jjj|| |dS)Add lockdown user z'policies.addLockdownWhitelistUser('%s')N) rr_rr8rAr$r=rZadd_userLockdownWhitelistUserAddedr.r;r@r2r2r3addLockdownWhitelistUsers   z"FirewallD.addLockdownWhitelistUsercCs@t|t}td||||jjj|| |dS)zRemove lockdown user z*policies.removeLockdownWhitelistUser('%s')N) rr_rr8rAr$r=rZ remove_userLockdownWhitelistUserRemovedrr2r2r3removeLockdownWhitelistUsers   z%FirewallD.removeLockdownWhitelistUsercCs(t|t}td||jjj|S)zQuery lockdown user z)policies.queryLockdownWhitelistUser('%s'))rr_rr8r$r=rZhas_userrr2r2r3queryLockdownWhitelistUsers z$FirewallD.queryLockdownWhitelistUsercCstd|jjjS)rz$policies.getLockdownWhitelistUsers())rr8r$r=rZ get_usersrvr2r2r3getLockdownWhitelistUserss z#FirewallD.getLockdownWhitelistUserscCstd|dS)Nz LockdownWhitelistUserAdded('%s')rxr.r;r2r2r3rsz$FirewallD.LockdownWhitelistUserAddedcCstd|dS)Nz"LockdownWhitelistUserRemoved('%s')rxrr2r2r3rsz&FirewallD.LockdownWhitelistUserRemovedcCs@t|t}td||||jjj|| |dS)Add lockdown context z*policies.addLockdownWhitelistContext('%s')N) rr_rr8rAr$r=rZ add_contextLockdownWhitelistContextAddedr.r9r@r2r2r3addLockdownWhitelistContexts   z%FirewallD.addLockdownWhitelistContextcCs@t|t}td||||jjj|| |dS)z Remove lockdown context z-policies.removeLockdownWhitelistContext('%s')N) rr_rr8rAr$r=rZremove_contextLockdownWhitelistContextRemovedrr2r2r3removeLockdownWhitelistContext,s   z(FirewallD.removeLockdownWhitelistContextcCs(t|t}td||jjj|S)zQuery lockdown context z,policies.queryLockdownWhitelistContext('%s'))rr_rr8r$r=rZ has_contextrr2r2r3queryLockdownWhitelistContext9s z'FirewallD.queryLockdownWhitelistContextcCstd|jjjS)rz'policies.getLockdownWhitelistContexts())rr8r$r=rZ get_contextsrvr2r2r3getLockdownWhitelistContextsEs z&FirewallD.getLockdownWhitelistContextscCstd|dS)Nz#LockdownWhitelistContextAdded('%s')rxr.r9r2r2r3rPsz'FirewallD.LockdownWhitelistContextAddedcCstd|dS)Nz%LockdownWhitelistContextRemoved('%s')rxrr2r2r3rUsz)FirewallD.LockdownWhitelistContextRemovedcCs*td|||j|dS)zfEnable panic mode. All ingoing and outgoing connections and packets will be blocked. zenablePanicMode()N)rr8rAr$Zenable_panic_modePanicModeEnabledrvr2r2r3enablePanicMode^s   zFirewallD.enablePanicModecCs*td|||j|dS)zDisable panic mode. Enables normal mode: Allowed ingoing and outgoing connections will not be blocked anymore zdisablePanicMode()N)rr8rAr$Zdisable_panic_modePanicModeDisabledrvr2r2r3disablePanicModels   zFirewallD.disablePanicModecCstd|jS)NzqueryPanicMode())rr8r$Zquery_panic_modervr2r2r3queryPanicMode{s zFirewallD.queryPanicModecCstddS)NzPanicModeEnabled()rxr6r2r2r3rszFirewallD.PanicModeEnabledcCstddS)NzPanicModeDisabled()rxr6r2r2r3rszFirewallD.PanicModeDisabledz&(sssbsasa(ss)asba(ssss)asasasasa(ss)b)cCs$t|t}td||jj|S)NzgetZoneSettings(%s))rr_rr8r$rZget_config_with_settingsr.rr@r2r2r3getZoneSettingss  zFirewallD.getZoneSettingscCs$t|t}td||jj|S)NzgetZoneSettings2(%s))rr_rr8r$rget_config_with_settings_dictrr2r2r3rs  zFirewallD.getZoneSettings2zsa{sv}cCsnt|t}td||||jj|t|||||d|vrj|ddkrjt |d|j |dS)NzsetZoneSettings2(%s)timeoutr) rr_rr8rAr$rset_config_with_settings_dict ZoneUpdatedrtimeout_add_secondsZoneUpdatedCurrentSettings)r.rrr@r2r2r3setZoneSettings2s    zFirewallD.setZoneSettings2cCstd||fdS)Nzzone.ZoneUpdated('%s', '%s')rx)r.rrr2r2r3rszFirewallD.ZoneUpdatedcCs|||jj|dSr4)rr$rrr.rr2r2r3rsz$FirewallD.ZoneUpdatedCurrentSettingscCs$t|t}td||jj|S)Nzpolicy.getPolicySettings(%s))rr_rr8r$rr)r.rr@r2r2r3rs  zFirewallD.getPolicySettingscCsnt|t}td||||jj|t|||||d|vrj|ddkrjt |d|j |dS)Nzpolicy.setPolicySettings(%s)rr) rr_rr8rAr$rr PolicyUpdatedrrPolicyUpdatedCurrentSettings)r.rrr@r2r2r3setPolicySettingss    zFirewallD.setPolicySettingscCstd||fdS)Nz policy.PolicyUpdated('%s', '%s')rx)r.rrr2r2r3rszFirewallD.PolicyUpdatedcCs|||jj|dSr4)rr$rr)r.rr2r2r3rsz&FirewallD.PolicyUpdatedCurrentSettingscCstd|jjS)NzlistServices())rr8r$r(r|rvr2r2r3 listServicess zFirewallD.listServicesz(sssa(ss)asa{ss}asa(ss))c Cst|t}td||jj|}|}g}tdD]P}|j |d|vrp| t t ||j |dq8| ||j |dq8t|S)NzgetServiceSettings(%s)r)rr_rr8r$r( get_serviceexport_config_dictrangeZIMPORT_EXPORT_STRUCTUREappendrrgetattrtuple)r.r(r@objZ conf_dictZ conf_listrr2r2r3r}s   "zFirewallD.getServiceSettingscCs,t|t}td||jj|}|S)NzgetServiceSettings2(%s))rr_rr8r$r(rr)r.r(r@rr2r2r3getServiceSettings2s  zFirewallD.getServiceSettings2cCstd|jjS)NzlistIcmpTypes())rr8r$rrrvr2r2r3 listIcmpTypess zFirewallD.listIcmpTypescCs(t|t}td||jj|S)NzgetIcmpTypeSettings(%s))rr_rr8r$rZ get_icmptyper)r.rr@r2r2r3rs  zFirewallD.getIcmpTypeSettingscCstd|jS)NzgetLogDenied())rr8r$Zget_log_deniedrvr2r2r3 getLogDenied s zFirewallD.getLogDeniedcCsXt|t}td||||j||||j|j | dS)NzsetLogDenied('%s')) rr_rr8rAr$Zset_log_deniedLogDeniedChangedrtrrur.valuer@r2r2r3 setLogDenied)s      zFirewallD.setLogDeniedcCstd|dS)NzLogDeniedChanged('%s')rxr.rr2r2r3r9szFirewallD.LogDeniedChangedcCstddS)NzgetAutomaticHelpers()rLrxrvr2r2r3getAutomaticHelpersBs zFirewallD.getAutomaticHelperscCs&t|t}td|||dS)NzsetAutomaticHelpers('%s'))rr_rr8rArr2r2r3setAutomaticHelpersMs zFirewallD.setAutomaticHelperscCstd|dS)NzAutomaticHelpersChanged('%s')rxrr2r2r3AutomaticHelpersChangedYsz!FirewallD.AutomaticHelpersChangedcCstd|jS)NzgetDefaultZone())rr8r$Zget_default_zonervr2r2r3getDefaultZonebs zFirewallD.getDefaultZonecCs<t|t}td||||j|||dS)NzsetDefaultZone('%s'))rr_rr8rAr$Zset_default_zoneDefaultZoneChangedrr2r2r3setDefaultZoneks    zFirewallD.setDefaultZonecCstd|dS)NzDefaultZoneChanged('%s')rxrr2r2r3rwszFirewallD.DefaultZoneChangedcCstd|jjS)Nzpolicy.getPolicies())rr8r$rrrvr2r2r3 getPoliciess zFirewallD.getPoliciesz a{sa{sas}}cCsXtdi}|jjD]8}i||<|jj|||d<|jj|||d<q|S)Nzpolicy.getActivePolicies()Z ingress_zonesZ egress_zones)rr8r$rZ)get_active_policies_not_derived_from_zoneZlist_ingress_zonesZlist_egress_zones)r.r@r=rr2r2r3getActivePoliciess zFirewallD.getActivePoliciescCstd|jjS)Nzzone.getZones())rr8r$rrrvr2r2r3getZoness zFirewallD.getZonescCstdi}|jjD]l}|jj|}|jj|}t|t|dkri||<t|dkrn|||d<t|dkr|||d<q|S)Nzzone.getActiveZones()r interfacessources)rr8r$rrlist_interfaces list_sourceslen)r.r@Zzonesrrrr2r2r3getActiveZoness    zFirewallD.getActiveZonescCs2t|t}td||jj|}|r.|SdS)zReturn the zone an interface belongs to. :Parameters: `interface` : str Name of the interface :Returns: str. The name of the zone. zzone.getZoneOfInterface('%s')rr)rr_rr8r$rZget_zone_of_interface)r.rqr@rr2r2r3getZoneOfInterfaces zFirewallD.getZoneOfInterfacecCs2t|t}td||jj|}|r.|SdS)Nzzone.getZoneOfSource('%s')rr)rr_rr8r$rZget_zone_of_source)r.sourcer@rr2r2r3getZoneOfSources  zFirewallD.getZoneOfSourcecCsdS)NFr2rr2r2r3 isImmutableszFirewallD.isImmutablecCsRt|t}t|t}td||f|||jj|||}||||S)zPAdd an interface to a zone. If zone is empty, use default zone. zzone.addInterface('%s', '%s')) rr_rr8rAr$rZ add_interfaceInterfaceAddedr.rrqr@_zoner2r2r3 addInterfaces    zFirewallD.addInterfacecCs"t|t}t|t}||||S)zChange a zone an interface is part of. If zone is empty, use default zone. This function is deprecated, use changeZoneOfInterface instead )rr_changeZoneOfInterfacer.rrqr@r2r2r3 changeZones  zFirewallD.changeZonecCsRt|t}t|t}td||f|||jj|||}||||S)z[Change a zone an interface is part of. If zone is empty, use default zone. z&zone.changeZoneOfInterface('%s', '%s')) rr_rr8rAr$rZchange_zone_of_interfaceZoneOfInterfaceChangedrr2r2r3rs    zFirewallD.changeZoneOfInterfacecCsPt|t}t|t}td||f|||jj||}||||S)zkRemove interface from a zone. If zone is empty, remove from zone the interface belongs to. z zone.removeInterface('%s', '%s')) rr_rr8rAr$rZremove_interfaceInterfaceRemovedrr2r2r3rs    zFirewallD.removeInterfacecCs6t|t}t|t}td||f|jj||S)z^Return true if an interface is in a zone. If zone is empty, use default zone. zzone.queryInterface('%s', '%s'))rr_rr8r$rZquery_interfacerr2r2r3queryInterface's  zFirewallD.queryInterfacecCs&t|t}td||jj|S)z]Return the list of interfaces of a zone. If zone is empty, use default zone. zzone.getInterfaces('%s'))rr_rr8r$rrrr2r2r3r4s zFirewallD.getInterfacescCstd||fdS)Nzzone.InterfaceAdded('%s', '%s')rxr.rrqr2r2r3rBszFirewallD.InterfaceAddedcCstd||fdS)z, This signal is deprecated. zzone.ZoneChanged('%s', '%s')Nrxr r2r2r3 ZoneChangedGszFirewallD.ZoneChangedcCs"td||f|||dS)Nz'zone.ZoneOfInterfaceChanged('%s', '%s'))rr8r r r2r2r3rOsz FirewallD.ZoneOfInterfaceChangedcCstd||fdS)Nz!zone.InterfaceRemoved('%s', '%s')rxr r2r2r3r VszFirewallD.InterfaceRemovedcCsRt|t}t|t}td||f|||jj|||}||||S)zLAdd a source to a zone. If zone is empty, use default zone. zzone.addSource('%s', '%s')) rr_rr8rAr$rZ add_source SourceAddedr.rrr@rr2r2r3 addSource_s    zFirewallD.addSourcecCsRt|t}t|t}td||f|||jj|||}||||S)zXChange a zone an source is part of. If zone is empty, use default zone. z#zone.changeZoneOfSource('%s', '%s')) rr_rr8rAr$rZchange_zone_of_sourceZoneOfSourceChangedrr2r2r3changeZoneOfSourceps    zFirewallD.changeZoneOfSourcecCsPt|t}t|t}td||f|||jj||}||||S)zeRemove source from a zone. If zone is empty, remove from zone the source belongs to. zzone.removeSource('%s', '%s')) rr_rr8rAr$rZ remove_source SourceRemovedrr2r2r3 removeSources    zFirewallD.removeSourcecCs6t|t}t|t}td||f|jj||S)z[Return true if an source is in a zone. If zone is empty, use default zone. zzone.querySource('%s', '%s'))rr_rr8r$rZ query_source)r.rrr@r2r2r3 querySources  zFirewallD.querySourcecCs&t|t}td||jj|S)zZReturn the list of sources of a zone. If zone is empty, use default zone. zzone.getSources('%s'))rr_rr8r$rrrr2r2r3 getSourcess zFirewallD.getSourcescCstd||fdS)Nzzone.SourceAdded('%s', '%s')rxr.rrr2r2r3r szFirewallD.SourceAddedcCstd||fdS)Nz$zone.ZoneOfSourceChanged('%s', '%s')rxrr2r2r3rszFirewallD.ZoneOfSourceChangedcCstd||fdS)Nzzone.SourceRemoved('%s', '%s')rxrr2r2r3rszFirewallD.SourceRemovedZssicCsxt|t}t|t}t|t}td||ft|d}|jj|||}|dkrft ||j ||| ||||S)Nzzone.addRichRule('%s', '%s')Zrule_strr) rr_rrr8rr$radd_rulerrRichRuleRemoved RichRuleAdded)r.rrulerr@rrr2r2r3 addRichRules    zFirewallD.addRichRulecCsPt|t}t|t}td||ft|d}|jj||}||||S)Nzzone.removeRichRule('%s', '%s')r) rr_rr8rr$r remove_ruler)r.rrr@rrr2r2r3removeRichRules    zFirewallD.removeRichRulecCs@t|t}t|t}td||ft|d}|jj||S)Nzzone.queryRichRule('%s', '%s')r)rr_rr8rr$r query_rule)r.rrr@rr2r2r3 queryRichRules    zFirewallD.queryRichRulecCs&t|t}td||jj|S)Nzzone.getRichRules('%s'))rr_rr8r$rZ list_rulesrr2r2r3 getRichRuless zFirewallD.getRichRulescCstd|||fdS)Nz"zone.RichRuleAdded('%s', '%s', %d)rx)r.rrrr2r2r3rszFirewallD.RichRuleAddedcCstd||fdS)Nz zone.RichRuleRemoved('%s', '%s')rx)r.rrr2r2r3rszFirewallD.RichRuleRemovedcCs|t|t}t|t}t|t}td|||f|||jj||||}|dkrjt ||j ||| ||||S)Nzzone.addService('%s', '%s', %d)r) rr_rrr8rAr$rZ add_servicerrServiceRemoved ServiceAdded)r.rr(rr@rr2r2r3rs    zFirewallD.addServicecCsPt|t}t|t}td||f|||jj||}||||S)Nzzone.removeService('%s', '%s')) rr_rr8rAr$rZremove_servicer")r.rr(r@rr2r2r3 removeServices    zFirewallD.removeServicecCs6t|t}t|t}td||f|jj||S)Nzzone.queryService('%s', '%s'))rr_rr8r$rZ query_service)r.rr(r@r2r2r3 queryService(s  zFirewallD.queryServicecCs&t|t}td||jj|S)Nzzone.getServices('%s'))rr_rr8r$rZ list_servicesrr2r2r3 getServices3s zFirewallD.getServicescCstd|||fdS)Nz!zone.ServiceAdded('%s', '%s', %d)rx)r.rr(rr2r2r3r#?szFirewallD.ServiceAddedcCstd||fdS)Nzzone.ServiceRemoved('%s', '%s')rx)r.rr(r2r2r3r"EszFirewallD.ServiceRemovedZsssicCst|t}t|t}t|t}t|t}td|||f|||jj|||||}|dkrxt ||j |||| |||||S)Nzzone.addPort('%s', '%s', '%s')r) rr_rrr8rAr$rZadd_portrr PortRemoved PortAddedr.rportprotocolrr@rr2r2r3addPortNs     zFirewallD.addPortZssscCs`t|t}t|t}t|t}td|||f|||jj|||}|||||S)Nz!zone.removePort('%s', '%s', '%s')) rr_rr8rAr$rZ remove_portr'r.rr*r+r@rr2r2r3 removePortcs    zFirewallD.removePortcCsDt|t}t|t}t|t}td|||f|jj|||S)Nz zone.queryPort('%s', '%s', '%s'))rr_rr8r$rZ query_portr.rr*r+r@r2r2r3 queryPortts    zFirewallD.queryPortZaascCs&t|t}td||jj|S)Nzzone.getPorts('%s'))rr_rr8r$rZ list_portsrr2r2r3getPortss zFirewallD.getPortsrcCstd||||fdS)Nz$zone.PortAdded('%s', '%s', '%s', %d)rxr.rr*r+rr2r2r3r(s zFirewallD.PortAddedcCstd|||fdS)Nz"zone.PortRemoved('%s', '%s', '%s')rxr.rr*r+r2r2r3r'szFirewallD.PortRemovedcCszt|t}t|t}t|t}td||f|||jj||||}|dkrht ||j ||| ||||S)Nzzone.enableProtocol('%s', '%s')r) rr_rrr8rAr$rZ add_protocolrrProtocolRemoved ProtocolAdded)r.rr+rr@rr2r2r3 addProtocols    zFirewallD.addProtocolcCsPt|t}t|t}td||f|||jj||}||||S)Nzzone.removeProtocol('%s', '%s')) rr_rr8rAr$rZremove_protocolr4)r.rr+r@rr2r2r3removeProtocols    zFirewallD.removeProtocolcCs6t|t}t|t}td||f|jj||S)Nzzone.queryProtocol('%s', '%s'))rr_rr8r$rZquery_protocol)r.rr+r@r2r2r3 queryProtocols  zFirewallD.queryProtocolcCs&t|t}td||jj|S)Nzzone.getProtocols('%s'))rr_rr8r$rZlist_protocolsrr2r2r3 getProtocolss zFirewallD.getProtocolscCstd|||fdS)Nz"zone.ProtocolAdded('%s', '%s', %d)rx)r.rr+rr2r2r3r5szFirewallD.ProtocolAddedcCstd||fdS)Nz zone.ProtocolRemoved('%s', '%s')rx)r.rr+r2r2r3r4szFirewallD.ProtocolRemovedcCst|t}t|t}t|t}t|t}td|||f|||jj|||||}|dkrxt ||j |||| |||||S)Nz$zone.addSourcePort('%s', '%s', '%s')r) rr_rrr8rAr$rZadd_source_portrrSourcePortRemovedSourcePortAddedr)r2r2r3 addSourcePorts"       zFirewallD.addSourcePortcCs`t|t}t|t}t|t}td|||f|||jj|||}|||||S)Nz'zone.removeSourcePort('%s', '%s', '%s')) rr_rr8rAr$rZremove_source_portr:r-r2r2r3removeSourcePorts     zFirewallD.removeSourcePortcCsDt|t}t|t}t|t}td|||f|jj|||S)Nz&zone.querySourcePort('%s', '%s', '%s'))rr_rr8r$rZquery_source_portr/r2r2r3querySourcePort s    zFirewallD.querySourcePortcCs&t|t}td||jj|S)Nzzone.getSourcePorts('%s'))rr_rr8r$rZlist_source_portsrr2r2r3getSourcePortss zFirewallD.getSourcePortscCstd||||fdS)Nz*zone.SourcePortAdded('%s', '%s', '%s', %d)rxr2r2r2r3r;&s zFirewallD.SourcePortAddedcCstd|||fdS)Nz(zone.SourcePortRemoved('%s', '%s', '%s')rxr3r2r2r3r:,s zFirewallD.SourcePortRemovedsicCsft|t}t|t}td||||jj|||}|dkrVt ||j || |||S)Nzzone.addMasquerade('%s')r) rr_rrr8rAr$rZadd_masqueraderrMasqueradeRemovedMasqueradeAdded)r.rrr@rr2r2r3 addMasquerade6s    zFirewallD.addMasqueradecCs>t|t}td||||jj|}|||S)Nzzone.removeMasquerade('%s')) rr_rr8rAr$rZremove_masqueraderAr.rr@rr2r2r3removeMasqueradeHs    zFirewallD.removeMasqueradecCs&t|t}td||jj|S)Nzzone.queryMasquerade('%s'))rr_rr8r$rZquery_masqueraderr2r2r3queryMasqueradeVs zFirewallD.queryMasqueradecCstd||fdS)Nzzone.MasqueradeAdded('%s', %d)rx)r.rrr2r2r3rB`szFirewallD.MasqueradeAddedcCstd|dS)Nzzone.MasqueradeRemoved('%s')rxrr2r2r3rAeszFirewallD.MasqueradeRemovedZsssssic Cst|t}t|t}t|t}t|t}t|t}t|t}td|||||f|||jj|||||||}|dkrt ||j |||||| |||||||S)Nz1zone.addForwardPort('%s', '%s', '%s', '%s', '%s')r) rr_rrr8rAr$rZadd_forward_portrrForwardPortRemovedForwardPortAdded) r.rr*r+toporttoaddrrr@rr2r2r3addForwardPortns&        zFirewallD.addForwardPortZssssscCst|t}t|t}t|t}t|t}t|t}td|||||f|||jj|||||}|||||||S)Nz4zone.removeForwardPort('%s', '%s', '%s', '%s', '%s')) rr_rr8rAr$rZremove_forward_portrG)r.rr*r+rIrJr@rr2r2r3removeForwardPorts       zFirewallD.removeForwardPortcCs`t|t}t|t}t|t}t|t}t|t}td|||||f|jj|||||S)Nz3zone.queryForwardPort('%s', '%s', '%s', '%s', '%s'))rr_rr8r$rZquery_forward_port)r.rr*r+rIrJr@r2r2r3queryForwardPorts      zFirewallD.queryForwardPortcCs&t|t}td||jj|S)Nzzone.getForwardPorts('%s'))rr_rr8r$rZlist_forward_portsrr2r2r3getForwardPortss zFirewallD.getForwardPortsc Cstd||||||fdS)Nz7zone.ForwardPortAdded('%s', '%s', '%s', '%s', '%s', %d)rx)r.rr*r+rIrJrr2r2r3rHszFirewallD.ForwardPortAddedcCstd|||||fdS)Nz5zone.ForwardPortRemoved('%s', '%s', '%s', '%s', '%s')rx)r.rr*r+rIrJr2r2r3rGs zFirewallD.ForwardPortRemovedcCszt|t}t|t}t|t}td||f|||jj||||}|dkrht ||j ||| ||||S)Nz zone.enableIcmpBlock('%s', '%s')r) rr_rrr8rAr$rZadd_icmp_blockrrIcmpBlockRemovedIcmpBlockAdded)r.ricmprr@rr2r2r3 addIcmpBlocks    zFirewallD.addIcmpBlockcCsPt|t}t|t}td||f|||jj||}||||S)Nz zone.removeIcmpBlock('%s', '%s')) rr_rr8rAr$rZremove_icmp_blockrO)r.rrQr@rr2r2r3removeIcmpBlocks    zFirewallD.removeIcmpBlockcCs6t|t}t|t}td||f|jj||S)Nzzone.queryIcmpBlock('%s', '%s'))rr_rr8r$rZquery_icmp_block)r.rrQr@r2r2r3queryIcmpBlocks  zFirewallD.queryIcmpBlockcCs&t|t}td||jj|S)Nzzone.getIcmpBlocks('%s'))rr_rr8r$rZlist_icmp_blocksrr2r2r3 getIcmpBlockss zFirewallD.getIcmpBlockscCstd|||fdS)Nz#zone.IcmpBlockAdded('%s', '%s', %d)rx)r.rrQrr2r2r3rPszFirewallD.IcmpBlockAddedcCstd||fdS)Nz!zone.IcmpBlockRemoved('%s', '%s')rx)r.rrQr2r2r3rO szFirewallD.IcmpBlockRemovedcCs@t|t}td||||jj||}|||S)Nz zone.addIcmpBlockInversion('%s')) rr_rr8rAr$rZadd_icmp_block_inversionIcmpBlockInversionAddedrDr2r2r3addIcmpBlockInversions    zFirewallD.addIcmpBlockInversioncCs>t|t}td||||jj|}|||S)Nz#zone.removeIcmpBlockInversion('%s')) rr_rr8rAr$rZremove_icmp_block_inversionIcmpBlockInversionRemovedrDr2r2r3removeIcmpBlockInversion"s    z"FirewallD.removeIcmpBlockInversioncCs&t|t}td||jj|S)Nz"zone.queryIcmpBlockInversion('%s'))rr_rr8r$rZquery_icmp_block_inversionrr2r2r3queryIcmpBlockInversion0s z!FirewallD.queryIcmpBlockInversioncCstd|dS)Nz"zone.IcmpBlockInversionAdded('%s')rxrr2r2r3rV:sz!FirewallD.IcmpBlockInversionAddedcCstd|dS)Nz$zone.IcmpBlockInversionRemoved('%s')rxrr2r2r3rX?sz#FirewallD.IcmpBlockInversionRemovedcCs`t|t}t|t}t|t}td|||f|||jj|||||||dS)Nz!direct.addChain('%s', '%s', '%s')) rr_rr8rAr$rZ add_chain ChainAddedr.ipvtablechainr@r2r2r3addChainJs    zFirewallD.addChaincCs`t|t}t|t}t|t}td|||f|||jj|||||||dS)Nz$direct.removeChain('%s', '%s', '%s')) rr_rr8rAr$rZ remove_chain ChainRemovedr\r2r2r3 removeChainYs    zFirewallD.removeChaincCsDt|t}t|t}t|t}td|||f|jj|||S)Nz#direct.queryChain('%s', '%s', '%s'))rr_rr8r$rZ query_chainr\r2r2r3 queryChainhs    zFirewallD.queryChaincCs6t|t}t|t}td||f|jj||S)Nzdirect.getChains('%s', '%s'))rr_rr8r$rZ get_chains)r.r]r^r@r2r2r3 getChainsus  zFirewallD.getChainsza(sss)cCstd|jjS)Nzdirect.getAllChains())rr8r$rrrvr2r2r3 getAllChainss zFirewallD.getAllChainscCstd|||fdS)Nz#direct.ChainAdded('%s', '%s', '%s')rxr.r]r^r_r2r2r3r[szFirewallD.ChainAddedcCstd|||fdS)Nz%direct.ChainRemoved('%s', '%s', '%s')rxrfr2r2r3ras zFirewallD.ChainRemovedZsssiasc Cst|t}t|t}t|t}t|t}tdd|D}td||||d|f|||jj |||||| |||||dS)Ncss|]}t|tVqdSr4rr_.0rr2r2r3 z$FirewallD.addRule..z*direct.addRule('%s', '%s', '%s', %d, '%s')',') rr_rrrr8joinrAr$rr RuleAddedr.r]r^r_priorityargsr@r2r2r3addRules     zFirewallD.addRulec Cst|t}t|t}t|t}t|t}tdd|D}td||||d|f|||jj |||||| |||||dS)Ncss|]}t|tVqdSr4rgrhr2r2r3rjrkz'FirewallD.removeRule..z-direct.removeRule('%s', '%s', '%s', %d, '%s')rl) rr_rrrr8rmrAr$rr RuleRemovedror2r2r3 removeRules     zFirewallD.removeRulecCst|t}t|t}t|t}td|||f|||jj|||D]0\}}|jj|||||| |||||qNdS)Nz$direct.removeRules('%s', '%s', '%s')) rr_rr8rAr$r get_rulesrrs)r.r]r^r_r@rprqr2r2r3 removeRuless    zFirewallD.removeRulesc Csnt|t}t|t}t|t}t|t}tdd|D}td||||d|f|jj |||||S)Ncss|]}t|tVqdSr4rgrhr2r2r3rjrkz&FirewallD.queryRule..z,direct.queryRule('%s', '%s', '%s', %d, '%s')rl) rr_rrrr8rmr$rrror2r2r3 queryRules    zFirewallD.queryRuleza(ias)cCsDt|t}t|t}t|t}td|||f|jj|||S)Nz!direct.getRules('%s', '%s', '%s'))rr_rr8r$rrur\r2r2r3getRuless    zFirewallD.getRulesz a(sssias)cCstd|jjS)Nzdirect.getAllRules())rr8r$rrrvr2r2r3 getAllRuless zFirewallD.getAllRulesc Cs"td||||d|fdS)Nz,direct.RuleAdded('%s', '%s', '%s', %d, '%s')rlrr8rmr.r]r^r_rprqr2r2r3rnszFirewallD.RuleAddedc Cs"td||||d|fdS)Nz.direct.RuleRemoved('%s', '%s', '%s', %d, '%s')rlrzr{r2r2r3rsszFirewallD.RuleRemovedrRc Cst|t}tdd|D}td|d|f||z|jj ||WSt y}zj|dvrvt gd}n t ddg}t|}|j t jkrtt ||@d krt|t|WYd}~n d}~00dS) Ncss|]}t|tVqdSr4rgrhr2r2r3rj rkz(FirewallD.passthrough..zdirect.passthrough('%s', '%s')rl)rFrJ)z-Cz--check-L--listr|r}r)rr_rrr8rmrAr$r passthroughr"setcoder!ZCOMMAND_FAILEDrrr )r.r]rqr@r?Z query_argsmsgr2r2r3r~ s      zFirewallD.passthroughcCs\t|}tdd|D}td|d|f|||jj||| ||dS)Ncss|]}t|VqdSr4rrhr2r2r3rj- rkz+FirewallD.addPassthrough..z!direct.addPassthrough('%s', '%s')rl) rrrr8rmrAr$rZadd_passthroughPassthroughAddedr.r]rqr@r2r2r3addPassthrough% s  zFirewallD.addPassthroughcCs\t|}tdd|D}td|d|f|||jj||| ||dS)Ncss|]}t|VqdSr4rrhr2r2r3rj< rkz.FirewallD.removePassthrough..z$direct.removePassthrough('%s', '%s')rl) rrrr8rmrAr$rZremove_passthroughPassthroughRemovedrr2r2r3removePassthrough4 s  zFirewallD.removePassthroughcCsBt|}tdd|D}td|d|f|jj||S)Ncss|]}t|VqdSr4rrhr2r2r3rjK rkz-FirewallD.queryPassthrough..z#direct.queryPassthrough('%s', '%s')rl)rrrr8rmr$rZquery_passthroughrr2r2r3queryPassthroughC s  zFirewallD.queryPassthroughza(sas)cCstd|jjS)Nzdirect.getAllPassthroughs())rr8r$rrrvr2r2r3getAllPassthroughsP s zFirewallD.getAllPassthroughscCs*tdt|D]}|j|qdS)Nzdirect.removeAllPassthroughs())rr8reversedrr)r.r@r~r2r2r3removeAllPassthroughsZ s zFirewallD.removeAllPassthroughscCs"t|}td||jj|S)Nzdirect.getPassthroughs('%s'))rrr8r$rZget_passthroughs)r.r]r@r2r2r3getPassthroughsf s zFirewallD.getPassthroughscCstd|d|fdS)Nz#direct.PassthroughAdded('%s', '%s')rlrzr.r]rqr2r2r3rq s zFirewallD.PassthroughAddedcCstd|d|fdS)Nz%direct.PassthroughRemoved('%s', '%s')rlrzrr2r2r3rx s zFirewallD.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). Nr2rvr2r2r3 authorizeAll s zFirewallD.authorizeAllcCs$t|}td||jj|S)Nzipset.queryIPSet('%s'))rrr8r$rZ query_ipsetr.rr@r2r2r3 queryIPSet szFirewallD.queryIPSetcCstd|jjS)Nzipsets.getIPSets())rr8r$rrrvr2r2r3 getIPSets s zFirewallD.getIPSetscCs(t|t}td||jj|S)NzgetIPSetSettings(%s))rr_rr8r$rZ get_ipsetrrr2r2r3r s  zFirewallD.getIPSetSettingscCsLt|}t|}td||f|||jj|||||dS)Nzipset.addEntry('%s', '%s'))rrr8rAr$rZ add_entry EntryAddedr.rentryr@r2r2r3addEntry s  zFirewallD.addEntrycCsLt|}t|}td||f|||jj|||||dS)Nzipset.removeEntry('%s', '%s'))rrr8rAr$rZ remove_entry EntryRemovedrr2r2r3 removeEntry s  zFirewallD.removeEntrycCs2t|}t|}td||f|jj||S)Nzipset.queryEntry('%s', '%s'))rrr8r$rZ query_entryrr2r2r3 queryEntry szFirewallD.queryEntrycCs$t|}td||jj|S)Nzipset.getEntries('%s'))rrr8r$r get_entriesrr2r2r3 getEntries szFirewallD.getEntriescCst|}t|t}td|d||jj|}|jj||t |}t |}||D]}| ||q\||D]}| ||qvdS)Nzipset.setEntries('%s', '[%s]'),) rlistrr8rmr$rrZ set_entriesrrr)r.rentriesr@Z old_entriesZold_entries_setZ entries_setrr2r2r3 setEntries s   zFirewallD.setEntriescCs&t|}t|}td||fdS)Nzipset.EntryAdded('%s', '%s')rrr8r.rrr2r2r3r szFirewallD.EntryAddedcCs&t|}t|}td||fdS)Nzipset.EntryRemoved('%s', '%s')rrr2r2r3r szFirewallD.EntryRemovedcCstd|jjS)Nzhelpers.getHelpers())rr8r$rrrvr2r2r3 getHelpers s zFirewallD.getHelperscCs(t|t}td||jj|S)NzgetHelperSettings(%s))rr_rr8r$rZ get_helperr)r.rr@r2r2r3r 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)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+r7r%r5r rArYr ZPROPERTIES_IFACErfrlrrmr(signalrnZPK_ACTION_INFOZINTROSPECTABLE_IFACEror)rtrwruryrzrZPK_ACTION_POLICIESrbrrZPK_ACTION_POLICIES_INFOrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrZPK_ACTION_CONFIG_INFOrr`rrrrZDBUS_INTERFACE_POLICYrrrrrr}rrrZDBUS_SIGNATURErrrrrrrrrrrrrrrrrrrrrr rrr rr rrrrrr rrrrr r!rrrr$r%r&r#r"r,r.r0r1r(r'r6r7r8r9r5r4r<r=r>r?r;r:rCrErFrBrArKrLrMrNrHrGrRrSrTrUrPrOrWrYrZrVrXZPK_ACTION_DIRECTrrar`rbZPK_ACTION_DIRECT_INFOrcrdrerr[rarrrtrvrwrxryrnrsr~rrrrrrrrZ PK_ACTION_ALLrrcrrrrrrrrrrrrrr __classcell__r2r2r0r3r@sv    /  "               O                                                                                                                                                                                                                                                                                                )7__all__Z gi.repositoryrrr&Z dbus.serviceZdbus.mainloop.glibZfirewallrZfirewall.core.fwrZfirewall.core.richrZfirewall.core.loggerrZfirewall.clientrZfirewall.server.dbusr r Zfirewall.server.decoratorsr r r rrrZfirewall.server.configrZfirewall.dbus_utilsrrrrrrrrZfirewall.core.io.functionsrZfirewall.core.io.ipsetrZfirewall.core.io.icmptyperZfirewall.core.io.helperrZfirewall.core.fw_nmrrZfirewall.core.fw_ifcfgr r!Zfirewall.errorsr"rr2r2r2r3s.        (