HEX
Server: Apache
System: Linux www3.pit.tblive.com 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64
User: awaldron (1020)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3.9/site-packages/firewall/server/__pycache__/firewalld.cpython-39.pyc
a

7Irj%��@sJdgZddlmZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZddl
mZddlmZdd	lmZmZdd
lmZmZmZmZmZmZddlmZdd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/m0Z0ddl1m2Z2ddlm3Z3ddl4m5Z5Gdd�de�Z6dS)�	FirewallD�)�GLibN)�config)�Firewall)�	Rich_Rule)�log)�FirewallClientZoneSettings)�FirewallDBusException�DbusServiceObject)�dbus_handle_exceptions�dbus_service_method�handle_exceptions�dbus_service_method_deprecated�dbus_service_signal_deprecated�dbus_polkit_require_auth)�FirewallDConfig)�dbus_to_python�command_of_sender�context_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_interface�nm_set_zone_of_connection)�ifcfg_set_zone_of_interface)�errors)�
FirewallErrorcsV eZdZdZdZejjZe	�fdd��Z
dd�Ze	dd��Ze	d	d
��Z
edd��Zed
d��Zeejddd�e�d�dd���Zeejddd�e�d�dd���Zeejj�eejdd�e�d�dd����Zejjejdd�dd ��Zeejj�eejdd!�e�d��fd"d#�	���Zeejj�eejjd$d$d�e�d�d%d&����Zeejj�eejjd$d$d�e�d�d'd(����Zej�ejj�ed)d*���Z eejj�eejjd$d$d��d�d+d,���Z!eejj�eejjd$d$d�e�d�d-d.����Z"eejj�eejjd$d$d�e�d�d/d0����Z#eejj$�eejj%d$d$d�e�d�d1d2����Z&eejj$�eejj%d$d$d�e�d�d3d4����Z'eejj(�eejj%d$d5d�e�d�d6d7����Z)ejjejj%d$d�ed8d9���Z*ejjejj%d$d�ed:d;���Z+eejj$�eejj%dd$d�e�d�d<d=����Z,eejj$�eejj%dd$d�e�d�d>d?����Z-eejj(�eejj%dd5d�e�d�d@dA����Z.eejj(�eejj%d$dBd�e�d�dCdD����Z/ejjejj%dd�edEdF���Z0ejjejj%dd�edGdH���Z1eejj$�eejj%dId$d�e�d�dJdK����Z2eejj$�eejj%dId$d�e�d�dLdM����Z3eejj(�eejj%dId5d�e�d�dNdO����Z4eejj(�eejj%d$dPd�e�d�dQdR����Z5ejjejj%dId�edSdT���Z6ejjejj%dId�edUdV���Z7eejj$�eejj%dd$d�e�d�dWdX����Z8eejj$�eejj%dd$d�e�d�dYdZ����Z9eejj(�eejj%dd5d�e�d�d[d\����Z:eejj(�eejj%d$dBd�e�d�d]d^����Z;ejjejj%dd�ed_d`���Z<ejjejj%dd�edadb���Z=eejj$�eejj%dd$d�e�d�dcdd����Z>eejj$�eejj%dd$d�e�d�dedf����Z?eejj(�eejj%dd5d�e�d�dgdh����Z@eejj(�eejj%d$dBd�e�d�didj����ZAejjejj%dd�edkdl���ZBejjejj%dd�edmdn���ZCeejj�eejjd$d$d�e�d�dodp����ZDeejj�eejjd$d$d�e�d�dqdr����ZEeejj�eejjd$d5d�e�d�dsdt����ZFejjejjd$d�edudv���ZGejjejjd$d�edwdx���ZHeejjI�eejjddyd�e�d�dzd{����ZJeejjI�eejjKddd�e�d�d|d}����ZLeejjI�eejjKd~d�e�d�dd�����ZMejjejjKd~d�ed�d����ZNd�d��ZOeejjI�eejjPddd�e�d�d�d�����ZQeejjI�eejjPd~d�e�d�d�d�����ZRejjejjPd~d�ed�d����ZSd�d��ZTeejj�eejjd$dBd�e�d�d�d�����ZUeejjI�eejjdd�d�e�d�d�d�����ZVeejjI�eejjddd�e�d�d�d�����ZWeejj�eejjd$dBd�e�d�d�d�����ZXeejjI�eejjdeYjZd�e�d�d�d�����Z[eejjI�eejjd$dd�e�d�d�d�����Z\eejj�eejjdd$d�e�d�d�d�����Z]ejjejjdd�ed�d����Z^eejjI�eejjd$dd�e�d�d�d�����Z_eejj�eejjdd$d�e�d�d�d�����Z`ejjejjdd�ed�d����Zaeejj�eejjd$dd�e�d�d�d�����Zbeejj�eejjdd$d�e�d�d�d�����Zcejjejjdd�ed�d����Zdeejj�eejjPd$dBd�e�d�d�d�����Zeeejj�eejjPd$d�d�e�d�d�d�����Zfeejj�eejjKd$dBd�e�d�d�d�����Zgeejj�eejjKd$d�d�e�d�d�d�����Zheejj�eejjKddd�e�d�d�d�����Zieejj�eejjKddd�e�d�d�d�����ZjeejjI�eejjKdd5d�e�d�d�d�����Zkeejj�eejjKddd�e�d�d�d�����Zleejj�eejjKddd�e�d�d�d�����Zmeejj�eejjKddd�e�d�d�d�����Zneejj�eejjKddd�e�d�d�d�����ZoeejjI�eejjKdd5d�e�d�d�d„���ZpeejjI�eejjKddBd�e�d�d�dĄ���ZqejjejjKdd�ed�dƄ��ZrejjejjKdd�ed�dȄ��ZsejjejjKdd�ed�dʄ��ZtejjejjKdd�ed�d̄��Zueejj�eejjKddd�e�d�d�d΄���Zveejj�eejjKddd�e�d�d�dЄ���Zweejj�eejjKddd�e�d�d�d҄���ZxeejjI�eejjKdd5d�e�d�d�dԄ���ZyeejjI�eejjKddBd�e�d�d�dք���ZzejjejjKdd�ed�d؄��Z{ejjejjKdd�ed�dڄ��Z|ejjejjKdd�ed�d܄��Z}eejj�eejjKd�dd�e�d�d�d߄���Z~eejj�eejjKddd�e�d�d�d����ZeejjI�eejjKdd5d�e�d�d�d����Z�eejjI�eejjKddBd�e�d�d�d����Z�ejjejjKd�d�ed�d���Z�ejjejjKdd�ed�d���Z�eejj�eejjKd�dd�e�d�d�d����Z�eejj�eejjKddd�e�d�d�d����Z�eejjI�eejjKdd5d�e�d�d�d����Z�eejjI�eejjKddBd�e�d�d�d����Z�ejjejjKd�d�ed�d���Z�ejjejjKdd�ed�d����Z�eejj�eejjKd�dd�e�d�d�d�����Z�eejj�eejjKd�dd�e�d�d�d�����Z�eejjI�eejjKd�d5d�e�d�d�d�����Z�eejjI�eejjKdd�d�e�d�d��d����Z�ejjejjKd�d�e�d�d�d���Z�ejjejjKd�d�e�d�d���Z�eejj�eejjKd�dd�e�d�d�d����Z�eejj�eejjKddd�e�d�d�d	����Z�eejjI�eejjKdd5d�e�d�d
�d����Z�eejjI�eejjKddBd�e�d�d�d
����Z�ejjejjKd�d�e�d�d�d���Z�ejjejjKdd�e�d�d���Z�eejj�eejjKd�dd�e�d�d�d����Z�eejj�eejjKd�dd�e�d�d�d����Z�eejjI�eejjKd�d5d�e�d�d�d����Z�eejjI�eejjKdd�d�e�d�d�d����Z�ejjejjKd�d�e�d�d�d���Z�ejjejjKd�d�e�d�d���Z�eejj�eejjK�ddd�e�d��d�d ����Z�eejj�eejjKddd�e�d��d!�d"����Z�eejjI�eejjKdd5d�e�d��d#�d$����Z�ejjejjK�dd�e�d��d%�d&���Z�ejjejjKdd�e�d'�d(���Z�eejj�eejjK�d)dd�e�d��d*�d+����Z�eejj�eejjK�d,dd�e�d��d-�d.����Z�eejjI�eejjK�d,d5d�e�d��d/�d0����Z�eejjI�eejjKdd�d�e�d��d1�d2����Z�ejjejjK�d)d�e�d��d3�d4���Z�ejjejjK�d,d�e�d5�d6���Z�eejj�eejjKd�dd�e�d��d7�d8����Z�eejj�eejjKddd�e�d��d9�d:����Z�eejjI�eejjKdd5d�e�d�d;�d<����Z�eejjI�eejjKddBd�e�d�d=�d>����Z�ejjejjKd�d�e�d�d?�d@���Z�ejjejjKdd�e�dA�dB���Z�eejj�eejjKddd�e�d�dC�dD����Z�eejj�eejjKddd�e�d�dE�dF����Z�eejjI�eejjKdd5d�e�d�dG�dH����Z�ejjejjKdd�e�dI�dJ���Z�ejjejjKdd�e�dK�dL���Z�eejj��e�ejj��eejj�d�d$d�e�d�dM�dN�����Z�eejj��e�ejj��eejj�d�d$d�e�d�dO�dP�����Z�eejj��e�ejj��eejj�d�d5d�e�d�dQ�dR�����Z�eejj��e�ejj��eejj�ddBd�e�d	�dS�dT�����Z�eejj��e�ejj��eejj�d$�dUd�e�d
�dV�dW�����Z�e�ejj��ejjejj�d�d�e�dX�dY����Z�e�ejj��ejjejj�d�d�e�dZ�d[����Z�eejj��e�ejj��eejj��d\d$d�e�d�d]�d^�����Z�eejj��e�ejj��eejj��d\d$d�e�d�d_�d`�����Z�eejj��e�ejj��eejj�d�d$d�e�d
�da�db�����Z�eejj��e�ejj��eejj��d\d5d�e�d�dc�dd�����Z�eejj��e�ejj��eejj�d��ded�e�d�df�dg�����Z�eejj��e�ejj��eejj�d$�dhd�e�d�di�dj�����Z�e�ejj��ejjejj��d\d�e�dk�dl����Z�e�ejj��ejjejj��d\d�e�dm�dn����Z�eejj��e�ejj��eejj��dodd�e�d�dp�dq�����Z�eejj��e�ejj��eejj��dod$d�e�d�dr�ds�����Z�eejj��e�ejj��eejj��dod$d�e�d�dt�du�����Z�eejj��e�ejj��eejj��dod5d�e�d�dv�dw�����Z�eejj��e�ejj��eejj�d$�dxd�e�d�dy�dz�����Z�eejj��e�ejj��eejj�d$d$d�e�d�d{�d|�����Z�eejj��e�ejj��eejj�dd�d�e�d�d}�d~�����Z�e�ejj��ejjejj��dod�e�d�d�����Z�e�ejj��ejjejj��dod�e�d��d�����Z�eejjσeejjd$d$d�e�d�d��d�����Z�eejj�eejj�dd5d�e�d�d��d�����Z�eejj�eejj�d$dBd�e�d�d��d�����Z�eejjI�eejj�de�jZd�e�d�d��d�����Z�eejj�eejj�dd$d�e�d�d��d�����Z�eejj�eejj�dd$d�e�d�d��d�����Z�eejj�eejj�dd5d�e�d�d��d�����Z�eejj�eejj�ddBd�e�d�d��d�����Z�eejj�eejjѐdod�e�d �d��d�����Z�ejjejj�dd�e�d��d����Z�ejjejj�dd�e�d��d����Z�eejj�eejjd$dBd�e�d!�d��d�����Z�eejjI�eejjde�jZd�e�d"�d��d�����Z߇Z�S(#rzFirewallD main classTcs�t�|_|��tjjjdd�t��}tjj	t
jj|d�}tt
|��|t
jj�||_t
jj|_t|t
jj�t|jj
|jt
jj�|_
dS)NT)Zset_as_default)�bus)r�fw�start�dbusZmainloopZglibZ
DBusGMainLoop�	SystemBus�serviceZBusNamer�DBUS_INTERFACE�superr�__init__Z	DBUS_PATH�busname�pathrrZDBUS_PATH_CONFIG)�selfr#�name��	__class__��=/usr/lib/python3.9/site-packages/firewall/server/firewalld.pyr+Hs
�zFirewallD.__init__cCs|��dS�N)�stop�r.r2r2r3�__del__YszFirewallD.__del__cCst�d�i|_|j��S)Nzstart())r�debug1Z	_timeoutsr$r%r6r2r2r3r%\s
zFirewallD.startcCst�d�|j��S)Nzstop())rr8r$r5r6r2r2r3r5ds
zFirewallD.stopcCs�|jj��r�|dur"t�d�dSt��}t||�}|jj�d|�rHdSt	||�}|jj�d|�rfdSt
|�}|jj�d|�r�dSt||�}|jj�d|�r�dStt
jd��dS)Nz&Lockdown not possible, sender not set.�context�uid�user�commandzlockdown is enabled)r$�policies�query_lockdownr�errorr&r'rZaccess_checkrrrr"r!Z
ACCESS_DENIED)r.�senderr#r9r:r;r<r2r2r3�accessCheckms$



zFirewallD.accessCheckcCsr|dkrt�tj�S|dkr6t�dtjjtjjf�S|dkrNt�|j���S|dkrht�|j�	d��S|dkr�t�
|jjd�S|d	kr�t�|j�	d
��S|dkr�t�|jjdkr�d
nd�S|dkr�t�
|jj
d�S|dk�r�t�|jj�S|dk�rt�|jj�S|dk�rt�
|jjd�S|dk�r2t�d
�S|dk�rHt�id�S|dk�r^t�id�Stj�d|��dS)N�version�interface_versionz%d.%d�state�IPv4�ipv4�
IPv4ICMPTypes�s�IPv6�ipv6�
IPv6_rpfilter�noFT�
IPv6ICMPTypes�BRIDGEr�
IPSetTypes�nf_conntrack_helper_setting�nf_conntrack_helpers�sas�nf_nat_helpers�Dorg.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_property�sF�






��zFirewallD._get_property�ss�v)�in_signature�
out_signatureNcCs~t|t�}t|t�}t�d||�|tjjkr8|�|�S|tjjtjj	tjj
tjjfvrjtj�
d|��ntj�
d|��dS)NzGet('%s', '%s')rT�Jorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist)r�strrr8rr&r)rY�DBUS_INTERFACE_ZONE�DBUS_INTERFACE_DIRECT�DBUS_INTERFACE_POLICIES�DBUS_INTERFACE_IPSETrWrX)r.�interface_name�
property_namer@r2r2r3�Get�s(


�����z
FirewallD.GetrHza{sv}cCs�t|t�}t�d|�i}|tjjkr@dD]}|�|�||<q*n2|tjjtjj	tjj
tjjfvrbntj�
d|��tj|dd�S)NzGetAll('%s')�rBrCrDrErIrKrNrrOrPrQrSrGrMr^�sv�Z	signature)rr_rr8rr&r)rYr`rarbrcrWrXrV)r.rdr@�ret�xr2r2r3�GetAll�s$
���zFirewallD.GetAllZssv)r\cCs�t|t�}t|t�}t|�}t�d|||�|�|�|tjjkrn|dvr\tj�	d|��q�tj�	d|��nB|tjj
tjjtjjtjj
fvr�tj�	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@r2r2r3�Set�sD


�
���������z
FirewallD.Setzsa{sv}asricCs.t|t�}t|�}t|�}t�d|||�dS)Nz#PropertiesChanged('%s', '%s', '%s'))rr_rr8)r.rdZchanged_propertiesZinvalidated_propertiesr2r2r3�PropertiesChangeds
�zFirewallD.PropertiesChanged)r]cs`t�d�tt|��|j|j���}t||t	j
j�}t	j
jfD]}t
|||t�jt�j�}q>|S)NzIntrospect())rZdebug2r*r�
Introspectr-r,Zget_busrrr&r)rarrZ
deprecatedr)r.r@�data�	interfacer0r2r3ros
���zFirewallD.Introspect�cCs*t�d�|j��|j��|��dS)z#Reload the firewall rules.
        zreload()N�rr8r$�reloadr�Reloaded�r.r@r2r2r3rt*s


zFirewallD.reloadcCs,t�d�|j�d�|j��|��dS)z�Completely reload the firewall.

        Completely reload the firewall: Stops firewall, unloads modules and
        starts the firewall again.
        zcompleteReload()TNrsrvr2r2r3�completeReload9s


zFirewallD.completeReloadcCst�d�dS)Nz
Reloaded()�rr8r6r2r2r3ruIszFirewallD.ReloadedcCs"t�d�|jj��|��dS)zbreset to firewall's builtin defaults.
        Reloads firewalld to apply changes properly
        zfirewalld.reset_to_defaults()N)rr8r$rZreset_defaultsrtrvr2r2r3�resetToDefaultsNs
zFirewallD.resetToDefaultscCst�d�t|j�dS)z&Check permanent configuration
        zcheckPermanentConfig()N)rr8rr$rvr2r2r3�checkPermanentConfigYs
zFirewallD.checkPermanentConfigcCs�t�d�|jjdkr"ttjd��d}|j��}|jj	�
�D]�}|�|�}zj||vr�|j�|�}|�
�|kr�t�d|�|�|�q�t�d|�nt�d|�|j�||�Wq<ty�}z"t�d||f�d	}WYd
}~q<d
}~00q<|j��}|jj��D]�}|�|�}zn||v�rf|j�|�}|�
�|k�rVt�d|�|�|�nt�d|�nt�d
|�|j�||�Wn<t�y�}z"t�d||f�d	}WYd
}~n
d
}~00�q|j��}|jj��D]�}zx|�|�}||v�r:|j�|�}|�
�|k�r*t�d|�|�|�nt�d|�nt�d|�|j�||�Wn<t�y�}z"t�d||f�d	}WYd
}~n
d
}~00�q�|j��}|jj� �D�]h}|�!|�}t"t#�$|��}d}	|�%�D]4}
|
|jj&v�r�t�d||
f�|�'|
�d	}	�q�|�%�D]H}
z,t(|
�}|�rFt)||��rF|�'|
�d	}	Wnt�y\Yn0�q|	�rp|�*�}|�%�D]}
t+||
��qxzP||v�r�|j�,|�}t�d|�|�-|�nt�d|�|j�.||�Wn<t�y}z"t�d||f�d	}WYd
}~n
d
}~00�q�|j�/�}|jj0�1�D]�}|�2|�}zB||v�rd|j�3|�}|�|�nt�d|�|j�4||�Wn<t�y�}z"t�d||f�d	}WYd
}~n
d
}~00�q2|j�5�}|jj6�7�D]�}|�8|�}zn||v�r8|j�9|�}|�
�|k�r(t�d|�|�|�nt�d|�nt�d|�|j�:||�Wn<t�y�}z"t�d||f�d	}WYd
}~n
d
}~00�q�|jj;�<�|jj;�=�|jj;�>�f}z6|j�
�|k�r�t�d�|j�|�n
t�d�Wn8t�y(}zt�d|�d	}WYd
}~n
d
}~00|jj?j@�A�}z6|j�
�|k�rbt�d �|j�B|�n
t�d!�Wn8t�y�}zt�d"|�d	}WYd
}~n
d
}~00|�r�ttjC��d
S)#z-Make runtime configuration permanent
        zcopyRuntimeToPermanent()ZFAILEDz�Saving 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_services�getServiceSettingsZgetServiceByNameZgetSettings�update�
addService�	Exception�warningZgetIcmpTypeNames�icmptype�
get_icmptypes�getIcmpTypeSettingsZgetIcmpTypeByNameZaddIcmpTypeZ
getIPSetNames�ipset�
get_ipsets�getIPSetSettingsZgetIPSetByNameZaddIPSetZgetZoneNames�zone�	get_zones�getZoneSettings2r�copy�deepcopy�
getInterfacesZ_nm_assigned_interfaces�removeInterfacerrZgetSettingsDictr Z
getZoneByNameZupdate2ZaddZone2ZgetPolicyNames�policy�"get_policies_not_derived_from_zone�getPolicySettingsZgetPolicyByNameZ	addPolicyZgetHelperNames�helper�get_helpers�getHelperSettingsZgetHelperByNameZ	addHelper�direct�get_all_chains�
get_all_rules�get_all_passthroughsr=�lockdown_whitelist�
export_configZsetLockdownWhitelistZRT_TO_PERM_FAILED)r.r@r?Zconfig_namesr/ZconfZconf_obj�e�settingsZchangedrqZ
connectionr2r2r3�runtimeToPermanentesF
�

��


��


��





��


��


��


�
�
��zFirewallD.runtimeToPermanentcCs,t�d�|�|�|jj��|��dS)z!Enable lockdown policies
        zpolicies.enableLockdown()N)rr8rAr$r=Zenable_lockdown�LockdownEnabledrvr2r2r3�enableLockdown7s

zFirewallD.enableLockdowncCs,t�d�|�|�|jj��|��dS)z"Disable lockdown policies
        zpolicies.disableLockdown()N)rr8rAr$r=Zdisable_lockdown�LockdownDisabledrvr2r2r3�disableLockdownCs

zFirewallD.disableLockdown�bcCst�d�|jj��S)z,Returns True if lockdown is enabled
        zpolicies.queryLockdown())rr8r$r=r>rvr2r2r3�
queryLockdownOs
zFirewallD.queryLockdowncCst�d�dS)NzLockdownEnabled()rxr6r2r2r3r�ZszFirewallD.LockdownEnabledcCst�d�dS)NzLockdownDisabled()rxr6r2r2r3r�_szFirewallD.LockdownDisabledcCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)�Add lockdown command
        z*policies.addLockdownWhitelistCommand('%s')N)
rr_rr8rAr$r=r�Zadd_command�LockdownWhitelistCommandAdded�r.r<r@r2r2r3�addLockdownWhitelistCommandhs


z%FirewallD.addLockdownWhitelistCommandcCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)z Remove lockdown command
        z-policies.removeLockdownWhitelistCommand('%s')N)
rr_rr8rAr$r=r�Zremove_command�LockdownWhitelistCommandRemovedr�r2r2r3�removeLockdownWhitelistCommandus


z(FirewallD.removeLockdownWhitelistCommandcCs(t|t�}t�d|�|jjj�|�S)zQuery lockdown command
        z,policies.queryLockdownWhitelistCommand('%s'))rr_rr8r$r=r�Zhas_commandr�r2r2r3�queryLockdownWhitelistCommand�s
z'FirewallD.queryLockdownWhitelistCommand�ascCst�d�|jjj��S)r�z'policies.getLockdownWhitelistCommands())rr8r$r=r�Zget_commandsrvr2r2r3�getLockdownWhitelistCommands�s
z&FirewallD.getLockdownWhitelistCommandscCst�d|�dS)Nz#LockdownWhitelistCommandAdded('%s')rx�r.r<r2r2r3r��sz'FirewallD.LockdownWhitelistCommandAddedcCst�d|�dS)Nz%LockdownWhitelistCommandRemoved('%s')rxr�r2r2r3r��sz)FirewallD.LockdownWhitelistCommandRemoved�icCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)�Add lockdown uid
        z&policies.addLockdownWhitelistUid('%s')N)
r�intrr8rAr$r=r�Zadd_uid�LockdownWhitelistUidAdded�r.r:r@r2r2r3�addLockdownWhitelistUid�s


z!FirewallD.addLockdownWhitelistUidcCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)zRemove lockdown uid
        z)policies.removeLockdownWhitelistUid('%s')N)
rr�rr8rAr$r=r�Z
remove_uid�LockdownWhitelistUidRemovedr�r2r2r3�removeLockdownWhitelistUid�s


z$FirewallD.removeLockdownWhitelistUidcCs(t|t�}t�d|�|jjj�|�S)zQuery lockdown uid
        z(policies.queryLockdownWhitelistUid('%s'))rr�rr8r$r=r�Zhas_uidr�r2r2r3�queryLockdownWhitelistUid�s
z#FirewallD.queryLockdownWhitelistUidZaicCst�d�|jjj��S)r�z#policies.getLockdownWhitelistUids())rr8r$r=r�Zget_uidsrvr2r2r3�getLockdownWhitelistUids�s
z"FirewallD.getLockdownWhitelistUidscCst�d|�dS)NzLockdownWhitelistUidAdded(%d)rx�r.r:r2r2r3r��sz#FirewallD.LockdownWhitelistUidAddedcCst�d|�dS)NzLockdownWhitelistUidRemoved(%d)rxr�r2r2r3r��sz%FirewallD.LockdownWhitelistUidRemovedcCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)�Add lockdown user
        z'policies.addLockdownWhitelistUser('%s')N)
rr_rr8rAr$r=r�Zadd_user�LockdownWhitelistUserAdded�r.r;r@r2r2r3�addLockdownWhitelistUser�s


z"FirewallD.addLockdownWhitelistUsercCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)zRemove lockdown user
        z*policies.removeLockdownWhitelistUser('%s')N)
rr_rr8rAr$r=r�Zremove_user�LockdownWhitelistUserRemovedr�r2r2r3�removeLockdownWhitelistUser�s


z%FirewallD.removeLockdownWhitelistUsercCs(t|t�}t�d|�|jjj�|�S)zQuery lockdown user
        z)policies.queryLockdownWhitelistUser('%s'))rr_rr8r$r=r�Zhas_userr�r2r2r3�queryLockdownWhitelistUser�s
z$FirewallD.queryLockdownWhitelistUsercCst�d�|jjj��S)r�z$policies.getLockdownWhitelistUsers())rr8r$r=r�Z	get_usersrvr2r2r3�getLockdownWhitelistUserss
z#FirewallD.getLockdownWhitelistUserscCst�d|�dS)Nz LockdownWhitelistUserAdded('%s')rx�r.r;r2r2r3r�sz$FirewallD.LockdownWhitelistUserAddedcCst�d|�dS)Nz"LockdownWhitelistUserRemoved('%s')rxr�r2r2r3r�sz&FirewallD.LockdownWhitelistUserRemovedcCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)�Add lockdown context
        z*policies.addLockdownWhitelistContext('%s')N)
rr_rr8rAr$r=r�Zadd_context�LockdownWhitelistContextAdded�r.r9r@r2r2r3�addLockdownWhitelistContexts


z%FirewallD.addLockdownWhitelistContextcCs@t|t�}t�d|�|�|�|jjj�|�|�	|�dS)z Remove lockdown context
        z-policies.removeLockdownWhitelistContext('%s')N)
rr_rr8rAr$r=r�Zremove_context�LockdownWhitelistContextRemovedr�r2r2r3�removeLockdownWhitelistContext,s


z(FirewallD.removeLockdownWhitelistContextcCs(t|t�}t�d|�|jjj�|�S)zQuery lockdown context
        z,policies.queryLockdownWhitelistContext('%s'))rr_rr8r$r=r�Zhas_contextr�r2r2r3�queryLockdownWhitelistContext9s
z'FirewallD.queryLockdownWhitelistContextcCst�d�|jjj��S)r�z'policies.getLockdownWhitelistContexts())rr8r$r=r�Zget_contextsrvr2r2r3�getLockdownWhitelistContextsEs
z&FirewallD.getLockdownWhitelistContextscCst�d|�dS)Nz#LockdownWhitelistContextAdded('%s')rx�r.r9r2r2r3r�Psz'FirewallD.LockdownWhitelistContextAddedcCst�d|�dS)Nz%LockdownWhitelistContextRemoved('%s')rxr�r2r2r3r�Usz)FirewallD.LockdownWhitelistContextRemovedcCs*t�d�|�|�|j��|��dS)zfEnable panic mode.

        All ingoing and outgoing connections and packets will be blocked.
        zenablePanicMode()N)rr8rAr$Zenable_panic_mode�PanicModeEnabledrvr2r2r3�enablePanicMode^s	


zFirewallD.enablePanicModecCs*t�d�|�|�|j��|��dS)z�Disable panic mode.

        Enables normal mode: Allowed ingoing and outgoing connections
        will not be blocked anymore
        zdisablePanicMode()N)rr8rAr$Zdisable_panic_mode�PanicModeDisabledrvr2r2r3�disablePanicModels



zFirewallD.disablePanicModecCst�d�|j��S)NzqueryPanicMode())rr8r$Zquery_panic_modervr2r2r3�queryPanicMode{s
zFirewallD.queryPanicModecCst�d�dS)NzPanicModeEnabled()rxr6r2r2r3r��szFirewallD.PanicModeEnabledcCst�d�dS)NzPanicModeDisabled()rxr6r2r2r3r��szFirewallD.PanicModeDisabledz&(sssbsasa(ss)asba(ssss)asasasasa(ss)b)cCs$t|t�}t�d|�|jj�|�S)NzgetZoneSettings(%s))rr_rr8r$r�Zget_config_with_settings�r.r�r@r2r2r3�getZoneSettings�s
zFirewallD.getZoneSettingscCs$t|t�}t�d|�|jj�|�S)NzgetZoneSettings2(%s))rr_rr8r$r��get_config_with_settings_dictr�r2r2r3r��s
zFirewallD.getZoneSettings2zsa{sv}cCsnt|t�}t�d|�|�|�|jj�|t|�|�|�||�d|vrj|ddkrjt	�
|d|j|�dS)NzsetZoneSettings2(%s)�timeoutr)rr_rr8rAr$r��set_config_with_settings_dict�ZoneUpdatedr�timeout_add_seconds�ZoneUpdatedCurrentSettings)r.r�r�r@r2r2r3�setZoneSettings2�s

�zFirewallD.setZoneSettings2cCst�d||f�dS)Nzzone.ZoneUpdated('%s', '%s')rx)r.r�r�r2r2r3r��szFirewallD.ZoneUpdatedcCs|�||jj�|��dSr4)r�r$r�r��r.r�r2r2r3r��sz$FirewallD.ZoneUpdatedCurrentSettingscCs$t|t�}t�d|�|jj�|�S)Nzpolicy.getPolicySettings(%s))rr_rr8r$r�r�)r.r�r@r2r2r3r��s
zFirewallD.getPolicySettingscCsnt|t�}t�d|�|�|�|jj�|t|�|�|�||�d|vrj|ddkrjt	�
|d|j|�dS)Nzpolicy.setPolicySettings(%s)r�r)rr_rr8rAr$r�r��
PolicyUpdatedrr��PolicyUpdatedCurrentSettings)r.r�r�r@r2r2r3�setPolicySettings�s

�zFirewallD.setPolicySettingscCst�d||f�dS)Nz policy.PolicyUpdated('%s', '%s')rx)r.r�r�r2r2r3r��szFirewallD.PolicyUpdatedcCs|�||jj�|��dSr4)r�r$r�r�)r.r�r2r2r3r��sz&FirewallD.PolicyUpdatedCurrentSettingscCst�d�|jj��S)NzlistServices())rr8r$r(r|rvr2r2r3�listServices�s
zFirewallD.listServicesz(sssa(ss)asa{ss}asa(ss))c	Cs�t|t�}t�d|�|jj�|�}|��}g}td�D]P}|j	|d|vrp|�
t�t
||j	|d���q8|�
||j	|d�q8t|�S)NzgetServiceSettings(%s)�r)rr_rr8r$r(�get_service�export_config_dict�rangeZIMPORT_EXPORT_STRUCTURE�appendr�r��getattr�tuple)r.r(r@�objZ	conf_dictZ	conf_listr�r2r2r3r}�s
"zFirewallD.getServiceSettingscCs,t|t�}t�d|�|jj�|�}|��S)NzgetServiceSettings2(%s))rr_rr8r$r(r�r�)r.r(r@r�r2r2r3�getServiceSettings2�s
zFirewallD.getServiceSettings2cCst�d�|jj��S)NzlistIcmpTypes())rr8r$r�r�rvr2r2r3�
listIcmpTypess
zFirewallD.listIcmpTypescCs(t|t�}t�d|�|jj�|���S)NzgetIcmpTypeSettings(%s))rr_rr8r$r�Zget_icmptyper�)r.r�r@r2r2r3r�s
zFirewallD.getIcmpTypeSettingscCst�d�|j��S)NzgetLogDenied())rr8r$Zget_log_deniedrvr2r2r3�getLogDenied s
zFirewallD.getLogDeniedcCsXt|t�}t�d|�|�|�|j�|�|�|�|j��|j	��|�
�dS)NzsetLogDenied('%s'))rr_rr8rAr$Zset_log_denied�LogDeniedChangedrtrru�r.�valuer@r2r2r3�setLogDenied)s




zFirewallD.setLogDeniedcCst�d|�dS)NzLogDeniedChanged('%s')rx�r.r�r2r2r3r�9szFirewallD.LogDeniedChangedcCst�d�dS)NzgetAutomaticHelpers()rLrxrvr2r2r3�getAutomaticHelpersBs
zFirewallD.getAutomaticHelperscCs&t|t�}t�d|�|�|�dS)NzsetAutomaticHelpers('%s'))rr_rr8rAr�r2r2r3�setAutomaticHelpersMs
zFirewallD.setAutomaticHelperscCst�d|�dS)NzAutomaticHelpersChanged('%s')rxr�r2r2r3�AutomaticHelpersChangedYsz!FirewallD.AutomaticHelpersChangedcCst�d�|j��S)NzgetDefaultZone())rr8r$Zget_default_zonervr2r2r3�getDefaultZonebs
zFirewallD.getDefaultZonecCs<t|t�}t�d|�|�|�|j�|�|�|�dS)NzsetDefaultZone('%s'))rr_rr8rAr$Zset_default_zone�DefaultZoneChangedr�r2r2r3�setDefaultZoneks


zFirewallD.setDefaultZonecCst�d|�dS)NzDefaultZoneChanged('%s')rxr�r2r2r3r�wszFirewallD.DefaultZoneChangedcCst�d�|jj��S)Nzpolicy.getPolicies())rr8r$r�r�rvr2r2r3�getPolicies�s
zFirewallD.getPoliciesz
a{sa{sas}}cCsXt�d�i}|jj��D]8}i||<|jj�|�||d<|jj�|�||d<q|S)Nzpolicy.getActivePolicies()Z
ingress_zonesZegress_zones)rr8r$r�Z)get_active_policies_not_derived_from_zoneZlist_ingress_zonesZlist_egress_zones)r.r@r=r�r2r2r3�getActivePolicies�s
zFirewallD.getActivePoliciescCst�d�|jj��S)Nzzone.getZones())rr8r$r�r�rvr2r2r3�getZones�s
zFirewallD.getZonescCs�t�d�i}|jj��D]l}|jj�|�}|jj�|�}t|�t|�dkri||<t|�dkrn|||d<t|�dkr|||d<q|S)Nzzone.getActiveZones()r�
interfaces�sources)rr8r$r�r��list_interfaces�list_sources�len)r.r@Zzonesr�r�r�r2r2r3�getActiveZones�s
zFirewallD.getActiveZonescCs2t|t�}t�d|�|jj�|�}|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')rr)rr_rr8r$r�Zget_zone_of_interface)r.rqr@r�r2r2r3�getZoneOfInterface�s
zFirewallD.getZoneOfInterfacecCs2t|t�}t�d|�|jj�|�}|r.|SdS)Nzzone.getZoneOfSource('%s')rr)rr_rr8r$r�Zget_zone_of_source)r.�sourcer@r�r2r2r3�getZoneOfSource�s
zFirewallD.getZoneOfSourcecCsdS)NFr2r�r2r2r3�isImmutable�szFirewallD.isImmutablecCsRt|t�}t|t�}t�d||f�|�|�|jj�|||�}|�||�|S)zPAdd an interface to a zone.
        If zone is empty, use default zone.
        zzone.addInterface('%s', '%s'))	rr_rr8rAr$r�Z
add_interface�InterfaceAdded�r.r�rqr@�_zoner2r2r3�addInterface�s


zFirewallD.addInterfacecCs"t|t�}t|t�}|�|||�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�rqr@r2r2r3�
changeZone�s


zFirewallD.changeZonecCsRt|t�}t|t�}t�d||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$r�Zchange_zone_of_interface�ZoneOfInterfaceChangedrr2r2r3rs


zFirewallD.changeZoneOfInterfacecCsPt|t�}t|t�}t�d||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$r�Zremove_interface�InterfaceRemovedrr2r2r3r�s


zFirewallD.removeInterfacecCs6t|t�}t|t�}t�d||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$r�Zquery_interfacerr2r2r3�queryInterface's

zFirewallD.queryInterfacecCs&t|t�}t�d|�|jj�|�S)z]Return the list of interfaces of a zone.
        If zone is empty, use default zone.
        zzone.getInterfaces('%s'))rr_rr8r$r�r�r�r2r2r3r�4s

zFirewallD.getInterfacescCst�d||f�dS)Nzzone.InterfaceAdded('%s', '%s')rx�r.r�rqr2r2r3rBszFirewallD.InterfaceAddedcCst�d||f�dS)z,
        This signal is deprecated.
        zzone.ZoneChanged('%s', '%s')Nrxrr2r2r3�ZoneChangedGszFirewallD.ZoneChangedcCs"t�d||f�|�||�dS)Nz'zone.ZoneOfInterfaceChanged('%s', '%s'))rr8rrr2r2r3rOs�z FirewallD.ZoneOfInterfaceChangedcCst�d||f�dS)Nz!zone.InterfaceRemoved('%s', '%s')rxrr2r2r3r	VszFirewallD.InterfaceRemovedcCsRt|t�}t|t�}t�d||f�|�|�|jj�|||�}|�||�|S)zLAdd a source to a zone.
        If zone is empty, use default zone.
        zzone.addSource('%s', '%s'))	rr_rr8rAr$r�Z
add_source�SourceAdded�r.r�r�r@rr2r2r3�	addSource_s


zFirewallD.addSourcecCsRt|t�}t|t�}t�d||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$r�Zchange_zone_of_source�ZoneOfSourceChangedrr2r2r3�changeZoneOfSourceps


zFirewallD.changeZoneOfSourcecCsPt|t�}t|t�}t�d||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$r�Z
remove_source�
SourceRemovedrr2r2r3�removeSource�s


zFirewallD.removeSourcecCs6t|t�}t|t�}t�d||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$r�Zquery_source)r.r�r�r@r2r2r3�querySource�s

zFirewallD.querySourcecCs&t|t�}t�d|�|jj�|�S)zZReturn the list of sources of a zone.
        If zone is empty, use default zone.
        zzone.getSources('%s'))rr_rr8r$r�r�r�r2r2r3�
getSources�s

zFirewallD.getSourcescCst�d||f�dS)Nzzone.SourceAdded('%s', '%s')rx�r.r�r�r2r2r3r
�szFirewallD.SourceAddedcCst�d||f�dS)Nz$zone.ZoneOfSourceChanged('%s', '%s')rxrr2r2r3r�szFirewallD.ZoneOfSourceChangedcCst�d||f�dS)Nzzone.SourceRemoved('%s', '%s')rxrr2r2r3r�szFirewallD.SourceRemovedZssicCsxt|t�}t|t�}t|t�}t�d||f�t|d�}|jj�|||�}|dkrft	�
||j||�|�|||�|S)Nzzone.addRichRule('%s', '%s')�Zrule_strr)
rr_r�rr8rr$r��add_rulerr��RichRuleRemoved�
RichRuleAdded)r.r��ruler�r@r�rr2r2r3�addRichRule�s



zFirewallD.addRichRulecCsPt|t�}t|t�}t�d||f�t|d�}|jj�||�}|�||�|S)Nzzone.removeRichRule('%s', '%s')r)	rr_rr8rr$r��remove_ruler)r.r�rr@r�rr2r2r3�removeRichRule�s


zFirewallD.removeRichRulecCs@t|t�}t|t�}t�d||f�t|d�}|jj�||�S)Nzzone.queryRichRule('%s', '%s')r)rr_rr8rr$r��
query_rule)r.r�rr@r�r2r2r3�
queryRichRule�s



zFirewallD.queryRichRulecCs&t|t�}t�d|�|jj�|�S)Nzzone.getRichRules('%s'))rr_rr8r$r�Z
list_rulesr�r2r2r3�getRichRules�s
zFirewallD.getRichRulescCst�d|||f�dS)Nz"zone.RichRuleAdded('%s', '%s', %d)rx)r.r�rr�r2r2r3r�szFirewallD.RichRuleAddedcCst�d||f�dS)Nz zone.RichRuleRemoved('%s', '%s')rx)r.r�rr2r2r3r�szFirewallD.RichRuleRemovedcCs|t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�||||�}|dkrjt	�
||j||�|�|||�|S)Nzzone.addService('%s', '%s', %d)r)
rr_r�rr8rAr$r�Zadd_servicerr��ServiceRemoved�ServiceAdded)r.r�r(r�r@rr2r2r3rs



zFirewallD.addServicecCsPt|t�}t|t�}t�d||f�|�|�|jj�||�}|�||�|S)Nzzone.removeService('%s', '%s'))	rr_rr8rAr$r�Zremove_servicer")r.r�r(r@rr2r2r3�
removeServices


zFirewallD.removeServicecCs6t|t�}t|t�}t�d||f�|jj�||�S)Nzzone.queryService('%s', '%s'))rr_rr8r$r�Z
query_service)r.r�r(r@r2r2r3�queryService(s

zFirewallD.queryServicecCs&t|t�}t�d|�|jj�|�S)Nzzone.getServices('%s'))rr_rr8r$r�Z
list_servicesr�r2r2r3�getServices3s
zFirewallD.getServicescCst�d|||f�dS)Nz!zone.ServiceAdded('%s', '%s', %d)rx)r.r�r(r�r2r2r3r#?s�zFirewallD.ServiceAddedcCst�d||f�dS)Nzzone.ServiceRemoved('%s', '%s')rx)r.r�r(r2r2r3r"EszFirewallD.ServiceRemovedZsssicCs�t|t�}t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�|||||�}|dkrxt	�
||j|||�|�||||�|S)Nzzone.addPort('%s', '%s', '%s')r)
rr_r�rr8rAr$r�Zadd_portrr��PortRemoved�	PortAdded�r.r��port�protocolr�r@rr2r2r3�addPortNs



�
zFirewallD.addPortZssscCs`t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�|||�}|�|||�|S)Nz!zone.removePort('%s', '%s', '%s'))	rr_rr8rAr$r�Zremove_portr'�r.r�r*r+r@rr2r2r3�
removePortcs


�
zFirewallD.removePortcCsDt|t�}t|t�}t|t�}t�d|||f�|jj�|||�S)Nz zone.queryPort('%s', '%s', '%s'))rr_rr8r$r�Z
query_port�r.r�r*r+r@r2r2r3�	queryPortts



zFirewallD.queryPortZaascCs&t|t�}t�d|�|jj�|�S)Nzzone.getPorts('%s'))rr_rr8r$r�Z
list_portsr�r2r2r3�getPorts�s
zFirewallD.getPortsrcCst�d||||f�dS)Nz$zone.PortAdded('%s', '%s', '%s', %d)rx�r.r�r*r+r�r2r2r3r(�s
�zFirewallD.PortAddedcCst�d|||f�dS)Nz"zone.PortRemoved('%s', '%s', '%s')rx�r.r�r*r+r2r2r3r'�s�zFirewallD.PortRemovedcCszt|t�}t|t�}t|t�}t�d||f�|�|�|jj�||||�}|dkrht	�
||j||�|�|||�|S)Nzzone.enableProtocol('%s', '%s')r)
rr_r�rr8rAr$r�Zadd_protocolrr��ProtocolRemoved�
ProtocolAdded)r.r�r+r�r@rr2r2r3�addProtocol�s



zFirewallD.addProtocolcCsPt|t�}t|t�}t�d||f�|�|�|jj�||�}|�||�|S)Nzzone.removeProtocol('%s', '%s'))	rr_rr8rAr$r�Zremove_protocolr4)r.r�r+r@rr2r2r3�removeProtocol�s


zFirewallD.removeProtocolcCs6t|t�}t|t�}t�d||f�|jj�||�S)Nzzone.queryProtocol('%s', '%s'))rr_rr8r$r�Zquery_protocol)r.r�r+r@r2r2r3�
queryProtocol�s

zFirewallD.queryProtocolcCs&t|t�}t�d|�|jj�|�S)Nzzone.getProtocols('%s'))rr_rr8r$r�Zlist_protocolsr�r2r2r3�getProtocols�s
zFirewallD.getProtocolscCst�d|||f�dS)Nz"zone.ProtocolAdded('%s', '%s', %d)rx)r.r�r+r�r2r2r3r5�s�zFirewallD.ProtocolAddedcCst�d||f�dS)Nz zone.ProtocolRemoved('%s', '%s')rx)r.r�r+r2r2r3r4�szFirewallD.ProtocolRemovedcCs�t|t�}t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�|||||�}|dkrxt	�
||j|||�|�||||�|S)Nz$zone.addSourcePort('%s', '%s', '%s')r)
rr_r�rr8rAr$r�Zadd_source_portrr��SourcePortRemoved�SourcePortAddedr)r2r2r3�
addSourcePort�s"




�
��zFirewallD.addSourcePortcCs`t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�|||�}|�|||�|S)Nz'zone.removeSourcePort('%s', '%s', '%s'))	rr_rr8rAr$r�Zremove_source_portr:r-r2r2r3�removeSourcePort�s



�
zFirewallD.removeSourcePortcCsDt|t�}t|t�}t|t�}t�d|||f�|jj�|||�S)Nz&zone.querySourcePort('%s', '%s', '%s'))rr_rr8r$r�Zquery_source_portr/r2r2r3�querySourcePort
s



�zFirewallD.querySourcePortcCs&t|t�}t�d|�|jj�|�S)Nzzone.getSourcePorts('%s'))rr_rr8r$r�Zlist_source_portsr�r2r2r3�getSourcePortss
zFirewallD.getSourcePortscCst�d||||f�dS)Nz*zone.SourcePortAdded('%s', '%s', '%s', %d)rxr2r2r2r3r;&s
�zFirewallD.SourcePortAddedcCst�d|||f�dS)Nz(zone.SourcePortRemoved('%s', '%s', '%s')rxr3r2r2r3r:,s
�zFirewallD.SourcePortRemoved�sicCsft|t�}t|t�}t�d|�|�|�|jj�|||�}|dkrVt	�
||j|�|�||�|S)Nzzone.addMasquerade('%s')r)
rr_r�rr8rAr$r�Zadd_masqueraderr��MasqueradeRemoved�MasqueradeAdded)r.r�r�r@rr2r2r3�
addMasquerade6s


zFirewallD.addMasqueradecCs>t|t�}t�d|�|�|�|jj�|�}|�|�|S)Nzzone.removeMasquerade('%s'))	rr_rr8rAr$r�Zremove_masqueraderA�r.r�r@rr2r2r3�removeMasqueradeHs


zFirewallD.removeMasqueradecCs&t|t�}t�d|�|jj�|�S)Nzzone.queryMasquerade('%s'))rr_rr8r$r�Zquery_masquerader�r2r2r3�queryMasqueradeVs
zFirewallD.queryMasqueradecCst�d||f�dS)Nzzone.MasqueradeAdded('%s', %d)rx)r.r�r�r2r2r3rB`szFirewallD.MasqueradeAddedcCst�d|�dS)Nzzone.MasqueradeRemoved('%s')rxr�r2r2r3rAeszFirewallD.MasqueradeRemovedZsssssic		Cs�t|t�}t|t�}t|t�}t|t�}t|t�}t|t�}t�d|||||f�|�|�|jj�|||||||�}|dkr�t	�
||j|||||�|�||||||�|S)Nz1zone.addForwardPort('%s', '%s', '%s', '%s', '%s')r)
rr_r�rr8rAr$r�Zadd_forward_portrr��ForwardPortRemoved�ForwardPortAdded)	r.r�r*r+�toport�toaddrr�r@rr2r2r3�addForwardPortns&





�
��zFirewallD.addForwardPortZssssscCs�t|t�}t|t�}t|t�}t|t�}t|t�}t�d|||||f�|�|�|jj�|||||�}|�|||||�|S)Nz4zone.removeForwardPort('%s', '%s', '%s', '%s', '%s'))	rr_rr8rAr$r�Zremove_forward_portrG)r.r�r*r+rIrJr@rr2r2r3�removeForwardPort�s




�
�zFirewallD.removeForwardPortcCs`t|t�}t|t�}t|t�}t|t�}t|t�}t�d|||||f�|jj�|||||�S)Nz3zone.queryForwardPort('%s', '%s', '%s', '%s', '%s'))rr_rr8r$r�Zquery_forward_port)r.r�r*r+rIrJr@r2r2r3�queryForwardPort�s




��zFirewallD.queryForwardPortcCs&t|t�}t�d|�|jj�|�S)Nzzone.getForwardPorts('%s'))rr_rr8r$r�Zlist_forward_portsr�r2r2r3�getForwardPorts�s
zFirewallD.getForwardPortsc	Cst�d||||||f�dS)Nz7zone.ForwardPortAdded('%s', '%s', '%s', '%s', '%s', %d)rx)r.r�r*r+rIrJr�r2r2r3rH�s�zFirewallD.ForwardPortAddedcCst�d|||||f�dS)Nz5zone.ForwardPortRemoved('%s', '%s', '%s', '%s', '%s')rx)r.r�r*r+rIrJr2r2r3rG�s�zFirewallD.ForwardPortRemovedcCszt|t�}t|t�}t|t�}t�d||f�|�|�|jj�||||�}|dkrht	�
||j||�|�|||�|S)Nz zone.enableIcmpBlock('%s', '%s')r)
rr_r�rr8rAr$r�Zadd_icmp_blockrr��IcmpBlockRemoved�IcmpBlockAdded)r.r��icmpr�r@rr2r2r3�addIcmpBlock�s



zFirewallD.addIcmpBlockcCsPt|t�}t|t�}t�d||f�|�|�|jj�||�}|�||�|S)Nz zone.removeIcmpBlock('%s', '%s'))	rr_rr8rAr$r�Zremove_icmp_blockrO)r.r�rQr@rr2r2r3�removeIcmpBlock�s


zFirewallD.removeIcmpBlockcCs6t|t�}t|t�}t�d||f�|jj�||�S)Nzzone.queryIcmpBlock('%s', '%s'))rr_rr8r$r�Zquery_icmp_block)r.r�rQr@r2r2r3�queryIcmpBlock�s

zFirewallD.queryIcmpBlockcCs&t|t�}t�d|�|jj�|�S)Nzzone.getIcmpBlocks('%s'))rr_rr8r$r�Zlist_icmp_blocksr�r2r2r3�
getIcmpBlocks�s
zFirewallD.getIcmpBlockscCst�d|||f�dS)Nz#zone.IcmpBlockAdded('%s', '%s', %d)rx)r.r�rQr�r2r2r3rPs�zFirewallD.IcmpBlockAddedcCst�d||f�dS)Nz!zone.IcmpBlockRemoved('%s', '%s')rx)r.r�rQr2r2r3rOszFirewallD.IcmpBlockRemovedcCs@t|t�}t�d|�|�|�|jj�||�}|�|�|S)Nz zone.addIcmpBlockInversion('%s'))	rr_rr8rAr$r�Zadd_icmp_block_inversion�IcmpBlockInversionAddedrDr2r2r3�addIcmpBlockInversions


zFirewallD.addIcmpBlockInversioncCs>t|t�}t�d|�|�|�|jj�|�}|�|�|S)Nz#zone.removeIcmpBlockInversion('%s'))	rr_rr8rAr$r�Zremove_icmp_block_inversion�IcmpBlockInversionRemovedrDr2r2r3�removeIcmpBlockInversion"s


z"FirewallD.removeIcmpBlockInversioncCs&t|t�}t�d|�|jj�|�S)Nz"zone.queryIcmpBlockInversion('%s'))rr_rr8r$r�Zquery_icmp_block_inversionr�r2r2r3�queryIcmpBlockInversion0s
z!FirewallD.queryIcmpBlockInversioncCst�d|�dS)Nz"zone.IcmpBlockInversionAdded('%s')rxr�r2r2r3rV:sz!FirewallD.IcmpBlockInversionAddedcCst�d|�dS)Nz$zone.IcmpBlockInversionRemoved('%s')rxr�r2r2r3rX?sz#FirewallD.IcmpBlockInversionRemovedcCs`t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�|||�|�|||�dS)Nz!direct.addChain('%s', '%s', '%s'))	rr_rr8rAr$r�Z	add_chain�
ChainAdded�r.�ipv�table�chainr@r2r2r3�addChainJs



zFirewallD.addChaincCs`t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�|||�|�|||�dS)Nz$direct.removeChain('%s', '%s', '%s'))	rr_rr8rAr$r�Zremove_chain�ChainRemovedr\r2r2r3�removeChainYs



zFirewallD.removeChaincCsDt|t�}t|t�}t|t�}t�d|||f�|jj�|||�S)Nz#direct.queryChain('%s', '%s', '%s'))rr_rr8r$r�Zquery_chainr\r2r2r3�
queryChainhs



zFirewallD.queryChaincCs6t|t�}t|t�}t�d||f�|jj�||�S)Nzdirect.getChains('%s', '%s'))rr_rr8r$r�Z
get_chains)r.r]r^r@r2r2r3�	getChainsus

zFirewallD.getChainsza(sss)cCst�d�|jj��S)Nzdirect.getAllChains())rr8r$r�r�rvr2r2r3�getAllChains�s
zFirewallD.getAllChainscCst�d|||f�dS)Nz#direct.ChainAdded('%s', '%s', '%s')rx�r.r]r^r_r2r2r3r[�szFirewallD.ChainAddedcCst�d|||f�dS)Nz%direct.ChainRemoved('%s', '%s', '%s')rxrfr2r2r3ra�s
�zFirewallD.ChainRemovedZsssiasc
Cs�t|t�}t|t�}t|t�}t|t�}tdd�|D��}t�d||||d�|�f�|�|�|jj	�
|||||�|�|||||�dS)Ncss|]}t|t�VqdSr4�rr_��.0r�r2r2r3�	<genexpr>��z$FirewallD.addRule.<locals>.<genexpr>z*direct.addRule('%s', '%s', '%s', %d, '%s')�',')rr_r�r�rr8�joinrAr$r�r�	RuleAdded�r.r]r^r_�priority�argsr@r2r2r3�addRule�s



�
zFirewallD.addRulec
Cs�t|t�}t|t�}t|t�}t|t�}tdd�|D��}t�d||||d�|�f�|�|�|jj	�
|||||�|�|||||�dS)Ncss|]}t|t�VqdSr4rgrhr2r2r3rj�rkz'FirewallD.removeRule.<locals>.<genexpr>z-direct.removeRule('%s', '%s', '%s', %d, '%s')rl)rr_r�r�rr8rmrAr$r�r�RuleRemovedror2r2r3�
removeRule�s



�
zFirewallD.removeRulecCs�t|t�}t|t�}t|t�}t�d|||f�|�|�|jj�|||�D]0\}}|jj�|||||�|�	|||||�qNdS)Nz$direct.removeRules('%s', '%s', '%s'))
rr_rr8rAr$r��	get_rulesrrs)r.r]r^r_r@rprqr2r2r3�removeRules�s



zFirewallD.removeRulesc
Csnt|t�}t|t�}t|t�}t|t�}tdd�|D��}t�d||||d�|�f�|jj�	|||||�S)Ncss|]}t|t�VqdSr4rgrhr2r2r3rj�rkz&FirewallD.queryRule.<locals>.<genexpr>z,direct.queryRule('%s', '%s', '%s', %d, '%s')rl)
rr_r�r�rr8rmr$r�rror2r2r3�	queryRule�s



�zFirewallD.queryRuleza(ias)cCsDt|t�}t|t�}t|t�}t�d|||f�|jj�|||�S)Nz!direct.getRules('%s', '%s', '%s'))rr_rr8r$r�rur\r2r2r3�getRules�s



zFirewallD.getRulesz	a(sssias)cCst�d�|jj��S)Nzdirect.getAllRules())rr8r$r�r�rvr2r2r3�getAllRules�s
zFirewallD.getAllRulesc
Cs"t�d||||d�|�f�dS)Nz,direct.RuleAdded('%s', '%s', '%s', %d, '%s')rl�rr8rm�r.r]r^r_rprqr2r2r3rn�s�zFirewallD.RuleAddedc
Cs"t�d||||d�|�f�dS)Nz.direct.RuleRemoved('%s', '%s', '%s', %d, '%s')rlrzr{r2r2r3rs�s�zFirewallD.RuleRemovedrRc
Cs�t|t�}tdd�|D��}t�d|d�|�f�|�|�z|jj�	||�WSt
y�}zj|dvrvtgd��}ntddg�}t|�}|jt
jkr�tt|�|@�d	kr�t�|�t|���WYd}~n
d}~00dS)
Ncss|]}t|t�VqdSr4rgrhr2r2r3rj	rkz(FirewallD.passthrough.<locals>.<genexpr>zdirect.passthrough('%s', '%s')rl)rFrJ)z-Cz--check�-L�--listr|r}r)rr_r�rr8rmrAr$r��passthroughr"�set�coder!ZCOMMAND_FAILEDr�r�r	)r.r]rqr@r?Z
query_args�msgr2r2r3r~		s 


zFirewallD.passthroughcCs\t|�}tdd�|D��}t�d|d�|�f�|�|�|jj�||�|�	||�dS)Ncss|]}t|�VqdSr4�rrhr2r2r3rj-	rkz+FirewallD.addPassthrough.<locals>.<genexpr>z!direct.addPassthrough('%s', '%s')rl)
rr�rr8rmrAr$r�Zadd_passthrough�PassthroughAdded�r.r]rqr@r2r2r3�addPassthrough%	s�
zFirewallD.addPassthroughcCs\t|�}tdd�|D��}t�d|d�|�f�|�|�|jj�||�|�	||�dS)Ncss|]}t|�VqdSr4r�rhr2r2r3rj<	rkz.FirewallD.removePassthrough.<locals>.<genexpr>z$direct.removePassthrough('%s', '%s')rl)
rr�rr8rmrAr$r�Zremove_passthrough�PassthroughRemovedr�r2r2r3�removePassthrough4	s�
zFirewallD.removePassthroughcCsBt|�}tdd�|D��}t�d|d�|�f�|jj�||�S)Ncss|]}t|�VqdSr4r�rhr2r2r3rjK	rkz-FirewallD.queryPassthrough.<locals>.<genexpr>z#direct.queryPassthrough('%s', '%s')rl)rr�rr8rmr$r�Zquery_passthroughr�r2r2r3�queryPassthroughC	s�zFirewallD.queryPassthroughza(sas)cCst�d�|jj��S)Nzdirect.getAllPassthroughs())rr8r$r�r�rvr2r2r3�getAllPassthroughsP	s
zFirewallD.getAllPassthroughscCs*t�d�t|���D]}|j|�qdS)Nzdirect.removeAllPassthroughs())rr8�reversedr�r�)r.r@r~r2r2r3�removeAllPassthroughsZ	s
zFirewallD.removeAllPassthroughscCs"t|�}t�d|�|jj�|�S)Nzdirect.getPassthroughs('%s'))rrr8r$r�Zget_passthroughs)r.r]r@r2r2r3�getPassthroughsf	szFirewallD.getPassthroughscCst�d|d�|�f�dS)Nz#direct.PassthroughAdded('%s', '%s')rlrz�r.r]rqr2r2r3r�q	s�zFirewallD.PassthroughAddedcCst�d|d�|�f�dS)Nz%direct.PassthroughRemoved('%s', '%s')rlrzr�r2r2r3r�x	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|�}t�d|�|jj�|�S)Nzipset.queryIPSet('%s'))rrr8r$r�Zquery_ipset�r.r�r@r2r2r3�
queryIPSet�	szFirewallD.queryIPSetcCst�d�|jj��S)Nzipsets.getIPSets())rr8r$r�r�rvr2r2r3�	getIPSets�	s
zFirewallD.getIPSetscCs(t|t�}t�d|�|jj�|���S)NzgetIPSetSettings(%s))rr_rr8r$r�Z	get_ipsetr�r�r2r2r3r��	s
zFirewallD.getIPSetSettingscCsLt|�}t|�}t�d||f�|�|�|jj�||�|�||�dS)Nzipset.addEntry('%s', '%s'))rrr8rAr$r�Z	add_entry�
EntryAdded�r.r��entryr@r2r2r3�addEntry�	s
zFirewallD.addEntrycCsLt|�}t|�}t�d||f�|�|�|jj�||�|�||�dS)Nzipset.removeEntry('%s', '%s'))rrr8rAr$r�Zremove_entry�EntryRemovedr�r2r2r3�removeEntry�	s
zFirewallD.removeEntrycCs2t|�}t|�}t�d||f�|jj�||�S)Nzipset.queryEntry('%s', '%s'))rrr8r$r�Zquery_entryr�r2r2r3�
queryEntry�	szFirewallD.queryEntrycCs$t|�}t�d|�|jj�|�S)Nzipset.getEntries('%s'))rrr8r$r��get_entriesr�r2r2r3�
getEntries�	szFirewallD.getEntriescCs�t|�}t|t�}t�d|d�|��|jj�|�}|jj�||�t	|�}t	|�}||D]}|�
||�q\||D]}|�||�qvdS)Nzipset.setEntries('%s', '[%s]')�,)r�listrr8rmr$r�r�Zset_entriesrr�r�)r.r��entriesr@Zold_entriesZold_entries_setZentries_setr�r2r2r3�
setEntries�	s
zFirewallD.setEntriescCs&t|�}t|�}t�d||f�dS)Nzipset.EntryAdded('%s', '%s')�rrr8�r.r�r�r2r2r3r��	szFirewallD.EntryAddedcCs&t|�}t|�}t�d||f�dS)Nzipset.EntryRemoved('%s', '%s')r�r�r2r2r3r��	szFirewallD.EntryRemovedcCst�d�|jj��S)Nzhelpers.getHelpers())rr8r$r�r�rvr2r2r3�
getHelpers
s
zFirewallD.getHelperscCs(t|t�}t�d|�|jj�|���S)NzgetHelperSettings(%s))rr_rr8r$r�Z
get_helperr�)r.r�r@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%r5rrArYrZPROPERTIES_IFACErfrlrrmr(�signalrnZPK_ACTION_INFOZINTROSPECTABLE_IFACEror)rtrwruryrzr�ZPK_ACTION_POLICIESrbr�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�r�ZDBUS_INTERFACE_POLICYr�r�r�r�r�r}r�r�rZDBUS_SIGNATUREr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�r
r�rr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~r�r�r�r�r�r�r�r�Z
PK_ACTION_ALLr�rcr�r�rr�r�r�r�r�r�r�r�r�rr��
__classcell__r2r2r0r3r@sv



/��
"



�

�

�

�

�O

�

�

�

�	

�	

�

�

�	

�	

�

�

�	

�	

�

�

�	

�	

�

�

�


�

�

�

�



�



�

�

�

�

�


�

�

�

�

�

�	

�

�

�

�

�

�	

�

�

�


�

�

�	

�


�

�

�

�	

�


�

�	

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�

�	

�
�

�


�
��
��
��

��

�

�

�

�

�


�


�	


�



�



�


�


�



�

�


�

�


�


�



�

�


�


�


�


�


�



�

�

�

�

�	

�	

�

�
	

�

�)7�__all__Z
gi.repositoryrr�r&Zdbus.serviceZdbus.mainloop.glibZfirewallrZfirewall.core.fwrZfirewall.core.richrZfirewall.core.loggerrZfirewall.clientrZfirewall.server.dbusr	r
Zfirewall.server.decoratorsrr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"rr2r2r2r3�<module>s. (