2010-10-26 17 views
14

Ho un server FTP che accetta solo connessioni tramite FTPS (esplicito FTP su TLS). Devo essere in grado di connettermi a questo utilizzando un'app Ruby on Rails.FTPS (TLS/SSL) da Ruby on Rails App

Qualcuno conosce un metodo per farlo? Ho provato la libreria Net::FTP ma questo non sembra supportare le connessioni FTPS.

risposta

9

Che ne dici di utilizzare Net::FTPTLS?

+0

Dove si trova questo? Come posso installarlo? Non riuscivo a capirlo cercandolo su Google. – adamjford

+1

@adamjford, dovrebbe venire con il tuo Ruby. Sulla mia scatola, è in '/ usr/lib/ruby ​​/ 1.8/net/ftptls.rb'. Su di te, potrebbe essere da qualche altra parte. Ovunque sia, 'richiede 'net/ftptls' dovrebbe funzionare. –

+0

@Wayne: Cool, grazie! – adamjford

1

Se si desidera utilizzare FTPS implicito, provare this gist.

Per FTP espliciti, è possibile utilizzare la gemma rubino ftpfxp.

+0

L'esecuzione di 'gem install ftpfxp' produce' ERRORE: durante l'esecuzione della gemma .. . (Gem :: FormatException) ftpfxp-0.0.4 ha un valore non valido per @ cert_chain'. – adamjford

4

Ho fatto qualcosa del genere con FTPS Implicito/Esplicito, ho usato gemma double-bag-ftps che ho patchato per supportare il riutilizzo della sessione ssl. È un requisito per molti server ftps.

ho messo il codice su github qui: https://github.com/alain75007/double-bag-ftps

2

EDIT: ho capito come farlo funzionare a livello locale, ma sto avendo problemi a farlo funzionare su Heroku. Questo è un po 'di una partenza da questa domanda, così ho creato uno nuovo:

Heroku with FTPTLS - Error on SSL Connection

require 'net/ftptls' 
ftp = Net::FTPTLS.new() 
ftp.passive = true 
#make sure you define port_number 
ftp.connect('host.com', port_number) 
ftp.login('Username', 'Password') 
ftp.gettextfile('filename.ext', 'where/to/save/file.ext') 
ftp.close