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__/giobackend.cpython-310.pyc
o

�t3b8 �@snddlZddlZddlZddlZddlZddlmZddlmZdd�ZGdd�dej	j
�Zej	�de�dS)	�N)�log)�utilcCs�dtjvrLtjdgtjdd�}|��djddd�}|�d	�}|D],}|�d
d�}t|�dkrK|dd
krBt	�
tjt|d�t
j�|dtj|d<q!dSdS)N�DBUS_SESSION_BUS_ADDRESSzdbus-launchT)�stdout�universal_newlinesr�utf8�replace)�errors�
�=���DBUS_SESSION_BUS_PID)�os�environ�
subprocess�Popen�PIPE�communicate�decode�split�len�atexit�register�kill�int�signal�SIGTERM)�p�output�lines�line�parts�r#�?/usr/lib/python3/dist-packages/duplicity/backends/giobackend.py�ensure_dbuss

��r%c@s`eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�
GIOBackendz�Use this backend when saving to a GIO URL.
       This is a bit of a meta-backend, in that it can handle multiple schemas.
       URLs look like schema://user@server/path.
    c
s�ddlm�ddlm}G�fdd�d�j�}tjj�||�t��j	�
|j�|_||�}|�
�}|j��jj|d|j|�|��z	|j�d�WdS|jyh}z|j�jjkr]�WYd}~dSd}~ww)Nr��Gio��GLibcs4eZdZdZ�fdd�Z�fdd�Z�fdd�ZdS)	z.GIOBackend.__init__.<locals>.DupMountOperationzmA simple MountOperation that grabs the password from the environment
               or the user.
            cs2�j�|�||_|�d|j�|�d|j�dS)Nzask-passwordzask-question)�MountOperation�__init__�backend�connect�ask_password_cb�ask_question_cb)�selfr-r'r#r$r,<sz7GIOBackend.__init__.<locals>.DupMountOperation.__init__cs"|�|j���|��jj�dS�N)�set_passwordr-�get_password�reply�MountOperationResult�HANDLED�r1�args�kwargsr'r#r$r/Bsz>GIOBackend.__init__.<locals>.DupMountOperation.ask_password_cbcs|�d�|��jj�dS)Nr)�
set_choicer5r6r7r8r'r#r$r0Fs
z>GIOBackend.__init__.<locals>.DupMountOperation.ask_question_cbN)�__name__�
__module__�__qualname__�__doc__r,r/r0r#r'r#r$�DupMountOperation8s
r@)�
gi.repositoryr(r*r+�	duplicityr-�Backendr,r%�File�new_for_uri�
url_string�remote_file�MainLoop�mount_enclosing_volume�MountMountFlags�NONE�_GIOBackend__done_with_mount�run�make_directory_with_parents�GError�code�IOErrorEnum�EXISTS)r1�
parsed_urlr*r@�op�loop�er#r'r$r,4s*����zGIOBackend.__init__c
Cs�ddlm}ddlm}z|�|�Wn0|jyC}z#|j|jjkr9|j|jjkr9t	�
td�t�
|�t	jj�WYd}~nd}~ww|��dS)Nrr'r)z1Connection failed, please check your password: %s)rAr(r*�mount_enclosing_volume_finishrOrPrQ�ALREADY_MOUNTED�
NOT_SUPPORTEDr�
FatalError�_r�uexc�	ErrorCode�connection_failed�quit)r1�fileobj�resultrUr(r*rVr#r#r$�__done_with_mountes
����zGIOBackend.__done_with_mountcOsdSr2r#r8r#r#r$�__copy_progressqszGIOBackend.__copy_progresscCs(ddlm}|�||jjd|jd�dS�Nrr')rAr(�copy�
FileCopyFlags�	OVERWRITE�_GIOBackend__copy_progress)r1�source�targetr(r#r#r$�__copy_filets
�zGIOBackend.__copy_filecCs�ddlm}ddlm}t||j�rB|j|jjkr!|dkr!tj	j
S|j|jjkr,tj	jS|j|jj
kr7tj	j
S|j|jjkrDtj	jSdSdS)Nrr'r)�delete)rAr(r*�
isinstancerOrPrQ�FAILEDrr]�backend_not_found�PERMISSION_DENIED�backend_permission_denied�	NOT_FOUND�NO_SPACE�backend_no_space)r1�	operationrVr(r*r#r#r$�_error_code}s�	zGIOBackend._error_codecCs<ddlm}|j�|j�}|j�t�|��}|�	||�dSrd)
rAr(rD�new_for_path�namerG�get_child_for_display_namer�fsdecode�_GIOBackend__copy_file)r1�source_path�remote_filenamer(�source_file�target_filer#r#r$�_put�szGIOBackend._putcCs<ddlm}|j�t�|��}|j�|j�}|�	||�dSrd)
rAr(rGryrrzrDrwrxr{)r1�filename�
local_pathr(r~rr#r#r$�_get�szGIOBackend._getcCsTddlm}g}|j�|j|jjd�}|�d�}|r(|�|�	��|�d�}|s|Srd)
rAr(rG�enumerate_children�$FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME�FileQueryInfoFlagsrK�	next_file�append�get_display_name)r1r(�files�enum�infor#r#r$�_list�s
�

�zGIOBackend._listcCs |j�t�|��}|�d�dSr2)rGryrrzrl)r1r�rr#r#r$�_delete�szGIOBackend._deletecCs>ddlm}|j�t�|��}|�|j|jj	d�}d|�
�iS)Nrr'�size)rAr(rGryrrz�
query_info�FILE_ATTRIBUTE_STANDARD_SIZEr�rK�get_size)r1r�r(rr�r#r#r$�_query�s�zGIOBackend._queryN)r<r=r>r?r,rLrhr{rvr�r�r�r�r�r#r#r#r$r&/s1	r&�gio)
rrrr�duplicity.backendrBrrr%r-rCr&�register_backend_prefixr#r#r#r$�<module>s