Sindbad~EG File Manager
3
."�d� � @ sD d dl mZmZ d dlmZ d dlZddlmZ G dd� de�ZdS )� )�call�CalledProcessError)�mkstempN� )�ConfigGeneratorc @ s� e Zd ZdZdddhZdZddddddd d
ddd
d�Zdddddddd�Zdddddddddddddd�
Zddddddddddddd�Z ddddd �Z
ddddd!�Zed"d#� �Z
ed$d%� �Zed&d'� �Zed(d)� �Zd*S )+�LibreswanGeneratorZ libreswanZipsecZikez5systemctl try-restart ipsec.service 2>/dev/null || :
� Zdh19Zdh20Zdh21Zdh5Zdh14Zdh15Zdh16Zdh18)ZX448ZX25519Z SECP256R1Z SECP384R1Z SECP521R1z
FFDHE-6144z
FFDHE-1536z
FFDHE-2048z
FFDHE-3072z
FFDHE-4096z
FFDHE-8192Zaes256Zaes192Zaes128Z
aes_gcm256Z
aes_gcm192Z
aes_gcm128Zchacha20_poly1305)zAES-256-CBCzAES-192-CBCzAES-128-CBCzAES-256-GCMzAES-192-GCMzAES-128-GCMzCHACHA20-POLY1305Zsha2_512Zsha2_256)
zAES-256-CBC-HMAC-SHA2-512zAES-256-CBC-HMAC-SHA2-256zAES-192-CBC-HMAC-SHA2-512zAES-192-CBC-HMAC-SHA2-256zAES-128-CBC-HMAC-SHA2-256zAES-256-GCM-HMAC-SHA2-512zAES-256-GCM-HMAC-SHA2-256zAES-192-GCM-HMAC-SHA2-512zAES-192-GCM-HMAC-SHA2-256zAES-128-GCM-HMAC-SHA2-512zAES-128-GCM-HMAC-SHA2-256zCHACHA20-POLY1305-HMAC-SHA2-512zCHACHA20-POLY1305-HMAC-SHA2-256Zsha1)zAES-256-CBC-HMAC-SHA2-512zAES-192-CBC-HMAC-SHA2-512zAES-256-CBC-HMAC-SHA2-256zAES-192-CBC-HMAC-SHA2-256zAES-128-CBC-HMAC-SHA2-256zAES-256-CBC-HMAC-SHA1zAES-192-CBC-HMAC-SHA1zAES-128-CBC-HMAC-SHA1zAES-256-GCM-AEADzAES-192-GCM-AEADzAES-128-GCM-AEADzCHACHA20-POLY1305-AEADr r � � )�AEADz
HMAC-SHA2-512z
HMAC-SHA2-256z HMAC-SHA1)r z
HMAC-SHA2-512z HMAC-SHA1z
HMAC-SHA2-256c C s || j krdS | j | S )N�c )�mac_ike_prio_map)�cls�key� r �@./usr/share/crypto-policies/python/policygenerators/libreswan.pyZ__get_ike_priob s
z!LibreswanGenerator.__get_ike_prioc C s || j krdS | j | S )Nr )�mac_esp_prio_map)r r r r r Z__get_esp_prioh s
z!LibreswanGenerator.__get_esp_prioc C s� d}d}|j }d}|d }d|kr(d}nd|kr4d}|rH|d | d
7 }|d7 }t|d | jd
�}d}�x|d D ]�} y| j| }
W n tk
r� wrY nX |
d }d}xH|D ]@}y| j| d | }
W n tk
r� w�Y nX | j||
d�}q�W |s�qr||7 }d}xJ|d D ]>}y| j| }W n tk
�r: �wY nX | j||d�}�qW | j||d�}| j|||�}qrW |�r�|d| d
7 }t|d | jd
�}d}x�|d D ]�} y| j| }
W n tk
�r� �w�Y nX |
d }d}xZ|D ]R}y| j | d | }
W n tk
�r �w�Y nX |
�s(|
}P | j||
d�}�q�W ||7 }|dd � dk�rZ�q�| j|||�}�q�W |�r�|d| d
7 }|S )Nzconn %default
�,r ZprotocolZIKEv2zikev2=insistZIKEv1zikev2=never� �
z pfs=yes
�mac)r �cipher�-�+�groupz ike=r z esp=���)
Zenabled�sorted�!_LibreswanGenerator__get_ike_prio�
cipher_map�KeyError�cipher_prf_map�append� group_map�!_LibreswanGenerator__get_esp_prio�cipher_mac_map)r ZpolicyZcfg�sep�p�s�protoZsorted_macsZtmpr �cmZcombor Zmm�ir r r r �generate_confign s�
z"LibreswanGenerator.generate_configc C s� t jdt j�sdS t� \}}d}z^t j|d��}|j|� W d Q R X ytd| d dd�}W n tk
rz | jd� Y nX W d t j |� X |r�| jd � | jd
| � dS dS )Nz/usr/sbin/ipsecT� �wz'/usr/sbin/ipsec readwriteconf --config z >/dev/null)�shellz!/usr/sbin/ipsec: Execution failedz/There is an error in libreswan generated policyz
Policy:
%sF)
�os�access�X_OKr �fdopen�writer r Zeprint�unlink)r �config�fd�pathZret�fr r r �test_config� s&