???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
Pik                 @   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 rt 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	rtjj|jstd9|j  n(tjjtjd:|_tjj|jsd|_|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