a
    if
                     @   sD   d dl Z d dlmZmZ d dlmZ ddlmZ G dd deZdS )    N)CalledProcessErrorcheck_output)mkstemp   )ConfigGeneratorc                
   @   sZ   e Zd ZdZddhZdZdddddd	d
ddd	ZdddddZedd Z	edd Z
dS )BindGeneratorZbindZdnssecz>systemctl try-reload-or-restart bind.service 2>/dev/null || :
)ZDSAZNSEC3DSA)ZRSASHA1ZNSEC3RSASHA1)Z	RSASHA256)Z	RSASHA512)ZECCGOST)ZECDSAP256SHA256)ZECDSAP384SHA384)ZED25519)ZED448)	zDSA-SHA1zRSA-SHA1zRSA-SHA2-256zRSA-SHA2-512ZGOSTR341001ECDSA-SHA2-256ECDSA-SHA2-384zEDDSA-ED25519zEDDSA-ED448zSHA-1zSHA-256zSHA-384ZGOST)ZSHA1zSHA2-256zSHA2-384ZGOSTR94c              	   C   s   |j }d}|d7 }|d7 }|d D ]:}z"| j| D ]}|| d7 }q2W q" tyZ   Y q"0 q"d|d vr~d|d v r~|d	7 }d
|d vrd|d v r|d7 }|d7 }|d7 }|d D ]0}z|| j|  d7 }W q ty   Y q0 q|d7 }|S )N zdisable-algorithms "." {
zRSAMD5;
signz;
r   Z	SECP256R1groupzECDSAP256SHA256;
r	   Z	SECP384R1zECDSAP384SHA384;
z};
zdisable-ds-digests "." {
hash)Zdisabledsign_not_mapKeyErrorhash_not_map)clsZpolicyZipsiZdisabled_sign r   :/usr/share/crypto-policies/python/policygenerators/bind.pygenerate_config'   s.    zBindGenerator.generate_configc              	   C   s   t  \}}zt|d.}|d || |d W d    n1 sL0    Y  ztd|g}W nJ ty   | d | d|  Y W t| dS  ty   Y n0 W t| nt| 0 dS )	Nwz
options {
z
};
z/usr/sbin/named-checkconfz*There is an error in bind generated policyzPolicy:
FT)	r   osfdopenwriter   r   ZeprintunlinkOSError)r   Zconfigfdpathf_r   r   r   test_configD   s$    


(

zBindGenerator.test_configN)__name__
__module____qualname__ZCONFIG_NAMEZSCOPESZ
RELOAD_CMDr   r   classmethodr   r!   r   r   r   r   r      s,   
r   )	r   
subprocessr   r   Ztempfiler   Zconfiggeneratorr   r   r   r   r   r   <module>   s   