509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
r­Çjk  ã               @   s¢   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ dZd dlmZmZmZmZmZmZ dd„ Zddd	„Zd
d„ Zdd„ ZdS )é    )Úprint_functionN)Údefaultdictzdnssec-keymgr)ÚdnskeyÚkeydictÚ	keyseriesÚpolicyÚparsetabÚutilsc              O   s   t | |Ž tjdƒ d S )Né   )ÚprintÚsysÚexit)ÚargsÚkwargs© r   ú/usr/lib/python3.6/keymgr.pyÚfatal   s    
r   c             C   s†   |}| s(t jj|ƒ s(t j|t jƒ r‚t jd }|s>t jj}xB|jt jƒD ]2}|t j	 |  }t jj|ƒrzt j|t jƒrzP d}qLW |S )a2   find the location of a specified command. If a default is supplied,
    exists and it's an executable, we use it; otherwise we search PATH
    for an alternative.
    :param command: command to look for
    :param default: default value to use
    :return: PATH with the location of a suitable binary
    ÚPATHN)
ÚosÚpathÚisfileÚaccessÚX_OKÚenvironÚdefpathÚsplitÚpathsepÚsep)ZcommandÚdefaultZfpathr   Z	directoryr   r   r   Úset_path   s    $
r   c              C   sÊ  t dtjjtjdƒdƒƒ} t dtjjtjdƒdƒƒ}tjtd d�}|j	dt
ddd;d� |j	ddt
ddd� |j	ddt
ddd� |j	dd| t
ddd� |j	ddt
dddd� |j	dd|t
ddd� |j	d d!d"d#d$d%� |j	d&d'd"d#d(d%� |j	d)d*d+d"d#d<d%� |j	d.d/d0d"d#d1d%� |j	d2d3d4tjd5� |jƒ }|j�rJ|j�rJtd6ƒ |jdk�r^td7ƒ |jdk�rrtd8ƒ |jdk	�ržtjj|jƒ�sÆtd9|j ƒ n(tjjtjd:ƒ|_tjj|jƒ�sÆd|_|S )=zc Read command line arguments, returns 'args' object
    :return: args object properly prepared
    zdnssec-keygenZsbinzdnssec-settimezA: schedule DNSSEC key rollovers according to a pre-defined policy)ÚdescriptionÚzoneÚ*Nz.Zone(s) to which the policy should be applied z%(default: all zones in the directory))ÚtypeÚnargsr   Úhelpz-Kr   zDirectory containing keysÚdir)Údestr#   r%   Úmetavarz-cÚ
policyfilezPolicy definition fileÚfilez-gÚkeygenzPath to 'dnssec-keygen')r'   r   r#   r%   r(   z-rÚ	randomdevz@Path to a file containing random data to pass to 'dnssec-keygen')r'   r#   r   r%   r(   z-sÚsettimezPath to 'dnssec-settime'z-kÚno_zskÚ
store_trueFz,Only apply policy to key-signing keys (KSKs))r'   Úactionr   r%   z-zÚno_kskz-Only apply policy to zone-signing keys (ZSKs)z-fz--forceÚforcezForce updates to key events zeven if they are in the pastz-qz--quietÚquietzUpdate keys silentlyz-vz	--versionÚversion)r0   r4   z)ERROR: -z and -k cannot be used together.zERROR: dnssec-keygen not foundzERROR: dnssec-settime not foundz!ERROR: Policy file "%s" not foundzdnssec-policy.confzSZone(s) to which the policy should be applied (default: all zones in the directory)z8Force updates to key events even if they are in the past)r   r   r   Újoinr	   ÚprefixÚargparseÚArgumentParserÚprogÚadd_argumentÚstrr4   Ú
parse_argsr.   r1   r   r+   r-   r)   ÚexistsZ
sysconfdir)r+   r-   Úparserr   r   r   r   r<   6   sb     







r<   c           :   C   sH  t ƒ } | j| j| j| jdœ}ytj| jƒ}W n2 tk
r^ } zt	dt
|ƒ ƒ W Y d d }~X nX yt|| j| jd�}W n2 tk
r¨ } zt	dt
|ƒ ƒ W Y d d }~X nX yt||d�}W n2 tk
rì } zt	dt
|ƒ ƒ W Y d d }~X nX y |j|| j| j| j| jd� W n4 tk
�rB } zt	dt
|ƒ ƒ W Y d d }~X nX d S )	N)Zkeygen_pathZsettime_pathZ	keys_pathr,   zUnable to load DNSSEC policy: )r   Zzonesz Unable to build key dictionary: )ÚcontextzUnable to build key series: )ZkskZzskr2   r3   zUnable to apply policy: )r<   r+   r-   r   r,   r   Zdnssec_policyr)   Ú	Exceptionr   r;   r   r!   r   Zenforce_policyr.   r1   r2   r3   )r   r?   ZdpÚeZkdZksr   r   r   Úmain}   s,    
"""rB   )N)Z
__future__r   r   r   r7   ZglobÚreZtimeZcalendarÚpprintÚcollectionsr   r9   Ziscr   r   r   r   r   r	   r   r   r<   rB   r   r   r   r   Ú<module>   s   @ 
G