a Ch @sDddlZddlmZmZddlmZddlmZGdddeZdS)N)CalledProcessError check_output)mkstemp)ConfigGeneratorc @sZeZdZdZddhZdZdddddd d d d d ZdddddZeddZ eddZ dS) BindGeneratorZbindZdnssecz>systemctl try-reload-or-restart bind.service 2>/dev/null || : )ZDSAZNSEC3DSA)ZRSASHA1Z NSEC3RSASHA1)Z RSASHA256)Z RSASHA512)ZECCGOST)ZECDSAP256SHA256)ZECDSAP384SHA384)ZED25519)ZED448) zDSA-SHA1zRSA-SHA1z RSA-SHA2-256z RSA-SHA2-512Z GOSTR341001ECDSA-SHA2-256ECDSA-SHA2-384z EDDSA-ED25519z EDDSA-ED448zSHA-1zSHA-256zSHA-384ZGOST)ZSHA1zSHA2-256zSHA2-384ZGOSTR94c Cs|j}d}|d7}|d7}|dD]:}z"|j|D]}||d7}q2Wq"tyZYq"0q"d|dvr~d|dvr~|d 7}d |dvrd |dvr|d 7}|d 7}|d7}|dD]0}z||j|d7}WqtyYq0q|d 7}|S)Nzdisable-algorithms "." { zRSAMD5; signz; rZ SECP256R1groupzECDSAP256SHA256; r Z SECP384R1zECDSAP384SHA384; z}; zdisable-ds-digests "." { hash)Zdisabled sign_not_mapKeyError hash_not_map)clsZpolicyipsiZ disabled_signr:/usr/share/crypto-policies/python/policygenerators/bind.pygenerate_config's.    zBindGenerator.generate_configc Cst\}}zt|d.}|d|||dWdn1sL0Yztd|g}WnJty|d|d|YWt|dStyYn0Wt|n t|0dS) Nwz options { z }; z/usr/sbin/named-checkconfz*There is an error in bind generated policyzPolicy: FT) rosfdopenwriterrZeprintunlinkOSError)rZconfigfdpathf_rrr test_configDs$   (    zBindGenerator.test_configN) __name__ __module__ __qualname__Z CONFIG_NAMEZSCOPESZ RELOAD_CMDrr classmethodrr"rrrrr s,  r) r subprocessrrZtempfilerZconfiggeneratorrrrrrrs