3 گaI @ s" d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm Z ddlm Z ddlmZ dd lmZ dd lm Z ddlZddlmZ ddlmZ dd lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ejeZejddddZejddddZ ejddddZ!ejddddZ"eje#e ej$ dddZ%eje#e e e# ddd Z&eje e# ee ej$ e ej$ f d!d"d#Z'ej$e#e e e# d$d%d&Z(e e eej$ge#f eej$ge e e# f f d'd(d)Z)eje#d*d+d,Z*ejee eej$ge#f eej$ge e e# f f eej$ge#f eej$ge#f e e# d-d.d/Z+dEejej$e,e e# d1d2d3Z-dFeje#e,e e# e e# d4d5d6Z.ee# e#d7d8d9Z/ejeej$ e#d:d;d<Z0ejeej$ ee# dd=d>d?Z1ed@Z2ejedAe2f e2ee2dBdCdDZ3dS )Gz Tools for managing certificates. N)Any)Callable)Iterable)List)Optional)Tuple)TypeVar)Union) configuration)crypto_util)errors)ocsp)util)storage)os)configreturnc C s( x"t j| D ]}t j|| dd qW dS )aj Update the certificate file family symlinks to use archive_dir. Use the information in the config file to make symlinks point to the correct archive directory. .. note:: This assumes that the installation is using a Reverter object. :param config: Configuration. :type config: :class:`certbot._internal.configuration.NamespaceConfig` T)Zupdate_symlinksN)r renewal_conf_files RenewableCert)r renewal_file r "/usr/lib/python3.6/cert_manager.pyupdate_live_symlinks! s r c C s t | dd }| j}|sJtjdj|dd\}}|tjks@| rJtjdt| |}|shtj dj|t j||| tjdj||d d dS )zRename the specified lineage to the new name. :param config: Configuration. :type config: :class:`certbot._internal.configuration.NamespaceConfig` renamer z&Enter the new name for certificate {0}T)force_interactivezUser ended interaction.z,No existing certificate with name {0} found.z Successfully renamed {0} to {1}.F)pauseN) get_certnamesnew_certnamedisplay_utilZ input_textformatOKr Errorlineage_for_certnameZConfigurationErrorr Zrename_renewal_confignotification)r certnamer codelineager r r rename_lineage1 s r' c C s g }g }xt j| D ]t}y$t j|| }tj| |j| W q tk r } z.tjd|| tj dt j |j| W Y dd}~X qX qW t| || dS )zDisplay information about certs configured with Certbot :param config: Configuration. :type config: :class:`certbot._internal.configuration.NamespaceConfig` zIRenewal configuration file %s produced an unexpected error: %s. Skipping.zTraceback was: %sN) r r r r Zverify_renewable_certappend ExceptionloggerZwarningdebug traceback format_exc_describe_certs)r parsed_certsparse_failuresr Zrenewal_candidateer r r certificatesK s r2 c C s t | ddd}dg}x|D ]}|jd| qW |jd |jd tjdj|dd sftjd dS x(|D ] }tj| | tj dj | qlW dS ) z;Delete Certbot files associated with a certificate lineage.deleteT)allow_multiplez8The following certificate(s) are selected for deletion: z * aP WARNING: Before continuing, ensure that the listed certificates are not being used by any installed server software (e.g. Apache, nginx, mail servers). Deleting a certificate that is still being used will cause the server software to stop working. See https://certbot.org/deleting-certs for information on deleting certificates safely.z: Are you sure you want to delete the above certificate(s)? )defaultz$Deletion of certificate(s) canceled.Nz.Deleted all files relating to certificate {0}.)r r( r Zyesnojoinr* infor Zdelete_filesnotifyr )r certnamesmsgr$ r r r r3 b s r3 ) cli_configr$ r c C s | j }tj|dd ytj| |}W n tjk r: dS X ytj|| S tjtfk r~ t j d| t j dtj dS X dS )z)Find a lineage object with name certname.i )modeNzRenewal conf file %s is broken.zTraceback was: %s) renewal_configs_dirr make_or_verify_dirr Zrenewal_file_for_certnamer CertStorageErrorr IOErrorr* r+ r, r- )r<