2010-10-26 26 views
14

Tôi có một máy chủ FTP chỉ chấp nhận các kết nối thông qua việc chạy FTPS (FTP rõ ràng trên TLS). Tôi cần có khả năng kết nối với ứng dụng này bằng ứng dụng Ruby on Rails.FTPS (TLS/SSL) từ Ruby on Rails App

Có ai biết phương pháp để thực hiện việc này không? Tôi đã thử thư viện Net::FTP nhưng điều này dường như không hỗ trợ kết nối FTPS.

Trả lời

9

Làm thế nào để sử dụng Net::FTPTLS?

+0

Nó được tìm thấy ở đâu? Làm thế nào tôi có thể cài đặt nó? Tôi không thể tìm ra nó bằng cách tìm kiếm nó trên Google. – adamjford

+1

@adamjford, Nó nên đi kèm với Ruby của bạn. Trên hộp của tôi, nó nằm trong '/ usr/lib/ruby ​​/ 1.8/net/ftptls.rb'. Trên máy của bạn, nó có thể ở đâu đó khác. Bất cứ nơi nào nó được, 'yêu cầu 'net/ftptls'' nên làm việc. –

+0

@Wayne: Tuyệt vời, cảm ơn! – adamjford

1

Nếu bạn muốn sử dụng FTPS ngầm định, vui lòng thử this gist.

Đối với các FTP rõ ràng, bạn có thể sử dụng đá quý ruby ​​ftpfxp.

+0

Chạy 'gem install ftpfxp' tạo' ERROR: Trong khi thực thi gem .. . (Gem :: FormatException) ftpfxp-0.0.4 có giá trị không hợp lệ cho @ cert_chain' – adamjford

4

Tôi đã thực hiện một cái gì đó như thế này với FTPS ngầm/rõ ràng, tôi đã sử dụng đá quý đôi túi-ftps mà tôi đã vá để hỗ trợ tái sử dụng phiên ssl. Đó là một yêu cầu cho rất nhiều máy chủ ftps.

tôi đặt mã trên github đây: https://github.com/alain75007/double-bag-ftps

2

EDIT: Tôi đã tìm ra cách để làm cho nó chạy ở địa phương, nhưng đang gặp vấn đề nhận được nó để làm việc trên Heroku. Đó là một chút của một khởi hành từ câu hỏi này, vì vậy tôi đã tạo một hình mới:

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