Skip to content

Commit

Permalink
add support for ftps and change ftp back to unencrypted
Browse files Browse the repository at this point in the history
  • Loading branch information
carlos22 committed Jul 13, 2020
1 parent 2c67a22 commit 7a3861c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 9 deletions.
17 changes: 15 additions & 2 deletions publisher/worker/managers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ def init_manager(test_url, back_end_type, back_end_params, state=None):
manager_back_end = backends.SFTPUploadBackEnd(
back_end_params['host'], back_end_params['username'], back_end_params['password'],
back_end_params['basedir'], back_end_params['port'], permission_map)
else:
return manifestbased.ManifestUploadManager(manager_back_end, test_url, state)
elif back_end_type == "ftp":
logger.info("Initalising FTP back end")
logger.debug("Back end parameters are: %s" % back_end_params)
permission_map = {'r': back_end_params['chmod']['default'],
Expand All @@ -41,4 +42,16 @@ def init_manager(test_url, back_end_type, back_end_params, state=None):
manager_back_end = backends.BoostedFTPUploadBackEnd(
back_end_params['host'], back_end_params['username'], back_end_params['password'],
back_end_params['basedir'], back_end_params['port'], permission_map)
return manifestbased.ManifestUploadManager(manager_back_end, test_url, state)
return manifestbased.ManifestUploadManager(manager_back_end, test_url, state)
elif back_end_type == "ftps":
logger.info("Initalising FTPS back end")
logger.debug("Back end parameters are: %s" % back_end_params)
permission_map = {'r': back_end_params['chmod']['default'],
'w': back_end_params['chmod']['writeable'],
'c': back_end_params['chmod']['writeable']}
manager_back_end = backends.BoostedFTPUploadBackEnd(
back_end_params['host'], back_end_params['username'], back_end_params['password'],
back_end_params['basedir'], back_end_params['port'], permission_map, ssl=True)
return manifestbased.ManifestUploadManager(manager_back_end, test_url, state)
else:
logger.info("Unknown back_end_type: %s" % back_end_type)
18 changes: 11 additions & 7 deletions publisher/worker/managers/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,24 +106,28 @@ class FTPUploadBackEnd(ConnectionBackEnd):

def __init__(self,
host, username, password, basedir, port=21,
permission_map={}):
permission_map={}, ssl=False):
self.host = host
self.username = username
self.password = password
self.basedir = basedir
self.port = port if port else 21
self.permission_map = permission_map
# TODO: make FTP / FTPS switchable?
#self._ftp = ftplib.FTP()
self._ftp = ftplib.FTP_TLS()
self.ssl = ssl
# FTP or FTPS (with TLS/SSL)
if ssl:
self._ftp = ftplib.FTP_TLS()
else:
self._ftp = ftplib.FTP()
self._ftp_folder = basedir
self._type_i = True

def connect(self):
logger.info("Connecting %s:%s" % (self.host, self.port))
self._ftp.connect(self.host, self.port, 15)
self._ftp.login(self.username, self.password)
self._ftp.prot_p()
if self.ssl:
self._ftp.prot_p()
logger.debug("FTP-Server welcome message was: %s" % self._ftp.getwelcome())
pwd = self._ftp.pwd()
logger.debug("PWD of server '%s' is: %s" % (self.host, pwd))
Expand Down Expand Up @@ -332,11 +336,11 @@ class CachedFTPUploadBackEnd(FTPUploadBackEnd):
creation on an initial publishing FTP job.
"""

def __init__(self, host, username, password, basedir, port=21, permission_map={}):
def __init__(self, host, username, password, basedir, port=21, permission_map={}, ssl=False):
logger.debug("Init FTP back end with directory list cache")
self._list_cache = {}
FTPUploadBackEnd.__init__(self, host, username, password, basedir,
port=port, permission_map=permission_map)
port=port, permission_map=permission_map, ssl=ssl)

def connect(self):
self._invalidate_cache()
Expand Down

0 comments on commit 7a3861c

Please sign in to comment.