o —~µ_*'ã@sŒddlmZe ¡ddlZddlZddlZddlZddlZddl Zzddl m Z Wne y9ddlm Z YnwddlZddlmZddlmZddlmZddlmZGdd „d ejjƒZej d e¡ej d e¡ej d e¡ej d e¡ej de¡ej de¡ej de¡ej de¡ej de¡ej de¡ej de¡ej de¡ej de¡ejj gd¢¡dS)é)Ústandard_libraryN)Úquote)Úconfig)Úlog)Útempdir)Úutilc@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) Ú LFTPBackendz4Connect to remote store using File Transfer Protocolc Csžtjj ||¡zt d¡}| ¡}| ¡}Wn ty Ynw|s+t   dt j j ¡|  d¡d  d¡d  ¡d}t  d|¡||_tj |jd¡ ¡|_t d d |j¡|_|jd |j|_|jro|jd |j7_t d d|j¡|_t|jƒdkr‚d|_|jddkr|jd7_d|_|jjrª|jj|_| ¡|_d|j|jf|_tj dkr³d|_!nd|_!tj"|_#|jdkrßtj$sßgd¢}|j#sß|D]}tj %|¡}tj &|¡rÞ||_#nqËt' (¡ )¡\|_*|_+t ,|j*d¡|_-|j- .dtj$rúdndd¡|j#r|j- .dt/|j#ƒd¡tj0r"|j- .dt/tj0ƒd¡|jjdkr<|j- .d¡|j- .d¡|j- .d ¡n |jjd!krV|j- .d"¡|j- .d#¡|j- .d$¡n|j- .d%¡|j- .d&¡|j- .d'tj1¡|j- .d(tj2¡|j- .d)|j!¡t  3¡t j4kr‹|j- .d*¡|jjd!kr£|j- .d+|j|j 5d!d,¡f¡n |j- .d+|j|jf¡|j- ¡t  3¡t j4krÍt6|j+d-ƒ}t  7d.| ¡¡dSdS)/Nzlftp --versionz%LFTP not found: Please install LFTP.Ú rz | ézLFTP version is %sÚlftpz^webdavÚhttpz://z:%sz^/Úú/éÿÿÿÿz -u '%s,%s'ÚregularÚoffÚonÚhttps)z~/.duplicity/cacert.pemz~/duplicity_cacert.pemz/etc/duplicity/cacert.pemÚwzset ssl:verify-certificate ÚfalseÚtruezset ssl:ca-file zset ssl:ca-path Úftpszset ftp:ssl-allow true zset ftp:ssl-protect-data true zset ftp:ssl-protect-list true Úftpeszset ftp:ssl-force on zset ftp:ssl-protect-data on zset ftp:ssl-protect-list on zset ftp:ssl-allow false zset http:use-propfind true zset net:timeout %s zset net:max-retries %s zset ftp:passive-mode %s zdebug z open %s %s ÚftpÚrz SETTINGS: %s)8Ú duplicityÚbackendÚBackendÚ__init__ÚosÚpopenÚreadÚcloseÚ ExceptionrÚ FatalErrorÚ ErrorCodeÚftps_lftp_missingÚsplitÚNoticeÚ parsed_urlÚ strip_prefixÚschemeÚlowerÚreÚsubÚhostnameÚ url_stringÚportÚpathÚ remote_pathÚlenÚauthflagÚusernameÚ get_passwordÚpasswordrÚftp_connectionÚconn_optÚssl_cacert_fileÚ cacert_fileÚssl_no_check_certificateÚ expanduserÚisfilerÚdefaultÚmkstempÚtempfdÚtempnameÚfdopenÚtempfileÚwriteÚ cmd_quoteÚssl_cacert_pathÚtimeoutÚ num_retriesÚ getverbosityÚDEBUGÚreplaceÚopenÚDebug) Úselfr)ÚpÚfoutÚretÚversionÚcacert_candidatesr2Úf©rWú@/usr/lib/python3/dist-packages/duplicity/backends/lftpbackend.pyr2sž   ÿÿ      þ ÿÿ       "   ÿþzLFTPBackend.__init__cCst|djƒr t |¡}d|jt|jƒt|jƒt|jƒt |¡f}t  d|¡|  |¡\}}}t  d|¡t  d|¡t  d|¡dS)Nóz.lftp -c "source %s; mkdir -p %s; put %s -o %s"úCMD: %sz STATUS: %sú STDERR: %sú STDOUT: %s) Ú isinstanceÚ __class__rÚfsdecoderCrGr3Úuc_namerrOÚsubprocess_popen)rPÚ source_pathÚremote_filenameÚ commandlineÚsÚlÚerWrWrXÚ_put”s"  üÿ ÿzLFTPBackend._putcCsxt|djƒr t |¡}dt|jƒt|jƒ|t|jƒf}t  d|¡|  |¡\}}}t  d|¡t  d|¡dS)NrYz!lftp -c "source %s; get %s -o %s"rZr[r\) r]r^rr_rGrCr3r`rrOra)rPrcÚ local_pathrdÚ_rfrgrWrWrXÚ_get¥s   ýÿ ÿzLFTPBackend._getcCs~tj |jj¡}t|jƒ}dt|jƒ|||f}t  d|¡|  |¡\}}}t  d|¡t  d|¡dd„|  d¡DƒS)NzFlftp -c "source %s; ( cd %s && ls ) || ( mkdir -p %s && cd %s && ls )"rZr[r\cSs"g|] }|rt | ¡d¡‘qS)r)rÚfsencoder')Ú.0ÚxrWrWrXÚ Çs"z%LFTPBackend._list..r ) ÚurllibÚparseÚunquoter)r2rGr3rCrrOrar')rPÚ remote_dirÚ quoted_pathrdrjrfrgrWrWrXÚ_list´s þÿÿzLFTPBackend._listcCsbdt|jƒt|jƒtt |¡ƒf}t d|¡| |¡\}}}t d|¡t d|¡dS)Nz!lftp -c "source %s; cd %s; rm %s"rZr[r\)rGrCr3rr_rrOra)rPÚfilenamerdrjrfrgrWrWrXÚ_deleteÉs ýÿ ÿzLFTPBackend._deleteN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrhrkrurwrWrWrWrXr0sb rrrÚfishrúlftp+ftpú lftp+ftpsú lftp+fishú lftp+ftpesú lftp+sftpú lftp+webdavú lftp+webdavsú lftp+httpú lftp+https) rrr|rr}r~rr€rr‚rƒr„r…)ÚfuturerÚinstall_aliasesrÚos.pathr-Úurllib.requestrpÚ urllib.parseÚ urllib.errorÚshlexrrGÚ ImportErrorÚpipesÚduplicity.backendrrrrrrrrÚregister_backendÚ uses_netlocÚextendrWrWrWrXÚsD  ÿ    (