<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Yjb                @   sV  d gZ ddlmZmZ ddlZeejd< ddlZddlZddlZddl	Z
ddlZ
ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZ ddlmZ ddlmZmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2 ddlm3Z3 ddl4m5Z5 G dd  d e
jj6j7Z8dS )	FirewallD    )GLibGObjectNZgobject)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)FirewallErrorc                   s"  e Zd ZdZdZejjZe	 fddZ
dd Ze	dd Ze	d	d
 Zedd Zedd Zedd Zedd Zedd ZeejdddedddZeejdddedddZejjjejjeejdd edd!d"Zejjejd#d$d%d& Zejjjejjeej dd'ed fd(d)	Z!ejjjejjeejj"d*d*dedd+d,Z#ejjjejjeejj"d*d*dedd-d.Z$ejjejj"ed/d0 Z%ejjjejjeejj"d*d*dedd1d2Z&ejjjejjeejj"d*d*dedd3d4Z'ejjjejj(eejj)d*d*dedd5d6Z*ejjjejj(eejj)d*d*dedd7d8Z+ejjjejj,eejj)d*d9dedd:d;Z-ejjejj)d*d$ed<d= Z.ejjejj)d*d$ed>d? Z/ejjjejj(eejj)dd*dedd@dAZ0ejjjejj(eejj)dd*deddBdCZ1ejjjejj,eejj)dd9deddDdEZ2ejjjejj,eejj)d*dFdeddGdHZ3ejjejj)dd$edIdJ Z4ejjejj)dd$edKdL Z5ejjjejj(eejj)dMd*deddNdOZ6ejjjejj(eejj)dMd*deddPdQZ7ejjjejj,eejj)dMd9deddRdSZ8ejjjejj,eejj)d*dTdeddUdVZ9ejjejj)dMd$edWdX Z:ejjejj)dMd$edYdZ Z;ejjjejj(eejj)dd*dedd[d\Z<ejjjejj(eejj)dd*dedd]d^Z=ejjjejj,eejj)dd9dedd_d`Z>ejjjejj,eejj)d*dFdeddadbZ?ejjejj)dd$edcdd Z@ejjejj)dd$ededf ZAejjjejj(eejj)dd*deddgdhZBejjjejj(eejj)dd*deddidjZCejjjejj,eejj)dd9deddkdlZDejjjejj,eejj)d*dFdeddmdnZEejjejj)dd$edodp ZFejjejj)dd$edqdr ZGejjjejjeejj"d*d*deddsdtZHejjjejjeejj"d*d*deddudvZIejjjejjeejj"d*d9deddwdxZJejjejj"d*d$edydz ZKejjejj"d*d$ed{d| ZLejjjejjMeejj"dd}dedd~dZNejjjejjMeejjOdddedddZPejjjejjMeejjOdd edddZQejjejjOdd$edd ZRejjjejjMeejjSdddedddZTejjjejjMeejjSdd edddZUejjejjSdd$edd ZVejjjejjeejj"d*dFdedddZWejjjejjMeejj"dddedddZXejjjejjMeejj"dddedddZYejjjejjeejj"d*dFdedddZZejjjejjMeejj"de[j\dedddZ]ejjjejjMeejj"d*ddedddZ^ejjjejjeejj"dd*dedddZ_ejjejj"dd$edd Z`ejjjejjMeejj"d*ddedddZaejjjejjeejj"dd*dedddZbejjejj"dd$edd Zcejjjejjeejj"d*ddedddZdejjjejjeejj"dd*dedddZeejjejj"dd$edd ZfejjjejjeejjSd*dFdedddZgejjjejjeejjSd*ddedddZhejjjejjeejjOd*dFdedddZiejjjejjeejjOd*ddedddZjejjjejjeejjOdddedddZkejjjejjeejjOdddedddZlejjjejjMeejjOdd9dedddZmejjjejjeejjOdddedddZnejjjejjeejjOdddedddZoejjjejjeejjOdddedddZpejjjejjeejjOdddedddZqejjjejjMeejjOdd9dedddZrejjjejjMeejjOddFdedddĄZsejjejjOdd$eddƄ ZtejjejjOdd$eddȄ ZuejjejjOdd$eddʄ ZvejjejjOdd$edd̄ ZwejjjejjeejjOdddeddd΄ZxejjjejjeejjOdddedddЄZyejjjejjeejjOdddeddd҄ZzejjjejjMeejjOdd9dedddԄZ{ejjjejjMeejjOddFdedddքZ|ejjejjOdd$edd؄ Z}ejjejjOdd$eddڄ Z~ejjejjOdd$edd܄ Zeddބ ZejjjejjeejjOdddedddZejjjejjeejjOdddedddZejjjejjMeejjOdd9dedddZejjjejjMeejjOddFdedddZejjejjOdd$edd ZejjejjOdd$edd Zedd ZejjjejjeejjOdddedddZejjjejjeejjOdddedddZejjjejjMeejjOdd9dedddZejjjejjMeejjOddFdedddZejjejjOdd$edd ZejjejjOdd$edd Zedd ZejjjejjeejjOdddedddZejjjejjeejjOdddedd dZejjjejjMeejjOdd9dedddZejjjejjMeejjOdddedddZejjejjOdd$eddd	ZejjejjOdd$ed
d Zedd ZejjjejjeejjOdddedddZejjjejjeejjOdddedddZejjjejjMeejjOdd9dedddZejjjejjMeejjOddFdedddZejjejjOdd$edddZejjejjOdd$edd Zedd ZejjjejjeejjOdddedddZejjjejjeejjOddded ddZejjjejjMeejjOdd9dedd d!ZejjjejjMeejjOdddedd"d#ZejjejjOdd$edd$d%ZejjejjOdd$ed&d' Zed(d) ZejjjejjeejjOd*ddedd+d,ZejjjejjeejjOdddedd-d.ZejjjejjMeejjOdd9dedd/d0ZejjejjOd*d$edd1d2ZejjejjOdd$ed3d4 Zed5d6 ZejjjejjeejjOd7ddedd8d9ZejjjejjeejjOd:dded	d;d<ZejjjejjMeejjOd:d9ded
d=d>ZejjjejjMeejjOdddedd?d@ZejjejjOd7d$eddAdBZejjejjOd:d$edCdD ZedEdF ZejjjejjeejjOdddeddGdHZejjjejjeejjOdddeddIdJZejjjejjMeejjOdd9deddKdLZejjjejjMeejjOddFdeddMdNZejjejjOdd$eddOdPZejjejjOdd$edQdR ZejjjejjeejjOdddeddSdTZejjjejjeejjOdddeddUdVZejjjejjMeejjOdd9deddWdXZejjejjOdd$edYdZ ZejjejjOdd$ed[d\ Zejjjejjeejjdd*dedd]d^Zejjjejjeejjdd*dedd_d`Zejjjejjeejjdd9deddadbZejjjejjeejjddFdeddcddZejjjejjeejjd*dededdfdgZejjejjdd$edhdi Zejjejjdd$edjdk Zejjjejjeejjdld*deddmdnZejjjejjeejjdld*deddodpZejjjejjeejjdd*deddqdrZejjjejjeejjdld9deddsdtZejjjejjeejjddudeddvdwZejjjejjeejjd*dxdeddydzZejjejjdld$ed{d| Zejjejjdld$ed}d~ Zejjjejjeejjddded ddZejjjejjeejjdd*ded!ddZejjjejjeejjdd*ded"ddZejjjejjeejjdd9ded#ddZejjjejjeejjd*dded$ddZejjjejjeejjd*d*ded%ddZejjjejjeejjddded&ddZejjejjdd$edd Zejjejjdd$edd Zejjjejj׃eejj"d*d*ded'ddZejjjejjeejjdd9ded(ddZejjjejjeejjd*dFded)ddZejjjejjMeejjdej\ded*ddZejjjejjeejjdd*ded+ddZejjjejjeejjdd*ded,ddZejjjejjeejjdd9ded-ddZejjjejjeejjddFded.ddZejjjejjeejjِdd ed/ddZejjejjdd$edd Zejjejjdd$edd Zejjjejjeejj"d*dFded0ddZejjjejjMeejj"dej\ded1ddZ  ZS (2  r   zFirewallD main classTc                s`   t t| j|| t | _|d | _|d | _| j  t| t	j
j t| jj	| jt	j
j| _	d S )Nr      )superr   __init__r   fwbusnamepathstartr   r   dbusDBUS_INTERFACEr   ZDBUS_PATH_CONFIG)selfargskwargs)	__class__ /usr/lib/python3.6/firewalld.pyr"   I   s    

zFirewallD.__init__c             C   s   | j   d S )N)stop)r)   r-   r-   r.   __del__T   s    zFirewallD.__del__c             C   s   t jd i | _| jj S )Nzstart())r   debug1	_timeoutsr#   r&   )r)   r-   r-   r.   r&   W   s    
zFirewallD.startc             C   s   t jd | jj S )Nzstop())r   r1   r#   r/   )r)   r-   r-   r.   r/   _   s    
zFirewallD.stopc             C   s   | j jj r|d kr"tjd d S tj }t||}| j jjd|rHd S t	||}| j jjd|rfd S t
|}| j jjd|rd S t||}| j jjd|rd S ttjdd S )Nz&Lockdown not possible, sender not set.contextuidusercommandzlockdown is enabled)r#   policiesquery_lockdownr   errorr'   Z	SystemBusr   Zaccess_checkr   r   r   r   r   ZACCESS_DENIED)r)   senderZbusr3   r4   r5   r6   r-   r-   r.   accessCheckh   s$    



zFirewallD.accessCheckc             C   s&   || j kri | j |< || j | |< d S )N)r2   )r)   zonextagr-   r-   r.   
addTimeout   s    

zFirewallD.addTimeoutc             C   s<   || j kr8|| j | kr8tj| j | |  | j | |= d S )N)r2   r   source_remove)r)   r<   r=   r-   r-   r.   removeTimeout   s    zFirewallD.removeTimeoutc             C   sT   xD| j D ]:}x&| j | D ]}tj| j | |  qW | j | j  qW | j j  d S )N)r2   r   r@   clear)r)   r<   r=   r-   r-   r.   cleanup_timeouts   s
    zFirewallD.cleanup_timeoutsc             C   sd  |dkrt jtjS |dkr6t jdtj jtj jf S |dkrNt j| jj S |dkrht j| jj	dS |dkrt j
| jjdS |d	krt j| jj	d
S |dkrt j| jjS |dkrt j
| jjdS |dkrt j| jjS |dk rt j| jjS |dkrt j
| jjdS |dkr$t jdS |dkr:t ji dS |dkrPt ji dS t jjd| d S )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   VERSIONZDBUS_INTERFACE_VERSIONZDBUS_INTERFACE_REVISIONr#   Z	get_stateZBooleanZis_ipv_enabledZArrayZipv4_supported_icmp_typesZipv6_rpfilter_enabledZipv6_supported_icmp_typesZebtables_enabledZipset_enabledZipset_supported_types
Dictionary
exceptionsDBusException)r)   Zpropr-   r-   r.   _get_property   s@    





zFirewallD._get_propertyZssv)in_signatureout_signatureNc             C   s~   t |t}t |t}tjd|| |tjjkr8| j|S |tjjtjj	tjj
tjjgkrjtjjd| ntjjd| d S )NzGet('%s', '%s')zDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not existzJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist)r   strr   r1   r   r'   r(   rZ   DBUS_INTERFACE_ZONEDBUS_INTERFACE_DIRECTDBUS_INTERFACE_POLICIESDBUS_INTERFACE_IPSETrX   rY   )r)   interface_nameproperty_namer:   r-   r-   r.   Get   s    



zFirewallD.GetrJ   za{sv}c             C   s   t |t}tjd| i }|tjjkrDxNdD ]}| j|||< q,W n2|tjjtjj	tjj
tjjgkrfntjjd| tj|ddS )NzGetAll('%s')rD   rE   rF   rG   rK   rM   rO   r   rP   rQ   rR   rT   rI   rN   zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not existZsv)	signature)rD   rE   rF   rG   rK   rM   rO   r   rP   rQ   rR   rT   rI   rN   )r   r^   r   r1   r   r'   r(   rZ   r_   r`   ra   rb   rX   rY   rW   )r)   rc   r:   retr=   r-   r-   r.   GetAll   s&    
   zFirewallD.GetAllZssv)r\   c             C   s   t |t}t |t}t |}tjd||| | j| |tjjkrn|dkr\tjj	d| qtjj	d| nB|tjj
tjjtjjtjjgkrtjj	d| ntjj	d| d S )NzSet('%s', '%s', '%s')rD   rE   rF   rG   rK   rM   rO   r   rP   rQ   rR   rT   rI   rN   zGorg.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)rD   rE   rF   rG   rK   rM   rO   r   rP   rQ   rR   rT   rI   rN   )r   r^   r   r1   r;   r   r'   r(   rX   rY   r_   r`   ra   rb   )r)   rc   rd   Z	new_valuer:   r-   r-   r.   Set   s:    



    


zFirewallD.Setzsa{sv}as)rf   c             C   s.   t |t}t |}t |}tjd||| d S )Nz#PropertiesChanged('%s', '%s', '%s'))r   r^   r   r1   )r)   rc   Zchanged_propertiesZinvalidated_propertiesr-   r-   r.   PropertiesChanged  s
    
zFirewallD.PropertiesChanged)r]   c                s4   t jd tt| j| j| jj }t| |t	j
jS )NzIntrospect())r   Zdebug2r!   r   
Introspectr%   r$   Zget_busr   r   r'   r(   )r)   r:   data)r,   r-   r.   rk   &  s
    
zFirewallD.Introspect c             C   s*   t jd | jj  | jj  | j  dS )z#Reload the firewall rules.
        zreload()N)r   r1   r#   reloadr   Reloaded)r)   r:   r-   r-   r.   rn   4  s    


zFirewallD.reloadc             C   s,   t jd | jjd | jj  | j  dS )zCompletely reload the firewall.

        Completely reload the firewall: Stops firewall, unloads modules and 
        starts the firewall again.
        zcompleteReload()TN)r   r1   r#   rn   r   ro   )r)   r:   r-   r-   r.   completeReloadC  s    


zFirewallD.completeReloadc             C   s   t jd d S )Nz
Reloaded())r   r1   )r)   r-   r-   r.   ro   S  s    zFirewallD.Reloadedc             C   s   t jd t| j dS )z&Check permanent configuration
        zcheckPermanentConfig()N)r   r1   r   r#   )r)   r:   r-   r-   r.   checkPermanentConfigX  s    
zFirewallD.checkPermanentConfigc             C   s  t jd d}| jj }x| jjj D ]}| j|}yj||kr| jj|}|j	 |krpt jd|  |j
| qt jd|  nt jd|  | jj|| W q& tk
r } zt jd||f  d}W Y dd}~X q&X q&W | jj }x| jjj D ]}| j|}yn||krR| jj|}|j	 |krBt jd	|  |j
| nt jd
|  nt jd|  | jj|| W q tk
r } zt jd||f  d}W Y dd}~X qX qW | jj }x| jjj D ]}yx| j|}||kr&| jj|}|j	 |krt jd|  |j
| nt jd|  nt jd|  | jj|| W n: tk
r~ } zt jd||f  d}W Y dd}~X nX qW | jj }t }x| jjj D ]}| j|}t|}	|dk	r~d}
xH|	j  D ]<}| jjj!|||krt jd||f  |	j"| d}
qW xV|	j  D ]J}y,t#|}|rNt$||rN|	j"| d}
W n tk
rf   Y nX q W |
r~~|	j% }x|	j  D ]}t&|| qW yP||kr| jj'|}t jd|  |j(| nt jd|  | jj)|| W n: tk
r& } zt jd||f  d}W Y dd}~X nX qW | jj* }x| jj+j, D ]}| j-|}yB||krx| jj.|}|j
| nt jd|  | jj/|| W n: tk
r } zt jd||f  d}W Y dd}~X nX qFW | jj0 }x| jj1j2 D ]}| j3|}yn||krN| jj4|}|j	 |kr>t jd|  |j
| nt jd|  nt jd|  | jj5|| W n: tk
r } zt jd||f  d}W Y dd}~X nX qW | jj6j7 | jj6j8 | jj6j9 f}y6| jj	 |krt jd | jj
| n
t jd W n6 tk
r< } zt jd|  d}W Y dd}~X nX | jj:j;j< }y6| jj	 |krvt jd | jj=| n
t jd W n6 tk
r } zt jd |  d}W Y dd}~X nX |rt>t?j@dS )!z-Make runtime configuration permanent
        zcopyRuntimeToPermanent()FzCopying service '%s' settingsz$Service '%s' is identical, ignoring.zCreating service '%s'z/Runtime To Permanent failed on service '%s': %sTNzCopying icmptype '%s' settingsz%IcmpType '%s' is identical, ignoring.zCreating icmptype '%s'z0Runtime To Permanent failed on icmptype '%s': %szCopying ipset '%s' settingsz"IPSet '%s' is identical, ignoring.zCreating ipset '%s'z-Runtime To Permanent failed on ipset '%s': %szEZone '%s': interface binding for '%s' has been added by NM, ignoring.zCopying zone '%s' settingszCreating zone '%s'z,Runtime To Permanent failed on zone '%s': %szCreating policy '%s'z.Runtime To Permanent failed on policy '%s': %szCopying helper '%s' settingsz#Helper '%s' is identical, ignoring.zCreating helper '%s'z.Runtime To Permanent failed on helper '%s': %szCopying direct configurationz,Direct configuration is identical, ignoring.z7Runtime To Permanent failed on direct configuration: %szCopying policies configurationz.Policies configuration is identical, ignoring.z9Runtime To Permanent failed on policies configuration: %s)Ar   r1   r   ZgetServiceNamesr#   serviceget_servicesgetServiceSettingsZgetServiceByNameZgetSettingsupdate
addService	ExceptionwarningZgetIcmpTypeNamesicmptypeget_icmptypesgetIcmpTypeSettingsZgetIcmpTypeByNameZaddIcmpTypeZgetIPSetNamesipset
get_ipsetsgetIPSetSettingsZgetIPSetByNameZaddIPSetZgetZoneNamesr   r<   	get_zonesgetZoneSettings2r	   getInterfacesZinterface_get_senderremoveInterfacer   r   ZgetSettingsDictr   ZgetZoneByNameZupdate2ZaddZone2ZgetPolicyNamespolicy"get_policies_not_derived_from_zonegetPolicySettingsZgetPolicyByNameZ	addPolicyZgetHelperNameshelperget_helpersgetHelperSettingsZgetHelperByNameZ	addHelperdirectget_all_chainsget_all_rulesget_all_passthroughsr7   lockdown_whitelistexport_configZsetLockdownWhitelistr   r   ZRT_TO_PERM_FAILED)r)   r:   r9   Zconfig_namesnameZconfZconf_objeZnm_bus_namesettingsZchanged	interfaceZ
connectionr-   r-   r.   runtimeToPermanentd  s$   


























zFirewallD.runtimeToPermanentc             C   s,   t jd | j| | jjj  | j  dS )z!Enable lockdown policies
        zpolicies.enableLockdown()N)r   r1   r;   r#   r7   Zenable_lockdownLockdownEnabled)r)   r:   r-   r-   r.   enableLockdown2  s    

zFirewallD.enableLockdownc             C   s,   t jd | j| | jjj  | j  dS )z"Disable lockdown policies
        zpolicies.disableLockdown()N)r   r1   r;   r#   r7   Zdisable_lockdownLockdownDisabled)r)   r:   r-   r-   r.   disableLockdown>  s    

zFirewallD.disableLockdownbc             C   s   t jd | jjj S )z+Retuns True if lockdown is enabled
        zpolicies.queryLockdown())r   r1   r#   r7   r8   )r)   r:   r-   r-   r.   queryLockdownJ  s    
zFirewallD.queryLockdownc             C   s   t jd d S )NzLockdownEnabled())r   r1   )r)   r-   r-   r.   r   U  s    zFirewallD.LockdownEnabledc             C   s   t jd d S )NzLockdownDisabled())r   r1   )r)   r-   r-   r.   r   Z  s    zFirewallD.LockdownDisabledc             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )zAdd lockdown command
        z*policies.addLockdownWhitelistCommand('%s')N)
r   r^   r   r1   r;   r#   r7   r   Zadd_commandLockdownWhitelistCommandAdded)r)   r6   r:   r-   r-   r.   addLockdownWhitelistCommandc  s
    

z%FirewallD.addLockdownWhitelistCommandc             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )z Remove lockdown command
        z-policies.removeLockdownWhitelistCommand('%s')N)
r   r^   r   r1   r;   r#   r7   r   Zremove_commandLockdownWhitelistCommandRemoved)r)   r6   r:   r-   r-   r.   removeLockdownWhitelistCommandp  s
    

z(FirewallD.removeLockdownWhitelistCommandc             C   s(   t |t}tjd|  | jjjj|S )zQuery lockdown command
        z,policies.queryLockdownWhitelistCommand('%s'))r   r^   r   r1   r#   r7   r   Zhas_command)r)   r6   r:   r-   r-   r.   queryLockdownWhitelistCommand}  s    
z'FirewallD.queryLockdownWhitelistCommandasc             C   s   t jd | jjjj S )zAdd lockdown command
        z'policies.getLockdownWhitelistCommands())r   r1   r#   r7   r   Zget_commands)r)   r:   r-   r-   r.   getLockdownWhitelistCommands  s    
z&FirewallD.getLockdownWhitelistCommandsc             C   s   t jd|  d S )Nz#LockdownWhitelistCommandAdded('%s'))r   r1   )r)   r6   r-   r-   r.   r     s    z'FirewallD.LockdownWhitelistCommandAddedc             C   s   t jd|  d S )Nz%LockdownWhitelistCommandRemoved('%s'))r   r1   )r)   r6   r-   r-   r.   r     s    z)FirewallD.LockdownWhitelistCommandRemovedic             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )zAdd lockdown uid
        z&policies.addLockdownWhitelistUid('%s')N)
r   intr   r1   r;   r#   r7   r   Zadd_uidLockdownWhitelistUidAdded)r)   r4   r:   r-   r-   r.   addLockdownWhitelistUid  s
    

z!FirewallD.addLockdownWhitelistUidc             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )zRemove lockdown uid
        z)policies.removeLockdownWhitelistUid('%s')N)
r   r   r   r1   r;   r#   r7   r   Z
remove_uidLockdownWhitelistUidRemoved)r)   r4   r:   r-   r-   r.   removeLockdownWhitelistUid  s
    

z$FirewallD.removeLockdownWhitelistUidc             C   s(   t |t}tjd|  | jjjj|S )zQuery lockdown uid
        z(policies.queryLockdownWhitelistUid('%s'))r   r   r   r1   r#   r7   r   Zhas_uid)r)   r4   r:   r-   r-   r.   queryLockdownWhitelistUid  s    
z#FirewallD.queryLockdownWhitelistUidZaic             C   s   t jd | jjjj S )zAdd lockdown uid
        z#policies.getLockdownWhitelistUids())r   r1   r#   r7   r   Zget_uids)r)   r:   r-   r-   r.   getLockdownWhitelistUids  s    
z"FirewallD.getLockdownWhitelistUidsc             C   s   t jd|  d S )NzLockdownWhitelistUidAdded(%d))r   r1   )r)   r4   r-   r-   r.   r     s    z#FirewallD.LockdownWhitelistUidAddedc             C   s   t jd|  d S )NzLockdownWhitelistUidRemoved(%d))r   r1   )r)   r4   r-   r-   r.   r     s    z%FirewallD.LockdownWhitelistUidRemovedc             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )zAdd lockdown user
        z'policies.addLockdownWhitelistUser('%s')N)
r   r^   r   r1   r;   r#   r7   r   Zadd_userLockdownWhitelistUserAdded)r)   r5   r:   r-   r-   r.   addLockdownWhitelistUser  s
    

z"FirewallD.addLockdownWhitelistUserc             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )zRemove lockdown user
        z*policies.removeLockdownWhitelistUser('%s')N)
r   r^   r   r1   r;   r#   r7   r   Zremove_userLockdownWhitelistUserRemoved)r)   r5   r:   r-   r-   r.   removeLockdownWhitelistUser  s
    

z%FirewallD.removeLockdownWhitelistUserc             C   s(   t |t}tjd|  | jjjj|S )zQuery lockdown user
        z)policies.queryLockdownWhitelistUser('%s'))r   r^   r   r1   r#   r7   r   Zhas_user)r)   r5   r:   r-   r-   r.   queryLockdownWhitelistUser  s    
z$FirewallD.queryLockdownWhitelistUserc             C   s   t jd | jjjj S )zAdd lockdown user
        z$policies.getLockdownWhitelistUsers())r   r1   r#   r7   r   Z	get_users)r)   r:   r-   r-   r.   getLockdownWhitelistUsers  s    
z#FirewallD.getLockdownWhitelistUsersc             C   s   t jd|  d S )Nz LockdownWhitelistUserAdded('%s'))r   r1   )r)   r5   r-   r-   r.   r     s    z$FirewallD.LockdownWhitelistUserAddedc             C   s   t jd|  d S )Nz"LockdownWhitelistUserRemoved('%s'))r   r1   )r)   r5   r-   r-   r.   r     s    z&FirewallD.LockdownWhitelistUserRemovedc             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )zAdd lockdown context
        z*policies.addLockdownWhitelistContext('%s')N)
r   r^   r   r1   r;   r#   r7   r   Zadd_contextLockdownWhitelistContextAdded)r)   r3   r:   r-   r-   r.   addLockdownWhitelistContext  s
    

z%FirewallD.addLockdownWhitelistContextc             C   s@   t |t}tjd|  | j| | jjjj| | j	| dS )z Remove lockdown context
        z-policies.removeLockdownWhitelistContext('%s')N)
r   r^   r   r1   r;   r#   r7   r   Zremove_contextLockdownWhitelistContextRemoved)r)   r3   r:   r-   r-   r.   removeLockdownWhitelistContext'  s
    

z(FirewallD.removeLockdownWhitelistContextc             C   s(   t |t}tjd|  | jjjj|S )zQuery lockdown context
        z,policies.queryLockdownWhitelistContext('%s'))r   r^   r   r1   r#   r7   r   Zhas_context)r)   r3   r:   r-   r-   r.   queryLockdownWhitelistContext4  s    
z'FirewallD.queryLockdownWhitelistContextc             C   s   t jd | jjjj S )zAdd lockdown context
        z'policies.getLockdownWhitelistContexts())r   r1   r#   r7   r   Zget_contexts)r)   r:   r-   r-   r.   getLockdownWhitelistContexts@  s    
z&FirewallD.getLockdownWhitelistContextsc             C   s   t jd|  d S )Nz#LockdownWhitelistContextAdded('%s'))r   r1   )r)   r3   r-   r-   r.   r   K  s    z'FirewallD.LockdownWhitelistContextAddedc             C   s   t jd|  d S )Nz%LockdownWhitelistContextRemoved('%s'))r   r1   )r)   r3   r-   r-   r.   r   P  s    z)FirewallD.LockdownWhitelistContextRemovedc             C   s*   t jd | j| | jj  | j  dS )znEnable panic mode.
        
        All ingoing and outgoing connections and packets will be blocked.
        zenablePanicMode()N)r   r1   r;   r#   Zenable_panic_modePanicModeEnabled)r)   r:   r-   r-   r.   enablePanicModeY  s    	


zFirewallD.enablePanicModec             C   s*   t jd | j| | jj  | j  dS )zDisable panic mode.

        Enables normal mode: Allowed ingoing and outgoing connections 
        will not be blocked anymore
        zdisablePanicMode()N)r   r1   r;   r#   Zdisable_panic_modePanicModeDisabled)r)   r:   r-   r-   r.   disablePanicModeg  s    



zFirewallD.disablePanicModec             C   s   t jd | jj S )NzqueryPanicMode())r   r1   r#   Zquery_panic_mode)r)   r:   r-   r-   r.   queryPanicModev  s    
zFirewallD.queryPanicModec             C   s   t jd d S )NzPanicModeEnabled())r   r1   )r)   r-   r-   r.   r     s    zFirewallD.PanicModeEnabledc             C   s   t jd d S )NzPanicModeDisabled())r   r1   )r)   r-   r-   r.   r     s    zFirewallD.PanicModeDisabledz&(sssbsasa(ss)asba(ssss)asasasasa(ss)b)c             C   s$   t |t}tjd| | jjj|S )NzgetZoneSettings(%s))r   r^   r   r1   r#   r<   Zget_config_with_settings)r)   r<   r:   r-   r-   r.   getZoneSettings  s    
zFirewallD.getZoneSettingsc             C   s$   t |t}tjd| | jjj|S )NzgetZoneSettings2(%s))r   r^   r   r1   r#   r<   get_config_with_settings_dict)r)   r<   r:   r-   r-   r.   r     s    
zFirewallD.getZoneSettings2zsa{sv}c             C   sB   t |t}tjd| | j| | jjj||| | j|| d S )NzsetZoneSettings2(%s))	r   r^   r   r1   r;   r#   r<   set_config_with_settings_dictZoneUpdated)r)   r<   r   r:   r-   r-   r.   setZoneSettings2  s
    

zFirewallD.setZoneSettings2c             C   s   t jd||f  d S )Nzzone.ZoneUpdated('%s', '%s'))r   r1   )r)   r<   r   r-   r-   r.   r     s    zFirewallD.ZoneUpdatedc             C   s$   t |t}tjd| | jjj|S )Nzpolicy.getPolicySettings(%s))r   r^   r   r1   r#   r   r   )r)   r   r:   r-   r-   r.   r     s    
zFirewallD.getPolicySettingsc             C   sB   t |t}tjd| | j| | jjj||| | j|| d S )Nzpolicy.setPolicySettings(%s))	r   r^   r   r1   r;   r#   r   r   PolicyUpdated)r)   r   r   r:   r-   r-   r.   setPolicySettings  s
    

zFirewallD.setPolicySettingsc             C   s   t jd||f  d S )Nz policy.PolicyUpdated('%s', '%s'))r   r1   )r)   r   r   r-   r-   r.   r     s    zFirewallD.PolicyUpdatedc             C   s   t jd | jjj S )NzlistServices())r   r1   r#   rr   rs   )r)   r:   r-   r-   r.   listServices  s    
zFirewallD.listServicesz(sssa(ss)asa{ss}asa(ss))c             C   s   t |t}tjd| | jjj|}|j }g }x\tdD ]P}|j	| d |krr|j
tjt||j	| d  q:|j
||j	| d   q:W t|S )NzgetServiceSettings(%s)   r   )r   r^   r   r1   r#   rr   get_serviceexport_config_dictrangeZIMPORT_EXPORT_STRUCTUREappendcopydeepcopygetattrtuple)r)   rr   r:   objZ	conf_dictZ	conf_listr   r-   r-   r.   rt     s    
"zFirewallD.getServiceSettingsc             C   s,   t |t}tjd| | jjj|}|j S )NzgetServiceSettings2(%s))r   r^   r   r1   r#   rr   r   r   )r)   rr   r:   r   r-   r-   r.   getServiceSettings2  s    
zFirewallD.getServiceSettings2c             C   s   t jd | jjj S )NzlistIcmpTypes())r   r1   r#   ry   rz   )r)   r:   r-   r-   r.   listIcmpTypes  s    
zFirewallD.listIcmpTypesc             C   s(   t |t}tjd| | jjj|j S )NzgetIcmpTypeSettings(%s))r   r^   r   r1   r#   ry   Zget_icmptyper   )r)   ry   r:   r-   r-   r.   r{     s    
zFirewallD.getIcmpTypeSettingsc             C   s   t jd | jj S )NzgetLogDenied())r   r1   r#   Zget_log_denied)r)   r:   r-   r-   r.   getLogDenied	  s    
zFirewallD.getLogDeniedc             C   sX   t |t}tjd|  | j| | jj| | j| | jj  | j	j  | j
  d S )NzsetLogDenied('%s'))r   r^   r   r1   r;   r#   Zset_log_deniedLogDeniedChangedrn   r   ro   )r)   valuer:   r-   r-   r.   setLogDenied  s    




zFirewallD.setLogDeniedc             C   s   t jd|  d S )NzLogDeniedChanged('%s'))r   r1   )r)   r   r-   r-   r.   r   "  s    zFirewallD.LogDeniedChangedc             C   s   t jd dS )NzgetAutomaticHelpers()no)r   r1   )r)   r:   r-   r-   r.   getAutomaticHelpers+  s    
zFirewallD.getAutomaticHelpersc             C   s&   t |t}tjd|  | j| d S )NzsetAutomaticHelpers('%s'))r   r^   r   r1   r;   )r)   r   r:   r-   r-   r.   setAutomaticHelpers6  s    
zFirewallD.setAutomaticHelpersc             C   s   t jd|  d S )NzAutomaticHelpersChanged('%s'))r   r1   )r)   r   r-   r-   r.   AutomaticHelpersChangedB  s    z!FirewallD.AutomaticHelpersChangedc             C   s   t jd | jj S )NzgetDefaultZone())r   r1   r#   Zget_default_zone)r)   r:   r-   r-   r.   getDefaultZoneK  s    
zFirewallD.getDefaultZonec             C   s<   t |t}tjd|  | j| | jj| | j| d S )NzsetDefaultZone('%s'))r   r^   r   r1   r;   r#   Zset_default_zoneDefaultZoneChanged)r)   r<   r:   r-   r-   r.   setDefaultZoneT  s
    

zFirewallD.setDefaultZonec             C   s   t jd|  d S )NzDefaultZoneChanged('%s'))r   r1   )r)   r<   r-   r-   r.   r   `  s    zFirewallD.DefaultZoneChangedc             C   s   t jd | jjj S )Nzpolicy.getPolicies())r   r1   r#   r   r   )r)   r:   r-   r-   r.   getPoliciesk  s    
zFirewallD.getPoliciesz
a{sa{sas}}c             C   s\   t jd i }xH| jjj D ]8}i ||< | jjj||| d< | jjj||| d< qW |S )Nzpolicy.getActivePolicies()Zingress_zonesZegress_zones)r   r1   r#   r   Z)get_active_policies_not_derived_from_zoneZlist_ingress_zonesZlist_egress_zones)r)   r:   r7   r   r-   r-   r.   getActivePoliciess  s    
zFirewallD.getActivePoliciesc             C   s   t jd | jjj S )Nzzone.getZones())r   r1   r#   r<   r   )r)   r:   r-   r-   r.   getZones  s    
zFirewallD.getZonesc             C   s   t jd i }x|| jjj D ]l}| jjj|}| jjj|}t|t| dkri ||< t|dkrp||| d< t|dkr||| d< qW |S )Nzzone.getActiveZones()r   
interfacessources)r   r1   r#   r<   r   list_interfaceslist_sourceslen)r)   r:   Zzonesr<   r   r   r-   r-   r.   getActiveZones  s    
zFirewallD.getActiveZonesc             C   s2   t |t}tjd|  | jjj|}|r.|S dS )zReturn the zone an interface belongs to.

        :Parameters:
            `interface` : str
                Name of the interface
        :Returns: str. The name of the zone.
        zzone.getZoneOfInterface('%s')rm   )r   r^   r   r1   r#   r<   Zget_zone_of_interface)r)   r   r:   r<   r-   r-   r.   getZoneOfInterface  s    
zFirewallD.getZoneOfInterfacec             C   s2   t |t}tjd|  | jjj|}|r.|S dS )Nzzone.getZoneOfSource('%s')rm   )r   r^   r   r1   r#   r<   Zget_zone_of_source)r)   sourcer:   r<   r-   r-   r.   getZoneOfSource  s    
zFirewallD.getZoneOfSourcec             C   s   dS )NFr-   )r)   r<   r:   r-   r-   r.   isImmutable  s    zFirewallD.isImmutablec             C   sR   t |t}t |t}tjd||f  | j| | jjj|||}| j|| |S )zPAdd an interface to a zone.
        If zone is empty, use default zone.
        zzone.addInterface('%s', '%s'))	r   r^   r   r1   r;   r#   r<   Zadd_interfaceInterfaceAdded)r)   r<   r   r:   _zoner-   r-   r.   addInterface  s    


zFirewallD.addInterfacec             C   s"   t |t}t |t}| j|||S )zChange a zone an interface is part of.
        If zone is empty, use default zone.

        This function is deprecated, use changeZoneOfInterface instead
        )r   r^   changeZoneOfInterface)r)   r<   r   r:   r-   r-   r.   
changeZone  s    


zFirewallD.changeZonec             C   sR   t |t}t |t}tjd||f  | j| | jjj|||}| j|| |S )z[Change a zone an interface is part of.
        If zone is empty, use default zone.
        z&zone.changeZoneOfInterface('%s', '%s'))	r   r^   r   r1   r;   r#   r<   Zchange_zone_of_interfaceZoneOfInterfaceChanged)r)   r<   r   r:   r   r-   r-   r.   r     s    


zFirewallD.changeZoneOfInterfacec             C   sP   t |t}t |t}tjd||f  | j| | jjj||}| j|| |S )zkRemove interface from a zone.
        If zone is empty, remove from zone the interface belongs to.
        z zone.removeInterface('%s', '%s'))	r   r^   r   r1   r;   r#   r<   Zremove_interfaceInterfaceRemoved)r)   r<   r   r:   r   r-   r-   r.   r     s    


zFirewallD.removeInterfacec             C   s6   t |t}t |t}tjd||f  | jjj||S )z^Return true if an interface is in a zone.
        If zone is empty, use default zone.
        zzone.queryInterface('%s', '%s'))r   r^   r   r1   r#   r<   Zquery_interface)r)   r<   r   r:   r-   r-   r.   queryInterface  s    

zFirewallD.queryInterfacec             C   s&   t |t}tjd|  | jjj|S )z]Return the list of interfaces of a zone.
        If zone is empty, use default zone.
        zzone.getInterfaces('%s'))r   r^   r   r1   r#   r<   r   )r)   r<   r:   r-   r-   r.   r     s    

zFirewallD.getInterfacesc             C   s   t jd||f  d S )Nzzone.InterfaceAdded('%s', '%s'))r   r1   )r)   r<   r   r-   r-   r.   r   +  s    zFirewallD.InterfaceAddedc             C   s   t jd||f  dS )z,
        This signal is deprecated.
        zzone.ZoneChanged('%s', '%s')N)r   r1   )r)   r<   r   r-   r-   r.   ZoneChanged0  s    zFirewallD.ZoneChangedc             C   s"   t jd||f  | j|| d S )Nz'zone.ZoneOfInterfaceChanged('%s', '%s'))r   r1   r   )r)   r<   r   r-   r-   r.   r   8  s    
z FirewallD.ZoneOfInterfaceChangedc             C   s   t jd||f  d S )Nz!zone.InterfaceRemoved('%s', '%s'))r   r1   )r)   r<   r   r-   r-   r.   r   ?  s    zFirewallD.InterfaceRemovedc             C   sR   t |t}t |t}tjd||f  | j| | jjj|||}| j|| |S )zLAdd a source to a zone.
        If zone is empty, use default zone.
        zzone.addSource('%s', '%s'))	r   r^   r   r1   r;   r#   r<   Z
add_sourceSourceAdded)r)   r<   r   r:   r   r-   r-   r.   	addSourceH  s    


zFirewallD.addSourcec             C   sR   t |t}t |t}tjd||f  | j| | jjj|||}| j|| |S )zXChange a zone an source is part of.
        If zone is empty, use default zone.
        z#zone.changeZoneOfSource('%s', '%s'))	r   r^   r   r1   r;   r#   r<   Zchange_zone_of_sourceZoneOfSourceChanged)r)   r<   r   r:   r   r-   r-   r.   changeZoneOfSourceY  s    


zFirewallD.changeZoneOfSourcec             C   sP   t |t}t |t}tjd||f  | j| | jjj||}| j|| |S )zeRemove source from a zone.
        If zone is empty, remove from zone the source belongs to.
        zzone.removeSource('%s', '%s'))	r   r^   r   r1   r;   r#   r<   Zremove_sourceSourceRemoved)r)   r<   r   r:   r   r-   r-   r.   removeSourcej  s    


zFirewallD.removeSourcec             C   s6   t |t}t |t}tjd||f  | jjj||S )z[Return true if an source is in a zone.
        If zone is empty, use default zone.
        zzone.querySource('%s', '%s'))r   r^   r   r1   r#   r<   Zquery_source)r)   r<   r   r:   r-   r-   r.   querySource{  s    

zFirewallD.querySourcec             C   s&   t |t}tjd|  | jjj|S )zZReturn the list of sources of a zone.
        If zone is empty, use default zone.
        zzone.getSources('%s'))r   r^   r   r1   r#   r<   r   )r)   r<   r:   r-   r-   r.   
getSources  s    

zFirewallD.getSourcesc             C   s   t jd||f  d S )Nzzone.SourceAdded('%s', '%s'))r   r1   )r)   r<   r   r-   r-   r.   r     s    zFirewallD.SourceAddedc             C   s   t jd||f  d S )Nz$zone.ZoneOfSourceChanged('%s', '%s'))r   r1   )r)   r<   r   r-   r-   r.   r     s    zFirewallD.ZoneOfSourceChangedc             C   s   t jd||f  d S )Nzzone.SourceRemoved('%s', '%s'))r   r1   )r)   r<   r   r-   r-   r.   r     s    zFirewallD.SourceRemovedc             C   sH   t jd||f  | j| |= t|d}| jjj|| | j|| d S )Nz%zone.disableTimedRichRule('%s', '%s'))rule_str)r   r1   r2   r   r#   r<   remove_ruleRichRuleRemoved)r)   r<   ruler   r-   r-   r.   disableTimedRichRule  s
    
zFirewallD.disableTimedRichRuleZssic             C   s   t |t}t |t}t |t}tjd||f  t|d}| jjj|||}|dkrtt	j
|| j||}| j||| | j||| |S )Nzzone.addRichRule('%s', '%s'))r   r   )r   r^   r   r   r1   r   r#   r<   add_ruler   timeout_add_secondsr   r?   RichRuleAdded)r)   r<   r   timeoutr:   r   r   r>   r-   r-   r.   addRichRule  s    




zFirewallD.addRichRulec             C   s\   t |t}t |t}tjd||f  t|d}| jjj||}| j|| | j	|| |S )Nzzone.removeRichRule('%s', '%s'))r   )
r   r^   r   r1   r   r#   r<   r   rA   r   )r)   r<   r   r:   r   r   r-   r-   r.   removeRichRule  s    


zFirewallD.removeRichRulec             C   s@   t |t}t |t}tjd||f  t|d}| jjj||S )Nzzone.queryRichRule('%s', '%s'))r   )r   r^   r   r1   r   r#   r<   
query_rule)r)   r<   r   r:   r   r-   r-   r.   queryRichRule  s
    


zFirewallD.queryRichRulec             C   s&   t |t}tjd|  | jjj|S )Nzzone.getRichRules('%s'))r   r^   r   r1   r#   r<   Z
list_rules)r)   r<   r:   r-   r-   r.   getRichRules  s    
zFirewallD.getRichRulesc             C   s   t jd|||f  d S )Nz"zone.RichRuleAdded('%s', '%s', %d))r   r1   )r)   r<   r   r   r-   r-   r.   r     s    zFirewallD.RichRuleAddedc             C   s   t jd||f  d S )Nz zone.RichRuleRemoved('%s', '%s'))r   r1   )r)   r<   r   r-   r-   r.   r     s    zFirewallD.RichRuleRemovedc             C   s>   t jd||f  | j| |= | jjj|| | j|| d S )Nz$zone.disableTimedService('%s', '%s'))r   r1   r2   r#   r<   remove_serviceServiceRemoved)r)   r<   rr   r-   r-   r.   disableTimedService  s    zFirewallD.disableTimedServicec             C   s   t |t}t |t}t |t}tjd|||f  | j| | jjj||||}|dkrxt	j
|| j||}| j||| | j||| |S )Nzzone.addService('%s', '%s', %d)r   )r   r^   r   r   r1   r;   r#   r<   Zadd_servicer   r   r  r?   ServiceAdded)r)   r<   rr   r   r:   r   r>   r-   r-   r.   rv     s    




zFirewallD.addServicec             C   s\   t |t}t |t}tjd||f  | j| | jjj||}| j|| | j	|| |S )Nzzone.removeService('%s', '%s'))
r   r^   r   r1   r;   r#   r<   r  rA   r  )r)   r<   rr   r:   r   r-   r-   r.   removeService  s    


zFirewallD.removeServicec             C   s6   t |t}t |t}tjd||f  | jjj||S )Nzzone.queryService('%s', '%s'))r   r^   r   r1   r#   r<   Zquery_service)r)   r<   rr   r:   r-   r-   r.   queryService&  s    

zFirewallD.queryServicec             C   s&   t |t}tjd|  | jjj|S )Nzzone.getServices('%s'))r   r^   r   r1   r#   r<   Zlist_services)r)   r<   r:   r-   r-   r.   getServices1  s    
zFirewallD.getServicesc             C   s   t jd|||f  d S )Nz!zone.ServiceAdded('%s', '%s', %d))r   r1   )r)   r<   rr   r   r-   r-   r.   r  =  s    zFirewallD.ServiceAddedc             C   s   t jd||f  d S )Nzzone.ServiceRemoved('%s', '%s'))r   r1   )r)   r<   rr   r-   r-   r.   r  C  s    zFirewallD.ServiceRemovedc             C   sH   t jd|||f  | j| ||f= | jjj||| | j||| d S )Nz'zone.disableTimedPort('%s', '%s', '%s'))r   r1   r2   r#   r<   remove_portPortRemoved)r)   r<   portprotocolr-   r-   r.   disableTimedPortL  s
    zFirewallD.disableTimedPortZsssic             C   s   t |t}t |t}t |t}t |t}tjd|||f  | j| | jjj|||||}|dkrt	j
|| j|||}| j|||f| | j|||| |S )Nzzone.addPort('%s', '%s', '%s')r   )r   r^   r   r   r1   r;   r#   r<   Zadd_portr   r   r  r?   	PortAdded)r)   r<   r  r  r   r:   r   r>   r-   r-   r.   addPortT  s    






zFirewallD.addPortZsssc             C   sp   t |t}t |t}t |t}tjd|||f  | j| | jjj|||}| j|||f | j	||| |S )Nz!zone.removePort('%s', '%s', '%s'))
r   r^   r   r1   r;   r#   r<   r  rA   r  )r)   r<   r  r  r:   r   r-   r-   r.   
removePortk  s    



zFirewallD.removePortc             C   sD   t |t}t |t}t |t}tjd|||f  | jjj|||S )Nz zone.queryPort('%s', '%s', '%s'))r   r^   r   r1   r#   r<   Z
query_port)r)   r<   r  r  r:   r-   r-   r.   	queryPort}  s
    


zFirewallD.queryPortZaasc             C   s&   t |t}tjd|  | jjj|S )Nzzone.getPorts('%s'))r   r^   r   r1   r#   r<   Z
list_ports)r)   r<   r:   r-   r-   r.   getPorts  s    
zFirewallD.getPortsr   c             C   s   t jd||||f  d S )Nz$zone.PortAdded('%s', '%s', '%s', %d))r   r1   )r)   r<   r  r  r   r-   r-   r.   r    s    zFirewallD.PortAddedc             C   s   t jd|||f  d S )Nz"zone.PortRemoved('%s', '%s', '%s'))r   r1   )r)   r<   r  r  r-   r-   r.   r    s    zFirewallD.PortRemovedc             C   s>   t jd||f  | j| |= | jjj|| | j|| d S )Nz%zone.disableTimedProtocol('%s', '%s'))r   r1   r2   r#   r<   remove_protocolProtocolRemoved)r)   r<   r  r-   r-   r.   disableTimedProtocol  s    zFirewallD.disableTimedProtocolc             C   s   t |t}t |t}t |t}tjd||f  | j| | jjj||||}|dkrvt	j
|| j||}| j||| | j||| |S )Nzzone.enableProtocol('%s', '%s')r   )r   r^   r   r   r1   r;   r#   r<   Zadd_protocolr   r   r  r?   ProtocolAdded)r)   r<   r  r   r:   r   r>   r-   r-   r.   addProtocol  s    




zFirewallD.addProtocolc             C   s\   t |t}t |t}tjd||f  | j| | jjj||}| j|| | j	|| |S )Nzzone.removeProtocol('%s', '%s'))
r   r^   r   r1   r;   r#   r<   r  rA   r  )r)   r<   r  r:   r   r-   r-   r.   removeProtocol  s    


zFirewallD.removeProtocolc             C   s6   t |t}t |t}tjd||f  | jjj||S )Nzzone.queryProtocol('%s', '%s'))r   r^   r   r1   r#   r<   Zquery_protocol)r)   r<   r  r:   r-   r-   r.   queryProtocol  s    

zFirewallD.queryProtocolc             C   s&   t |t}tjd|  | jjj|S )Nzzone.getProtocols('%s'))r   r^   r   r1   r#   r<   Zlist_protocols)r)   r<   r:   r-   r-   r.   getProtocols  s    
zFirewallD.getProtocolsc             C   s   t jd|||f  d S )Nz"zone.ProtocolAdded('%s', '%s', %d))r   r1   )r)   r<   r  r   r-   r-   r.   r    s    zFirewallD.ProtocolAddedc             C   s   t jd||f  d S )Nz zone.ProtocolRemoved('%s', '%s'))r   r1   )r)   r<   r  r-   r-   r.   r    s    zFirewallD.ProtocolRemovedc             C   sJ   t jd|||f  | j| d||f= | jjj||| | j||| d S )Nz-zone.disableTimedSourcePort('%s', '%s', '%s')sport)r   r1   r2   r#   r<   remove_source_portSourcePortRemoved)r)   r<   r  r  r-   r-   r.   disableTimedSourcePort  s
    z FirewallD.disableTimedSourcePortc             C   s   t |t}t |t}t |t}t |t}tjd|||f  | j| | jjj|||||}|dkrt	j
|| j|||}| j|d||f| | j|||| |S )Nz$zone.addSourcePort('%s', '%s', '%s')r   r  )r   r^   r   r   r1   r;   r#   r<   Zadd_source_portr   r   r!  r?   SourcePortAdded)r)   r<   r  r  r   r:   r   r>   r-   r-   r.   addSourcePort  s    








zFirewallD.addSourcePortc             C   sr   t |t}t |t}t |t}tjd|||f  | j| | jjj|||}| j|d||f | j	||| |S )Nz'zone.removeSourcePort('%s', '%s', '%s')r  )
r   r^   r   r1   r;   r#   r<   r  rA   r   )r)   r<   r  r  r:   r   r-   r-   r.   removeSourcePort  s    





zFirewallD.removeSourcePortc             C   sD   t |t}t |t}t |t}tjd|||f  | jjj|||S )Nz&zone.querySourcePort('%s', '%s', '%s'))r   r^   r   r1   r#   r<   Zquery_source_port)r)   r<   r  r  r:   r-   r-   r.   querySourcePort)  s    




zFirewallD.querySourcePortc             C   s&   t |t}tjd|  | jjj|S )Nzzone.getSourcePorts('%s'))r   r^   r   r1   r#   r<   Zlist_source_ports)r)   r<   r:   r-   r-   r.   getSourcePorts6  s    
zFirewallD.getSourcePortsc             C   s   t jd||||f  d S )Nz*zone.SourcePortAdded('%s', '%s', '%s', %d))r   r1   )r)   r<   r  r  r   r-   r-   r.   r"  B  s    zFirewallD.SourcePortAddedc             C   s   t jd|||f  d S )Nz(zone.SourcePortRemoved('%s', '%s', '%s'))r   r1   )r)   r<   r  r  r-   r-   r.   r   H  s    
zFirewallD.SourcePortRemovedc             C   s(   | j | d= | jjj| | j| d S )N
masquerade)r2   r#   r<   remove_masqueradeMasqueradeRemoved)r)   r<   r-   r-   r.   disableTimedMasqueradeR  s    z FirewallD.disableTimedMasqueradeZsic             C   st   t |t}t |t}tjd|  | j| | jjj|||}|dkrdt	j
|| j|}| j|d| | j|| |S )Nzzone.addMasquerade('%s')r   r'  )r   r^   r   r   r1   r;   r#   r<   Zadd_masquerader   r   r*  r?   MasqueradeAdded)r)   r<   r   r:   r   r>   r-   r-   r.   addMasqueradeX  s    



zFirewallD.addMasqueradec             C   sJ   t |t}tjd|  | j| | jjj|}| j|d | j	| |S )Nzzone.removeMasquerade('%s')r'  )
r   r^   r   r1   r;   r#   r<   r(  rA   r)  )r)   r<   r:   r   r-   r-   r.   removeMasqueradel  s    


zFirewallD.removeMasqueradec             C   s&   t |t}tjd|  | jjj|S )Nzzone.queryMasquerade('%s'))r   r^   r   r1   r#   r<   Zquery_masquerade)r)   r<   r:   r-   r-   r.   queryMasquerade{  s    
zFirewallD.queryMasqueradec             C   s   t jd||f  d S )Nzzone.MasqueradeAdded('%s', %d))r   r1   )r)   r<   r   r-   r-   r.   r+    s    zFirewallD.MasqueradeAddedc             C   s   t jd|  d S )Nzzone.MasqueradeRemoved('%s'))r   r1   )r)   r<   r-   r-   r.   r)    s    zFirewallD.MasqueradeRemovedc             C   s@   | j | ||||f= | jjj||||| | j||||| d S )N)r2   r#   r<   remove_forward_portForwardPortRemoved)r)   r<   r  r  toporttoaddrr-   r-   r.   disable_forward_port  s    zFirewallD.disable_forward_portZsssssic       
      C   s   t |t}t |t}t |t}t |t}t |t}t |t}tjd|||||f  | j| | jjj|||||||}|dkrt	j
|| j|||||}	| j|||||f|	 | j|||||| |S )Nz1zone.addForwardPort('%s', '%s', '%s', '%s', '%s')r   )r   r^   r   r   r1   r;   r#   r<   Zadd_forward_portr   r   r3  r?   ForwardPortAdded)
r)   r<   r  r  r1  r2  r   r:   r   r>   r-   r-   r.   addForwardPort  s&    







zFirewallD.addForwardPortZsssssc             C   s   t |t}t |t}t |t}t |t}t |t}tjd|||||f  | j| | jjj|||||}| j|||||f | j	||||| |S )Nz4zone.removeForwardPort('%s', '%s', '%s', '%s', '%s'))
r   r^   r   r1   r;   r#   r<   r/  rA   r0  )r)   r<   r  r  r1  r2  r:   r   r-   r-   r.   removeForwardPort  s    





zFirewallD.removeForwardPortc             C   s`   t |t}t |t}t |t}t |t}t |t}tjd|||||f  | jjj|||||S )Nz3zone.queryForwardPort('%s', '%s', '%s', '%s', '%s'))r   r^   r   r1   r#   r<   Zquery_forward_port)r)   r<   r  r  r1  r2  r:   r-   r-   r.   queryForwardPort  s    




zFirewallD.queryForwardPortc             C   s&   t |t}tjd|  | jjj|S )Nzzone.getForwardPorts('%s'))r   r^   r   r1   r#   r<   Zlist_forward_ports)r)   r<   r:   r-   r-   r.   getForwardPorts  s    
zFirewallD.getForwardPortsc             C   s   t jd||||||f  d S )Nz7zone.ForwardPortAdded('%s', '%s', '%s', '%s', '%s', %d))r   r1   )r)   r<   r  r  r1  r2  r   r-   r-   r.   r4    s    zFirewallD.ForwardPortAddedc             C   s   t jd|||||f  d S )Nz5zone.ForwardPortRemoved('%s', '%s', '%s', '%s', '%s'))r   r1   )r)   r<   r  r  r1  r2  r-   r-   r.   r0    s    zFirewallD.ForwardPortRemovedc             C   s>   t jd||f  | j| |= | jjj|| | j|| d S )Nz&zone.disableTimedIcmpBlock('%s', '%s'))r   r1   r2   r#   r<   remove_icmp_blockIcmpBlockRemoved)r)   r<   icmpr:   r-   r-   r.   disableTimedIcmpBlock  s    zFirewallD.disableTimedIcmpBlockc             C   s   t |t}t |t}t |t}tjd||f  | j| | jjj||||}|dkrxt	j
|| j|||}| j||| | j||| |S )Nz zone.enableIcmpBlock('%s', '%s')r   )r   r^   r   r   r1   r;   r#   r<   Zadd_icmp_blockr   r   r<  r?   IcmpBlockAdded)r)   r<   r;  r   r:   r   r>   r-   r-   r.   addIcmpBlock  s    





zFirewallD.addIcmpBlockc             C   s\   t |t}t |t}tjd||f  | j| | jjj||}| j|| | j	|| |S )Nz zone.removeIcmpBlock('%s', '%s'))
r   r^   r   r1   r;   r#   r<   r9  rA   r:  )r)   r<   r;  r:   r   r-   r-   r.   removeIcmpBlock  s    


zFirewallD.removeIcmpBlockc             C   s6   t |t}t |t}tjd||f  | jjj||S )Nzzone.queryIcmpBlock('%s', '%s'))r   r^   r   r1   r#   r<   Zquery_icmp_block)r)   r<   r;  r:   r-   r-   r.   queryIcmpBlock&  s    

zFirewallD.queryIcmpBlockc             C   s&   t |t}tjd|  | jjj|S )Nzzone.getIcmpBlocks('%s'))r   r^   r   r1   r#   r<   Zlist_icmp_blocks)r)   r<   r:   r-   r-   r.   getIcmpBlocks1  s    
zFirewallD.getIcmpBlocksc             C   s   t jd|||f  d S )Nz#zone.IcmpBlockAdded('%s', '%s', %d))r   r1   )r)   r<   r;  r   r-   r-   r.   r=  =  s    zFirewallD.IcmpBlockAddedc             C   s   t jd||f  d S )Nz!zone.IcmpBlockRemoved('%s', '%s'))r   r1   )r)   r<   r;  r-   r-   r.   r:  C  s    zFirewallD.IcmpBlockRemovedc             C   s@   t |t}tjd|  | j| | jjj||}| j| |S )Nz zone.addIcmpBlockInversion('%s'))	r   r^   r   r1   r;   r#   r<   Zadd_icmp_block_inversionIcmpBlockInversionAdded)r)   r<   r:   r   r-   r-   r.   addIcmpBlockInversionL  s    


zFirewallD.addIcmpBlockInversionc             C   s>   t |t}tjd|  | j| | jjj|}| j| |S )Nz#zone.removeIcmpBlockInversion('%s'))	r   r^   r   r1   r;   r#   r<   Zremove_icmp_block_inversionIcmpBlockInversionRemoved)r)   r<   r:   r   r-   r-   r.   removeIcmpBlockInversionZ  s    


z"FirewallD.removeIcmpBlockInversionc             C   s&   t |t}tjd|  | jjj|S )Nz"zone.queryIcmpBlockInversion('%s'))r   r^   r   r1   r#   r<   Zquery_icmp_block_inversion)r)   r<   r:   r-   r-   r.   queryIcmpBlockInversionh  s    
z!FirewallD.queryIcmpBlockInversionc             C   s   t jd|  d S )Nz"zone.IcmpBlockInversionAdded('%s'))r   r1   )r)   r<   r-   r-   r.   rB  r  s    z!FirewallD.IcmpBlockInversionAddedc             C   s   t jd|  d S )Nz$zone.IcmpBlockInversionRemoved('%s'))r   r1   )r)   r<   r-   r-   r.   rD  w  s    z#FirewallD.IcmpBlockInversionRemovedc             C   s`   t |t}t |t}t |t}tjd|||f  | j| | jjj||| | j||| d S )Nz!direct.addChain('%s', '%s', '%s'))	r   r^   r   r1   r;   r#   r   Z	add_chain
ChainAdded)r)   ipvtablechainr:   r-   r-   r.   addChain  s    



zFirewallD.addChainc             C   s`   t |t}t |t}t |t}tjd|||f  | j| | jjj||| | j||| d S )Nz$direct.removeChain('%s', '%s', '%s'))	r   r^   r   r1   r;   r#   r   Zremove_chainChainRemoved)r)   rH  rI  rJ  r:   r-   r-   r.   removeChain  s    



zFirewallD.removeChainc             C   sD   t |t}t |t}t |t}tjd|||f  | jjj|||S )Nz#direct.queryChain('%s', '%s', '%s'))r   r^   r   r1   r#   r   Zquery_chain)r)   rH  rI  rJ  r:   r-   r-   r.   
queryChain  s
    


zFirewallD.queryChainc             C   s6   t |t}t |t}tjd||f  | jjj||S )Nzdirect.getChains('%s', '%s'))r   r^   r   r1   r#   r   Z
get_chains)r)   rH  rI  r:   r-   r-   r.   	getChains  s    

zFirewallD.getChainsza(sss)c             C   s   t jd | jjj S )Nzdirect.getAllChains())r   r1   r#   r   r   )r)   r:   r-   r-   r.   getAllChains  s    
zFirewallD.getAllChainsc             C   s   t jd|||f  d S )Nz#direct.ChainAdded('%s', '%s', '%s'))r   r1   )r)   rH  rI  rJ  r-   r-   r.   rG    s    zFirewallD.ChainAddedc             C   s   t jd|||f  d S )Nz%direct.ChainRemoved('%s', '%s', '%s'))r   r1   )r)   rH  rI  rJ  r-   r-   r.   rL    s    
zFirewallD.ChainRemovedZsssiasc             C   s   t |t}t |t}t |t}t |t}tdd |D }tjd||||dj|f  | j| | jj	j
||||| | j||||| d S )Nc             s   s   | ]}t |tV  qd S )N)r   r^   ).0r   r-   r-   r.   	<genexpr>  s    z$FirewallD.addRule.<locals>.<genexpr>z*direct.addRule('%s', '%s', '%s', %d, '%s')z',')r   r^   r   r   r   r1   joinr;   r#   r   r   	RuleAdded)r)   rH  rI  rJ  priorityr*   r:   r-   r-   r.   addRule  s    




zFirewallD.addRulec             C   s   t |t}t |t}t |t}t |t}tdd |D }tjd||||dj|f  | j| | jj	j
||||| | j||||| d S )Nc             s   s   | ]}t |tV  qd S )N)r   r^   )rQ  r   r-   r-   r.   rR    s    z'FirewallD.removeRule.<locals>.<genexpr>z-direct.removeRule('%s', '%s', '%s', %d, '%s')z',')r   r^   r   r   r   r1   rS  r;   r#   r   r   RuleRemoved)r)   rH  rI  rJ  rU  r*   r:   r-   r-   r.   
removeRule  s    




zFirewallD.removeRulec             C   s   t |t}t |t}t |t}tjd|||f  | j| xF| jjj|||D ]0\}}| jjj||||| | j	||||| qPW d S )Nz$direct.removeRules('%s', '%s', '%s'))
r   r^   r   r1   r;   r#   r   	get_rulesr   rW  )r)   rH  rI  rJ  r:   rU  r*   r-   r-   r.   removeRules  s    



zFirewallD.removeRulesc             C   sn   t |t}t |t}t |t}t |t}tdd |D }tjd||||dj|f  | jjj	|||||S )Nc             s   s   | ]}t |tV  qd S )N)r   r^   )rQ  r   r-   r-   r.   rR  	  s    z&FirewallD.queryRule.<locals>.<genexpr>z,direct.queryRule('%s', '%s', '%s', %d, '%s')z',')
r   r^   r   r   r   r1   rS  r#   r   r  )r)   rH  rI  rJ  rU  r*   r:   r-   r-   r.   	queryRule  s    



zFirewallD.queryRuleza(ias)c             C   sD   t |t}t |t}t |t}tjd|||f  | jjj|||S )Nz!direct.getRules('%s', '%s', '%s'))r   r^   r   r1   r#   r   rY  )r)   rH  rI  rJ  r:   r-   r-   r.   getRules	  s
    


zFirewallD.getRulesz	a(sssias)c             C   s   t jd | jjj S )Nzdirect.getAllRules())r   r1   r#   r   r   )r)   r:   r-   r-   r.   getAllRules	  s    
zFirewallD.getAllRulesc             C   s"   t jd||||dj|f  d S )Nz,direct.RuleAdded('%s', '%s', '%s', %d, '%s')z',')r   r1   rS  )r)   rH  rI  rJ  rU  r*   r-   r-   r.   rT  "	  s    zFirewallD.RuleAddedc             C   s"   t jd||||dj|f  d S )Nz.direct.RuleRemoved('%s', '%s', '%s', %d, '%s')z',')r   r1   rS  )r)   rH  rI  rJ  rU  r*   r-   r-   r.   rW  (	  s    zFirewallD.RuleRemovedrS   c             C   s   t |t}tdd |D }tjd|dj|f  | j| y| jjj	||S  t
k
r } zh|dkrztddd	d
g}ntd	d
g}t|}|jtjkrtt||@ dkrtj| t| W Y d d }~X nX d S )Nc             s   s   | ]}t |tV  qd S )N)r   r^   )rQ  r   r-   r-   r.   rR  9	  s    z(FirewallD.passthrough.<locals>.<genexpr>zdirect.passthrough('%s', '%s')z','rH   rL   z-Cz--checkz-Lz--listr   )rH   rL   )r   r^   r   r   r1   rS  r;   r#   r   passthroughr   setcoder   ZCOMMAND_FAILEDr   rx   r   )r)   rH  r*   r:   r9   Z
query_argsmsgr-   r-   r.   r^  2	  s"    


zFirewallD.passthroughc             C   s\   t |}tdd |D }tjd|dj|f  | j| | jjj|| | j	|| d S )Nc             s   s   | ]}t |V  qd S )N)r   )rQ  r   r-   r-   r.   rR  T	  s    z+FirewallD.addPassthrough.<locals>.<genexpr>z!direct.addPassthrough('%s', '%s')z',')
r   r   r   r1   rS  r;   r#   r   Zadd_passthroughPassthroughAdded)r)   rH  r*   r:   r-   r-   r.   addPassthroughM	  s    
zFirewallD.addPassthroughc             C   s\   t |}tdd |D }tjd|dj|f  | j| | jjj|| | j	|| d S )Nc             s   s   | ]}t |V  qd S )N)r   )rQ  r   r-   r-   r.   rR  b	  s    z.FirewallD.removePassthrough.<locals>.<genexpr>z$direct.removePassthrough('%s', '%s')z',')
r   r   r   r1   rS  r;   r#   r   Zremove_passthroughPassthroughRemoved)r)   rH  r*   r:   r-   r-   r.   removePassthrough[	  s    
zFirewallD.removePassthroughc             C   sB   t |}tdd |D }tjd|dj|f  | jjj||S )Nc             s   s   | ]}t |V  qd S )N)r   )rQ  r   r-   r-   r.   rR  p	  s    z-FirewallD.queryPassthrough.<locals>.<genexpr>z#direct.queryPassthrough('%s', '%s')z',')r   r   r   r1   rS  r#   r   Zquery_passthrough)r)   rH  r*   r:   r-   r-   r.   queryPassthroughi	  s
    zFirewallD.queryPassthroughza(sas)c             C   s   t jd | jjj S )Nzdirect.getAllPassthroughs())r   r1   r#   r   r   )r)   r:   r-   r-   r.   getAllPassthroughsu	  s    
zFirewallD.getAllPassthroughsc             C   s.   t jd xt| j D ]}| j|  qW d S )Nzdirect.removeAllPassthroughs())r   r1   reversedrg  re  )r)   r:   r^  r-   r-   r.   removeAllPassthroughs~	  s    
zFirewallD.removeAllPassthroughsc             C   s"   t |}tjd| | jjj|S )Nzdirect.getPassthroughs('%s'))r   r   r1   r#   r   Zget_passthroughs)r)   rH  r:   r-   r-   r.   getPassthroughs	  s    zFirewallD.getPassthroughsc             C   s   t jd|dj|f  d S )Nz#direct.PassthroughAdded('%s', '%s')z',')r   r1   rS  )r)   rH  r*   r-   r-   r.   rb  	  s    zFirewallD.PassthroughAddedc             C   s   t jd|dj|f  d S )Nz%direct.PassthroughRemoved('%s', '%s')z',')r   r1   rS  )r)   rH  r*   r-   r-   r.   rd  	  s    zFirewallD.PassthroughRemovedc             C   s   dS )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    	zFirewallD.authorizeAllc             C   s$   t |}tjd|  | jjj|S )Nzipset.queryIPSet('%s'))r   r   r1   r#   r|   Zquery_ipset)r)   r|   r:   r-   r-   r.   
queryIPSet	  s    zFirewallD.queryIPSetc             C   s   t jd | jjj S )Nzipsets.getIPSets())r   r1   r#   r|   r}   )r)   r:   r-   r-   r.   	getIPSets	  s    
zFirewallD.getIPSetsc             C   s(   t |t}tjd| | jjj|j S )NzgetIPSetSettings(%s))r   r^   r   r1   r#   r|   Z	get_ipsetr   )r)   r|   r:   r-   r-   r.   r~   	  s    
zFirewallD.getIPSetSettingsc             C   sL   t |}t |}tjd||f  | j| | jjj|| | j|| d S )Nzipset.addEntry('%s', '%s'))r   r   r1   r;   r#   r|   Z	add_entry
EntryAdded)r)   r|   entryr:   r-   r-   r.   addEntry	  s    
zFirewallD.addEntryc             C   sL   t |}t |}tjd||f  | j| | jjj|| | j|| d S )Nzipset.removeEntry('%s', '%s'))r   r   r1   r;   r#   r|   Zremove_entryEntryRemoved)r)   r|   ro  r:   r-   r-   r.   removeEntry	  s    
zFirewallD.removeEntryc             C   s2   t |}t |}tjd||f  | jjj||S )Nzipset.queryEntry('%s', '%s'))r   r   r1   r#   r|   Zquery_entry)r)   r|   ro  r:   r-   r-   r.   
queryEntry	  s    zFirewallD.queryEntryc             C   s$   t |}tjd|  | jjj|S )Nzipset.getEntries('%s'))r   r   r1   r#   r|   get_entries)r)   r|   r:   r-   r-   r.   
getEntries	  s    zFirewallD.getEntriesc             C   s   t |}t |t}tjd|dj| | jjj|}| jjj|| t	|}t	|}x|| D ]}| j
|| q^W x|| D ]}| j|| q|W d S )Nzipset.setEntries('%s', '[%s]'),)r   listr   r1   rS  r#   r|   rt  Zset_entriesr_  rn  rq  )r)   r|   Zentriesr:   Zold_entriesZold_entries_setZentries_setro  r-   r-   r.   
setEntries	  s    
zFirewallD.setEntriesc             C   s&   t |}t |}tjd||f  d S )Nzipset.EntryAdded('%s', '%s'))r   r   r1   )r)   r|   ro  r-   r-   r.   rn  
  s    zFirewallD.EntryAddedc             C   s&   t |}t |}tjd||f  d S )Nzipset.EntryRemoved('%s', '%s'))r   r   r1   )r)   r|   ro  r-   r-   r.   rq  
  s    zFirewallD.EntryRemovedc             C   s   t jd | jjj S )Nzhelpers.getHelpers())r   r1   r#   r   r   )r)   r:   r-   r-   r.   
getHelpers!
  s    
zFirewallD.getHelpersc             C   s(   t |t}tjd| | jjj|j S )NzgetHelperSettings(%s))r   r^   r   r1   r#   r   Z
get_helperr   )r)   r   r:   r-   r-   r.   r   *
  s    
zFirewallD.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
persistentr   r'   ZPK_ACTION_CONFIGZdefault_polkit_auth_requiredr   r"   r0   r&   r/   r
   r;   r?   rA   rC   rZ   r   ZPROPERTIES_IFACEre   rh   slipZpolkitZrequire_authri   rr   signalrj   ZPK_ACTION_INFOZINTROSPECTABLE_IFACErk   r(   rn   rp   ro   rq   r   ZPK_ACTION_POLICIESra   r   r   ZPK_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   ZPK_ACTION_CONFIG_INFOr   r_   r   r   r   ZDBUS_INTERFACE_POLICYr   r   r   r   rt   r   r   r   ZDBUS_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   r   r  r  r  r   r   r  rv   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)  r3  r5  r6  r7  r8  r4  r0  r<  r>  r?  r@  rA  r=  r:  rC  rE  rF  rB  rD  ZPK_ACTION_DIRECTr`   rK  rM  ZPK_ACTION_DIRECT_INFOrN  rO  rP  rG  rL  rV  rX  rZ  r[  r\  r]  rT  rW  r^  rc  re  rf  rg  ri  rj  rb  rd  ZPK_ACTION_ALLrk  rb   rl  rm  r   r~   rp  rr  rs  ru  rx  rn  rq  ry  r   r   __classcell__r-   r-   )r,   r.   r   A   s  	0"	



 K



	
	


	
	


	
	


	
	



























	






	





	














	






	
	


	
















	





	









	
	




)9__all__Zgi.repositoryr   r   sysmodulesr   r'   Zdbus.serviceZ	slip.dbusr~  Zslip.dbus.serviceZfirewallr   Zfirewall.core.fwr   Zfirewall.core.richr   Zfirewall.core.loggerr   Zfirewall.clientr	   Zfirewall.server.decoratorsr
   r   r   r   Zfirewall.server.configr   Zfirewall.dbus_utilsr   r   r   r   r   r   r   Zfirewall.core.io.functionsr   Zfirewall.core.io.ipsetr   Zfirewall.core.io.icmptyper   Zfirewall.core.io.helperr   Zfirewall.core.fw_nmr   r   r   Zfirewall.core.fw_ifcfgr   r   Zfirewall.errorsr   rr   ZObjectr   r-   r-   r-   r.   <module>   s2   
$