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

�~�_M�@s�ddlmZe��ddlZddlZddlZddlZddl	Z	ddl
ZddlmZddlm
Z
ddlmZddlmZGdd�dejj�Zej�d	e�ejj�d	g�dS)
�)�standard_libraryN)�config)�log)�tempdir)�utilc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�NCFTPBackendz4Connect to remote store using File Transfer ProtocolcCs�tjj�||�zt�d�}|��}|��}Wn	ty Ynw|dks'|s/t	�
dt	jj�|�
d�d�
�d}|dkrGt	�
dt	jj�n|d	krSt	�d
t	jj�t	�d|�||_tj�|j�|_tj�|jd�|_d
dg|jd<|jddkr�|jd7_|��|_tjdkr�d|_nd|_t����\|_ |_!t�"|j d�|_#|j#�$d|jj%�|j#�$d|jj&�|j#�$d|j�|j#��d|j!|jtj'f|_(|j)dur�|j)dkr�|j(d|j)7_(dSdSdS)Nz
ncftpls -viz=NcFTP not found:  Please install NcFTP version 3.1.9 or later�
r�z3.1.9zmNcFTP too old:  Duplicity requires NcFTP version 3.1.9,3.2.1 or later.  Version 3.2.0 will not work properly.z3.2.0z�NcFTP (ncftpput) version 3.2.0 may fail with duplicity.
see: http://www.ncftpd.com/ncftp/doc/changelog.html
If you have trouble, please upgrade to 3.2.1 or laterzNcFTP version is %s�ncftp�i�ncftpls����/�regularz-Ez-F�wzhost %s
zuser %s
zpass %s
z+-f %s %s -t %s -o useCLNT=0,useHELP_SITE=0 �z -P '%s')*�	duplicity�backend�Backend�__init__�os�popen�read�close�	Exceptionr�
FatalError�	ErrorCode�ftp_ncftp_missing�split�ftp_ncftp_too_old�Warn�WarningCode�ftp_ncftp_v320�Notice�
parsed_url�strip_auth_from_url�
url_string�strip_prefix�popen_breaks�get_password�passwordr�ftp_connection�conn_optr�default�mkstemp�tempfd�tempname�fdopen�tempfile�write�hostname�username�timeout�flags�port)�selfr$�p�fout�ret�version�r>�A/usr/lib/python3/dist-packages/duplicity/backends/ncftpbackend.pyr'sX
����


��zNCFTPBackend.__init__c	CsRt�|�}tj�tj�t�	dd|j
j��|���}d|j|j
|f}|�|�dS)N�^/�zncftpput %s -m -V -C '%s' '%s')r�fsdecoder�path�join�urllib�parse�unquote�re�subr$�rstripr7�uc_name�subprocess_popen)r9�source_path�remote_filename�remote_path�commandliner>r>r?�_putes
���zNCFTPBackend._putc	Cs^t�|�}tj�tj�t�	dd|j
j��|���}d|j|j
j
|�d�|jf}|�|�dS)Nr@rAz ncftpget %s -V -C '%s' '%s' '%s'r)rrBrrCrDrErFrGrHrIr$rJr7r4�lstriprKrL)r9rN�
local_pathrOrPr>r>r?�_getms
���zNCFTPBackend._getcCs4d|j|jf}|�|�\}}}dd�|�d�D�S)Nzncftpls %s -l '%s'cSs,g|]}|r|�d�st�|��d��qS)ztotal r
)�
startswithr�fsencoder)�.0�xr>r>r?�
<listcomp>zs,z&NCFTPBackend._list.<locals>.<listcomp>r)r7r&rLr)r9rP�_�lr>r>r?�_listuszNCFTPBackend._listcCs d|j||jf}|�|�dS)Nzncftpls %s -l -X 'DELE %s' '%s')r7r&rL)r9�filenamerPr>r>r?�_delete|s�zNCFTPBackend._deleteN)	�__name__�
__module__�__qualname__�__doc__rrQrTr\r^r>r>r>r?r%s>rz	ncftp+ftp)�futurer�install_aliases�os.pathr�urllib.requestrE�urllib.parse�urllib.errorrH�duplicity.backendrrrrrrrr�register_backend�uses_netloc�extendr>r>r>r?�<module>s]