HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //proc/thread-self/root/lib/python3.6/site-packages/S3/__pycache__/Utils.cpython-36.pyc
3

�9pe+�@s�ddlmZmZddlZddlZddlZddlZddlZddl	Z	ddl
mZyeWne
k
rleZYnXddlZddlZddlmZmZmZmZmZgZd<dd�Zejd�dd	�Zejd	�ejejZee�Z d
d�Z!ejd�dd
�Z"ejd
�ej#dd�ddfdd�Z$ejd�ej#dd�ddfdd�Z%ejd�dd�Z&ejd�d=dd�Z'ejd�d>dd�Z(ejd�d?dd �Z)ejd �d@d!d"�Z*ejd"�dAd#d$�Z+ejd$�dBd%d&�Z,ejd&�d'd(�Z-ejd(�d)d*�Z.dCd,d-�Z/ejd-�d.d/�Z0ejd/�d0d1�Z1ejd1�d2d3�Z2ejd3�d4d5�Z3ejd5�yddl4Z4d6d7�Z5Wn&e6k
�r~ddl7Z7d8d7�Z5YnXejd7�yddl8Z8d9d:�Z9Wne6k
�r�d;d:�Z9YnXejd:�dS)D�)�absolute_import�divisionN)�debug)�base_urlencode_string�base_replace_nonprintables�base_unicodise�base_deunicodise�md5FcCsl|rt|�pt|�}|r`ddddg}d}x|dkrF|d}|jd�}q*W|rTt|�pZt|�|fS|dfSdS)	N�K�M�G�T�iir)�float�int�pop)�sizeZhuman_readableZfloating_pointZcoeffsZcoeff�r�/usr/lib/python3.6/Utils.py�
formatSize*s
rcCs*i}x |D]}|d||dj�<q
W|S)zL
    Header keys are always in lowercase in python2 but not in python3.
    �r)�lower)�list�retval�tuplerrr�convertHeaderTupleListToDict8s
rcCs6d}x,|dkr0|ttjdtd�7}|d8}qW|S)Nrrr)�
_rnd_chars�randomZrandint�_rnd_chars_len)�lenrrrr�rndstrDs

r cCs�tjd�}d}xj|dkrx|t|�}y||�PWn:tk
rl}z|jtjkr\tj|��WYdd}~XnX|d8}qWtj|�|S)N�?�rr)�os�umaskr �OSError�errnoZEEXIST)�prefix�	randchars�
createfuncZ	old_umaskZtries�dirname�errr�mktmpsomethingMs



r,ZTMPz/tmpz/tmpdir-�
cCst||tj�S)N)r,r#�mkdir)r'r(rrr�mktmpdir`sr/z	/tmpfile-�cCsdd�}t|||�S)NcSstjtjt|�tjtjB��S)N)r#�close�open�deunicodise�O_CREAT�O_EXCL)�filenamerrr�<lambda>fszmktmpfile.<locals>.<lambda>)r,)r'r(r)rrr�	mktmpfileesr8cCs�|jtj�}g}x0|r@tjjttjj|���r@|j|j��qWx�|r�|j|j��tjj|�}yt	d|�tj
t|��WqDttfk
r�}zt	d||j
f�dSd}~XqDtk
r�}zt	d||f�dSd}~XqDXqDWdS)z�
    mkdir_with_parents(dst_dir)

    Create directory 'dir_name' with all parent directories

    Returns True on success, False otherwise.
    z	mkdir(%s)z(Can not make directory '%s' (Reason: %s)FNT)�splitr#�sep�path�isdirr3�join�appendrrr.r%�IOError�strerror�	Exception)Zdir_nameZpathmembersZ	tmp_stackZcur_dirr+rrr�mkdir_with_parentsks" rB�replacecCs|stjj�j}t||||�S)N)�S3�Config�encodingr)�stringrF�errors�silentrrr�	unicodise�srJcCst|||d�S)z.
    Alias to silent version of unicodise
    T)rJ)rGrFrHrrr�unicodise_s�srKcCs|stjj�j}t||||�S)N)rDrErFr)rGrFrHrIrrrr3�sr3cCst|||d�S)z0
    Alias to silent version of deunicodise
    T)r3)rGrFrHrrr�
deunicodise_s�srLcCstt||�|�jdd�S)zs
    Convert 'string' to Unicode according to current encoding
    and replace all invalid characters with '?'
    u��?)rJr3rC)rGrFrrr�unicodise_safe�srNcCs |dkrtjj�j}t|||�S)N)rDrE�urlencoding_moder)rGrOZunicode_outputrrr�urlencode_string�srPcCstjj�jdk}t||�S)z�
    replace_nonprintables(string)

    Replaces all non-printable characters 'ch' in 'string'
    where ord(ch) <= 26 with ^@, ^A, ... ^Z
    Z	fixbucket)rDrErOr)rGZwarning_messagerrr�replace_nonprintables�srQcCst|t�r|St|t�s$t|tj�r2ttj|��St|d�rNttj|j���St|d�rft|jd��St|t	�s�t|t
�s�t|t��ry*|jd�r�tj�t|dd��St|�St
k
�ry
tj|�St
k
�r�}ztd|�WYdd}~XnXYnXtjjd|��dS)	z�Convert time specified in a variety of forms into UNIX epoch time.
    Accepts datetime.datetime, int, anything that has a strftime() method, and standard time 9-tuples
    �	timetuple�strftimez%s�+rNz&Failed to parse date with strptime: %sz}Unable to convert %r to an epoch time. Pass an epoch time. Try `date -d 'now + 1 year' +%%s` (shell) or time.mktime (Python).)�
isinstancerr�timeZstruct_timeZmktime�hasattrrRrS�str�unicode�bytes�
startswith�
ValueErrorZstrptimerrD�
Exceptions�ParameterError)�tZexrrr�
time_to_epoch�s(


 


r`TcCsJ|r6tjd|tj�}|rftjjd||j�df��n0tjd|tj�}|rftjjd||j�df��t|�dkr�tjjd|��t|�dkr�tjjd	|��|�rFt|�d
kr�tjjd|��tjd|tj�r�tjjd
|��tjd|tj��rtjjd|��tjd|tj��s$tjjd|��tjd|tj��sFtjjd|��dS)Nz([^a-z0-9\.-])z�Bucket name '%s' contains disallowed character '%s'. The only supported ones are: lowercase us-ascii letters (a-z), digits (0-9), dot (.) and hyphen (-).rz([^A-Za-z0-9\._-])z�Bucket name '%s' contains disallowed character '%s'. The only supported ones are: us-ascii letters (a-z, A-Z), digits (0-9), dot (.), hyphen (-) and underscore (_).�z0Bucket name '%s' is too short (min 3 characters)�z1Bucket name '%s' is too long (max 255 characters)r!z0Bucket name '%s' is too long (max 63 characters)z-\.zEBucket name '%s' must not contain sequence '-.' for DNS compatibilityz\.\.zEBucket name '%s' must not contain sequence '..' for DNS compatibilityz	^[0-9a-z]z4Bucket name '%s' must start with a letter or a digitz	[0-9a-z]$z2Bucket name '%s' must end with a letter or a digitT)�re�search�UNICODErDr]r^�groupsr)�bucket�
dns_strictZinvalidrrr�check_bucket_name�s.ricCs*yt|dd�Stjjk
r$dSXdS)NT)rhF)rirDr]r^)rgrrr� check_bucket_name_dns_conformitysrjcCsd|krdSt|�S)zk
    Check whether either the host_bucket support buckets and
    either bucket name is dns compatible
    z
%(bucket)sF)rj)Zbucket_hostZbucket_namerrr�check_bucket_name_dns_supportsrkcCsZdtjj�jkr|dfStjj�jj�ddi}tj||tj�}|sL|dfS|jd�dfS)z�
    bucket, success = getBucketFromHostname(hostname)

    Only works for hostnames derived from bucket names
    using Config.host_bucket pattern.

    Returns bucket name and a boolean success flag.
    z
%(bucket)sFrgz(?P<bucket>.*)rT)rDrE�host_bucketrrc�matchre�group)Zhostname�pattern�mrrr�getBucketFromHostnames	rqcCstjj�jj�d|iS)Nrg)rDrErlr)rgrrr�getHostnameFromBucket)srrcCsttj|�j�S)z?returns a username from the password database for the given uid)rK�pwd�getpwuidZpw_name)�uidrrr�getpwuid_username1srvcCsttj��S)N)rK�getpassZgetuser)rurrrrv6scCsttj|�j�S)z=returns a groupname from the group database for the given gid)rK�grpZgetgrgidZgr_name)�gidrrr�getgrgid_grpname<srzcCsdS)NZnobodyr)ryrrrrz@s)FF)NrCF)NrC)NrCF)NrC)N)NF)T):Z
__future__rrr#rVrcrGZ
string_modrr&ZloggingrrY�	NameErrorrXZ	S3.ConfigrDZ
S3.ExceptionsZS3.BaseUtilsrrrrr	�__all__rr>rZ
ascii_lettersZdigitsrrrr r,�getenvr/r8rBrJrKr3rLrNrPrQr`rirjrkrqrrrsrv�ImportErrorrwrxrzrrrr�<module>
s�




















	
"