<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Yju                 @   s   d dl mZ d dlZeejd< d dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZmZ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 G d
d dejjjZdS )    )GObjectNZgobject)config)dbus_to_python%dbus_introspection_prepare_properties!dbus_introspection_add_properties)log)handle_exceptionsdbus_handle_exceptionsdbus_service_method)errors)FirewallErrorc                   s  e Zd ZdZdZejjZe	 fddZ
edd Zedd Zed	d
 ZeejdddedddZeejdddedddZejjjejjeejddedddZejjejdddd Zejjjejjeejdded fdd	Zeejjd dedd!d"Zeejjddedd#d$Zeejjd dedd%d&Z eejjddedd'd(Z!eejjedd)d*Z"ejjejjdded+d, Z#eejjedd-d.Z$ejjejjdded/d0 Z%eejjddedd1d2Z&ejjejjdded3d4 Z'eejjddedd5d6Z(eejjddedd7d8Z)eejjddedd9d:Z*eejjddedd;d<Z+eejjddedd=d>Z,eejjddedd?d@Z-eejjdAdeddBdCZ.eejjdAdeddDdEZ/eejjddeddFdGZ0eejjddeddHdIZ1eejjddJdeddKdLZ2eejjdMdeddNdOZ3eejjdMdeddPdQZ4eejjddeddRdSZ5eejjddeddTdUZ6eejjddJdeddVdWZ7eejjdAdeddXdYZ8eejjdAdeddZd[Z9eejjddedd\d]Z:eejjddedd^d_Z;eejjddJdedd`daZ<eejjdMdeddbdcZ=eejjdMdeddddeZ>eejjddeddfdgZ?eejjddeddhdiZ@eejjddJdeddjdkZAeejjdldeddmdnZBeejjdldeddodpZCeejjdddeddqdrZDeejjddeddsdtZEeejjddeddudvZFeejjddJdeddwdxZGeejjdMdeddydzZHeejjdMdedd{d|ZIeejjddedd}d~ZJeejjddedddZKeejjddJdedddZL  ZMS )FirewallDConfigServicezFirewallD main classTc                s\   t t| j|| || _|| _|| _|| _|d | _|d | _d| j | _	t
| tjj d S )Nr      zconfig.service.%d)superr   __init__parentr   objitem_idbusnamepath_log_prefixr   dbusDBUS_INTERFACE_CONFIG_SERVICE)selfr   Zconfservicer   argskwargs)	__class__ $/usr/lib/python3.6/config_service.pyr   7   s    

zFirewallDConfigService.__init__c             C   s   d S )Nr   )r   r   r   r   __del__D   s    zFirewallDConfigService.__del__c             C   s   | j   d S )N)Zremove_from_connection)r   r   r   r   
unregisterH   s    z!FirewallDConfigService.unregisterc             C   s   |dkrt j| jjS |dkr,t j| jjS |dkrBt j| jjS |dkrXt j| jjS |dkrnt j| jjS t j	j
d| d S )Nnamefilenamer   defaultbuiltinzDorg.freedesktop.DBus.Error.InvalidArgs: Property '%s' does not exist)r   Stringr   r"   r#   r   ZBooleanr$   r%   
exceptionsDBusException)r   property_namer   r   r   _get_propertyP   s    z$FirewallDConfigService._get_propertyZssv)in_signatureout_signatureNc             C   sL   t |t}t |t}tjd| j|| |tjjkrBtjj	d| | j
|S )Nz%s.Get('%s', '%s')zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not exist)r   strr   debug1r   r   r   r   r'   r(   r*   )r   interface_namer)   senderr   r   r   Geta   s    


zFirewallDConfigService.Getsza{sv}c             C   sd   t |t}tjd| j| |tjjkr6tjj	d| i }xd
D ]}| j
|||< q@W tj|dd	S )Nz%s.GetAll('%s')zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not existr"   r#   r   r$   r%   Zsv)	signature)r"   r#   r   r$   r%   )r   r.   r   r/   r   r   r   r   r'   r(   r*   Z
Dictionary)r   r0   r1   retxr   r   r   GetAllr   s    

zFirewallDConfigService.GetAllZssv)r,   c             C   sl   t |t}t |t}t |}tjd| j||| | jj| |tjj	krXtj
jd| tj
jd| d S )Nz%s.Set('%s', '%s', '%s')zJorg.freedesktop.DBus.Error.UnknownInterface: Interface '%s' does not existzGorg.freedesktop.DBus.Error.PropertyReadOnly: Property '%s' is read-only)r   r.   r   r/   r   r   accessCheckr   r   r   r'   r(   )r   r0   r)   Z	new_valuer1   r   r   r   Set   s    



zFirewallDConfigService.Setzsa{sv}as)r4   c             C   s2   t |t}t |}t |}tjd| j||| d S )Nz&%s.PropertiesChanged('%s', '%s', '%s'))r   r.   r   r/   r   )r   r0   Zchanged_propertiesZinvalidated_propertiesr   r   r   PropertiesChanged   s
    

z(FirewallDConfigService.PropertiesChanged)r-   c                s8   t jd| j tt| j| j| jj }t	| |t
jjS )Nz%s.Introspect())r   Zdebug2r   r   r   
Introspectr   r   Zget_busr   r   r   r   )r   r1   data)r   r   r   r;      s
    
z!FirewallDConfigService.Introspectz(sssa(ss)asa{ss}asa(ss))c             C   s   t jd| j | jj| jS )z!get settings for service
        z%s.getSettings())r   r/   r   r   Zget_service_configr   )r   r1   r   r   r   getSettings   s    z"FirewallDConfigService.getSettingsc             C   s   t jd| j | jj| jS )z!get settings for service
        z%s.getSettings2())r   r/   r   r   get_service_config_dictr   )r   r1   r   r   r   getSettings2   s    z#FirewallDConfigService.getSettings2c             C   sF   t |}tjd| j | jj| | jj| j|| _| j	| jj
 dS )z$update settings for service
        z%s.update('...')N)r   r   r/   r   r   r8   r   Zset_service_configr   Updatedr"   )r   settingsr1   r   r   r   update   s
    zFirewallDConfigService.updatec             C   sF   t |}tjd| j | jj| | jj| j|| _| j	| jj
 d S )Nz%s.update2('...'))r   r   r/   r   r   r8   r   set_service_config_dictr   r@   r"   )r   rA   r1   r   r   r   update2   s
    zFirewallDConfigService.update2c             C   s<   t jd| j | jj| | jj| j| _| j| jj	 dS )z2load default settings for builtin service
        z%s.loadDefaults()N)
r   r/   r   r   r8   r   Zload_service_defaultsr   r@   r"   )r   r1   r   r   r   loadDefaults   s    z#FirewallDConfigService.loadDefaultsc             C   s   t jd| j|f  d S )Nz%s.Updated('%s'))r   r/   r   )r   r"   r   r   r   r@      s    zFirewallDConfigService.Updatedc             C   s:   t jd| j | jj| | jj| j | jj| j dS )zremove service
        z%s.removeService()N)	r   r/   r   r   r8   r   Zremove_servicer   ZremoveService)r   r1   r   r   r   remove   s    zFirewallDConfigService.removec             C   s   t jd| j|f  d S )Nz%s.Removed('%s'))r   r/   r   )r   r"   r   r   r   Removed   s    zFirewallDConfigService.Removedc             C   sF   t |t}tjd| j| | jj| | jj| j	|| _	| j
| dS )zrename service
        z%s.rename('%s')N)r   r.   r   r/   r   r   r8   r   Zrename_servicer   Renamed)r   r"   r1   r   r   r   rename   s
    
zFirewallDConfigService.renamec             C   s   t jd| j|f  d S )Nz%s.Renamed('%s'))r   r/   r   )r   r"   r   r   r   rH     s    zFirewallDConfigService.Renamedc             C   s   t jd| j | j d S )Nz%s.getVersion()r   )r   r/   r   r=   )r   r1   r   r   r   
getVersion  s    z!FirewallDConfigService.getVersionc             C   sH   t |t}tjd| j| | jj| t| j }||d< | j	| d S )Nz%s.setVersion('%s')r   )
r   r.   r   r/   r   r   r8   listr=   rB   )r   versionr1   rA   r   r   r   
setVersion  s    
z!FirewallDConfigService.setVersionc             C   s   t jd| j | j d S )Nz%s.getShort()r   )r   r/   r   r=   )r   r1   r   r   r   getShort"  s    zFirewallDConfigService.getShortc             C   sH   t |t}tjd| j| | jj| t| j }||d< | j	| d S )Nz%s.setShort('%s')r   )
r   r.   r   r/   r   r   r8   rK   r=   rB   )r   Zshortr1   rA   r   r   r   setShort)  s    
zFirewallDConfigService.setShortc             C   s   t jd| j | j d S )Nz%s.getDescription()   )r   r/   r   r=   )r   r1   r   r   r   getDescription6  s    z%FirewallDConfigService.getDescriptionc             C   sH   t |t}tjd| j| | jj| t| j }||d< | j	| d S )Nz%s.setDescription('%s')rP   )
r   r.   r   r/   r   r   r8   rK   r=   rB   )r   descriptionr1   rA   r   r   r   setDescription=  s    

z%FirewallDConfigService.setDescriptionza(ss)c             C   s   t jd| j | j d S )Nz%s.getPorts()   )r   r/   r   r=   )r   r1   r   r   r   getPortsK  s    zFirewallDConfigService.getPortsc             C   s   g }x6t |tD ](}t|tr.|jt| q|j| qW |}tjd| jdjdd |D  | j	j
| t| j }||d< | j| d S )Nz%s.setPorts('[%s]'),c             s   s"   | ]}d |d |d f V  qdS )z('%s, '%s')r   r   Nr   ).0portr   r   r   	<genexpr>_  s    z2FirewallDConfigService.setPorts.<locals>.<genexpr>rT   )r   rK   
isinstanceappendtupler   r/   r   joinr   r8   r=   rB   )r   portsr1   _portsrX   rA   r   r   r   setPortsR  s    

zFirewallDConfigService.setPortsc             C   s   t |t}t |t}tjd| j|| | jj| t| j }||f|d krbt	t
jd||f |d j||f | j| d S )Nz%s.addPort('%s', '%s')rT   z%s:%s)r   r.   r   r/   r   r   r8   rK   r=   r   r   ALREADY_ENABLEDr[   rB   )r   rX   protocolr1   rA   r   r   r   addPorte  s    

zFirewallDConfigService.addPortc             C   s   t |t}t |t}tjd| j|| | jj| t| j }||f|d krbt	t
jd||f |d j||f | j| d S )Nz%s.removePort('%s', '%s')rT   z%s:%s)r   r.   r   r/   r   r   r8   rK   r=   r   r   NOT_ENABLEDrF   rB   )r   rX   rb   r1   rA   r   r   r   
removePortu  s    

z!FirewallDConfigService.removePortbc             C   s:   t |t}t |t}tjd| j|| ||f| j d kS )Nz%s.queryPort('%s', '%s')rT   )r   r.   r   r/   r   r=   )r   rX   rb   r1   r   r   r   	queryPort  s
    

z FirewallDConfigService.queryPortasc             C   s   t jd| j | j d S )Nz%s.getProtocols()   )r   r/   r   r=   )r   r1   r   r   r   getProtocols  s    z#FirewallDConfigService.getProtocolsc             C   sN   t |t}tjd| jdj| | jj| t| j }||d< | j	| d S )Nz%s.setProtocols('[%s]')rV   ri   )
r   rK   r   r/   r   r]   r   r8   r=   rB   )r   Z	protocolsr1   rA   r   r   r   setProtocols  s    

z#FirewallDConfigService.setProtocolsc             C   sf   t |t}tjd| j| | jj| t| j }||d krJt	t
j||d j| | j| d S )Nz%s.addProtocol('%s')ri   )r   r.   r   r/   r   r   r8   rK   r=   r   r   ra   r[   rB   )r   rb   r1   rA   r   r   r   addProtocol  s    
z"FirewallDConfigService.addProtocolc             C   sf   t |t}tjd| j| | jj| t| j }||d krJt	t
j||d j| | j| d S )Nz%s.removeProtocol('%s')ri   )r   r.   r   r/   r   r   r8   rK   r=   r   r   rd   rF   rB   )r   rb   r1   rA   r   r   r   removeProtocol  s    
z%FirewallDConfigService.removeProtocolc             C   s*   t |t}tjd| j| || j d kS )Nz%s.queryProtocol(%s')ri   )r   r.   r   r/   r   r=   )r   rb   r1   r   r   r   queryProtocol  s    
z$FirewallDConfigService.queryProtocolc             C   s   t jd| j | j d S )Nz%s.getSourcePorts()   )r   r/   r   r=   )r   r1   r   r   r   getSourcePorts  s    z%FirewallDConfigService.getSourcePortsc             C   s   g }x6t |tD ](}t|tr.|jt| q|j| qW |}tjd| jdjdd |D  | j	j
| t| j }||d< | j| d S )Nz%s.setSourcePorts('[%s]')rV   c             s   s"   | ]}d |d |d f V  qdS )z('%s, '%s')r   r   Nr   )rW   rX   r   r   r   rY     s    z8FirewallDConfigService.setSourcePorts.<locals>.<genexpr>ro   )r   rK   rZ   r[   r\   r   r/   r   r]   r   r8   r=   rB   )r   r^   r1   r_   rX   rA   r   r   r   setSourcePorts  s    

z%FirewallDConfigService.setSourcePortsc             C   s   t |t}t |t}tjd| j|| | jj| t| j }||f|d krbt	t
jd||f |d j||f | j| d S )Nz%s.addSourcePort('%s', '%s')ro   z%s:%s)r   r.   r   r/   r   r   r8   rK   r=   r   r   ra   r[   rB   )r   rX   rb   r1   rA   r   r   r   addSourcePort  s    

z$FirewallDConfigService.addSourcePortc             C   s   t |t}t |t}tjd| j|| | jj| t| j }||f|d krbt	t
jd||f |d j||f | j| d S )Nz%s.removeSourcePort('%s', '%s')ro   z%s:%s)r   r.   r   r/   r   r   r8   rK   r=   r   r   rd   rF   rB   )r   rX   rb   r1   rA   r   r   r   removeSourcePort  s    

z'FirewallDConfigService.removeSourcePortc             C   s:   t |t}t |t}tjd| j|| ||f| j d kS )Nz%s.querySourcePort('%s', '%s')ro   )r   r.   r   r/   r   r=   )r   rX   rb   r1   r   r   r   querySourcePort   s
    

z&FirewallDConfigService.querySourcePortc             C   s   t jd| j | j d S )Nz%s.getModules()   )r   r/   r   r=   )r   r1   r   r   r   
getModules  s    z!FirewallDConfigService.getModulesc             C   s   t |t}g }x@|D ]8}|jdrB|jdd}d|krB|jdd}|j| qW |}tjd| jdj| | j	j
| t| j }||d< | j| d S )Nnf_conntrack_ _-z%s.setModules('[%s]')rV   ru   )r   rK   
startswithreplacer[   r   r/   r   r]   r   r8   r=   rB   )r   modulesr1   Z_modulesmodulerA   r   r   r   
setModules  s    



z!FirewallDConfigService.setModulesc             C   s   t |t}|jdr4|jdd}d|kr4|jdd}tjd| j| | jj| t	| j
 }||d krtttj||d j| | j| d S )Nrw   rx   ry   rz   z%s.addModule('%s')ru   )r   r.   r{   r|   r   r/   r   r   r8   rK   r=   r   r   ra   r[   rB   )r   r~   r1   rA   r   r   r   	addModule'  s    

z FirewallDConfigService.addModulec             C   s   t |t}|jdr4|jdd}d|kr4|jdd}tjd| j| | jj| t	| j
 }||d krtttj||d j| | j| d S )Nrw   rx   ry   rz   z%s.removeModule('%s')ru   )r   r.   r{   r|   r   r/   r   r   r8   rK   r=   r   r   rd   rF   rB   )r   r~   r1   rA   r   r   r   removeModule8  s    

z#FirewallDConfigService.removeModulec             C   sT   t |t}|jdr4|jdd}d|kr4|jdd}tjd| j| || j d kS )Nrw   rx   ry   rz   z%s.queryModule('%s')ru   )r   r.   r{   r|   r   r/   r   r=   )r   r~   r1   r   r   r   queryModuleI  s    

z"FirewallDConfigService.queryModuleza{ss}c             C   s   t jd| j | j d S )Nz%s.getDestinations()   )r   r/   r   r=   )r   r1   r   r   r   getDestinationsW  s    z&FirewallDConfigService.getDestinationsc             C   sV   t |t}tjd| j|jd|jd | jj| t| j	 }||d< | j
| d S )Nz*%s.setDestinations({ipv4:'%s', ipv6:'%s'})Zipv4Zipv6r   )r   dictr   r/   r   getr   r8   rK   r=   rB   )r   Zdestinationsr1   rA   r   r   r   setDestinations^  s    
z&FirewallDConfigService.setDestinationsc             C   sV   t |t}tjd| j| | jj| t| j }||d krJt	t
j||d | S )Nz%s.getDestination('%s')r   )r   r.   r   r/   r   r   r8   rK   r=   r   r   rd   )r   familyr1   rA   r   r   r   getDestinationk  s    

z%FirewallDConfigService.getDestinationc             C   s   t |t}t |t}tjd| j|| | jj| t| j }||d krn|d | |krnt	t
jd||f ||d |< | j| d S )Nz%s.setDestination('%s', '%s')r   z
'%s': '%s')r   r.   r   r/   r   r   r8   rK   r=   r   r   ra   rB   )r   r   addressr1   rA   r   r   r   setDestinationx  s    


z%FirewallDConfigService.setDestinationc             C   sb   t |t}tjd| j| | jj| t| j }||d krJt	t
j||d |= | j| d S )Nz%s.removeDestination('%s')r   )r   r.   r   r/   r   r   r8   rK   r=   r   r   rd   rB   )r   r   r1   rA   r   r   r   removeDestination  s    


z(FirewallDConfigService.removeDestinationc             C   sJ   t |t}t |t}tjd| j|| | j }||d koH||d | kS )Nz%s.queryDestination('%s', '%s')r   )r   r.   r   r/   r   r=   )r   r   r   r1   rA   r   r   r   queryDestination  s    


z'FirewallDConfigService.queryDestinationc             C   s<   t jd| j | jj| | jj| j}d|kr8|d S g S )Nz%s.getIncludes()includes)r   r/   r   r   r8   r   r>   r   )r   r1   rA   r   r   r   getIncludes  s    z"FirewallDConfigService.getIncludesc             C   sZ   t |t}tjd| j| | jj| d|d d  i}| jj| j	|| _	| j
| j	j d S )Nz%s.setIncludes('%s')r   )r   rK   r   r/   r   r   r8   r   rC   r   r@   r"   )r   r   r1   rA   r   r   r   setIncludes  s    
z"FirewallDConfigService.setIncludesc             C   sj   t |t}tjd| j| | jj| | jj| j	}|j
dg j| | jj| j	|| _	| j| j	j d S )Nz%s.addInclude('%s')r   )r   r.   r   r/   r   r   r8   r   r>   r   
setdefaultr[   rC   r@   r"   )r   includer1   rA   r   r   r   
addInclude  s    
z!FirewallDConfigService.addIncludec             C   sf   t |t}tjd| j| | jj| | jj| j	}|d j
| | jj| j	|| _	| j| j	j d S )Nz%s.removeInclude('%s')r   )r   r.   r   r/   r   r   r8   r   r>   r   rF   rC   r@   r"   )r   r   r1   rA   r   r   r   removeInclude  s    
z$FirewallDConfigService.removeIncludec             C   s@   t |t}tjd| j| | jj| j}d|kr<||d kS dS )Nz%s.queryInclude('%s')r   F)r   r.   r   r/   r   r   r>   r   )r   r   r1   rA   r   r   r   queryInclude  s    
z#FirewallDConfigService.queryInclude)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N__name__
__module____qualname____doc__Z
persistentr   r   ZPK_ACTION_CONFIGZdefault_polkit_auth_requiredr   r   r	   r    r!   r*   r
   ZPROPERTIES_IFACEr2   r7   slipZpolkitZrequire_authr9   r   signalr:   ZPK_ACTION_INFOZINTROSPECTABLE_IFACEr;   r   r=   r?   rB   rD   rE   r@   rF   rG   rI   rH   rJ   rM   rN   rO   rQ   rS   rU   r`   rc   re   rg   rj   rk   rl   rm   rn   rp   rq   rr   rs   rt   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   )r   r   r   /   s  		

	

		

	

		r   )Zgi.repositoryr   sysr}   r   Zdbus.serviceZ	slip.dbusr   Zslip.dbus.serviceZfirewallr   Zfirewall.dbus_utilsr   r   r   Zfirewall.core.loggerr   Zfirewall.server.decoratorsr   r	   r
   r   Zfirewall.errorsr   r   ZObjectr   r   r   r   r   <module>   s   
