HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/idrivedbackend.cpython-310.pyc
o

��`PL�@s�ddlZddlZddlZddlZddlmmZddlZddl	Z	ddl
ZddlmZddlm
Z
ddlmZddlmZddlmZGdd�dejj�Zej�d	e�dS)
�N)�config)�log)�tempdir)�progress)�BackendExceptionc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
IDriveBackendcCs@tjj�||�||_tj�|j�|_t�d�	|��d|_
dS)Nzparsed_url: {0}F)�	duplicity�backend�Backend�__init__�
parsed_url�strip_auth_from_url�
url_stringr�Debug�format�	connected)�selfr�r�C/usr/lib/python3/dist-packages/duplicity/backends/idrivedbackend.pyris

zIDriveBackend.__init__cCs|jS�N)r�rrrr�user_connectedsszIDriveBackend.user_connectedcCs�t�d�|��z
|�|�\}}}Wnty td�|���w||}zdd�t�d|��d}t	�
|�}Wnd}Yt�d�|��|S)NzRequest command: {0}z'Unknown protocol failure on request {0}z<root>�z<[^>]+>z</root>zRequest response: {0})rrr�subprocess_popen�KeyErrorr�join�re�findall�ET�
fromstring)r�commandline�_�reply�error�response�xml�elrrr�requestvs�zIDriveBackend.requestc
Csdtj�d�}|dur1t�d�t�d�t�d�t�d�t�d�t�d�t�d�td��tj�|d	�|_t�	d
|j�tj�d�|_
|j
duret�d�t�d�t�d
�t�d�td��t�	d|j
�tj�d�}|dur�t�d�t�d�t�d�t�d�t�d�td��t�	d|�d�|�|_t
jdur�d|_d|_ndtj�dt
j�|_zt�|j�WnFt�y}z9d|_|jtjkr�t�	d�|j��n t�d�t�d�|j��t�d�t�d�td�|j���WYd}~nd}~wwt�	d�|j��d|_tj�d �|_|jdu�r6t�d�t�d!�t�d"�t�d�td#��t�	d$|j�|�|j|jd%�|j
���d&�}|jd'd(k�ratd)|jd*��|jd*d+k�rmtd,��|jd-d.k�rytd/��|jd0d1k�r�tj�d2�}|du�r�t�d�t�d3�t�d4�t�d5�t�d�td6��t�	d7|�|jd8�|�7_|�|j|jd9�|j
���d&�}|jd:|_|�|j|jd;�|j
|j��}d|_|�d<�D]}|jd=|jk�rd>|jd?d@|_�q�|jdu�r(|�|j|jdA�|j|j
|j���d<�}d>|jd?d@|_d|_t�	dB�dS)CN�	IDEVSPATHzH------------------------------------------------------------------------zHWARNING: No path to 'idevsutil_dedup' has been set. Download module fromzZ   https://www.idrivedownloads.com/downloads/linux/download-options/IDrive_linux_64bit.zip�orzZ   https://www.idrivedownloads.com/downloads/linux/download-options/IDrive_linux_32bit.zipzTand place anywhere with exe rights. Then creat env var 'IDEVSPATH' with path to filezBNo IDEVSPATH env var set. Should contain folder to idevsutil_dedup�idevsutil_dedupzIDrive command base: %s�IDRIVEIDz WARNING: IDrive logon ID missingzACreate an environment variable IDriveID with your IDrive logon IDz1No IDRIVEID env var set. Should contain IDrive idz
IDrive id: %s�	IDPWDFILEz&WARNING: IDrive password file missgingz5Please create a file with your IDrive logon password,zMThen create an environment variable IDPWDFILE with path/filename of said filez;No IDPWDFILE env var set. Should contain file with passwordzIDrive pwdpath: %sz --password-file={0}Fr�/z)Using existing directory {0} as fake-rootzOWARNING: Creation of FAKEROOT {0} failed; backup will use system temp directoryz-This might interfere with incremental backupsz$Creation of the directory {0} failedz>Directory {0} created as fake-root (Will clean-up afterwards!)T�IDBUCKETz%WARNING: IDrive backup bucket missingzDCreate an environment variable IDBUCKET specifying the target bucketz<No IDBUCKET env var set. Should contain IDrive backup bucketzIDrive bucket: %sz --validate --user={0}�tree�message�SUCCESSzProtocol failure - �descz
VALID ACCOUNTzIDrive account invalid�configstatus�SETzIDrive account not set�
configtype�PRIVATE�	IDKEYFILEz,WARNING: IDrive encryption key file missgingz5Please create a file with your IDrive encryption key,zMThen create an environment variable IDKEYFILE with path/filename of said filezANo IDKEYFILE env var set. Should contain file with encription keyzIDrive keypath: %sz --pvt-key={0}z --getServerAddress {0}�cmdUtilityServerz --list-device {0}@{1}::home�item�	nick_name�5c0b�	device_id�4b5zzZ --create-bucket --bucket-type=D --nick-name={0} --os=Linux --uid=987654321 {1}@{2}::home/zUser fully connected)�os�environ�getr�Warnr�pathr�cmdr�idriveidr�auth_switchr�fakeroot�cleanup�mkdir�OSError�errno�EEXIST�bucketr'�find�attrib�idriveserver�idrivedevidrr)rrB�filepath�er&r9rrr�connect�s�


















�

���



$





$��
���zIDriveBackend.connectcCs�tj�tj�|jj�d��|j�d���	�}|j
|jd�|j
|j|j|�}z
|�|�\}}}Wnt�d�gYSt�d�|��tdd�dd�|��D��}td	d�|�}ttd
d�|��}|S)Nr-z. --auth-list --device-id={0} {1}@{2}::home/{3}zlist EMPTY response zlist response: {0}cSst�d|�S)Nz\[|\])r�split��linerrr�<lambda>sz(IDriveBackend.list_raw.<locals>.<lambda>cSsg|]	}|�d�r|�qS)�[)�
startswith��.0�xrrr�
<listcomp>sz*IDriveBackend.list_raw.<locals>.<listcomp>cSstdd�|�S)NcSs|��Sr)�strip��crrrrW��:IDriveBackend.list_raw.<locals>.<lambda>.<locals>.<lambda>)�maprUrrrrWscSsttdd�|��S)NcSs|dkS)Nrrr_rrrrWrarb)�list�filter)�colsrrrrWs)r>rBr�urllib�parse�unquoter�lstriprF�rstriprCrErrPrDrOrrrrc�
splitlinesrd)r�remote_pathr r!�l�filteredrrr�list_raws$
���
zIDriveBackend.list_rawc
Cs�t�d�|��s
|��|�d�}tj�|j|�}t	j
�|jj�
d��}t�|j|�t�d�|j|��t�d�}|�|�|�d�|j|jd�|j|j|j|j|�}t�d�|��|�|�\}}	}t�d	�|	��|��t�|�dS)
N�_PUT�utf-8r-z*put_file: source_path={0}, remote_file={1}�wrz6  --device-id={0} --files-from={1} / {2}@{3}::home/{4}zput_file put command: {0}zput_file put response: {0})rrrrS�decoder>rBrrFrgrhrirrj�rename�namer�tempfile�NamedTemporaryFile�write�seekrCrErPrDrOr�close�remove)
r�source_path�remote_filename�filename�intrim_file�remote_dirpath�flist�
putrequestr!�putresponserrr�_puts&




�zIDriveBackend._putcCsJt�d�|��s
|��|�d�}tj�tj	�
|jj�d��|j
�d�|���}t�d�||||jj��t��}t�d�|��t�d�}|�|�|�d�|j|jd�|j|j|j|j|�}t�d	�|��|�|�\}}	}t�d
�|	��|��tj�||�d��d��}
t�d�|
|j��t�|
|j�t�|�dS)N�_GETrrr-zO_get: remote_filename={0}, local_path={1}, remote_path={2}, parsed_url.path={3}z*_get created temporary download folder: {}rsrz4 --device-id={0} --files-from={1} {2}@{3}::home/ {4}zget command: {0}z_get response: {0}z+_get moving file {0} to final location: {1}) rrrrSrtr>rBrrgrhrirrjrFrkrrw�mkdtemprxryrzrCrErPrvrDrOrr{ru�shutil�rmtree)rr~�
local_pathrrm�tmpdirr�r r!�getresponse�downloadedSrcPathrrr�_get5s8

���


�zIDriveBackend._getcCs4t�d�|��s
|��|��}dd�|D�}|S)N�_LISTcSsg|]}|d�qS)���rrZrrrr]dsz'IDriveBackend._list.<locals>.<listcomp>)rrrrSrp)rrorrr�_list]s
zIDriveBackend._listcCs�t�d�|��s
|��|�d�}t�d�}|�|�d��|�	d�t
j�t
j�|jj�d��|j�d����}t�d�||��|j|jd�|j|j|j|j|�}t�d�|��|�|�\}}}t�d	�|��|��dS)
N�_DELETErrrsr-rz%delete: {0} from remote file path {1}�B --delete-items --device-id={0} --files-from={1} {2}@{3}::home/{4}�delete: {0}�delete response: {0})rrrrSrtrwrxryrjrzr>rBrrgrhrirrFrkrrCrErPrvrDrOrr{)rr~rr�rm�
delrequestr!�delresponserrr�_deletehs,




��
��zIDriveBackend._deletecCs�t�d�|��s
|��t�d�}|D]}|�|�d��d�d�q|�	d�t
j�t
j�|jj�d��|j�d����}t�d�|��|j|jd�|j|j|j|j|�}t�d	�|��|�|�\}}}t�d
�|��|��dS)Nz_DELETE LISTrsrrr-�
rz/delete multiple files from remote file path {0}r�r�r�)rrrrSrwrxryrtrjrzr>rBrrgrhrirrFrkrrCrErPrvrDrOrr{)r�
filename_listr�rrmr�r!r�rrr�_delete_list�s,



��
��zIDriveBackend._delete_listcCs(t�d�zt�d�WdSYdS)Nz$Removing IDrive temp folder evs_temp�evs_temp)rrr�r�rrrr�_close�s

zIDriveBackend._closecsTt�d�|��s
|��|��}|r�fdd�|D�}|r&dt|d�iSddiS)N�_QUERYc�&g|]}|d��d�kr|d�qS�r�rr��rtrZ�rrrr]��&z(IDriveBackend._query.<locals>.<listcomp>�sizerr��rrrrSrp�int)rrrorr�r�_query�s
zIDriveBackend._querycspt�d�|��s
|��|��}i}|D] �|r"�fdd�|D�}|r/dt|d�i|�<qddi|�<q|S)N�_QUERY_LISTcr�r�r�rZr�rrr]�r�z-IDriveBackend._query_list.<locals>.<listcomp>r�rr�r�)rr�ro�info�resultrr�r�_query_list�s
zIDriveBackend._query_listcCs|jrt�|j�dSdSr)rGr>�rmdirrFrrrr�__del__�s�zIDriveBackend.__del__N)�__name__�
__module__�__qualname__rrr'rSrpr�r�r�r�r�r�r�r�r�rrrrrgs
w(r�idrived)r>rgrwr�xml.etree.ElementTree�etree�ElementTreerr�rJ�duplicity.backendrrrrr�duplicity.errorsrr	r
r�register_backendrrrr�<module>s"Dp