<!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jzI                 @   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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)IPSet)IPSET_TYPESnormalize_ipset_entrycheck_entry_overlaps_existingcheck_for_overlapping_entries)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dWddZeejdddedXddZejjjejjeejddedYd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dZ fdd	Zeejjejded[d d!Z eejjejded\d"d#Z!eejjed]d$d%Z"ejjejjdded&d' Z#eejjed^d(d)Z$ejjejjdded*d+ Z%eejjdded_d,d-Z&ejjejjdded.d/ Z'eejjdded`d0d1Z(eejjddedad2d3Z)eejjddedbd4d5Z*eejjddedcd6d7Z+eejjddeddd8d9Z,eejjddeded:d;Z-eejjddedfd<d=Z.eejjddedgd>d?Z/eejjd@dedhdAdBZ0eejjd@dedidCdDZ1eejjddedjdEdFZ2eejjddedkdGdHZ3eejjddIdedldJdKZ4eejjdLdedmdMdNZ5eejjdLdedndOdPZ6eejjddedodQdRZ7eejjddedpdSdTZ8eejjddIdedqdUdVZ9  Z:S )rFirewallDConfigIPSetzFirewallD main classTc                s\   t t| j|| || _|| _|| _|| _|d | _|d | _d| j | _	t
| tjj d S )Nr      zconfig.ipset.%d)superr   __init__parentr   objitem_idbusnamepath_log_prefixr   dbusDBUS_INTERFACE_CONFIG_IPSET)selfr   ZconfZipsetr   argskwargs)	__class__ "/usr/lib/python3.6/config_ipset.pyr   ;   s    

zFirewallDConfigIPSet.__init__c             C   s   d S )Nr"   )r   r"   r"   r#   __del__H   s    zFirewallDConfigIPSet.__del__c             C   s   | j   d S )N)Zremove_from_connection)r   r"   r"   r#   
unregisterL   s    zFirewallDConfigIPSet.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_propertyT   s    z"FirewallDConfigIPSet._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#   Gete   s    


zFirewallDConfigIPSet.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   r2   r   r3   r   r   r   r   r+   r,   r.   Z
Dictionary)r   r4   r5   retxr"   r"   r#   GetAllv   s    

zFirewallDConfigIPSet.GetAllZssv)r0   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   r2   r   r3   r   r   accessCheckr   r   r   r+   r,   )r   r4   r-   Z	new_valuer5   r"   r"   r#   Set   s    



zFirewallDConfigIPSet.Setzsa{sv}as)r8   c             C   s2   t |t}t |}t |}tjd| j||| d S )Nz&%s.PropertiesChanged('%s', '%s', '%s'))r   r2   r   r3   r   )r   r4   Zchanged_propertiesZinvalidated_propertiesr"   r"   r#   PropertiesChanged   s
    

z&FirewallDConfigIPSet.PropertiesChanged)r1   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   r5   data)r!   r"   r#   r?      s
    
zFirewallDConfigIPSet.Introspectc             C   s   t jd| j | jj| jS )zget settings for ipset
        z%s.getSettings())r   r3   r   r   Zget_ipset_configr   )r   r5   r"   r"   r#   getSettings   s    z FirewallDConfigIPSet.getSettingsc             C   sF   t |}tjd| j | jj| | jj| j|| _| j	| jj
 dS )z"update settings for ipset
        z%s.update('...')N)r   r   r3   r   r   r<   r   Zset_ipset_configr   Updatedr&   )r   settingsr5   r"   r"   r#   update   s
    zFirewallDConfigIPSet.updatec             C   s<   t jd| j | jj| | jj| j| _| j| jj	 dS )z0load default settings for builtin ipset
        z%s.loadDefaults()N)
r   r3   r   r   r<   r   Zload_ipset_defaultsr   rB   r&   )r   r5   r"   r"   r#   loadDefaults   s    z!FirewallDConfigIPSet.loadDefaultsc             C   s   t jd| j|f  d S )Nz%s.Updated('%s'))r   r3   r   )r   r&   r"   r"   r#   rB      s    zFirewallDConfigIPSet.Updatedc             C   s:   t jd| j | jj| | jj| j | jj| j dS )zremove ipset
        z%s.remove()N)	r   r3   r   r   r<   r   Zremove_ipsetr   ZremoveIPSet)r   r5   r"   r"   r#   remove   s    zFirewallDConfigIPSet.removec             C   s   t jd| j|f  d S )Nz%s.Removed('%s'))r   r3   r   )r   r&   r"   r"   r#   Removed   s    zFirewallDConfigIPSet.Removedc             C   sF   t |t}tjd| j| | jj| | jj| j	|| _	| j
| dS )zrename ipset
        z%s.rename('%s')N)r   r2   r   r3   r   r   r<   r   Zrename_ipsetr   Renamed)r   r&   r5   r"   r"   r#   rename   s
    
zFirewallDConfigIPSet.renamec             C   s   t jd| j|f  d S )Nz%s.Renamed('%s'))r   r3   r   )r   r&   r"   r"   r#   rH      s    zFirewallDConfigIPSet.Renamedc             C   s   t jd| j | j d S )Nz%s.getVersion()r   )r   r3   r   rA   )r   r5   r"   r"   r#   
getVersion   s    zFirewallDConfigIPSet.getVersionc             C   sH   t |t}tjd| j| | jj| t| j }||d< | j	| d S )Nz%s.setVersion('%s')r   )
r   r2   r   r3   r   r   r<   listrA   rD   )r   versionr5   rC   r"   r"   r#   
setVersion  s    
zFirewallDConfigIPSet.setVersionc             C   s   t jd| j | j d S )Nz%s.getShort()r   )r   r3   r   rA   )r   r5   r"   r"   r#   getShort  s    zFirewallDConfigIPSet.getShortc             C   sH   t |t}tjd| j| | jj| t| j }||d< | j	| d S )Nz%s.setShort('%s')r   )
r   r2   r   r3   r   r   r<   rK   rA   rD   )r   Zshortr5   rC   r"   r"   r#   setShort  s    
zFirewallDConfigIPSet.setShortc             C   s   t jd| j | j d S )Nz%s.getDescription()   )r   r3   r   rA   )r   r5   r"   r"   r#   getDescription(  s    z#FirewallDConfigIPSet.getDescriptionc             C   sH   t |t}tjd| j| | jj| t| j }||d< | j	| d S )Nz%s.setDescription('%s')rP   )
r   r2   r   r3   r   r   r<   rK   rA   rD   )r   descriptionr5   rC   r"   r"   r#   setDescription/  s    

z#FirewallDConfigIPSet.setDescriptionc             C   s   t jd| j | j d S )Nz%s.getType()   )r   r3   r   rA   )r   r5   r"   r"   r#   getType=  s    zFirewallDConfigIPSet.getTypec             C   s\   t |t}tjd| j| | jj| |tkr:tt	j
|t| j }||d< | j| d S )Nz%s.setType('%s')rT   )r   r2   r   r3   r   r   r<   r   r   r   ZINVALID_TYPErK   rA   rD   )r   Z
ipset_typer5   rC   r"   r"   r#   setTypeD  s    
zFirewallDConfigIPSet.setTypeza{ss}c             C   s   t jd| j | j d S )Nz%s.getOptions()   )r   r3   r   rA   )r   r5   r"   r"   r#   
getOptionsS  s    zFirewallDConfigIPSet.getOptionsc             C   sL   t |t}tjd| jt| | jj| t| j	 }||d< | j
| d S )Nz%s.setOptions('[%s]')rW   )r   dictr   r3   r   reprr   r<   rK   rA   rD   )r   Zoptionsr5   rC   r"   r"   r#   
setOptionsZ  s    


zFirewallDConfigIPSet.setOptionsc             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.addOption('%s', '%s')rW   z
'%s': '%s')r   r2   r   r3   r   r   r<   rK   rA   r   r   ALREADY_ENABLEDrD   )r   keyvaluer5   rC   r"   r"   r#   	addOptionf  s    

zFirewallDConfigIPSet.addOptionc             C   sb   t |t}tjd| j| | jj| t| j }||d krJt	t
j||d |= | j| d S )Nz%s.removeOption('%s')rW   )r   r2   r   r3   r   r   r<   rK   rA   r   r   NOT_ENABLEDrD   )r   r]   r5   rC   r"   r"   r#   removeOptionu  s    

z!FirewallDConfigIPSet.removeOptionbc             C   sN   t |t}t |t}tjd| j|| t| j }||d koL|d | |kS )Nz%s.queryOption('%s', '%s')rW   )r   r2   r   r3   r   rK   rA   )r   r]   r^   r5   rC   r"   r"   r#   queryOption  s    

z FirewallDConfigIPSet.queryOptionasc             C   s   t jd| j | j d S )Nz%s.getEntries()   )r   r3   r   rA   )r   r5   r"   r"   r#   
getEntries  s    zFirewallDConfigIPSet.getEntriesc             C   s|   t |t}t| tjd| jdj| | jj| t| j	 }d|d krf|d d dkrft
tj||d< | j| d S )Nz%s.setEntries('[%s]'),timeoutrW   0re   )r   rK   r   r   r3   r   joinr   r<   rA   r   r   IPSET_WITH_TIMEOUTrD   )r   Zentriesr5   rC   r"   r"   r#   
setEntries  s    


zFirewallDConfigIPSet.setEntriesc             C   s   t |t}t|}tjd| j| | jj| t| j	 }d|d kr`|d d dkr`t
tj||d krxt
tj|t||d  |d j| | j| d S )Nz%s.addEntry('%s')rh   rW   ri   re   )r   r2   r	   r   r3   r   r   r<   rK   rA   r   r   rk   r\   r
   appendrD   )r   entryr5   rC   r"   r"   r#   addEntry  s    

zFirewallDConfigIPSet.addEntryc             C   s   t |t}t|}tjd| j| | jj| t| j	 }d|d kr`|d d dkr`t
tj||d krxt
tj||d j| | j| d S )Nz%s.removeEntry('%s')rh   rW   ri   re   )r   r2   r	   r   r3   r   r   r<   rK   rA   r   r   rk   r`   rF   rD   )r   rn   r5   rC   r"   r"   r#   removeEntry  s    

z FirewallDConfigIPSet.removeEntryc             C   s`   t |t}t|}tjd| j| t| j }d|d krT|d d dkrTtt	j
||d kS )Nz%s.queryEntry('%s')rh   rW   ri   re   )r   r2   r	   r   r3   r   rK   rA   r   r   rk   )r   rn   r5   rC   r"   r"   r#   
queryEntry  s    

zFirewallDConfigIPSet.queryEntry)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_IFACEr6   r;   slipZpolkitZrequire_authr=   servicesignalr>   ZPK_ACTION_INFOZINTROSPECTABLE_IFACEr?   r   r   ZDBUS_SIGNATURErA   rD   rE   rB   rF   rG   rI   rH   rJ   rM   rN   rO   rQ   rS   rU   rV   rX   r[   r_   ra   rc   rf   rl   ro   rp   rq   __classcell__r"   r"   )r!   r#   r   3   s   		




	

r   )"Zgi.repositoryr   sysmodulesr   Zdbus.serviceZ	slip.dbusrv   Zslip.dbus.serviceZfirewallr   Zfirewall.dbus_utilsr   r   r   Zfirewall.core.io.ipsetr   Zfirewall.core.ipsetr   r	   r
   r   Zfirewall.core.loggerr   Zfirewall.server.decoratorsr   r   r   r   Zfirewall.errorsr   rw   ZObjectr   r"   r"   r"   r#   <module>   s   
