2010-10-26 23 views
14

Tengo un servidor FTP que solo acepta conexiones mediante la ejecución de FTPS (FTP explícito sobre TLS). Necesito poder conectarme a esto usando la aplicación Ruby on Rails.FTPS (TLS/SSL) de la aplicación Ruby on Rails

¿Alguien sabe de un método para hacer esto? He intentado con la biblioteca Net::FTP, pero esto no parece ser compatible con las conexiones FTPS.

Respuesta

9

¿Qué le parece usar Net::FTPTLS?

+0

¿Dónde se encuentra esto? ¿Cómo puedo instalarlo? No pude resolverlo buscándolo en Google. – adamjford

+1

@adamjford, debería venir con tu Ruby. En mi caja, está en '/ usr/lib/ruby ​​/ 1.8/net/ftptls.rb'. En el tuyo, puede ser en otro lugar. Donde sea que esté, 'require 'net/ftptls'' debería funcionar. –

+0

@Wayne: Cool, gracias! – adamjford

1

Si desea utilizar implícito FTPS, intente this gist.

Para FTP explícitos, puede usar la gema de rubí ftpfxp.

+0

Ejecutando 'gem install ftpfxp' produce' ERROR: Mientras ejecuta gem .. . (Gem :: FormatException) ftpfxp-0.0.4 tiene un valor no válido para @ cert_chain' – adamjford

4

Hice algo así con FTPS implícito/explícito, utilicé la gema de doble bolsa-ftps que parché para admitir la reutilización de la sesión de SSL. Es un requisito para muchos servidores ftps.

que poner el código en GitHub aquí: https://github.com/alain75007/double-bag-ftps

2

EDIT: He descubierto la manera de ponerlo en marcha a nivel local, pero estoy teniendo problemas para conseguir que funcione en Heroku. Eso es un poco de una salida de esta cuestión, por lo que hemos creado una nueva:

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