99import pysftp
1010
1111
12- def ftp_factory (name , server , username , password , ignore = None ):
12+ def ftp_factory (name , server , username , password , port , ignore = None ):
1313 if name == FTP_PROTOCOL_NAME .FTP :
14- return FTPHandler (ftp_server = server , username = username ,password = password , ignore = ignore )
14+ return FTPHandler (ftp_server = server , username = username ,password = password , port = port , ignore = ignore )
1515 elif name == FTP_PROTOCOL_NAME .SFTP :
16- return SFTPHandler (sftp_server = server , username = username , password = password , ignore = ignore )
16+ return SFTPHandler (sftp_server = server , username = username , password = password , port = port , ignore = ignore )
1717 else :
1818 raise NotImplementedError
1919
2020class FTPHandler (object ):
2121
22- def __init__ (self , ftp_server , username , password , ignore = None ):
22+ def __init__ (self , ftp_server , username , password , port , ignore = None ):
2323 self .ftp_server = ftp_server
2424 self .username = username
2525 self .password = password
26+ self .port = port
2627 self .ftp = self .ftpconnect ()
2728 logger .info ("login success." )
2829 self .ignore = ignore
@@ -53,7 +54,7 @@ def ignore_match(self, files):
5354 def ftpconnect (self ):
5455 ftp = FTP ()
5556 ftp .set_debuglevel (0 )
56- ftp .connect (self .ftp_server , 21 , timeout = 60 )
57+ ftp .connect (self .ftp_server , int ( self . port ) , timeout = 60 )
5758 ftp .login (self .username , self .password )
5859 logger .warn ("login succeed" )
5960 return ftp
@@ -140,10 +141,11 @@ def close(self):
140141
141142class SFTPHandler (FTPHandler ):
142143
143- def __init__ (self , sftp_server , username , password , ignore = None ):
144+ def __init__ (self , sftp_server , username , password , port , ignore = None ):
144145 self .sftp_server = sftp_server
145146 self .username = username
146147 self .password = password
148+ self .port = port
147149 self .sftp = self .sftpconnect ()
148150 logger .info ("login success." )
149151 self .ignore = ignore
@@ -152,7 +154,9 @@ def __init__(self, sftp_server, username, password, ignore=None):
152154 self .__init_gitignore ()
153155
154156 def sftpconnect (self ):
155- sftp = pysftp .Connection (self .sftp_server , username = self .username , password = self .password )
157+ cnopts = pysftp .CnOpts ()
158+ cnopts .hostkeys = None
159+ sftp = pysftp .Connection (self .sftp_server , username = self .username , port = int (self .port ), password = self .password , cnopts = cnopts )
156160 logger .warn ("login succeed" )
157161 return sftp
158162
0 commit comments