ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
Yj                @   s  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	m	Z	 d dl
mZ d dl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mZmZ d dl
mZ d dlmZ d dlZd dlZdadae	dd Z G dd de!Z"G dd de!Z#G dd de!Z$G dd de!Z%G dd de!Z&G dd de!Z'G dd de!Z(G dd de!Z)G d d! d!e!Z*G d"d# d#e!Z+G d$d% d%e!Z,G d&d' d'e!Z-G d(d) d)e!Z.G d*d+ d+e!Z/G d,d- d-e!Z0G d.d/ d/e!Z1G d0d1 d1e!Z2G d2d3 d3e!Z3dS )4    )GLibGObjectNZgobject)	decorator)config)DEFAULT_ZONE_TARGETDEFAULT_POLICY_TARGETDEFAULT_POLICY_PRIORITY)dbus_to_python)b2u)	Rich_Rule)normalize_ipset_entrycheck_entry_overlaps_existingcheck_for_overlapping_entries)errors)FirewallErrorFc             O   s  d}x|sy
| ||S  t jjk
r } zb|j }|j }tsD d|krVtd n4d|krht| n"d}|rzt| nttt| W Y dd}~X nf tk
r } zts nttt| W Y dd}~X n. t	k
 r   ts nttt
j  Y nX tsP qW dS )z#Decorator to handle exceptions
    FZNotAuthorizedExceptionzorg.freedesktop.DBus.ErrorTN)dbus
exceptionsDBusExceptionget_dbus_messageZget_dbus_nameexception_handlerr
   strr   	Exception	traceback
format_excnot_authorized_loop)funcargskwargsZ
authorizedeZdbus_messageZ	dbus_name r   /usr/lib/python3.6/client.pyhandle_exceptions0   s6    




  r!   c               @   s  e Zd Zedd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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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d0d1 Zed2d3 Zed4d5 Zed6d7 Zed8d9 Zed:d; Z ed<d= Z!ed>d? Z"ed@dA Z#edBdC Z$edDdE Z%edFdG Z&edHdI Z'edJdK Z(edLdM Z)edNdO Z*edPdQ Z+edRdS Z,edTdU Z-e.j/j0j1edVdW Z2e.j/j0j1edXdY Z3e.j/j0j1edZd[ Z4ed\d] Z5ed^d_ Z6e.j/j0j1ed`da Z7e.j/j0j1edbdc Z8e.j/j0j1eddde Z9edfdg Z:edhdi Z;e.j/j0j1edjdk Z<e.j/j0j1edldm Z=e.j/j0j1edndo Z>edpdq Z?edrds Z@edtdu ZAedvdw ZBedxdy ZCedzd{ ZDed|d} ZEed~d ZFedd ZGedd ZHedd ZIedd ZJedd ZKedd ZLedd ZMedd ZNedd ZOedd ZPedd ZQedd ZRdS )FirewallClientZoneSettingsNc             C   s   ddddt g g g dg g g g g g ddg| _ddddddd	d
dddddddddg| _dddddddddddddddddg| _|rt|trx"t|D ]\}}|| | j|< qW t|tr| j| d S )N FversionshortdescriptionUNUSEDtargetservicesportsicmp_blocks
masqueradeforward_ports
interfacessourcesZ	rules_str	protocolssource_portsZicmp_block_inversionforwardsbz(ss)z(ssss))	r   settingssettings_namesettings_dbus_type
isinstancelist	enumeratedictsetSettingsDict)selfr5   ivr   r   r    __init__X   s(    

z#FirewallClientZoneSettings.__init__c             C   s   d| j | jf S )Nz%s(%r))	__class__r5   )r=   r   r   r    __repr__o   s    z#FirewallClientZoneSettings.__repr__c             C   s6   i }x,t | j| jD ]\}}|dkr&q|||< qW |S )Nr'   )zipr6   r5   )r=   r5   keyvaluer   r   r    getSettingsDicts   s    z*FirewallClientZoneSettings.getSettingsDictc             C   s(   x"|D ]}|| | j | jj|< qW d S )N)r5   r6   index)r=   r5   rD   r   r   r    r<   {   s    
z*FirewallClientZoneSettings.setSettingsDictc             C   s|   i }xrt | j| j| jD ]\\}}}|dkr,qt|tkrLtj||d||< qt|tkrltj	||d||< q|||< qW |S )Nr'   )	signature)
rC   r6   r5   r7   typer9   r   Arrayr;   
Dictionary)r=   r5   rD   rE   sigr   r   r    getSettingsDbusDict   s    z.FirewallClientZoneSettings.getSettingsDbusDictc             C   s$   | j  }|d= |d= |d= |d= |S )Nr$   r%   r&   r(   )rF   )r=   r5   r   r   r    getRuntimeSettingsDict   s    z1FirewallClientZoneSettings.getRuntimeSettingsDictc             C   s$   | j  }|d= |d= |d= |d= |S )Nr$   r%   r&   r(   )rM   )r=   r5   r   r   r    getRuntimeSettingsDbusDict   s    z5FirewallClientZoneSettings.getRuntimeSettingsDbusDictc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    
getVersion   s    z%FirewallClientZoneSettings.getVersionc             C   s   || j d< d S )Nr   )r5   )r=   r$   r   r   r    
setVersion   s    z%FirewallClientZoneSettings.setVersionc             C   s
   | j d S )N   )r5   )r=   r   r   r    getShort   s    z#FirewallClientZoneSettings.getShortc             C   s   || j d< d S )NrR   )r5   )r=   r%   r   r   r    setShort   s    z#FirewallClientZoneSettings.setShortc             C   s
   | j d S )N   )r5   )r=   r   r   r    getDescription   s    z)FirewallClientZoneSettings.getDescriptionc             C   s   || j d< d S )NrU   )r5   )r=   r&   r   r   r    setDescription   s    z)FirewallClientZoneSettings.setDescriptionc             C   s   | j d tkr| j d S dS )N   default)r5   r   )r=   r   r   r    	getTarget   s    z$FirewallClientZoneSettings.getTargetc             C   s   |dkr|nt | jd< d S )NrY   rX   )r   r5   )r=   r(   r   r   r    	setTarget   s    z$FirewallClientZoneSettings.setTargetc             C   s
   | j d S )N   )r5   )r=   r   r   r    getServices   s    z&FirewallClientZoneSettings.getServicesc             C   s   || j d< d S )Nr\   )r5   )r=   r)   r   r   r    setServices   s    z&FirewallClientZoneSettings.setServicesc             C   s0   || j d kr | j d j| nttj|d S )Nr\   )r5   appendr   r   ALREADY_ENABLED)r=   servicer   r   r    
addService   s    z%FirewallClientZoneSettings.addServicec             C   s0   || j d kr | j d j| nttj|d S )Nr\   )r5   remover   r   NOT_ENABLED)r=   ra   r   r   r    removeService   s    z(FirewallClientZoneSettings.removeServicec             C   s   || j d kS )Nr\   )r5   )r=   ra   r   r   r    queryService   s    z'FirewallClientZoneSettings.queryServicec             C   s
   | j d S )N   )r5   )r=   r   r   r    getPorts   s    z#FirewallClientZoneSettings.getPortsc             C   s   || j d< d S )Nrg   )r5   )r=   r*   r   r   r    setPorts   s    z#FirewallClientZoneSettings.setPortsc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nrg   z'%s:%s')r5   r_   r   r   r`   )r=   portprotocolr   r   r    addPort   s    z"FirewallClientZoneSettings.addPortc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nrg   z'%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r    
removePort   s    z%FirewallClientZoneSettings.removePortc             C   s   ||f| j d kS )Nrg   )r5   )r=   rj   rk   r   r   r    	queryPort   s    z$FirewallClientZoneSettings.queryPortc             C   s
   | j d S )N   )r5   )r=   r   r   r    getProtocols   s    z'FirewallClientZoneSettings.getProtocolsc             C   s   || j d< d S )Nro   )r5   )r=   r0   r   r   r    setProtocols   s    z'FirewallClientZoneSettings.setProtocolsc             C   s0   || j d kr | j d j| nttj|d S )Nro   )r5   r_   r   r   r`   )r=   rk   r   r   r    addProtocol   s    z&FirewallClientZoneSettings.addProtocolc             C   s0   || j d kr | j d j| nttj|d S )Nro   )r5   rc   r   r   rd   )r=   rk   r   r   r    removeProtocol   s    z)FirewallClientZoneSettings.removeProtocolc             C   s   || j d kS )Nro   )r5   )r=   rk   r   r   r    queryProtocol   s    z(FirewallClientZoneSettings.queryProtocolc             C   s
   | j d S )N   )r5   )r=   r   r   r    getSourcePorts  s    z)FirewallClientZoneSettings.getSourcePortsc             C   s   || j d< d S )Nru   )r5   )r=   r*   r   r   r    setSourcePorts  s    z)FirewallClientZoneSettings.setSourcePortsc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nru   z'%s:%s')r5   r_   r   r   r`   )r=   rj   rk   r   r   r    addSourcePort  s    z(FirewallClientZoneSettings.addSourcePortc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nru   z'%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r    removeSourcePort  s    z+FirewallClientZoneSettings.removeSourcePortc             C   s   ||f| j d kS )Nru   )r5   )r=   rj   rk   r   r   r    querySourcePort  s    z*FirewallClientZoneSettings.querySourcePortc             C   s
   | j d S )N   )r5   )r=   r   r   r    getIcmpBlocks  s    z(FirewallClientZoneSettings.getIcmpBlocksc             C   s   || j d< d S )Nr{   )r5   )r=   
icmpblocksr   r   r    setIcmpBlocks  s    z(FirewallClientZoneSettings.setIcmpBlocksc             C   s0   || j d kr | j d j| nttj|d S )Nr{   )r5   r_   r   r   r`   )r=   icmptyper   r   r    addIcmpBlock   s    z'FirewallClientZoneSettings.addIcmpBlockc             C   s0   || j d kr | j d j| nttj|d S )Nr{   )r5   rc   r   r   rd   )r=   r   r   r   r    removeIcmpBlock&  s    z*FirewallClientZoneSettings.removeIcmpBlockc             C   s   || j d kS )Nr{   )r5   )r=   r   r   r   r    queryIcmpBlock,  s    z)FirewallClientZoneSettings.queryIcmpBlockc             C   s
   | j d S )N   )r5   )r=   r   r   r    getIcmpBlockInversion0  s    z0FirewallClientZoneSettings.getIcmpBlockInversionc             C   s   || j d< d S )Nr   )r5   )r=   flagr   r   r    setIcmpBlockInversion3  s    z0FirewallClientZoneSettings.setIcmpBlockInversionc             C   s&   | j d sd| j d< nttjd d S )Nr   Tzicmp-block-inversion)r5   r   r   r`   )r=   r   r   r    addIcmpBlockInversion6  s    
z0FirewallClientZoneSettings.addIcmpBlockInversionc             C   s&   | j d rd| j d< nttjd d S )Nr   Fzicmp-block-inversion)r5   r   r   rd   )r=   r   r   r    removeIcmpBlockInversion=  s    
z3FirewallClientZoneSettings.removeIcmpBlockInversionc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    queryIcmpBlockInversionD  s    z2FirewallClientZoneSettings.queryIcmpBlockInversionc             C   s
   | j d S )N   )r5   )r=   r   r   r    
getForwardI  s    z%FirewallClientZoneSettings.getForwardc             C   s   || j d< d S )Nr   )r5   )r=   r2   r   r   r    
setForwardL  s    z%FirewallClientZoneSettings.setForwardc             C   s&   | j d sd| j d< nttjd d S )Nr   Tr2   )r5   r   r   r`   )r=   r   r   r    
addForwardO  s    
z%FirewallClientZoneSettings.addForwardc             C   s&   | j d rd| j d< nttjd d S )Nr   Fr2   )r5   r   r   rd   )r=   r   r   r    removeForwardV  s    
z(FirewallClientZoneSettings.removeForwardc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    queryForward]  s    z'FirewallClientZoneSettings.queryForwardc             C   s
   | j d S )N   )r5   )r=   r   r   r    getMasqueradeb  s    z(FirewallClientZoneSettings.getMasqueradec             C   s   || j d< d S )Nr   )r5   )r=   r,   r   r   r    setMasqueradee  s    z(FirewallClientZoneSettings.setMasqueradec             C   s&   | j d sd| j d< nttjd d S )Nr   Tr,   )r5   r   r   r`   )r=   r   r   r    addMasqueradeh  s    
z(FirewallClientZoneSettings.addMasqueradec             C   s&   | j d rd| j d< nttjd d S )Nr   Fr,   )r5   r   r   rd   )r=   r   r   r    removeMasqueradeo  s    
z+FirewallClientZoneSettings.removeMasqueradec             C   s
   | j d S )Nr   )r5   )r=   r   r   r    queryMasqueradev  s    z*FirewallClientZoneSettings.queryMasqueradec             C   s
   | j d S )N	   )r5   )r=   r   r   r    getForwardPorts{  s    z*FirewallClientZoneSettings.getForwardPortsc             C   s   || j d< d S )Nr   )r5   )r=   r*   r   r   r    setForwardPorts~  s    z*FirewallClientZoneSettings.setForwardPortsc             C   sd   |d krd}|d krd}||||f| j d krH| j d j||||f nttjd||||f d S )Nr#   r   z'%s:%s:%s:%s')r5   r_   r   r   r`   )r=   rj   rk   to_portto_addrr   r   r    addForwardPort  s    z)FirewallClientZoneSettings.addForwardPortc             C   sd   |d krd}|d krd}||||f| j d krH| j d j||||f nttjd||||f d S )Nr#   r   z'%s:%s:%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r   r   r    removeForwardPort  s    z,FirewallClientZoneSettings.removeForwardPortc             C   s.   |d krd}|d krd}||||f| j d kS )Nr#   r   )r5   )r=   rj   rk   r   r   r   r   r    queryForwardPort  s
    z+FirewallClientZoneSettings.queryForwardPortc             C   s
   | j d S )N
   )r5   )r=   r   r   r    getInterfaces  s    z(FirewallClientZoneSettings.getInterfacesc             C   s   || j d< d S )Nr   )r5   )r=   r.   r   r   r    setInterfaces  s    z(FirewallClientZoneSettings.setInterfacesc             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   r_   r   r   r`   )r=   	interfacer   r   r    addInterface  s    z'FirewallClientZoneSettings.addInterfacec             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   rc   r   r   rd   )r=   r   r   r   r    removeInterface  s    z*FirewallClientZoneSettings.removeInterfacec             C   s   || j d kS )Nr   )r5   )r=   r   r   r   r    queryInterface  s    z)FirewallClientZoneSettings.queryInterfacec             C   s
   | j d S )N   )r5   )r=   r   r   r    
getSources  s    z%FirewallClientZoneSettings.getSourcesc             C   s   || j d< d S )Nr   )r5   )r=   r/   r   r   r    
setSources  s    z%FirewallClientZoneSettings.setSourcesc             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   r_   r   r   r`   )r=   sourcer   r   r    	addSource  s    z$FirewallClientZoneSettings.addSourcec             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   rc   r   r   rd   )r=   r   r   r   r    removeSource  s    z'FirewallClientZoneSettings.removeSourcec             C   s   || j d kS )Nr   )r5   )r=   r   r   r   r    querySource  s    z&FirewallClientZoneSettings.querySourcec             C   s
   | j d S )N   )r5   )r=   r   r   r    getRichRules  s    z'FirewallClientZoneSettings.getRichRulesc             C   s   dd |D }|| j d< d S )Nc             S   s   g | ]}t t|d qS ))rule_str)r   r   ).0rr   r   r    
<listcomp>  s    z;FirewallClientZoneSettings.setRichRules.<locals>.<listcomp>r   )r5   )r=   rulesr   r   r    setRichRules  s    z'FirewallClientZoneSettings.setRichRulesc             C   s>   t t|d}|| jd kr.| jd j| nttj|d S )N)r   r   )r   r   r5   r_   r   r   r`   )r=   ruler   r   r    addRichRule  s    z&FirewallClientZoneSettings.addRichRulec             C   s>   t t|d}|| jd kr.| jd j| nttj|d S )N)r   r   )r   r   r5   rc   r   r   rd   )r=   r   r   r   r    removeRichRule  s    z)FirewallClientZoneSettings.removeRichRulec             C   s   t t|d}|| jd kS )N)r   r   )r   r   r5   )r=   r   r   r   r    queryRichRule  s    z(FirewallClientZoneSettings.queryRichRule)N)S__name__
__module____qualname__r!   r@   rB   rF   r<   rM   rN   rO   rP   rQ   rS   rT   rV   rW   rZ   r[   r]   r^   rb   re   rf   rh   ri   rl   rm   rn   rp   rq   rr   rs   rt   rv   rw   rx   ry   rz   r|   r~   r   r   r   r   r   slipr   polkitenable_proxyr   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"   W   s   	
r"   c               @   s  e Zd Zdd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zejjjed'd( Zejjjed)d* Zejjjed+d, Zejjjed-d. Zejjjed/d0 Zejjjed1d2 Z ejjjed3d4 Z!ejjjed5d6 Z"ejjjed7d8 Z#ejjjed9d: Z$ejjjed;d< Z%ejjjed=d> Z&ejjjed?d@ Z'ejjjedAdB Z(ejjjedCdD Z)ejjjedEdF Z*ejjjedGdH Z+ejjjedIdJ Z,ejjjedKdL Z-ejjjedMdN Z.ejjjedOdP Z/ejjjedQdR Z0ejjjedSdT Z1ejjjedUdV Z2ejjjedWdX Z3ejjjedYdZ Z4ejjjed[d\ Z5ejjjed]d^ Z6ejjjed_d` Z7ejjjedadb Z8ejjjedcdd Z9ejjjededf Z:ejjjedgdh Z;ejjjedidj Z<ejjjedkdl Z=ejjjedmdn Z>ejjjedodp Z?ejjjedqdr Z@ejjjedsdt ZAejjjedudv ZBejjjedwdx ZCejjjedydz ZDejjjed{d| ZEejjjed}d~ ZFejjjedd ZGejjjedd ZHejjjedd ZIejjjedd ZJejjjedd ZKejjjedd ZLejjjedd ZMejjjedd ZNejjjedd ZOejjjedd ZPejjjedd ZQejjjedd ZRejjjedd ZSejjjedd ZTdS )FirewallClientConfigZonec             C   sL   || _ || _| j jtjj|| _tj| jtjjd| _	tj| jdd| _
d S )N)dbus_interfacezorg.freedesktop.DBus.Properties)buspath
get_objectr   r   DBUS_INTERFACEdbus_obj	InterfaceDBUS_INTERFACE_CONFIG_ZONEfw_zonefw_properties)r=   r   r   r   r   r    r@     s    z!FirewallClientConfigZone.__init__c             C   s   t | jjtjj|S )N)r	   r   Getr   r   r   )r=   propr   r   r    get_property  s    z%FirewallClientConfigZone.get_propertyc             C   s   t | jjtjjS )N)r	   r   GetAllr   r   r   )r=   r   r   r    get_properties  s    z'FirewallClientConfigZone.get_propertiesc             C   s   | j jtjj|| d S )N)r   Setr   r   r   )r=   r   rE   r   r   r    set_property  s    z%FirewallClientConfigZone.set_propertyc             C   s   t t| jj S )N)r"   r	   r   getSettings2)r=   r   r   r    getSettings  s    z$FirewallClientConfigZone.getSettingsc             C   s   | j j|j  d S )N)r   update2rM   )r=   r5   r   r   r    update  s    zFirewallClientConfigZone.updatec             C   s   | j j  d S )N)r   loadDefaults)r=   r   r   r    r     s    z%FirewallClientConfigZone.loadDefaultsc             C   s   | j j  d S )N)r   rc   )r=   r   r   r    rc     s    zFirewallClientConfigZone.removec             C   s   | j j| d S )N)r   rename)r=   namer   r   r    r     s    zFirewallClientConfigZone.renamec             C   s
   | j j S )N)r   rP   )r=   r   r   r    rP   "  s    z#FirewallClientConfigZone.getVersionc             C   s   | j j| d S )N)r   rQ   )r=   r$   r   r   r    rQ   '  s    z#FirewallClientConfigZone.setVersionc             C   s
   | j j S )N)r   rS   )r=   r   r   r    rS   .  s    z!FirewallClientConfigZone.getShortc             C   s   | j j| d S )N)r   rT   )r=   r%   r   r   r    rT   3  s    z!FirewallClientConfigZone.setShortc             C   s
   | j j S )N)r   rV   )r=   r   r   r    rV   :  s    z'FirewallClientConfigZone.getDescriptionc             C   s   | j j| d S )N)r   rW   )r=   r&   r   r   r    rW   ?  s    z'FirewallClientConfigZone.setDescriptionc             C   s
   | j j S )N)r   rZ   )r=   r   r   r    rZ   F  s    z"FirewallClientConfigZone.getTargetc             C   s   | j j| d S )N)r   r[   )r=   r(   r   r   r    r[   K  s    z"FirewallClientConfigZone.setTargetc             C   s
   | j j S )N)r   r]   )r=   r   r   r    r]   R  s    z$FirewallClientConfigZone.getServicesc             C   s   | j j| d S )N)r   r^   )r=   r)   r   r   r    r^   W  s    z$FirewallClientConfigZone.setServicesc             C   s   | j j| d S )N)r   rb   )r=   ra   r   r   r    rb   \  s    z#FirewallClientConfigZone.addServicec             C   s   | j j| d S )N)r   re   )r=   ra   r   r   r    re   a  s    z&FirewallClientConfigZone.removeServicec             C   s   | j j|S )N)r   rf   )r=   ra   r   r   r    rf   f  s    z%FirewallClientConfigZone.queryServicec             C   s
   | j j S )N)r   rh   )r=   r   r   r    rh   m  s    z!FirewallClientConfigZone.getPortsc             C   s   | j j| d S )N)r   ri   )r=   r*   r   r   r    ri   r  s    z!FirewallClientConfigZone.setPortsc             C   s   | j j|| d S )N)r   rl   )r=   rj   rk   r   r   r    rl   w  s    z FirewallClientConfigZone.addPortc             C   s   | j j|| d S )N)r   rm   )r=   rj   rk   r   r   r    rm   |  s    z#FirewallClientConfigZone.removePortc             C   s   | j j||S )N)r   rn   )r=   rj   rk   r   r   r    rn     s    z"FirewallClientConfigZone.queryPortc             C   s
   | j j S )N)r   rp   )r=   r   r   r    rp     s    z%FirewallClientConfigZone.getProtocolsc             C   s   | j j| d S )N)r   rq   )r=   r0   r   r   r    rq     s    z%FirewallClientConfigZone.setProtocolsc             C   s   | j j| d S )N)r   rr   )r=   rk   r   r   r    rr     s    z$FirewallClientConfigZone.addProtocolc             C   s   | j j| d S )N)r   rs   )r=   rk   r   r   r    rs     s    z'FirewallClientConfigZone.removeProtocolc             C   s   | j j|S )N)r   rt   )r=   rk   r   r   r    rt     s    z&FirewallClientConfigZone.queryProtocolc             C   s
   | j j S )N)r   rv   )r=   r   r   r    rv     s    z'FirewallClientConfigZone.getSourcePortsc             C   s   | j j| d S )N)r   rw   )r=   r*   r   r   r    rw     s    z'FirewallClientConfigZone.setSourcePortsc             C   s   | j j|| d S )N)r   rx   )r=   rj   rk   r   r   r    rx     s    z&FirewallClientConfigZone.addSourcePortc             C   s   | j j|| d S )N)r   ry   )r=   rj   rk   r   r   r    ry     s    z)FirewallClientConfigZone.removeSourcePortc             C   s   | j j||S )N)r   rz   )r=   rj   rk   r   r   r    rz     s    z(FirewallClientConfigZone.querySourcePortc             C   s
   | j j S )N)r   r|   )r=   r   r   r    r|     s    z&FirewallClientConfigZone.getIcmpBlocksc             C   s   | j j| d S )N)r   r~   )r=   Z	icmptypesr   r   r    r~     s    z&FirewallClientConfigZone.setIcmpBlocksc             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r     s    z%FirewallClientConfigZone.addIcmpBlockc             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r     s    z(FirewallClientConfigZone.removeIcmpBlockc             C   s   | j j|S )N)r   r   )r=   r   r   r   r    r     s    z'FirewallClientConfigZone.queryIcmpBlockc             C   s
   | j j S )N)r   r   )r=   r   r   r    r     s    z.FirewallClientConfigZone.getIcmpBlockInversionc             C   s   | j j| d S )N)r   r   )r=   Z	inversionr   r   r    r     s    z.FirewallClientConfigZone.setIcmpBlockInversionc             C   s   | j j  d S )N)r   r   )r=   r   r   r    r     s    z.FirewallClientConfigZone.addIcmpBlockInversionc             C   s   | j j  d S )N)r   r   )r=   r   r   r    r     s    z1FirewallClientConfigZone.removeIcmpBlockInversionc             C   s
   | j j S )N)r   r   )r=   r   r   r    r     s    z0FirewallClientConfigZone.queryIcmpBlockInversionc             C   s   | j j d S )Nr2   )r   r   )r=   r   r   r    r     s    z#FirewallClientConfigZone.getForwardc             C   s   | j jd|i d S )Nr2   )r   r   )r=   r2   r   r   r    r     s    z#FirewallClientConfigZone.setForwardc             C   s   | j jddi d S )Nr2   T)r   r   )r=   r   r   r    r     s    z#FirewallClientConfigZone.addForwardc             C   s   | j jddi d S )Nr2   F)r   r   )r=   r   r   r    r     s    z&FirewallClientConfigZone.removeForwardc             C   s   | j j d S )Nr2   )r   r   )r=   r   r   r    r     s    z%FirewallClientConfigZone.queryForwardc             C   s
   | j j S )N)r   r   )r=   r   r   r    r     s    z&FirewallClientConfigZone.getMasqueradec             C   s   | j j| d S )N)r   r   )r=   r,   r   r   r    r     s    z&FirewallClientConfigZone.setMasqueradec             C   s   | j j  d S )N)r   r   )r=   r   r   r    r     s    z&FirewallClientConfigZone.addMasqueradec             C   s   | j j  d S )N)r   r   )r=   r   r   r    r     s    z)FirewallClientConfigZone.removeMasqueradec             C   s
   | j j S )N)r   r   )r=   r   r   r    r   #  s    z(FirewallClientConfigZone.queryMasqueradec             C   s
   | j j S )N)r   r   )r=   r   r   r    r   *  s    z(FirewallClientConfigZone.getForwardPortsc             C   s   | j j| d S )N)r   r   )r=   r*   r   r   r    r   /  s    z(FirewallClientConfigZone.setForwardPortsc             C   s.   |d krd}|d krd}| j j|||| d S )Nr#   )r   r   )r=   rj   rk   toporttoaddrr   r   r    r   4  s
    z'FirewallClientConfigZone.addForwardPortc             C   s.   |d krd}|d krd}| j j|||| d S )Nr#   )r   r   )r=   rj   rk   r   r   r   r   r    r   =  s
    z*FirewallClientConfigZone.removeForwardPortc             C   s*   |d krd}|d krd}| j j||||S )Nr#   )r   r   )r=   rj   rk   r   r   r   r   r    r   F  s
    z)FirewallClientConfigZone.queryForwardPortc             C   s
   | j j S )N)r   r   )r=   r   r   r    r   Q  s    z&FirewallClientConfigZone.getInterfacesc             C   s   | j j| d S )N)r   r   )r=   r.   r   r   r    r   V  s    z&FirewallClientConfigZone.setInterfacesc             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r   [  s    z%FirewallClientConfigZone.addInterfacec             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r   `  s    z(FirewallClientConfigZone.removeInterfacec             C   s   | j j|S )N)r   r   )r=   r   r   r   r    r   e  s    z'FirewallClientConfigZone.queryInterfacec             C   s
   | j j S )N)r   r   )r=   r   r   r    r   l  s    z#FirewallClientConfigZone.getSourcesc             C   s   | j j| d S )N)r   r   )r=   r/   r   r   r    r   q  s    z#FirewallClientConfigZone.setSourcesc             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r   v  s    z"FirewallClientConfigZone.addSourcec             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r   {  s    z%FirewallClientConfigZone.removeSourcec             C   s   | j j|S )N)r   r   )r=   r   r   r   r    r     s    z$FirewallClientConfigZone.querySourcec             C   s
   | j j S )N)r   r   )r=   r   r   r    r     s    z%FirewallClientConfigZone.getRichRulesc             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r     s    z%FirewallClientConfigZone.setRichRulesc             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r     s    z$FirewallClientConfigZone.addRichRulec             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r     s    z'FirewallClientConfigZone.removeRichRulec             C   s   | j j|S )N)r   r   )r=   r   r   r   r    r     s    z&FirewallClientConfigZone.queryRichRuleN)Ur   r   r   r@   r   r   r   r   r!   r   r   r   r   r   r   rc   r   rP   rQ   rS   rT   rV   rW   rZ   r[   r]   r^   rb   re   rf   rh   ri   rl   rm   rn   rp   rq   rr   rs   rt   rv   rw   rx   ry   rz   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   r   r    r     s2  
r   c               @   s@  e Zd ZedddZedd Zedd Zedd	 Ze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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d,d- Zed.d/ Zed0d1 Zed2d3 Zed4d5 Zed6d7 Zed8d9 Zed:d; Z ed<d= Z!ed>d? Z"ed@dA Z#edBdC Z$edDdE Z%edFdG Z&edHdI Z'edJdK Z(edLdM Z)edNdO Z*edPdQ Z+edRdS Z,e-j.j/j0edTdU Z1e-j.j/j0edVdW Z2e-j.j/j0edXdY Z3edZd[ Z4ed\d] Z5ed^d_ Z6ed`da Z7edbdc Z8eddde Z9edfdg Z:edhdi Z;edjdk Z<edldm Z=edndo Z>edpdq Z?edrds Z@edtdu ZAedvdw ZBedxdy ZCedzd{ ZDed|d} ZEed~d ZFedd ZGedd ZHedd ZIdS )FirewallClientPolicySettingsNc             C   s\   dg g g g dg t g g g dg tdd| _dddddddddddddddg| _|rX| j| d S )	Nr#   F)r&   egress_zonesr-   r+   ingress_zonesr,   r*   priorityr0   
rich_rulesr)   r%   r1   r(   r$   r3   z(ssss)r4   z(ss)r>   )r   r   r5   r7   r<   )r=   r5   r   r   r    r@     s,    

z%FirewallClientPolicySettings.__init__c             C   s   d| j | jf S )Nz%s(%r))rA   r5   )r=   r   r   r    rB     s    z%FirewallClientPolicySettings.__repr__c             C   s   | j S )N)r5   )r=   r   r   r    rF     s    z,FirewallClientPolicySettings.getSettingsDictc             C   s    x|D ]}|| | j |< qW d S )N)r5   )r=   r5   rD   r   r   r    r<     s    
z,FirewallClientPolicySettings.setSettingsDictc             C   sv   i }xlt | j| jD ]Z\}}| j| }t|tkrFtj||d||< qt|tkrftj||d||< q|||< qW |S )N)rH   )	rC   r5   r7   rI   r9   r   rJ   r;   rK   )r=   r5   rD   rL   rE   r   r   r    rM     s    
z0FirewallClientPolicySettings.getSettingsDbusDictc             C   s    | j  }xdD ]
}||= qW |S )Nr$   r%   r&   r(   )r$   r%   r&   r(   )rM   )r=   r5   rD   r   r   r    rO     s    

z7FirewallClientPolicySettings.getRuntimeSettingsDbusDictc             C   s
   | j d S )Nr$   )r5   )r=   r   r   r    rP     s    z'FirewallClientPolicySettings.getVersionc             C   s   || j d< d S )Nr$   )r5   )r=   r$   r   r   r    rQ     s    z'FirewallClientPolicySettings.setVersionc             C   s
   | j d S )Nr%   )r5   )r=   r   r   r    rS     s    z%FirewallClientPolicySettings.getShortc             C   s   || j d< d S )Nr%   )r5   )r=   r%   r   r   r    rT     s    z%FirewallClientPolicySettings.setShortc             C   s
   | j d S )Nr&   )r5   )r=   r   r   r    rV     s    z+FirewallClientPolicySettings.getDescriptionc             C   s   || j d< d S )Nr&   )r5   )r=   r&   r   r   r    rW     s    z+FirewallClientPolicySettings.setDescriptionc             C   s
   | j d S )Nr(   )r5   )r=   r   r   r    rZ     s    z&FirewallClientPolicySettings.getTargetc             C   s   || j d< d S )Nr(   )r5   )r=   r(   r   r   r    r[     s    z&FirewallClientPolicySettings.setTargetc             C   s
   | j d S )Nr)   )r5   )r=   r   r   r    r]     s    z(FirewallClientPolicySettings.getServicesc             C   s   || j d< d S )Nr)   )r5   )r=   r)   r   r   r    r^     s    z(FirewallClientPolicySettings.setServicesc             C   s0   || j d kr | j d j| nttj|d S )Nr)   )r5   r_   r   r   r`   )r=   ra   r   r   r    rb     s    z'FirewallClientPolicySettings.addServicec             C   s0   || j d kr | j d j| nttj|d S )Nr)   )r5   rc   r   r   rd   )r=   ra   r   r   r    re      s    z*FirewallClientPolicySettings.removeServicec             C   s   || j d kS )Nr)   )r5   )r=   ra   r   r   r    rf     s    z)FirewallClientPolicySettings.queryServicec             C   s
   | j d S )Nr*   )r5   )r=   r   r   r    rh   
  s    z%FirewallClientPolicySettings.getPortsc             C   s   || j d< d S )Nr*   )r5   )r=   r*   r   r   r    ri     s    z%FirewallClientPolicySettings.setPortsc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr*   z'%s:%s')r5   r_   r   r   r`   )r=   rj   rk   r   r   r    rl     s    z$FirewallClientPolicySettings.addPortc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr*   z'%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r    rm     s    z'FirewallClientPolicySettings.removePortc             C   s   ||f| j d kS )Nr*   )r5   )r=   rj   rk   r   r   r    rn     s    z&FirewallClientPolicySettings.queryPortc             C   s
   | j d S )Nr0   )r5   )r=   r   r   r    rp   "  s    z)FirewallClientPolicySettings.getProtocolsc             C   s   || j d< d S )Nr0   )r5   )r=   r0   r   r   r    rq   %  s    z)FirewallClientPolicySettings.setProtocolsc             C   s0   || j d kr | j d j| nttj|d S )Nr0   )r5   r_   r   r   r`   )r=   rk   r   r   r    rr   (  s    z(FirewallClientPolicySettings.addProtocolc             C   s0   || j d kr | j d j| nttj|d S )Nr0   )r5   rc   r   r   rd   )r=   rk   r   r   r    rs   .  s    z+FirewallClientPolicySettings.removeProtocolc             C   s   || j d kS )Nr0   )r5   )r=   rk   r   r   r    rt   4  s    z*FirewallClientPolicySettings.queryProtocolc             C   s
   | j d S )Nr1   )r5   )r=   r   r   r    rv   8  s    z+FirewallClientPolicySettings.getSourcePortsc             C   s   || j d< d S )Nr1   )r5   )r=   r*   r   r   r    rw   ;  s    z+FirewallClientPolicySettings.setSourcePortsc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr1   z'%s:%s')r5   r_   r   r   r`   )r=   rj   rk   r   r   r    rx   >  s    z*FirewallClientPolicySettings.addSourcePortc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr1   z'%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r    ry   E  s    z-FirewallClientPolicySettings.removeSourcePortc             C   s   ||f| j d kS )Nr1   )r5   )r=   rj   rk   r   r   r    rz   L  s    z,FirewallClientPolicySettings.querySourcePortc             C   s
   | j d S )Nr+   )r5   )r=   r   r   r    r|   P  s    z*FirewallClientPolicySettings.getIcmpBlocksc             C   s   || j d< d S )Nr+   )r5   )r=   r}   r   r   r    r~   S  s    z*FirewallClientPolicySettings.setIcmpBlocksc             C   s0   || j d kr | j d j| nttj|d S )Nr+   )r5   r_   r   r   r`   )r=   r   r   r   r    r   V  s    z)FirewallClientPolicySettings.addIcmpBlockc             C   s0   || j d kr | j d j| nttj|d S )Nr+   )r5   rc   r   r   rd   )r=   r   r   r   r    r   \  s    z,FirewallClientPolicySettings.removeIcmpBlockc             C   s   || j d kS )Nr+   )r5   )r=   r   r   r   r    r   b  s    z+FirewallClientPolicySettings.queryIcmpBlockc             C   s
   | j d S )Nr,   )r5   )r=   r   r   r    r   f  s    z*FirewallClientPolicySettings.getMasqueradec             C   s   || j d< d S )Nr,   )r5   )r=   r,   r   r   r    r   i  s    z*FirewallClientPolicySettings.setMasqueradec             C   s&   | j d sd| j d< nttjd d S )Nr,   T)r5   r   r   r`   )r=   r   r   r    r   l  s    
z*FirewallClientPolicySettings.addMasqueradec             C   s&   | j d rd| j d< nttjd d S )Nr,   F)r5   r   r   rd   )r=   r   r   r    r   s  s    
z-FirewallClientPolicySettings.removeMasqueradec             C   s
   | j d S )Nr,   )r5   )r=   r   r   r    r   z  s    z,FirewallClientPolicySettings.queryMasqueradec             C   s
   | j d S )Nr-   )r5   )r=   r   r   r    r     s    z,FirewallClientPolicySettings.getForwardPortsc             C   s   || j d< d S )Nr-   )r5   )r=   r*   r   r   r    r     s    z,FirewallClientPolicySettings.setForwardPortsc             C   sd   |d krd}|d krd}||||f| j d krH| j d j||||f nttjd||||f d S )Nr#   r-   z'%s:%s:%s:%s')r5   r_   r   r   r`   )r=   rj   rk   r   r   r   r   r    r     s    z+FirewallClientPolicySettings.addForwardPortc             C   sd   |d krd}|d krd}||||f| j d krH| j d j||||f nttjd||||f d S )Nr#   r-   z'%s:%s:%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r   r   r    r     s    z.FirewallClientPolicySettings.removeForwardPortc             C   s.   |d krd}|d krd}||||f| j d kS )Nr#   r-   )r5   )r=   rj   rk   r   r   r   r   r    r     s
    z-FirewallClientPolicySettings.queryForwardPortc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    r     s    z)FirewallClientPolicySettings.getRichRulesc             C   s   dd |D }|| j d< d S )Nc             S   s   g | ]}t t|d qS ))r   )r   r   )r   r   r   r   r    r     s    z=FirewallClientPolicySettings.setRichRules.<locals>.<listcomp>r   )r5   )r=   r   r   r   r    r     s    z)FirewallClientPolicySettings.setRichRulesc             C   s>   t t|d}|| jd kr.| jd j| nttj|d S )N)r   r   )r   r   r5   r_   r   r   r`   )r=   r   r   r   r    r     s    z(FirewallClientPolicySettings.addRichRulec             C   s>   t t|d}|| jd kr.| jd j| nttj|d S )N)r   r   )r   r   r5   rc   r   r   rd   )r=   r   r   r   r    r     s    z+FirewallClientPolicySettings.removeRichRulec             C   s   t t|d}|| jd kS )N)r   r   )r   r   r5   )r=   r   r   r   r    r     s    z*FirewallClientPolicySettings.queryRichRulec             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getIngressZones  s    z,FirewallClientPolicySettings.getIngressZonesc             C   s   || j d< d S )Nr   )r5   )r=   r   r   r   r    setIngressZones  s    z,FirewallClientPolicySettings.setIngressZonesc             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   r_   r   r   r`   )r=   ingress_zoner   r   r    addIngressZone  s    z+FirewallClientPolicySettings.addIngressZonec             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   rc   r   r   rd   )r=   r   r   r   r    removeIngressZone  s    z.FirewallClientPolicySettings.removeIngressZonec             C   s   || j d kS )Nr   )r5   )r=   r   r   r   r    queryIngressZone  s    z-FirewallClientPolicySettings.queryIngressZonec             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getEgressZones  s    z+FirewallClientPolicySettings.getEgressZonesc             C   s   || j d< d S )Nr   )r5   )r=   r   r   r   r    setEgressZones  s    z+FirewallClientPolicySettings.setEgressZonesc             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   r_   r   r   r`   )r=   egress_zoner   r   r    addEgressZone  s    z*FirewallClientPolicySettings.addEgressZonec             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   rc   r   r   rd   )r=   r   r   r   r    removeEgressZone  s    z-FirewallClientPolicySettings.removeEgressZonec             C   s   || j d kS )Nr   )r5   )r=   r   r   r   r    queryEgressZone  s    z,FirewallClientPolicySettings.queryEgressZonec             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getPriority  s    z(FirewallClientPolicySettings.getPriorityc             C   s   t || jd< d S )Nr   )intr5   )r=   r   r   r   r    setPriority  s    z(FirewallClientPolicySettings.setPriority)N)Jr   r   r   r!   r@   rB   rF   r<   rM   rO   rP   rQ   rS   rT   rV   rW   rZ   r[   r]   r^   rb   re   rf   rh   ri   rl   rm   rn   rp   rq   rr   rs   rt   rv   rw   rx   ry   rz   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     s   r   c               @   s   e Zd Zdd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd ZdS )FirewallClientConfigPolicyc             C   sL   || _ || _| j jtjj|| _tj| jtjjd| _	tj| jdd| _
d S )N)r   zorg.freedesktop.DBus.Properties)r   r   r   r   r   r   r   r   DBUS_INTERFACE_CONFIG_POLICY	fw_policyr   )r=   r   r   r   r   r    r@     s    z#FirewallClientConfigPolicy.__init__c             C   s   t | jjtjj|S )N)r	   r   r   r   r   r   )r=   r   r   r   r    r     s    z'FirewallClientConfigPolicy.get_propertyc             C   s   t | jjtjjS )N)r	   r   r   r   r   r   )r=   r   r   r    r     s    z)FirewallClientConfigPolicy.get_propertiesc             C   s   | j jtjj|| d S )N)r   r   r   r   r   )r=   r   rE   r   r   r    r     s    z'FirewallClientConfigPolicy.set_propertyc             C   s   t t| jj S )N)r   r	   r   r   )r=   r   r   r    r     s    z&FirewallClientConfigPolicy.getSettingsc             C   s   | j j|j  d S )N)r   r   rM   )r=   r5   r   r   r    r     s    z!FirewallClientConfigPolicy.updatec             C   s   | j j  d S )N)r   r   )r=   r   r   r    r     s    z'FirewallClientConfigPolicy.loadDefaultsc             C   s   | j j  d S )N)r   rc   )r=   r   r   r    rc     s    z!FirewallClientConfigPolicy.removec             C   s   | j j| d S )N)r   r   )r=   r   r   r   r    r   !  s    z!FirewallClientConfigPolicy.renameN)r   r   r   r@   r   r   r   r   r!   r   r   r   r   r   r   rc   r   r   r   r   r    r     s"   
r   c               @   s8  e Zd Zed^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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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d0d1 Zed2d3 Zed4d5 Zed6d7 Zed8d9 Zed:d; Z ed<d= Z!ed>d? Z"ed@dA Z#edBdC Z$edDdE Z%ed_dFdGZ&edHdI Z'edJdK Z(edLdM Z)edNdO Z*edPdQ Z+edRdS Z,edTdU Z-edVdW Z.edXdY Z/edZd[ Z0ed\d] Z1dS )`FirewallClientServiceSettingsNc          
   C   s   dddg g i g g g g g
| _ dddddddd	d
dg
| _ddddddddddg
| _|rt|tkrx:t|D ]\}}|| | j |< qhW nt|tkr| j| d S )Nr#   r$   r%   r&   r*   modulesdestinationr0   r1   includeshelpersr3   z(ss)Zss)r5   r6   r7   rI   r9   r:   r;   r<   )r=   r5   r>   r?   r   r   r    r@   )  s    z&FirewallClientServiceSettings.__init__c             C   s   d| j | jf S )Nz%s(%r))rA   r5   )r=   r   r   r    rB   9  s    z&FirewallClientServiceSettings.__repr__c             C   s,   i }x"t | j| jD ]\}}|||< qW |S )N)rC   r6   r5   )r=   r5   rD   rE   r   r   r    rF   =  s    z-FirewallClientServiceSettings.getSettingsDictc             C   s(   x"|D ]}|| | j | jj|< qW d S )N)r5   r6   rG   )r=   r5   rD   r   r   r    r<   C  s    
z-FirewallClientServiceSettings.setSettingsDictc             C   sr   i }xht | j| j| jD ]R\}}}t|tkrBtj||d||< qt|tkrbtj	||d||< q|||< qW |S )N)rH   )
rC   r6   r5   r7   rI   r9   r   rJ   r;   rK   )r=   r5   rD   rE   rL   r   r   r    rM   G  s    z1FirewallClientServiceSettings.getSettingsDbusDictc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    rP   S  s    z(FirewallClientServiceSettings.getVersionc             C   s   || j d< d S )Nr   )r5   )r=   r$   r   r   r    rQ   V  s    z(FirewallClientServiceSettings.setVersionc             C   s
   | j d S )NrR   )r5   )r=   r   r   r    rS   Z  s    z&FirewallClientServiceSettings.getShortc             C   s   || j d< d S )NrR   )r5   )r=   r%   r   r   r    rT   ]  s    z&FirewallClientServiceSettings.setShortc             C   s
   | j d S )NrU   )r5   )r=   r   r   r    rV   a  s    z,FirewallClientServiceSettings.getDescriptionc             C   s   || j d< d S )NrU   )r5   )r=   r&   r   r   r    rW   d  s    z,FirewallClientServiceSettings.setDescriptionc             C   s
   | j d S )N   )r5   )r=   r   r   r    rh   h  s    z&FirewallClientServiceSettings.getPortsc             C   s   || j d< d S )Nr   )r5   )r=   r*   r   r   r    ri   k  s    z&FirewallClientServiceSettings.setPortsc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr   z'%s:%s')r5   r_   r   r   r`   )r=   rj   rk   r   r   r    rl   n  s    z%FirewallClientServiceSettings.addPortc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr   z'%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r    rm   u  s    z(FirewallClientServiceSettings.removePortc             C   s   ||f| j d kS )Nr   )r5   )r=   rj   rk   r   r   r    rn   |  s    z'FirewallClientServiceSettings.queryPortc             C   s
   | j d S )Nrg   )r5   )r=   r   r   r    rp     s    z*FirewallClientServiceSettings.getProtocolsc             C   s   || j d< d S )Nrg   )r5   )r=   r0   r   r   r    rq     s    z*FirewallClientServiceSettings.setProtocolsc             C   s0   || j d kr | j d j| nttj|d S )Nrg   )r5   r_   r   r   r`   )r=   rk   r   r   r    rr     s    z)FirewallClientServiceSettings.addProtocolc             C   s0   || j d kr | j d j| nttj|d S )Nrg   )r5   rc   r   r   rd   )r=   rk   r   r   r    rs     s    z,FirewallClientServiceSettings.removeProtocolc             C   s   || j d kS )Nrg   )r5   )r=   rk   r   r   r    rt     s    z+FirewallClientServiceSettings.queryProtocolc             C   s
   | j d S )Nr{   )r5   )r=   r   r   r    rv     s    z,FirewallClientServiceSettings.getSourcePortsc             C   s   || j d< d S )Nr{   )r5   )r=   r*   r   r   r    rw     s    z,FirewallClientServiceSettings.setSourcePortsc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr{   z'%s:%s')r5   r_   r   r   r`   )r=   rj   rk   r   r   r    rx     s    z+FirewallClientServiceSettings.addSourcePortc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr{   z'%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r    ry     s    z.FirewallClientServiceSettings.removeSourcePortc             C   s   ||f| j d kS )Nr{   )r5   )r=   rj   rk   r   r   r    rz     s    z-FirewallClientServiceSettings.querySourcePortc             C   s
   | j d S )NrX   )r5   )r=   r   r   r    
getModules  s    z(FirewallClientServiceSettings.getModulesc             C   s   || j d< d S )NrX   )r5   )r=   r   r   r   r    
setModules  s    z(FirewallClientServiceSettings.setModulesc             C   s0   || j d kr | j d j| nttj|d S )NrX   )r5   r_   r   r   r`   )r=   moduler   r   r    	addModule  s    z'FirewallClientServiceSettings.addModulec             C   s0   || j d kr | j d j| nttj|d S )NrX   )r5   rc   r   r   rd   )r=   r   r   r   r    removeModule  s    z*FirewallClientServiceSettings.removeModulec             C   s   || j d kS )NrX   )r5   )r=   r   r   r   r    queryModule  s    z)FirewallClientServiceSettings.queryModulec             C   s
   | j d S )Nr\   )r5   )r=   r   r   r    getDestinations  s    z-FirewallClientServiceSettings.getDestinationsc             C   s   || j d< d S )Nr\   )r5   )r=   destinationsr   r   r    setDestinations  s    z-FirewallClientServiceSettings.setDestinationsc             C   sH   || j d ks | j d | |kr0|| j d |< nttjd||f d S )Nr\   z'%s:%s')r5   r   r   r`   )r=   	dest_typeaddressr   r   r    setDestination  s
    z,FirewallClientServiceSettings.setDestinationc             C   s^   || j d krJ|d k	r<| j d | |kr<ttjd||f | j d |= nttjd| d S )Nr\   z'%s:%s'z'%s')r5   r   r   rd   )r=   r   r   r   r   r    removeDestination  s    z/FirewallClientServiceSettings.removeDestinationc             C   s    || j d ko|| j d | kS )Nr\   )r5   )r=   r   r   r   r   r    queryDestination  s    z.FirewallClientServiceSettings.queryDestinationc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getIncludes  s    z)FirewallClientServiceSettings.getIncludesc             C   s   || j d< d S )Nr   )r5   )r=   r   r   r   r    setIncludes  s    z)FirewallClientServiceSettings.setIncludesc             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   r_   r   r   r`   )r=   includer   r   r    
addInclude  s    z(FirewallClientServiceSettings.addIncludec             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   rc   r   r   rd   )r=   r  r   r   r    removeInclude  s    z+FirewallClientServiceSettings.removeIncludec             C   s   || j d kS )Nr   )r5   )r=   r  r   r   r    queryInclude  s    z*FirewallClientServiceSettings.queryIncludec             C   s
   | j d S )Nr   )r5   )r=   r   r   r    
getHelpers  s    z(FirewallClientServiceSettings.getHelpersc             C   s   || j d< d S )Nr   )r5   )r=   r   r   r   r    
setHelpers  s    z(FirewallClientServiceSettings.setHelpersc             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   r_   r   r   r`   )r=   helperr   r   r    	addHelper  s    z'FirewallClientServiceSettings.addHelperc             C   s0   || j d kr | j d j| nttj|d S )Nr   )r5   rc   r   r   rd   )r=   r  r   r   r    removeHelper  s    z*FirewallClientServiceSettings.removeHelperc             C   s   || j d kS )Nr   )r5   )r=   r  r   r   r    queryHelper  s    z)FirewallClientServiceSettings.queryHelper)N)N)2r   r   r   r!   r@   rB   rF   r<   rM   rP   rQ   rS   rT   rV   rW   rh   ri   rl   rm   rn   rp   rq   rr   rs   rt   rv   rw   rx   ry   rz   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   (  s`   r   c               @   s   e Zd Zed*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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d"d# Zed$d% Zed&d' Zed(d) ZdS )+FirewallClientIPSetSettingsNc             C   s"   |r|| _ nddddi g g| _ d S )Nr#   )r5   )r=   r5   r   r   r    r@     s    z$FirewallClientIPSetSettings.__init__c             C   s   d| j | jf S )Nz%s(%r))rA   r5   )r=   r   r   r    rB     s    z$FirewallClientIPSetSettings.__repr__c             C   s
   | j d S )Nr   )r5   )r=   r   r   r    rP     s    z&FirewallClientIPSetSettings.getVersionc             C   s   || j d< d S )Nr   )r5   )r=   r$   r   r   r    rQ     s    z&FirewallClientIPSetSettings.setVersionc             C   s
   | j d S )NrR   )r5   )r=   r   r   r    rS   !  s    z$FirewallClientIPSetSettings.getShortc             C   s   || j d< d S )NrR   )r5   )r=   r%   r   r   r    rT   $  s    z$FirewallClientIPSetSettings.setShortc             C   s
   | j d S )NrU   )r5   )r=   r   r   r    rV   (  s    z*FirewallClientIPSetSettings.getDescriptionc             C   s   || j d< d S )NrU   )r5   )r=   r&   r   r   r    rW   +  s    z*FirewallClientIPSetSettings.setDescriptionc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getType/  s    z#FirewallClientIPSetSettings.getTypec             C   s   || j d< d S )Nr   )r5   )r=   Z
ipset_typer   r   r    setType2  s    z#FirewallClientIPSetSettings.setTypec             C   s
   | j d S )NrX   )r5   )r=   r   r   r    
getOptions6  s    z&FirewallClientIPSetSettings.getOptionsc             C   s   || j d< d S )NrX   )r5   )r=   Zoptionsr   r   r    
setOptions9  s    z&FirewallClientIPSetSettings.setOptionsc             C   sP   || j d ks | j d | |kr0|| j d |< nttj|rFd||f n|d S )NrX   z'%s=%s')r5   r   r   r`   )r=   rD   rE   r   r   r    	addOption<  s     z%FirewallClientIPSetSettings.addOptionc             C   s,   || j d kr| j d |= nttj|d S )NrX   )r5   r   r   rd   )r=   rD   r   r   r    removeOptionC  s    z(FirewallClientIPSetSettings.removeOptionc             C   s    || j d ko| j d | |kS )NrX   )r5   )r=   rD   rE   r   r   r    queryOptionI  s    z'FirewallClientIPSetSettings.queryOptionc             C   s
   | j d S )Nr\   )r5   )r=   r   r   r    
getEntriesM  s    z&FirewallClientIPSetSettings.getEntriesc             C   s@   d| j d kr*| j d d dkr*ttjt| || j d< d S )NtimeoutrX   0r\   )r5   r   r   IPSET_WITH_TIMEOUTr   )r=   entriesr   r   r    
setEntriesP  s
    
z&FirewallClientIPSetSettings.setEntriesc             C   sr   d| j d kr*| j d d dkr*ttjt|}|| j d krbt|| j d  | j d j| nttj|d S )Nr  rX   r  r\   )r5   r   r   r  r   r   r_   r`   )r=   entryr   r   r    addEntryW  s    
z$FirewallClientIPSetSettings.addEntryc             C   sb   d| j d kr*| j d d dkr*ttjt|}|| j d krR| j d j| nttj|d S )Nr  rX   r  r\   )r5   r   r   r  r   rc   rd   )r=   r  r   r   r    removeEntryb  s    
z'FirewallClientIPSetSettings.removeEntryc             C   s@   d| j d kr*| j d d dkr*ttjt|}|| j d kS )Nr  rX   r  r\   )r5   r   r   r  r   )r=   r  r   r   r    
queryEntryl  s
    
z&FirewallClientIPSetSettings.queryEntry)N)r   r   r   r!   r@   rB   rP   rQ   rS   rT   rV   rW   r  r  r  r  r  r  r  r  r  r  r   r!  r   r   r   r    r    s*   
r  c               @   s  e Zd Zedd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zejjjed'd( Zd)S )*FirewallClientConfigIPSetc             C   sL   || _ || _| j jtjj|| _tj| jtjjd| _	tj| jdd| _
d S )N)r   zorg.freedesktop.DBus.Properties)r   r   r   r   r   r   r   r   DBUS_INTERFACE_CONFIG_IPSETfw_ipsetr   )r=   r   r   r   r   r    r@   w  s    z"FirewallClientConfigIPSet.__init__c             C   s   t | jjtjj|S )N)r	   r   r   r   r   r#  )r=   r   r   r   r    r     s    z&FirewallClientConfigIPSet.get_propertyc             C   s   t | jjtjjS )N)r	   r   r   r   r   r#  )r=   r   r   r    r     s    z(FirewallClientConfigIPSet.get_propertiesc             C   s   | j jtjj|| d S )N)r   r   r   r   r#  )r=   r   rE   r   r   r    r     s    z&FirewallClientConfigIPSet.set_propertyc             C   s   t tt| jj S )N)r  r9   r	   r$  r   )r=   r   r   r    r     s    z%FirewallClientConfigIPSet.getSettingsc             C   s   | j jt|j d S )N)r$  r   tupler5   )r=   r5   r   r   r    r     s    z FirewallClientConfigIPSet.updatec             C   s   | j j  d S )N)r$  r   )r=   r   r   r    r     s    z&FirewallClientConfigIPSet.loadDefaultsc             C   s   | j j  d S )N)r$  rc   )r=   r   r   r    rc     s    z FirewallClientConfigIPSet.removec             C   s   | j j| d S )N)r$  r   )r=   r   r   r   r    r     s    z FirewallClientConfigIPSet.renamec             C   s
   | j j S )N)r$  rP   )r=   r   r   r    rP     s    z$FirewallClientConfigIPSet.getVersionc             C   s   | j j| d S )N)r$  rQ   )r=   r$   r   r   r    rQ     s    z$FirewallClientConfigIPSet.setVersionc             C   s
   | j j S )N)r$  rS   )r=   r   r   r    rS     s    z"FirewallClientConfigIPSet.getShortc             C   s   | j j| d S )N)r$  rT   )r=   r%   r   r   r    rT     s    z"FirewallClientConfigIPSet.setShortc             C   s
   | j j S )N)r$  rV   )r=   r   r   r    rV     s    z(FirewallClientConfigIPSet.getDescriptionc             C   s   | j j| d S )N)r$  rW   )r=   r&   r   r   r    rW     s    z(FirewallClientConfigIPSet.setDescriptionc             C   s
   | j j S )N)r$  r  )r=   r   r   r    r    s    z$FirewallClientConfigIPSet.getEntriesc             C   s   | j j| d S )N)r$  r  )r=   r  r   r   r    r    s    z$FirewallClientConfigIPSet.setEntriesc             C   s   | j j| d S )N)r$  r  )r=   r  r   r   r    r    s    z"FirewallClientConfigIPSet.addEntryc             C   s   | j j| d S )N)r$  r   )r=   r  r   r   r    r     s    z%FirewallClientConfigIPSet.removeEntryc             C   s   | j j|S )N)r$  r!  )r=   r  r   r   r    r!    s    z$FirewallClientConfigIPSet.queryEntryN)r   r   r   r!   r@   r   r   r   r   r   r   r   r   r   r   rc   r   rP   rQ   rS   rT   rV   rW   r  r  r  r   r!  r   r   r   r    r"  v  sN   r"  c               @   s   e Zd Zed$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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d"d# ZdS )%FirewallClientHelperSettingsNc             C   s"   |r|| _ ndddddg g| _ d S )Nr#   )r5   )r=   r5   r   r   r    r@     s    z%FirewallClientHelperSettings.__init__c             C   s   d| j | jf S )Nz%s(%r))rA   r5   )r=   r   r   r    rB     s    z%FirewallClientHelperSettings.__repr__c             C   s
   | j d S )Nr   )r5   )r=   r   r   r    rP     s    z'FirewallClientHelperSettings.getVersionc             C   s   || j d< d S )Nr   )r5   )r=   r$   r   r   r    rQ     s    z'FirewallClientHelperSettings.setVersionc             C   s
   | j d S )NrR   )r5   )r=   r   r   r    rS     s    z%FirewallClientHelperSettings.getShortc             C   s   || j d< d S )NrR   )r5   )r=   r%   r   r   r    rT     s    z%FirewallClientHelperSettings.setShortc             C   s
   | j d S )NrU   )r5   )r=   r   r   r    rV   	  s    z+FirewallClientHelperSettings.getDescriptionc             C   s   || j d< d S )NrU   )r5   )r=   r&   r   r   r    rW     s    z+FirewallClientHelperSettings.setDescriptionc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    	getFamily  s    z&FirewallClientHelperSettings.getFamilyc             C   s    |d krd| j d< || j d< d S )Nr#   r   )r5   )r=   ipvr   r   r    	setFamily  s    
z&FirewallClientHelperSettings.setFamilyc             C   s
   | j d S )NrX   )r5   )r=   r   r   r    	getModule  s    z&FirewallClientHelperSettings.getModulec             C   s   || j d< d S )NrX   )r5   )r=   r   r   r   r    	setModule  s    z&FirewallClientHelperSettings.setModulec             C   s
   | j d S )Nr\   )r5   )r=   r   r   r    rh      s    z%FirewallClientHelperSettings.getPortsc             C   s   || j d< d S )Nr\   )r5   )r=   r*   r   r   r    ri   #  s    z%FirewallClientHelperSettings.setPortsc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr\   z'%s:%s')r5   r_   r   r   r`   )r=   rj   rk   r   r   r    rl   &  s    z$FirewallClientHelperSettings.addPortc             C   s@   ||f| j d kr(| j d j||f nttjd||f d S )Nr\   z'%s:%s')r5   rc   r   r   rd   )r=   rj   rk   r   r   r    rm   -  s    z'FirewallClientHelperSettings.removePortc             C   s   ||f| j d kS )Nr\   )r5   )r=   rj   rk   r   r   r    rn   4  s    z&FirewallClientHelperSettings.queryPort)N)r   r   r   r!   r@   rB   rP   rQ   rS   rT   rV   rW   r'  r)  r*  r+  rh   ri   rl   rm   rn   r   r   r   r    r&    s$   r&  c               @   s  e Zd Zedd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zejjjed'd( Zejjjed)d* Zejjjed+d, Zejjjed-d. Zejjjed/d0 Zd1S )2FirewallClientConfigHelperc             C   sL   || _ || _| j jtjj|| _tj| jtjjd| _	tj| jdd| _
d S )N)r   zorg.freedesktop.DBus.Properties)r   r   r   r   r   r   r   r   DBUS_INTERFACE_CONFIG_HELPER	fw_helperr   )r=   r   r   r   r   r    r@   ;  s    z#FirewallClientConfigHelper.__init__c             C   s   t | jjtjj|S )N)r	   r   r   r   r   r-  )r=   r   r   r   r    r   F  s    z'FirewallClientConfigHelper.get_propertyc             C   s   t | jjtjjS )N)r	   r   r   r   r   r-  )r=   r   r   r    r   L  s    z)FirewallClientConfigHelper.get_propertiesc             C   s   | j jtjj|| d S )N)r   r   r   r   r-  )r=   r   rE   r   r   r    r   R  s    z'FirewallClientConfigHelper.set_propertyc             C   s   t tt| jj S )N)r&  r9   r	   r.  r   )r=   r   r   r    r   X  s    z&FirewallClientConfigHelper.getSettingsc             C   s   | j jt|j d S )N)r.  r   r%  r5   )r=   r5   r   r   r    r   ^  s    z!FirewallClientConfigHelper.updatec             C   s   | j j  d S )N)r.  r   )r=   r   r   r    r   c  s    z'FirewallClientConfigHelper.loadDefaultsc             C   s   | j j  d S )N)r.  rc   )r=   r   r   r    rc   h  s    z!FirewallClientConfigHelper.removec             C   s   | j j| d S )N)r.  r   )r=   r   r   r   r    r   m  s    z!FirewallClientConfigHelper.renamec             C   s
   | j j S )N)r.  rP   )r=   r   r   r    rP   t  s    z%FirewallClientConfigHelper.getVersionc             C   s   | j j| d S )N)r.  rQ   )r=   r$   r   r   r    rQ   y  s    z%FirewallClientConfigHelper.setVersionc             C   s
   | j j S )N)r.  rS   )r=   r   r   r    rS     s    z#FirewallClientConfigHelper.getShortc             C   s   | j j| d S )N)r.  rT   )r=   r%   r   r   r    rT     s    z#FirewallClientConfigHelper.setShortc             C   s
   | j j S )N)r.  rV   )r=   r   r   r    rV     s    z)FirewallClientConfigHelper.getDescriptionc             C   s   | j j| d S )N)r.  rW   )r=   r&   r   r   r    rW     s    z)FirewallClientConfigHelper.setDescriptionc             C   s
   | j j S )N)r.  rh   )r=   r   r   r    rh     s    z#FirewallClientConfigHelper.getPortsc             C   s   | j j| d S )N)r.  ri   )r=   r*   r   r   r    ri     s    z#FirewallClientConfigHelper.setPortsc             C   s   | j j|| d S )N)r.  rl   )r=   rj   rk   r   r   r    rl     s    z"FirewallClientConfigHelper.addPortc             C   s   | j j|| d S )N)r.  rm   )r=   rj   rk   r   r   r    rm     s    z%FirewallClientConfigHelper.removePortc             C   s   | j j||S )N)r.  rn   )r=   rj   rk   r   r   r    rn     s    z$FirewallClientConfigHelper.queryPortc             C   s
   | j j S )N)r.  r'  )r=   r   r   r    r'    s    z$FirewallClientConfigHelper.getFamilyc             C   s$   |d kr| j jd | j j| d S )Nr#   )r.  r)  )r=   r(  r   r   r    r)    s    z$FirewallClientConfigHelper.setFamilyc             C   s
   | j j S )N)r.  r*  )r=   r   r   r    r*    s    z$FirewallClientConfigHelper.getModulec             C   s   | j j| d S )N)r.  r+  )r=   r   r   r   r    r+    s    z$FirewallClientConfigHelper.setModuleN) r   r   r   r!   r@   r   r   r   r   r   r   r   r   r   r   rc   r   rP   rQ   rS   rT   rV   rW   rh   ri   rl   rm   rn   r'  r)  r*  r+  r   r   r   r    r,  :  s^   r,  c               @   s  e Zd Zedd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zejjjed'd( Zejjjed)d* Zejjjed+d, Zejjjed-d. Zejjjed/d0 Zejjjed1d2 Z ejjjed3d4 Z!ejjjed5d6 Z"ejjjed7d8 Z#ejjjed9d: Z$ejjjed;d< Z%ejjjed=d> Z&ejjjed?d@ Z'ejjjedAdB Z(ejjjedCdD Z)ejjjedEdF Z*ejjjedGdH Z+ejjjedIdJ Z,ejjjedKdL Z-ejjjedMdN Z.ejjjed^dPdQZ/ejjjedRdS Z0ejjjedTdU Z1ejjjedVdW Z2ejjjedXdY Z3ejjjedZd[ Z4ejjjed\d] Z5dOS )_FirewallClientConfigServicec             C   sL   || _ || _| j jtjj|| _tj| jtjjd| _	tj| jdd| _
d S )N)r   zorg.freedesktop.DBus.Properties)r   r   r   r   r   r   r   r   DBUS_INTERFACE_CONFIG_SERVICE
fw_servicer   )r=   r   r   r   r   r    r@     s    z$FirewallClientConfigService.__init__c             C   s   t | jjtjj|S )N)r	   r   r   r   r   r0  )r=   r   r   r   r    r     s    z(FirewallClientConfigService.get_propertyc             C   s   t | jjtjjS )N)r	   r   r   r   r   r0  )r=   r   r   r    r     s    z*FirewallClientConfigService.get_propertiesc             C   s   | j jtjj|| d S )N)r   r   r   r   r0  )r=   r   rE   r   r   r    r     s    z(FirewallClientConfigService.set_propertyc             C   s   t t| jj S )N)r   r	   r1  r   )r=   r   r   r    r     s    z'FirewallClientConfigService.getSettingsc             C   s   | j j|j  d S )N)r1  r   rM   )r=   r5   r   r   r    r     s    z"FirewallClientConfigService.updatec             C   s   | j j  d S )N)r1  r   )r=   r   r   r    r     s    z(FirewallClientConfigService.loadDefaultsc             C   s   | j j  d S )N)r1  rc   )r=   r   r   r    rc     s    z"FirewallClientConfigService.removec             C   s   | j j| d S )N)r1  r   )r=   r   r   r   r    r      s    z"FirewallClientConfigService.renamec             C   s
   | j j S )N)r1  rP   )r=   r   r   r    rP     s    z&FirewallClientConfigService.getVersionc             C   s   | j j| d S )N)r1  rQ   )r=   r$   r   r   r    rQ     s    z&FirewallClientConfigService.setVersionc             C   s
   | j j S )N)r1  rS   )r=   r   r   r    rS     s    z$FirewallClientConfigService.getShortc             C   s   | j j| d S )N)r1  rT   )r=   r%   r   r   r    rT     s    z$FirewallClientConfigService.setShortc             C   s
   | j j S )N)r1  rV   )r=   r   r   r    rV     s    z*FirewallClientConfigService.getDescriptionc             C   s   | j j| d S )N)r1  rW   )r=   r&   r   r   r    rW   $  s    z*FirewallClientConfigService.setDescriptionc             C   s
   | j j S )N)r1  rh   )r=   r   r   r    rh   +  s    z$FirewallClientConfigService.getPortsc             C   s   | j j| d S )N)r1  ri   )r=   r*   r   r   r    ri   0  s    z$FirewallClientConfigService.setPortsc             C   s   | j j|| d S )N)r1  rl   )r=   rj   rk   r   r   r    rl   5  s    z#FirewallClientConfigService.addPortc             C   s   | j j|| d S )N)r1  rm   )r=   rj   rk   r   r   r    rm   :  s    z&FirewallClientConfigService.removePortc             C   s   | j j||S )N)r1  rn   )r=   rj   rk   r   r   r    rn   ?  s    z%FirewallClientConfigService.queryPortc             C   s
   | j j S )N)r1  rp   )r=   r   r   r    rp   F  s    z(FirewallClientConfigService.getProtocolsc             C   s   | j j| d S )N)r1  rq   )r=   r0   r   r   r    rq   K  s    z(FirewallClientConfigService.setProtocolsc             C   s   | j j| d S )N)r1  rr   )r=   rk   r   r   r    rr   P  s    z'FirewallClientConfigService.addProtocolc             C   s   | j j| d S )N)r1  rs   )r=   rk   r   r   r    rs   U  s    z*FirewallClientConfigService.removeProtocolc             C   s   | j j|S )N)r1  rt   )r=   rk   r   r   r    rt   Z  s    z)FirewallClientConfigService.queryProtocolc             C   s
   | j j S )N)r1  rv   )r=   r   r   r    rv   a  s    z*FirewallClientConfigService.getSourcePortsc             C   s   | j j| d S )N)r1  rw   )r=   r*   r   r   r    rw   f  s    z*FirewallClientConfigService.setSourcePortsc             C   s   | j j|| d S )N)r1  rx   )r=   rj   rk   r   r   r    rx   k  s    z)FirewallClientConfigService.addSourcePortc             C   s   | j j|| d S )N)r1  ry   )r=   rj   rk   r   r   r    ry   p  s    z,FirewallClientConfigService.removeSourcePortc             C   s   | j j||S )N)r1  rz   )r=   rj   rk   r   r   r    rz   u  s    z+FirewallClientConfigService.querySourcePortc             C   s
   | j j S )N)r1  r   )r=   r   r   r    r   |  s    z&FirewallClientConfigService.getModulesc             C   s   | j j| d S )N)r1  r   )r=   r   r   r   r    r     s    z&FirewallClientConfigService.setModulesc             C   s   | j j| d S )N)r1  r   )r=   r   r   r   r    r     s    z%FirewallClientConfigService.addModulec             C   s   | j j| d S )N)r1  r   )r=   r   r   r   r    r     s    z(FirewallClientConfigService.removeModulec             C   s   | j j|S )N)r1  r   )r=   r   r   r   r    r     s    z'FirewallClientConfigService.queryModulec             C   s
   | j j S )N)r1  r   )r=   r   r   r    r     s    z+FirewallClientConfigService.getDestinationsc             C   s   | j j| d S )N)r1  r   )r=   r   r   r   r    r     s    z+FirewallClientConfigService.setDestinationsc             C   s   | j j|S )N)r1  getDestination)r=   r   r   r   r    r2    s    z*FirewallClientConfigService.getDestinationc             C   s   | j j|| d S )N)r1  r  )r=   r   r   r   r   r    r    s    z*FirewallClientConfigService.setDestinationNc             C   s:   |d k	r*| j ||kr*ttjd||f | jj| d S )Nz'%s:%s')r2  r   r   rd   r1  r  )r=   r   r   r   r   r    r    s    z-FirewallClientConfigService.removeDestinationc             C   s   | j j||S )N)r1  r  )r=   r   r   r   r   r    r    s    z,FirewallClientConfigService.queryDestinationc             C   s
   | j j S )N)r1  r  )r=   r   r   r    r    s    z'FirewallClientConfigService.getIncludesc             C   s   | j j| d S )N)r1  r  )r=   r   r   r   r    r    s    z'FirewallClientConfigService.setIncludesc             C   s   | j j| d S )N)r1  r  )r=   r  r   r   r    r    s    z&FirewallClientConfigService.addIncludec             C   s   | j j| d S )N)r1  r  )r=   r  r   r   r    r    s    z)FirewallClientConfigService.removeIncludec             C   s   | j j|S )N)r1  r	  )r=   r  r   r   r    r	    s    z(FirewallClientConfigService.queryInclude)N)6r   r   r   r!   r@   r   r   r   r   r   r   r   r   r   r   rc   r   rP   rQ   rS   rT   rV   rW   rh   ri   rl   rm   rn   rp   rq   rr   rs   rt   rv   rw   rx   ry   rz   r   r   r   r   r   r   r   r2  r  r  r  r  r  r  r  r	  r   r   r   r    r/    s   r/  c               @   s   e Zd Zed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dd Zedd Zedd Zedd Zedd ZdS )FirewallClientIcmpTypeSettingsNc             C   s   |r|| _ ndddg g| _ d S )Nr#   )r5   )r=   r5   r   r   r    r@     s    z'FirewallClientIcmpTypeSettings.__init__c             C   s   d| j | jf S )Nz%s(%r))rA   r5   )r=   r   r   r    rB     s    z'FirewallClientIcmpTypeSettings.__repr__c             C   s
   | j d S )Nr   )r5   )r=   r   r   r    rP     s    z)FirewallClientIcmpTypeSettings.getVersionc             C   s   || j d< d S )Nr   )r5   )r=   r$   r   r   r    rQ     s    z)FirewallClientIcmpTypeSettings.setVersionc             C   s
   | j d S )NrR   )r5   )r=   r   r   r    rS     s    z'FirewallClientIcmpTypeSettings.getShortc             C   s   || j d< d S )NrR   )r5   )r=   r%   r   r   r    rT     s    z'FirewallClientIcmpTypeSettings.setShortc             C   s
   | j d S )NrU   )r5   )r=   r   r   r    rV     s    z-FirewallClientIcmpTypeSettings.getDescriptionc             C   s   || j d< d S )NrU   )r5   )r=   r&   r   r   r    rW     s    z-FirewallClientIcmpTypeSettings.setDescriptionc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    r     s    z.FirewallClientIcmpTypeSettings.getDestinationsc             C   s   || j d< d S )Nr   )r5   )r=   r   r   r   r    r     s    z.FirewallClientIcmpTypeSettings.setDestinationsc             C   sH   | j d sttj|n,|| j d kr8| j d j| nttj|d S )Nr   )r5   r   r   r`   r_   )r=   r   r   r   r    addDestination  s
    
z-FirewallClientIcmpTypeSettings.addDestinationc             C   s\   || j d kr | j d j| n8| j d sL| jttddgt|g  nttj|d S )Nr   Zipv4Zipv6)r5   rc   r   r9   setr   r   rd   )r=   r   r   r   r    r  	  s    
z0FirewallClientIcmpTypeSettings.removeDestinationc             C   s   | j d  p|| j d kS )Nr   )r5   )r=   r   r   r   r    r  	  s    z/FirewallClientIcmpTypeSettings.queryDestination)N)r   r   r   r!   r@   rB   rP   rQ   rS   rT   rV   rW   r   r   r4  r  r  r   r   r   r    r3    s   	r3  c               @   s  e Zd Zedd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zejjjed'd( Zd)S )*FirewallClientConfigIcmpTypec             C   sL   || _ || _| j jtjj|| _tj| jtjjd| _	tj| jdd| _
d S )N)r   zorg.freedesktop.DBus.Properties)r   r   r   r   r   r   r   r   DBUS_INTERFACE_CONFIG_ICMPTYPEfw_icmptyper   )r=   r   r   r   r   r    r@   	  s    z%FirewallClientConfigIcmpType.__init__c             C   s   t | jjtjj|S )N)r	   r   r   r   r   r7  )r=   r   r   r   r    r   %	  s    z)FirewallClientConfigIcmpType.get_propertyc             C   s   t | jjtjjS )N)r	   r   r   r   r   r7  )r=   r   r   r    r   +	  s    z+FirewallClientConfigIcmpType.get_propertiesc             C   s   | j jtjj|| d S )N)r   r   r   r   r7  )r=   r   rE   r   r   r    r   1	  s    z)FirewallClientConfigIcmpType.set_propertyc             C   s   t tt| jj S )N)r3  r9   r	   r8  r   )r=   r   r   r    r   7	  s    z(FirewallClientConfigIcmpType.getSettingsc             C   s   | j jt|j d S )N)r8  r   r%  r5   )r=   r5   r   r   r    r   =	  s    z#FirewallClientConfigIcmpType.updatec             C   s   | j j  d S )N)r8  r   )r=   r   r   r    r   B	  s    z)FirewallClientConfigIcmpType.loadDefaultsc             C   s   | j j  d S )N)r8  rc   )r=   r   r   r    rc   G	  s    z#FirewallClientConfigIcmpType.removec             C   s   | j j| d S )N)r8  r   )r=   r   r   r   r    r   L	  s    z#FirewallClientConfigIcmpType.renamec             C   s
   | j j S )N)r8  rP   )r=   r   r   r    rP   S	  s    z'FirewallClientConfigIcmpType.getVersionc             C   s   | j j| d S )N)r8  rQ   )r=   r$   r   r   r    rQ   X	  s    z'FirewallClientConfigIcmpType.setVersionc             C   s
   | j j S )N)r8  rS   )r=   r   r   r    rS   _	  s    z%FirewallClientConfigIcmpType.getShortc             C   s   | j j| d S )N)r8  rT   )r=   r%   r   r   r    rT   d	  s    z%FirewallClientConfigIcmpType.setShortc             C   s
   | j j S )N)r8  rV   )r=   r   r   r    rV   k	  s    z+FirewallClientConfigIcmpType.getDescriptionc             C   s   | j j| d S )N)r8  rW   )r=   r&   r   r   r    rW   p	  s    z+FirewallClientConfigIcmpType.setDescriptionc             C   s
   | j j S )N)r8  r   )r=   r   r   r    r   w	  s    z,FirewallClientConfigIcmpType.getDestinationsc             C   s   | j j| d S )N)r8  r   )r=   r   r   r   r    r   |	  s    z,FirewallClientConfigIcmpType.setDestinationsc             C   s   | j j| d S )N)r8  r4  )r=   r   r   r   r    r4  	  s    z+FirewallClientConfigIcmpType.addDestinationc             C   s   | j j| d S )N)r8  r  )r=   r   r   r   r    r  	  s    z.FirewallClientConfigIcmpType.removeDestinationc             C   s   | j j|S )N)r8  r  )r=   r   r   r   r    r  	  s    z-FirewallClientConfigIcmpType.queryDestinationN)r   r   r   r!   r@   r   r   r   r   r   r   r   r   r   r   rc   r   rP   rQ   rS   rT   rV   rW   r   r   r4  r  r  r   r   r   r    r6  	  sN   r6  c               @   s  e Zd Zed.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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d"d# Zed$d% Zed&d' Zed(d) Zed*d+ Zed,d- ZdS )/'FirewallClientPoliciesLockdownWhitelistNc             C   s   |r|| _ ng g g g g| _ d S )N)r5   )r=   r5   r   r   r    r@   	  s    z0FirewallClientPoliciesLockdownWhitelist.__init__c             C   s   d| j | jf S )Nz%s(%r))rA   r5   )r=   r   r   r    rB   	  s    z0FirewallClientPoliciesLockdownWhitelist.__repr__c             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getCommands	  s    z3FirewallClientPoliciesLockdownWhitelist.getCommandsc             C   s   || j d< d S )Nr   )r5   )r=   Zcommandsr   r   r    setCommands	  s    z3FirewallClientPoliciesLockdownWhitelist.setCommandsc             C   s"   || j d kr| j d j| d S )Nr   )r5   r_   )r=   commandr   r   r    
addCommand	  s    z2FirewallClientPoliciesLockdownWhitelist.addCommandc             C   s"   || j d kr| j d j| d S )Nr   )r5   rc   )r=   r<  r   r   r    removeCommand	  s    z5FirewallClientPoliciesLockdownWhitelist.removeCommandc             C   s   || j d kS )Nr   )r5   )r=   r<  r   r   r    queryCommand	  s    z4FirewallClientPoliciesLockdownWhitelist.queryCommandc             C   s
   | j d S )NrR   )r5   )r=   r   r   r    getContexts	  s    z3FirewallClientPoliciesLockdownWhitelist.getContextsc             C   s   || j d< d S )NrR   )r5   )r=   Zcontextsr   r   r    setContexts	  s    z3FirewallClientPoliciesLockdownWhitelist.setContextsc             C   s"   || j d kr| j d j| d S )NrR   )r5   r_   )r=   contextr   r   r    
addContext	  s    z2FirewallClientPoliciesLockdownWhitelist.addContextc             C   s"   || j d kr| j d j| d S )NrR   )r5   rc   )r=   rB  r   r   r    removeContext	  s    z5FirewallClientPoliciesLockdownWhitelist.removeContextc             C   s   || j d kS )NrR   )r5   )r=   rB  r   r   r    queryContext	  s    z4FirewallClientPoliciesLockdownWhitelist.queryContextc             C   s
   | j d S )NrU   )r5   )r=   r   r   r    getUsers	  s    z0FirewallClientPoliciesLockdownWhitelist.getUsersc             C   s   || j d< d S )NrU   )r5   )r=   Zusersr   r   r    setUsers	  s    z0FirewallClientPoliciesLockdownWhitelist.setUsersc             C   s"   || j d kr| j d j| d S )NrU   )r5   r_   )r=   userr   r   r    addUser	  s    z/FirewallClientPoliciesLockdownWhitelist.addUserc             C   s"   || j d kr| j d j| d S )NrU   )r5   rc   )r=   rH  r   r   r    
removeUser	  s    z2FirewallClientPoliciesLockdownWhitelist.removeUserc             C   s   || j d kS )NrU   )r5   )r=   rH  r   r   r    	queryUser	  s    z1FirewallClientPoliciesLockdownWhitelist.queryUserc             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getUids	  s    z/FirewallClientPoliciesLockdownWhitelist.getUidsc             C   s   || j d< d S )Nr   )r5   )r=   uidsr   r   r    setUids	  s    z/FirewallClientPoliciesLockdownWhitelist.setUidsc             C   s"   || j d kr| j d j| d S )Nr   )r5   r_   )r=   uidr   r   r    addUid	  s    z.FirewallClientPoliciesLockdownWhitelist.addUidc             C   s"   || j d kr| j d j| d S )Nr   )r5   rc   )r=   rO  r   r   r    	removeUid	  s    z1FirewallClientPoliciesLockdownWhitelist.removeUidc             C   s   || j d kS )Nr   )r5   )r=   rO  r   r   r    queryUid	  s    z0FirewallClientPoliciesLockdownWhitelist.queryUid)N)r   r   r   r!   r@   rB   r:  r;  r=  r>  r?  r@  rA  rC  rD  rE  rF  rG  rI  rJ  rK  rL  rN  rP  rQ  rR  r   r   r   r    r9  	  s.   r9  c               @   s  e Zd Zedd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zejjjed'd( Zd)S )*FirewallClientConfigPoliciesc             C   s8   || _ | j jtjjtjj| _tj| jtjjd| _	d S )N)r   )
r   r   r   r   r   DBUS_PATH_CONFIGr   r   DBUS_INTERFACE_CONFIG_POLICIESfw_policies)r=   r   r   r   r    r@   	  s    z%FirewallClientConfigPolicies.__init__c             C   s   t tt| jj S )N)r9  r9   r	   rV  getLockdownWhitelist)r=   r   r   r    rW  	  s    z1FirewallClientConfigPolicies.getLockdownWhitelistc             C   s   | j jt|j d S )N)rV  setLockdownWhitelistr%  r5   )r=   r5   r   r   r    rX  	  s    z1FirewallClientConfigPolicies.setLockdownWhitelistc             C   s   | j j| d S )N)rV  addLockdownWhitelistCommand)r=   r<  r   r   r    rY   
  s    z8FirewallClientConfigPolicies.addLockdownWhitelistCommandc             C   s   | j j| d S )N)rV  removeLockdownWhitelistCommand)r=   r<  r   r   r    rZ  
  s    z;FirewallClientConfigPolicies.removeLockdownWhitelistCommandc             C   s   t | jj|S )N)r	   rV  queryLockdownWhitelistCommand)r=   r<  r   r   r    r[  

  s    z:FirewallClientConfigPolicies.queryLockdownWhitelistCommandc             C   s   t | jj S )N)r	   rV  getLockdownWhitelistCommands)r=   r   r   r    r\  
  s    z9FirewallClientConfigPolicies.getLockdownWhitelistCommandsc             C   s   | j j| d S )N)rV  addLockdownWhitelistContext)r=   rB  r   r   r    r]  
  s    z8FirewallClientConfigPolicies.addLockdownWhitelistContextc             C   s   | j j| d S )N)rV  removeLockdownWhitelistContext)r=   rB  r   r   r    r^  
  s    z;FirewallClientConfigPolicies.removeLockdownWhitelistContextc             C   s   t | jj|S )N)r	   rV  queryLockdownWhitelistContext)r=   rB  r   r   r    r_   
  s    z:FirewallClientConfigPolicies.queryLockdownWhitelistContextc             C   s   t | jj S )N)r	   rV  getLockdownWhitelistContexts)r=   r   r   r    r`  %
  s    z9FirewallClientConfigPolicies.getLockdownWhitelistContextsc             C   s   | j j| d S )N)rV  addLockdownWhitelistUser)r=   rH  r   r   r    ra  ,
  s    z5FirewallClientConfigPolicies.addLockdownWhitelistUserc             C   s   | j j| d S )N)rV  removeLockdownWhitelistUser)r=   rH  r   r   r    rb  1
  s    z8FirewallClientConfigPolicies.removeLockdownWhitelistUserc             C   s   t | jj|S )N)r	   rV  queryLockdownWhitelistUser)r=   rH  r   r   r    rc  6
  s    z7FirewallClientConfigPolicies.queryLockdownWhitelistUserc             C   s   t | jj S )N)r	   rV  getLockdownWhitelistUsers)r=   r   r   r    rd  ;
  s    z6FirewallClientConfigPolicies.getLockdownWhitelistUsersc             C   s   t | jj S )N)r	   rV  getLockdownWhitelistUids)r=   r   r   r    re  B
  s    z5FirewallClientConfigPolicies.getLockdownWhitelistUidsc             C   s   | j j| d S )N)rV  setLockdownWhitelistUids)r=   rM  r   r   r    rf  G
  s    z5FirewallClientConfigPolicies.setLockdownWhitelistUidsc             C   s   | j j| d S )N)rV  addLockdownWhitelistUid)r=   rO  r   r   r    rg  L
  s    z4FirewallClientConfigPolicies.addLockdownWhitelistUidc             C   s   | j j| d S )N)rV  removeLockdownWhitelistUid)r=   rO  r   r   r    rh  Q
  s    z7FirewallClientConfigPolicies.removeLockdownWhitelistUidc             C   s   t | jj|S )N)r	   rV  queryLockdownWhitelistUid)r=   rO  r   r   r    ri  V
  s    z6FirewallClientConfigPolicies.queryLockdownWhitelistUidN)r   r   r   r!   r@   r   r   r   r   rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  r   r   r   r    rS  	  sN   	rS  c               @   s  e Zd Zed.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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d"d# Zed$d% Zed&d' Zed(d) Zed*d+ Zed,d- ZdS )/FirewallClientDirectNc             C   s   |r|| _ ng g g g| _ d S )N)r5   )r=   r5   r   r   r    r@   ^
  s    zFirewallClientDirect.__init__c             C   s   d| j | jf S )Nz%s(%r))rA   r5   )r=   r   r   r    rB   e
  s    zFirewallClientDirect.__repr__c             C   s
   | j d S )Nr   )r5   )r=   r   r   r    getAllChainsi
  s    z!FirewallClientDirect.getAllChainsc                s    fdd| j d D S )Nc                s,   g | ]$}|d   kr|d kr|d qS )r   rR   rU   r   )r   r  )r(  tabler   r    r   n
  s    z2FirewallClientDirect.getChains.<locals>.<listcomp>r   )r5   )r=   r(  rl  r   )r(  rl  r    	getChainsl
  s    zFirewallClientDirect.getChainsc             C   s   || j d< d S )Nr   )r5   )r=   Zchainsr   r   r    setAllChainsp
  s    z!FirewallClientDirect.setAllChainsc             C   s,   |||f}|| j d kr(| j d j| d S )Nr   )r5   r_   )r=   r(  rl  chainidxr   r   r    addChains
  s    
zFirewallClientDirect.addChainc             C   s,   |||f}|| j d kr(| j d j| d S )Nr   )r5   rc   )r=   r(  rl  ro  rp  r   r   r    removeChainx
  s    
z FirewallClientDirect.removeChainc             C   s   |||f}|| j d kS )Nr   )r5   )r=   r(  rl  ro  rp  r   r   r    
queryChain}
  s    
zFirewallClientDirect.queryChainc             C   s
   | j d S )NrR   )r5   )r=   r   r   r    getAllRules
  s    z FirewallClientDirect.getAllRulesc                s    fdd| j d D S )Nc                s<   g | ]4}|d  kr|d kr|d  kr|dd qS )r   rR   rU   r   Nr   )r   r  )ro  r(  rl  r   r    r   
  s    z1FirewallClientDirect.getRules.<locals>.<listcomp>rR   )r5   )r=   r(  rl  ro  r   )ro  r(  rl  r    getRules
  s    zFirewallClientDirect.getRulesc             C   s   || j d< d S )NrR   )r5   )r=   r   r   r   r    setAllRules
  s    z FirewallClientDirect.setAllRulesc             C   s0   |||||f}|| j d kr,| j d j| d S )NrR   )r5   r_   )r=   r(  rl  ro  r   r   rp  r   r   r    addRule
  s    zFirewallClientDirect.addRulec             C   s0   |||||f}|| j d kr,| j d j| d S )NrR   )r5   rc   )r=   r(  rl  ro  r   r   rp  r   r   r    
removeRule
  s    zFirewallClientDirect.removeRulec             C   sP   xJt | jd D ]8}|d |kr|d |kr|d |kr| jd j| qW d S )NrR   r   rU   )r9   r5   rc   )r=   r(  rl  ro  rp  r   r   r    removeRules
  s    $z FirewallClientDirect.removeRulesc             C   s   |||||f}|| j d kS )NrR   )r5   )r=   r(  rl  ro  r   r   rp  r   r   r    	queryRule
  s    zFirewallClientDirect.queryRulec             C   s
   | j d S )NrU   )r5   )r=   r   r   r    getAllPassthroughs
  s    z'FirewallClientDirect.getAllPassthroughsc             C   s   || j d< d S )NrU   )r5   )r=   Zpassthroughsr   r   r    setAllPassthroughs
  s    z'FirewallClientDirect.setAllPassthroughsc             C   s   g | j d< d S )NrU   )r5   )r=   r   r   r    removeAllPassthroughs
  s    z*FirewallClientDirect.removeAllPassthroughsc                s    fdd| j d D S )Nc                s    g | ]}|d   kr|d qS )r   rR   r   )r   r  )r(  r   r    r   
  s    z8FirewallClientDirect.getPassthroughs.<locals>.<listcomp>rU   )r5   )r=   r(  r   )r(  r    getPassthroughs
  s    z$FirewallClientDirect.getPassthroughsc             C   s*   ||f}|| j d kr&| j d j| d S )NrU   )r5   r_   )r=   r(  r   rp  r   r   r    addPassthrough
  s    z#FirewallClientDirect.addPassthroughc             C   s*   ||f}|| j d kr&| j d j| d S )NrU   )r5   rc   )r=   r(  r   rp  r   r   r    removePassthrough
  s    z&FirewallClientDirect.removePassthroughc             C   s   ||f}|| j d kS )NrU   )r5   )r=   r(  r   rp  r   r   r    queryPassthrough
  s    z%FirewallClientDirect.queryPassthrough)N)r   r   r   r!   r@   rB   rk  rm  rn  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r   r   r   r    rj  ]
  s.   rj  c               @   s  e Zd Zedd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zd'S )(FirewallClientConfigDirectc             C   s8   || _ | j jtjjtjj| _tj| jtjjd| _	d S )N)r   )
r   r   r   r   r   rT  r   r   DBUS_INTERFACE_CONFIG_DIRECT	fw_direct)r=   r   r   r   r    r@   
  s    z#FirewallClientConfigDirect.__init__c             C   s   t tt| jj S )N)rj  r9   r	   r  r   )r=   r   r   r    r   
  s    z&FirewallClientConfigDirect.getSettingsc             C   s   | j jt|j d S )N)r  r   r%  r5   )r=   r5   r   r   r    r   
  s    z!FirewallClientConfigDirect.updatec             C   s   | j j||| d S )N)r  rq  )r=   r(  rl  ro  r   r   r    rq  
  s    z#FirewallClientConfigDirect.addChainc             C   s   | j j||| d S )N)r  rr  )r=   r(  rl  ro  r   r   r    rr  
  s    z&FirewallClientConfigDirect.removeChainc             C   s   t | jj|||S )N)r	   r  rs  )r=   r(  rl  ro  r   r   r    rs  
  s    z%FirewallClientConfigDirect.queryChainc             C   s   t | jj||S )N)r	   r  rm  )r=   r(  rl  r   r   r    rm  
  s    z$FirewallClientConfigDirect.getChainsc             C   s   t | jj S )N)r	   r  rk  )r=   r   r   r    rk  
  s    z'FirewallClientConfigDirect.getAllChainsc             C   s   | j j||||| d S )N)r  rw  )r=   r(  rl  ro  r   r   r   r   r    rw  
  s    z"FirewallClientConfigDirect.addRulec             C   s   | j j||||| d S )N)r  rx  )r=   r(  rl  ro  r   r   r   r   r    rx  
  s    z%FirewallClientConfigDirect.removeRulec             C   s   | j j||| d S )N)r  ry  )r=   r(  rl  ro  r   r   r    ry  
  s    z&FirewallClientConfigDirect.removeRulesc             C   s   t | jj|||||S )N)r	   r  rz  )r=   r(  rl  ro  r   r   r   r   r    rz     s    z$FirewallClientConfigDirect.queryRulec             C   s   t | jj|||S )N)r	   r  ru  )r=   r(  rl  ro  r   r   r    ru    s    z#FirewallClientConfigDirect.getRulesc             C   s   t | jj S )N)r	   r  rt  )r=   r   r   r    rt  
  s    z&FirewallClientConfigDirect.getAllRulesc             C   s   | j j|| d S )N)r  r  )r=   r(  r   r   r   r    r    s    z)FirewallClientConfigDirect.addPassthroughc             C   s   | j j|| d S )N)r  r  )r=   r(  r   r   r   r    r    s    z,FirewallClientConfigDirect.removePassthroughc             C   s   t | jj||S )N)r	   r  r  )r=   r(  r   r   r   r    r    s    z+FirewallClientConfigDirect.queryPassthroughc             C   s   t | jj|S )N)r	   r  r~  )r=   r(  r   r   r    r~     s    z*FirewallClientConfigDirect.getPassthroughsc             C   s   t | jj S )N)r	   r  r{  )r=   r   r   r    r{  %  s    z-FirewallClientConfigDirect.getAllPassthroughsN)r   r   r   r!   r@   r   r   r   r   r   r   rq  rr  rs  rm  rk  rw  rx  ry  rz  ru  rt  r  r  r  r~  r{  r   r   r   r    r  
  sJ   	r  c               @   sF  e Zd Zedd Zejjjedd Z	ejjjedd Z
ejjjedd Zejjjed	d
 Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd  Zejjjed!d" Zejjjed#d$ Zejjjed%d& Zejjjed'd( Zejjjed)d* Zejjjed+d, Zejjjed-d. Zejjjed/d0 Zejjjed1d2 Z ejjjed3d4 Z!ejjjed5d6 Z"ejjjed7d8 Z#ejjjed9d: Z$ejjjed;d< Z%ejjjed=d> Z&ejjjed?d@ Z'ejjjedAdB Z(ejjjedCdD Z)ejjjedEdF Z*ejjjedGdH Z+ejjjedIdJ Z,ejjjedKdL Z-dMS )NFirewallClientConfigc             C   sb   || _ | j jtjjtjj| _tj| jtjjd| _	tj| jdd| _
t| j | _t| j | _d S )N)r   zorg.freedesktop.DBus.Properties)r   r   r   r   r   rT  r   r   DBUS_INTERFACE_CONFIG	fw_configr   rS  	_policiesr  _direct)r=   r   r   r   r    r@   -  s    zFirewallClientConfig.__init__c             C   s   t | jjtjj|S )N)r	   r   r   r   r   r  )r=   r   r   r   r    r   <  s    z!FirewallClientConfig.get_propertyc             C   s   t | jjtjjS )N)r	   r   r   r   r   r  )r=   r   r   r    r   B  s    z#FirewallClientConfig.get_propertiesc             C   s   | j jtjj|| d S )N)r   r   r   r   r  )r=   r   rE   r   r   r    r   H  s    z!FirewallClientConfig.set_propertyc             C   s   t | jj S )N)r	   r  getIPSetNames)r=   r   r   r    r  O  s    z"FirewallClientConfig.getIPSetNamesc             C   s   t | jj S )N)r	   r  
listIPSets)r=   r   r   r    r  T  s    zFirewallClientConfig.listIPSetsc             C   s   t | j|S )N)r"  r   )r=   r   r   r   r    getIPSetY  s    zFirewallClientConfig.getIPSetc             C   s   t | jj|}t| j|S )N)r	   r  getIPSetByNamer"  r   )r=   r   r   r   r   r    r  ^  s    z#FirewallClientConfig.getIPSetByNamec             C   s>   t |tr | jj|t|j}n| jj|t|}t| j|S )N)r8   r  r  addIPSetr%  r5   r"  r   )r=   r   r5   r   r   r   r    r  d  s    
zFirewallClientConfig.addIPSetc             C   s   t | jj S )N)r	   r  getZoneNames)r=   r   r   r    r  o  s    z!FirewallClientConfig.getZoneNamesc             C   s   t | jj S )N)r	   r  	listZones)r=   r   r   r    r  t  s    zFirewallClientConfig.listZonesc             C   s   t | j|S )N)r   r   )r=   r   r   r   r    getZoney  s    zFirewallClientConfig.getZonec             C   s   t | jj|}t| j|S )N)r	   r  getZoneByNamer   r   )r=   r   r   r   r   r    r  ~  s    z"FirewallClientConfig.getZoneByNamec             C   s   t | jj|S )N)r	   r  getZoneOfInterface)r=   Zifacer   r   r    r    s    z'FirewallClientConfig.getZoneOfInterfacec             C   s   t | jj|S )N)r	   r  getZoneOfSource)r=   r   r   r   r    r    s    z$FirewallClientConfig.getZoneOfSourcec             C   s^   t |tr| jj||j }n4t |tr8| jj||}n| jj|t|d d }t| j	|S )Nr   )
r8   r"   r  ZaddZone2rM   r;   addZoner%  r   r   )r=   r   r5   r   r   r   r    r    s    

zFirewallClientConfig.addZonec             C   s   t | jj S )N)r	   r  getPolicyNames)r=   r   r   r    r    s    z#FirewallClientConfig.getPolicyNamesc             C   s   t | jj S )N)r	   r  listPolicies)r=   r   r   r    r    s    z!FirewallClientConfig.listPoliciesc             C   s   t | j|S )N)r   r   )r=   r   r   r   r    	getPolicy  s    zFirewallClientConfig.getPolicyc             C   s   t | jj|}t| j|S )N)r	   r  getPolicyByNamer   r   )r=   r   r   r   r   r    r    s    z$FirewallClientConfig.getPolicyByNamec             C   s8   t |tr| jj||j }n| jj||}t| j|S )N)r8   r   r  	addPolicyrM   r   r   )r=   r   r5   r   r   r   r    r    s    
zFirewallClientConfig.addPolicyc             C   s   t | jj S )N)r	   r  getServiceNames)r=   r   r   r    r    s    z$FirewallClientConfig.getServiceNamesc             C   s   t | jj S )N)r	   r  listServices)r=   r   r   r    r    s    z!FirewallClientConfig.listServicesc             C   s   t | j|S )N)r/  r   )r=   r   r   r   r    
getService  s    zFirewallClientConfig.getServicec             C   s   t | jj|}t| j|S )N)r	   r  getServiceByNamer/  r   )r=   r   r   r   r   r    r    s    z%FirewallClientConfig.getServiceByNamec             C   s`   t |tr| jj||j }n6t|tkr:| jj||}n| jj|t|d d }t	| j
|S )Nr   )r8   r   r  ZaddService2rM   rI   r;   rb   r%  r/  r   )r=   r   r5   r   r   r   r    rb     s    
zFirewallClientConfig.addServicec             C   s   t | jj S )N)r	   r  getIcmpTypeNames)r=   r   r   r    r    s    z%FirewallClientConfig.getIcmpTypeNamesc             C   s   t | jj S )N)r	   r  listIcmpTypes)r=   r   r   r    r    s    z"FirewallClientConfig.listIcmpTypesc             C   s   t | j|S )N)r6  r   )r=   r   r   r   r    getIcmpType  s    z FirewallClientConfig.getIcmpTypec             C   s   t | jj|}t| j|S )N)r	   r  getIcmpTypeByNamer6  r   )r=   r   r   r   r   r    r    s    z&FirewallClientConfig.getIcmpTypeByNamec             C   s>   t |tr | jj|t|j}n| jj|t|}t| j|S )N)r8   r3  r  addIcmpTyper%  r5   r6  r   )r=   r   r5   r   r   r   r    r    s    
z FirewallClientConfig.addIcmpTypec             C   s   | j S )N)r  )r=   r   r   r    policies  s    zFirewallClientConfig.policiesc             C   s   | j S )N)r  )r=   r   r   r    direct  s    zFirewallClientConfig.directc             C   s   t | jj S )N)r	   r  getHelperNames)r=   r   r   r    r    s    z#FirewallClientConfig.getHelperNamesc             C   s   t | jj S )N)r	   r  listHelpers)r=   r   r   r    r    s    z FirewallClientConfig.listHelpersc             C   s   t | j|S )N)r,  r   )r=   r   r   r   r    	getHelper  s    zFirewallClientConfig.getHelperc             C   s   t | jj|}t| j|S )N)r	   r  getHelperByNamer,  r   )r=   r   r   r   r   r    r    s    z$FirewallClientConfig.getHelperByNamec             C   s>   t |tr | jj|t|j}n| jj|t|}t| j|S )N)r8   r&  r  r  r%  r5   r,  r   )r=   r   r5   r   r   r   r    r     s    
zFirewallClientConfig.addHelperN).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  rb   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r    r  ,  s   

r  c               @   s  e Zd Zed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dd Zedd Zedd Zejjjedd Zejjjedd Zejjjedd Zejjjed d! Zejjjed"d# Zejjjed$d% Zejjjed&d' Zejjjed(d) Zejjjed*d+ Zejjjed,d- Zejjjed.d/ Zejjjed0d1 Zejjjed2d3 Zejjjed4d5 Z ejjjed6d7 Z!ejjjed8d9 Z"ejjjed:d; Z#ejjjed<d= Z$ejjjed>d? Z%ejjjed@dA Z&ejjjedBdC Z'ejjjedDdE Z(ejjjedFdG Z)ejjjedHdI Z*ejjjedJdK Z+ejjjedLdM Z,ejjjedNdO Z-ejjjedPdQ Z.ejjjedRdS Z/ejjjedTdU Z0ejjjedVdW Z1ejjjedXdY Z2ejjjedZd[ Z3ejjjed\d] Z4ejjjed^d_ Z5ejjjed`da Z6ejjjedbdc Z7ejjjeddde Z8ejjjedfdg Z9ejjjedhdi Z:ejjjedjdk Z;ejjjedldm Z<ejjjedndo Z=ejjjedpdq Z>ejjjedrds Z?ejjjedtdu Z@ejjjedvdw ZAejjjedxdy ZBejjjedzd{ ZCejjjed|d} ZDejjjed~d ZEejjjedd ZFejjjedd ZGejjjedddZHejjjedd ZIejjjedd ZJejjjedd ZKejjjedddZLejjjedd ZMejjjedd ZNejjjedd ZOejjjedddZPejjjedd ZQejjjedd ZRejjjedd ZSejjjedddZTejjjedd ZUejjjedd ZVejjjedd ZWejjjedd ZXejjjedd ZYejjjedd ZZejjjedddZ[ejjjedd Z\ejjjedd Z]ejjjed ddZ^ejjjedd Z_ejjjedd Z`ejjjedd Zaejjjed!ddZbejjjedd Zcejjjedd Zdejjjedd Zeejjjed"ddZfejjjeddÄ Zgejjjeddń ZhejjjeddǄ ZiejjjeddɄ Zjejjjedd˄ Zkejjjedd̈́ Zlejjjeddτ Zmejjjeddф Znejjjeddӄ ZoejjjeddՄ Zpejjjeddׄ Zqejjjeddل Zrejjjeddۄ Zsejjjedd݄ Ztejjjedd߄ Zuejjjedd Zvejjjedd Zwejjjedd Zxejjjedd Zyejjjedd Zzejjjedd Z{ejjjedd Z|ejjjedd Z}ejjjedd Z~ejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjed d Zejjjedd Zejjjedd Zejjjedd Zejjjedd	 Zejjjed
d Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd Zejjjedd ZdS (#  FirewallClientNr   Tc          d   C   s  |st jjjdd ytj j | _d | j_W q tk
r   yt j | _W n6 t j	j
k
r } zttj|j W Y d d }~X n
X td Y qX n|| _| jj| jddtj jd xtj jtj jtj jtj jtj jtj jtj jtj jtj jtj jtj jtj jtj jtj j tj j!gD ]}| jj| j"|ddd	d
 qW i | _#dddddddddddddddddddddd d!d"d#d$d%d&d'd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYO| _$| j%  || _&|dZkrt'j(|| j) n| j)  d S )[NT)Zset_as_defaultzNot using slip.dbusZNameOwnerChangedzorg.freedesktop.DBus)Zhandler_functionZsignal_namer   Zarg0r   memberr   )r   Zinterface_keywordZmember_keywordZpath_keywordzconnection-changedzconnection-establishedzconnection-lostZLogDeniedChangedZDefaultZoneChangedZPanicModeEnabledZPanicModeDisabledZReloadedZServiceAddedZServiceRemovedZ	PortAddedZPortRemovedZSourcePortAddedZSourcePortRemovedZProtocolAddedZProtocolRemovedZMasqueradeAddedZMasqueradeRemovedZForwardPortAddedZForwardPortRemovedZIcmpBlockAddedZIcmpBlockRemovedZIcmpBlockInversionAddedZIcmpBlockInversionRemovedZRichRuleAddedZRichRuleRemovedZInterfaceAddedZInterfaceRemovedZZoneOfInterfaceChangedZSourceAddedZSourceRemovedZZoneOfSourceChangedZZoneUpdatedZPolicyUpdatedZ
EntryAddedZEntryRemovedZ
ChainAddedZChainRemovedZ	RuleAddedZRuleRemovedZPassthroughAddedZPassthroughRemovedzconfig:direct:UpdatedZLockdownEnabledZLockdownDisabledZLockdownWhitelistCommandAddedZLockdownWhitelistCommandRemovedZLockdownWhitelistContextAddedZLockdownWhitelistContextRemovedZLockdownWhitelistUidAddedZLockdownWhitelistUidRemovedZLockdownWhitelistUserAddedZLockdownWhitelistUserRemovedz(config:policies:LockdownWhitelistUpdatedzconfig:IPSetAddedzconfig:IPSetUpdatedzconfig:IPSetRemovedzconfig:IPSetRenamedzconfig:ZoneAddedzconfig:ZoneUpdatedzconfig:ZoneRemovedzconfig:ZoneRenamedzconfig:PolicyAddedzconfig:PolicyUpdatedzconfig:PolicyRemovedzconfig:PolicyRenamedzconfig:ServiceAddedzconfig:ServiceUpdatedzconfig:ServiceRemovedzconfig:ServiceRenamedzconfig:IcmpTypeAddedzconfig:IcmpTypeUpdatedzconfig:IcmpTypeRemovedzconfig:IcmpTypeRenamedzconfig:HelperAddedzconfig:HelperUpdatedzconfig:HelperRemovedzconfig:HelperRenamed)Ozconnection-changedzconnection-establishedzconnection-lostzlog-denied-changedzdefault-zone-changedzpanic-mode-enabledzpanic-mode-disabledZreloadedzservice-addedzservice-removedz
port-addedzport-removedzsource-port-addedzsource-port-removedzprotocol-addedzprotocol-removedzmasquerade-addedzmasquerade-removedzforward-port-addedzforward-port-removedzicmp-block-addedzicmp-block-removedzicmp-block-inversion-addedzicmp-block-inversion-removedzrichrule-addedzrichrule-removedzinterface-addedzinterface-removedzzone-changedzzone-of-interface-changedzsource-addedzsource-removedzzone-of-source-changedzzone-updatedzpolicy-updatedzipset-entry-addedzipset-entry-removedzdirect:chain-addedzdirect:chain-removedzdirect:rule-addedzdirect:rule-removedzdirect:passthrough-addedzdirect:passthrough-removedzconfig:direct:updatedzlockdown-enabledzlockdown-disabledz lockdown-whitelist-command-addedz"lockdown-whitelist-command-removedz lockdown-whitelist-context-addedz"lockdown-whitelist-context-removedzlockdown-whitelist-uid-addedzlockdown-whitelist-uid-removedzlockdown-whitelist-user-addedzlockdown-whitelist-user-removedz*config:policies:lockdown-whitelist-updatedzconfig:ipset-addedzconfig:ipset-updatedzconfig:ipset-removedzconfig:ipset-renamedzconfig:zone-addedzconfig:zone-updatedzconfig:zone-removedzconfig:zone-renamedzconfig:policy-addedzconfig:policy-updatedzconfig:policy-removedzconfig:policy-renamedzconfig:service-addedzconfig:service-updatedzconfig:service-removedzconfig:service-renamedzconfig:icmptype-addedzconfig:icmptype-updatedzconfig:icmptype-removedzconfig:icmptype-renamedzconfig:helper-addedzconfig:helper-updatedzconfig:helper-removedzconfig:helper-renamedr   )*r   ZmainloopZglibZDBusGMainLoopr   Z	SystemBusr   Zdefault_timeoutr   r   r   r   r   Z
DBUS_ERRORr   printZadd_signal_receiver_dbus_connection_changedr   r   DBUS_INTERFACE_IPSETDBUS_INTERFACE_ZONEDBUS_INTERFACE_POLICYDBUS_INTERFACE_DIRECTDBUS_INTERFACE_POLICIESr  r#  r   r   r0  r-  r  r7  rU  _signal_receiver	_callback
_callbacks
_init_varsquietr   Ztimeout_add_seconds_connection_established)r=   r   waitr  r   r   r   r   r    r@   ,  s    


zFirewallClient.__init__c             C   s:   d | _ d | _d | _d | _d | _d | _d | _d | _d| _d S )NF)	fwr$  r   r   r.  r  r   _config	connected)r=   r   r   r    r    s    zFirewallClient._init_varsc             C   s   t S )N)r   )r=   r   r   r    getExceptionHandler  s    z"FirewallClient.getExceptionHandlerc             C   s   |a d S )N)r   )r=   Zhandlerr   r   r    setExceptionHandler  s    z"FirewallClient.setExceptionHandlerc             C   s   t S )N)r   )r=   r   r   r    getNotAuthorizedLoop  s    z#FirewallClient.getNotAuthorizedLoopc             C   s   |a d S )N)r   )r=   enabler   r   r    setNotAuthorizedLoop  s    z#FirewallClient.setNotAuthorizedLoopc             G   s0   || j kr ||f| j| j | < ntd| d S )NzUnknown callback name '%s')r  r  
ValueError)r=   r   callbackr   r   r   r    connect  s    
zFirewallClient.connectc             C   s*   |t jjkrd S |r| j  n| j  d S )N)r   r   r   r  _connection_lost)r=   r   Z	old_ownerZ	new_ownerr   r   r    r    s
    
z'FirewallClient._dbus_connection_changedc             C   sX  y| j jtjjtjj| _tj| jtjjd| _tj| jtjj	d| _
tj| jtjjd| _tj| jtjjd| _tj| jtjjd| _tj| jtjjd| _tj| jdd| _W nj tjjk
r } z| jstd|j  d S d }~X n4 tk
r } z| jstd| d S d }~X nX t| j | _d| _| jdtjjd | jdtjjd d S )	N)r   zorg.freedesktop.DBus.Propertiesr   r   Tzconnection-established)r  r   zconnection-changed)r   r   r   r   r   Z	DBUS_PATHr   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    sD    
z&FirewallClient._connection_establishedc             C   s0   | j   | jdtjjd | jdtjjd d S )Nzconnection-lost)r  r   zconnection-changed)r  r  r   r   r   )r=   r   r   r    r    s
    zFirewallClient._connection_lostc       	      O   s  d|ksd|krd S |d }|d }|j tjjr:d| }|j tjjrRd| }n|j tjjrjd| }n|j tjjrd| }np|j tjjrd| }nX|j tjjrd| }n@|tjj	krd	| }n*|tjj
krd
| }n|tjjkrd| }d }x<| jD ]2}| j| |kr| j| | jkr| j| j|  }qW |d krBd S dd |D }y(|d rj|j|d  |d |  W n, tk
r } zt| W Y d d }~X nX d S )Nr  r   zconfig:Zonezconfig:Policyzconfig:IPSetzconfig:Servicezconfig:IcmpTypezconfig:Helperzconfig:zconfig:policies:zconfig:direct:c             S   s   g | ]}t |qS r   )r	   )r   argr   r   r    r   C  s    z3FirewallClient._signal_receiver.<locals>.<listcomp>rR   r   )
startswithr   r   r   r   r#  r0  r7  r-  r  rU  r  r  r  extendr   r  )	r=   r   r   signalr   cbr  Zcb_argsmsgr   r   r    r    sH    








zFirewallClient._signal_receiverc             C   s   | j S )N)r  )r=   r   r   r    r   M  s    zFirewallClient.configc             C   s   | j j  d S )N)r  reload)r=   r   r   r    r  R  s    zFirewallClient.reloadc             C   s   | j j  d S )N)r  ZcompleteReload)r=   r   r   r    complete_reloadW  s    zFirewallClient.complete_reloadc             C   s   | j j  d S )N)r  runtimeToPermanent)r=   r   r   r    r  \  s    z!FirewallClient.runtimeToPermanentc             C   s   | j j  d S )N)r  checkPermanentConfig)r=   r   r   r    r  a  s    z#FirewallClient.checkPermanentConfigc             C   s   t | jjtjj|S )N)r	   r   r   r   r   r   )r=   r   r   r   r    r   f  s    zFirewallClient.get_propertyc             C   s   t | jjtjjS )N)r	   r   r   r   r   r   )r=   r   r   r    r   l  s    zFirewallClient.get_propertiesc             C   s   | j jtjj|| d S )N)r   r   r   r   r   )r=   r   rE   r   r   r    r   r  s    zFirewallClient.set_propertyc             C   s   | j j  d S )N)r  enablePanicMode)r=   r   r   r    r  y  s    zFirewallClient.enablePanicModec             C   s   | j j  d S )N)r  disablePanicMode)r=   r   r   r    r  ~  s    zFirewallClient.disablePanicModec             C   s   t | jj S )N)r	   r  queryPanicMode)r=   r   r   r    r    s    zFirewallClient.queryPanicModec             C   s   t t| jj|S )N)r"   r	   r   getZoneSettings2)r=   zoner   r   r    getZoneSettings  s    zFirewallClient.getZoneSettingsc             C   s   t | jj S )N)r	   r$  	getIPSets)r=   r   r   r    r    s    zFirewallClient.getIPSetsc             C   s   t tt| jj|S )N)r  r9   r	   r$  getIPSetSettings)r=   ipsetr   r   r    r    s    zFirewallClient.getIPSetSettingsc             C   s   | j j|| d S )N)r$  r  )r=   r  r  r   r   r    r    s    zFirewallClient.addEntryc             C   s   | j j|S )N)r$  r  )r=   r  r   r   r    r    s    zFirewallClient.getEntriesc             C   s   | j j||S )N)r$  r  )r=   r  r  r   r   r    r    s    zFirewallClient.setEntriesc             C   s   | j j|| d S )N)r$  r   )r=   r  r  r   r   r    r     s    zFirewallClient.removeEntryc             C   s   t | jj||S )N)r	   r$  r!  )r=   r  r  r   r   r    r!    s    zFirewallClient.queryEntryc             C   s   t | jj S )N)r	   r  r  )r=   r   r   r    r    s    zFirewallClient.listServicesc             C   s   t t| jj|S )N)r   r	   r  ZgetServiceSettings2)r=   ra   r   r   r    getServiceSettings  s    z!FirewallClient.getServiceSettingsc             C   s   t | jj S )N)r	   r  r  )r=   r   r   r    r    s    zFirewallClient.listIcmpTypesc             C   s   t tt| jj|S )N)r3  r9   r	   r  getIcmpTypeSettings)r=   r   r   r   r    r    s    z"FirewallClient.getIcmpTypeSettingsc             C   s   t | jj S )N)r	   r  r
  )r=   r   r   r    r
    s    zFirewallClient.getHelpersc             C   s   t tt| jj|S )N)r&  r9   r	   r  getHelperSettings)r=   r  r   r   r    r    s    z FirewallClient.getHelperSettingsc             C   s   t | jj S )N)r	   r  getAutomaticHelpers)r=   r   r   r    r    s    z"FirewallClient.getAutomaticHelpersc             C   s   | j j| d S )N)r  setAutomaticHelpers)r=   rE   r   r   r    r    s    z"FirewallClient.setAutomaticHelpersc             C   s   t | jj S )N)r	   r  getLogDenied)r=   r   r   r    r    s    zFirewallClient.getLogDeniedc             C   s   | j j| d S )N)r  setLogDenied)r=   rE   r   r   r    r    s    zFirewallClient.setLogDeniedc             C   s   t | jj S )N)r	   r  getDefaultZone)r=   r   r   r    r    s    zFirewallClient.getDefaultZonec             C   s   | j j| d S )N)r  setDefaultZone)r=   r  r   r   r    r    s    zFirewallClient.setDefaultZonec             C   s   | j j||j  d S )N)r   setZoneSettings2rO   )r=   r  r5   r   r   r    setZoneSettings  s    zFirewallClient.setZoneSettingsc             C   s   t | jj S )N)r	   r   getZones)r=   r   r   r    r    s    zFirewallClient.getZonesc             C   s   t | jj S )N)r	   r   getActiveZones)r=   r   r   r    r    s    zFirewallClient.getActiveZonesc             C   s   t | jj|S )N)r	   r   r  )r=   r   r   r   r    r  	  s    z!FirewallClient.getZoneOfInterfacec             C   s   t | jj|S )N)r	   r   r  )r=   r   r   r   r    r    s    zFirewallClient.getZoneOfSourcec             C   s   t | jj|S )N)r	   r   isImmutable)r=   r  r   r   r    r    s    zFirewallClient.isImmutablec             C   s   t t| jj|S )N)r   r	   r   getPolicySettings)r=   policyr   r   r    r    s    z FirewallClient.getPolicySettingsc             C   s   | j j||j  d S )N)r   setPolicySettingsrO   )r=   r  r5   r   r   r    r    s    z FirewallClient.setPolicySettingsc             C   s   t | jj S )N)r	   r   getPolicies)r=   r   r   r    r  $  s    zFirewallClient.getPoliciesc             C   s   t | jj S )N)r	   r   getActivePolicies)r=   r   r   r    r  )  s    z FirewallClient.getActivePoliciesc             C   s   t | jj|S )N)r	   r   r  )r=   r  r   r   r    isPolicyImmutable.  s    z FirewallClient.isPolicyImmutablec             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r   5  s    zFirewallClient.addInterfacec             C   s   t | jj||S )N)r	   r   
changeZone)r=   r  r   r   r   r    r  :  s    zFirewallClient.changeZonec             C   s   t | jj||S )N)r	   r   changeZoneOfInterface)r=   r  r   r   r   r    r  ?  s    
z$FirewallClient.changeZoneOfInterfacec             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r   E  s    zFirewallClient.getInterfacesc             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r   J  s    zFirewallClient.queryInterfacec             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r   O  s    zFirewallClient.removeInterfacec             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r   V  s    zFirewallClient.addSourcec             C   s   t | jj||S )N)r	   r   changeZoneOfSource)r=   r  r   r   r   r    r  [  s    z!FirewallClient.changeZoneOfSourcec             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r   `  s    zFirewallClient.getSourcesc             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r   e  s    zFirewallClient.querySourcec             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r   j  s    zFirewallClient.removeSourcec             C   s   t | jj|||S )N)r	   r   r   )r=   r  r   r  r   r   r    r   q  s    zFirewallClient.addRichRulec             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r   v  s    zFirewallClient.getRichRulesc             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r   {  s    zFirewallClient.queryRichRulec             C   s   t | jj||S )N)r	   r   r   )r=   r  r   r   r   r    r     s    zFirewallClient.removeRichRulec             C   s   t | jj|||S )N)r	   r   rb   )r=   r  ra   r  r   r   r    rb     s    zFirewallClient.addServicec             C   s   t | jj|S )N)r	   r   r]   )r=   r  r   r   r    r]     s    zFirewallClient.getServicesc             C   s   t | jj||S )N)r	   r   rf   )r=   r  ra   r   r   r    rf     s    zFirewallClient.queryServicec             C   s   t | jj||S )N)r	   r   re   )r=   r  ra   r   r   r    re     s    zFirewallClient.removeServicec             C   s   t | jj||||S )N)r	   r   rl   )r=   r  rj   rk   r  r   r   r    rl     s    zFirewallClient.addPortc             C   s   t | jj|S )N)r	   r   rh   )r=   r  r   r   r    rh     s    zFirewallClient.getPortsc             C   s   t | jj|||S )N)r	   r   rn   )r=   r  rj   rk   r   r   r    rn     s    zFirewallClient.queryPortc             C   s   t | jj|||S )N)r	   r   rm   )r=   r  rj   rk   r   r   r    rm     s    zFirewallClient.removePortc             C   s   t | jj|||S )N)r	   r   rr   )r=   r  rk   r  r   r   r    rr     s    zFirewallClient.addProtocolc             C   s   t | jj|S )N)r	   r   rp   )r=   r  r   r   r    rp     s    zFirewallClient.getProtocolsc             C   s   t | jj||S )N)r	   r   rt   )r=   r  rk   r   r   r    rt     s    zFirewallClient.queryProtocolc             C   s   t | jj||S )N)r	   r   rs   )r=   r  rk   r   r   r    rs     s    zFirewallClient.removeProtocolc             C   s   | j j|ddi d S )Nr2   T)r   r  )r=   r  r   r   r    r     s    zFirewallClient.addForwardc             C   s   t | jj|d S )Nr2   )r	   r   r  )r=   r  r   r   r    r     s    zFirewallClient.queryForwardc             C   s   | j j|ddi d S )Nr2   F)r   r  )r=   r  r   r   r    r     s    zFirewallClient.removeForwardc             C   s   t | jj||S )N)r	   r   r   )r=   r  r  r   r   r    r     s    zFirewallClient.addMasqueradec             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r     s    zFirewallClient.queryMasqueradec             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r     s    zFirewallClient.removeMasqueradec             C   s2   |d krd}|d krd}t | jj||||||S )Nr#   )r	   r   r   )r=   r  rj   rk   r   r   r  r   r   r    r     s    zFirewallClient.addForwardPortc             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r     s    zFirewallClient.getForwardPortsc             C   s0   |d krd}|d krd}t | jj|||||S )Nr#   )r	   r   r   )r=   r  rj   rk   r   r   r   r   r    r     s    
zFirewallClient.queryForwardPortc             C   s0   |d krd}|d krd}t | jj|||||S )Nr#   )r	   r   r   )r=   r  rj   rk   r   r   r   r   r    r     s    
z FirewallClient.removeForwardPortc             C   s   t | jj||||S )N)r	   r   rx   )r=   r  rj   rk   r  r   r   r    rx     s    zFirewallClient.addSourcePortc             C   s   t | jj|S )N)r	   r   rv   )r=   r  r   r   r    rv     s    zFirewallClient.getSourcePortsc             C   s   t | jj|||S )N)r	   r   rz   )r=   r  rj   rk   r   r   r    rz     s    zFirewallClient.querySourcePortc             C   s   t | jj|||S )N)r	   r   ry   )r=   r  rj   rk   r   r   r    ry   $  s    zFirewallClient.removeSourcePortc             C   s   t | jj|||S )N)r	   r   r   )r=   r  icmpr  r   r   r    r   ,  s    zFirewallClient.addIcmpBlockc             C   s   t | jj|S )N)r	   r   r|   )r=   r  r   r   r    r|   1  s    zFirewallClient.getIcmpBlocksc             C   s   t | jj||S )N)r	   r   r   )r=   r  r  r   r   r    r   6  s    zFirewallClient.queryIcmpBlockc             C   s   t | jj||S )N)r	   r   r   )r=   r  r  r   r   r    r   ;  s    zFirewallClient.removeIcmpBlockc             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r   B  s    z$FirewallClient.addIcmpBlockInversionc             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r   G  s    z&FirewallClient.queryIcmpBlockInversionc             C   s   t | jj|S )N)r	   r   r   )r=   r  r   r   r    r   L  s    z'FirewallClient.removeIcmpBlockInversionc             C   s   | j j||| d S )N)r  rq  )r=   r(  rl  ro  r   r   r    rq  S  s    zFirewallClient.addChainc             C   s   | j j||| d S )N)r  rr  )r=   r(  rl  ro  r   r   r    rr  X  s    zFirewallClient.removeChainc             C   s   t | jj|||S )N)r	   r  rs  )r=   r(  rl  ro  r   r   r    rs  ]  s    zFirewallClient.queryChainc             C   s   t | jj||S )N)r	   r  rm  )r=   r(  rl  r   r   r    rm  b  s    zFirewallClient.getChainsc             C   s   t | jj S )N)r	   r  rk  )r=   r   r   r    rk  g  s    zFirewallClient.getAllChainsc             C   s   | j j||||| d S )N)r  rw  )r=   r(  rl  ro  r   r   r   r   r    rw  n  s    zFirewallClient.addRulec             C   s   | j j||||| d S )N)r  rx  )r=   r(  rl  ro  r   r   r   r   r    rx  s  s    zFirewallClient.removeRulec             C   s   | j j||| d S )N)r  ry  )r=   r(  rl  ro  r   r   r    ry  x  s    zFirewallClient.removeRulesc             C   s   t | jj|||||S )N)r	   r  rz  )r=   r(  rl  ro  r   r   r   r   r    rz  }  s    zFirewallClient.queryRulec             C   s   t | jj|||S )N)r	   r  ru  )r=   r(  rl  ro  r   r   r    ru    s    zFirewallClient.getRulesc             C   s   t | jj S )N)r	   r  rt  )r=   r   r   r    rt    s    zFirewallClient.getAllRulesc             C   s   t | jj||S )N)r	   r  passthrough)r=   r(  r   r   r   r    r    s    zFirewallClient.passthroughc             C   s   t | jj S )N)r	   r  r{  )r=   r   r   r    r{    s    z!FirewallClient.getAllPassthroughsc             C   s   | j j  d S )N)r  r}  )r=   r   r   r    r}    s    z$FirewallClient.removeAllPassthroughsc             C   s   t | jj|S )N)r	   r  r~  )r=   r(  r   r   r    r~    s    zFirewallClient.getPassthroughsc             C   s   | j j|| d S )N)r  r  )r=   r(  r   r   r   r    r    s    zFirewallClient.addPassthroughc             C   s   | j j|| d S )N)r  r  )r=   r(  r   r   r   r    r    s    z FirewallClient.removePassthroughc             C   s   t | jj||S )N)r	   r  r  )r=   r(  r   r   r   r    r    s    zFirewallClient.queryPassthroughc             C   s   | j j  d S )N)rV  enableLockdown)r=   r   r   r    r    s    zFirewallClient.enableLockdownc             C   s   | j j  d S )N)rV  disableLockdown)r=   r   r   r    r    s    zFirewallClient.disableLockdownc             C   s   t | jj S )N)r	   rV  queryLockdown)r=   r   r   r    r    s    zFirewallClient.queryLockdownc             C   s   | j j| d S )N)rV  rY  )r=   r<  r   r   r    rY    s    z*FirewallClient.addLockdownWhitelistCommandc             C   s   t | jj S )N)r	   rV  r\  )r=   r   r   r    r\    s    z+FirewallClient.getLockdownWhitelistCommandsc             C   s   t | jj|S )N)r	   rV  r[  )r=   r<  r   r   r    r[    s    z,FirewallClient.queryLockdownWhitelistCommandc             C   s   | j j| d S )N)rV  rZ  )r=   r<  r   r   r    rZ    s    z-FirewallClient.removeLockdownWhitelistCommandc             C   s   | j j| d S )N)rV  r]  )r=   rB  r   r   r    r]    s    z*FirewallClient.addLockdownWhitelistContextc             C   s   t | jj S )N)r	   rV  r`  )r=   r   r   r    r`    s    z+FirewallClient.getLockdownWhitelistContextsc             C   s   t | jj|S )N)r	   rV  r_  )r=   rB  r   r   r    r_    s    z,FirewallClient.queryLockdownWhitelistContextc             C   s   | j j| d S )N)rV  r^  )r=   rB  r   r   r    r^    s    z-FirewallClient.removeLockdownWhitelistContextc             C   s   | j j| d S )N)rV  rg  )r=   rO  r   r   r    rg    s    z&FirewallClient.addLockdownWhitelistUidc             C   s   t | jj S )N)r	   rV  re  )r=   r   r   r    re    s    z'FirewallClient.getLockdownWhitelistUidsc             C   s   t | jj|S )N)r	   rV  ri  )r=   rO  r   r   r    ri    s    z(FirewallClient.queryLockdownWhitelistUidc             C   s   | j j| d S )N)rV  rh  )r=   rO  r   r   r    rh    s    z)FirewallClient.removeLockdownWhitelistUidc             C   s   | j j| d S )N)rV  ra  )r=   rH  r   r   r    ra  
  s    z'FirewallClient.addLockdownWhitelistUserc             C   s   t | jj S )N)r	   rV  rd  )r=   r   r   r    rd    s    z(FirewallClient.getLockdownWhitelistUsersc             C   s   t | jj|S )N)r	   rV  rc  )r=   rH  r   r   r    rc    s    z)FirewallClient.queryLockdownWhitelistUserc             C   s   | j j| d S )N)rV  rb  )r=   rH  r   r   r    rb    s    z*FirewallClient.removeLockdownWhitelistUserc             C   s   | j j  dS )z( Authorize once for all polkit actions. N)r  authorizeAll)r=   r   r   r    r    s    zFirewallClient.authorizeAll)Nr   T)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  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   rb   r]   rf   re   rl   rh   rn   rm   rr   rp   rt   rs   r   r   r   r   r   r   r   r   r   r   rx   rv   rz   ry   r   r|   r   r   r   r   r   rq  rr  rs  rm  rk  rw  rx  ry  rz  ru  rt  r  r{  r}  r~  r  r  r  r  r  r  rY  r\  r[  rZ  r]  r`  r_  r^  rg  re  ri  rh  ra  rd  rc  rb  r  r   r   r   r    r  +  s*   &0	
r  )4Zgi.repositoryr   r   sysr   Zdbus.mainloop.glibr   Z	slip.dbusr   r   Zfirewallr   Zfirewall.core.baser   r   r   Zfirewall.dbus_utilsr	   Zfirewall.functionsr
   Zfirewall.core.richr   Zfirewall.core.ipsetr   r   r   r   Zfirewall.errorsr   r   r   r   r!   objectr"   r   r   r   r   r  r"  r&  r,  r/  r3  r6  r9  rS  rj  r  r  r  r   r   r   r    <module>   sd   
'      ;  R8 ghyK   CzVtbm  