�
���_c @@ sD d Z d d l m Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m
Z
d d l m Z m
Z
y d d l m Z e Z Wn e k
r� e Z n Xe j e � Z e r� d d d
g n g Z d � Z d � Z i d
d 6d d 6d d 6Z i d d 6d d 6d d 6Z d � Z d � Z d d � Z d S( sk
This compat module handles various platform specific calls that do not fall into one
particular category.
i ( t absolute_importN( t errors( t os( t Tuplet Optional( t shells /usr/sbins /usr/local/bins /usr/local/sbinc C@ s/ t r+ t j � d k r+ t j d � � n d S( s�
On Windows, raise if current shell does not have the administrative rights.
Do nothing on Linux.
:raises .errors.Error: If the current shell does not have administrative rights on Windows.
i sA Error, certbot must be run on a shell with administrative rights.N( t
POSIX_MODEt
shellwin32t
IsUserAnAdminR t Error( ( ( s7 /usr/lib/python2.7/site-packages/certbot/compat/misc.pyt+ raise_for_non_administrative_windows_rights s c C@ s| yZ t j t j g g g | � \ } } } | sK t j d j | � � � n | d j � SWn t k
rw t j j � SXd S( s(
Read user input to return the first line entered, or raise after specified timeout.
:param float timeout: The timeout in seconds given to the user.
:param str prompt: The prompt message to display to the user.
:returns: The first line entered by the user.
:rtype: str
s, Timed out waiting for answer to prompt '{0}'i N( t selectt syst stdinR R t formatt readlinet OSError( t timeoutt promptt rlistt _( ( s7 /usr/lib/python2.7/site-packages/certbot/compat/misc.pyt readline_with_timeout* s '
s
C:\Certbott configs C:\Certbot\libt works C:\Certbot\logt logss /etc/letsencrypts /var/lib/letsencrypts /var/log/letsencryptc C@ s t j d k r t | St | S( s�
Return the relevant default folder for the current OS
:param str folder_type: The type of folder to retrieve (config, work or logs)
:returns: The relevant default folder.
:rtype: str
t nt( R t namet LINUX_DEFAULT_FOLDERSt WINDOWS_DEFAULT_FOLDERS( t folder_type( ( s7 /usr/lib/python2.7/site-packages/certbot/compat/misc.pyt get_default_folderT s c C@ s? t j d k r | St j j | � \ } } | | j d d � S( s�
Replace unsupported characters in path for current OS by underscores.
:param str path: the path to normalize
:return: the normalized path
:rtype: str
R t :R ( R R t patht
splitdrivet replace( R t drivet tail( ( s7 /usr/lib/python2.7/site-packages/certbot/compat/misc.pyt. underscores_for_unsupported_characters_in_pathf s c C@ s2 t j d | | � t rO t j | d t d t j d t j d t d | �} n<