通过Ruby中的PROXY连接到受密码保护的FTP



我正在尝试上传到我的服务器(在Heroku)一个文件存储在密码保护的FTP

问题是,这个FTP也不包含我的生产IP地址在他的白名单(和我不能添加它..),所以我应该使用代理连接我的rails应用程序这个FTP。

我试过这个代码:

proxy_uri = URI(ENV['QUOTAGUARDSTATIC_URL'] || 'http://login:password@myproxy.com:9293')
Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port,"login","password").start('ftp://login:password@ftp.website.com') do |http|
  http.get('/path/to/myfile.gz').body
end

但是我的http.get返回给我lookup ftp: no such host

我也得到了这个代码FTP下载,但我不知道如何使它与代理:

ftp = Net::FTP.new('ftp.myftp.com', 'login', 'password')
ftp.chdir('path/to')
ftp.getbinaryfile('myfile.gz', 'public/myfile.gz', 1024)
ftp.close

我知道你在6个多月前问过这个问题,但我最近也遇到了类似的问题,发现这个(未回答的)问题是谷歌搜索结果的顶部,所以我想我应该分享一下我的发现。

mudasobwa在你的原始帖子下面的评论有一个链接到net/ftp文档,其中解释了如何使用SOCKS代理…

虽然你没有在你的原始帖子中提到对HTTP代理的特定要求,但对我来说,这似乎很明显是你试图使用的。我相信您已经意识到,这使得SOCKS文档完全无关紧要。

下面的代码已经在ruby-1.8.7-p357上使用HTTP代理测试了不需要身份验证:

file = File.open('myfile.gz', 'w')
http = Net::HTTP.start('myproxy.com', '9293')
resp, data = http.get('ftp://login:password@ftp.website.com')
file.write(data) if resp.code == "200"
file.close unless file.nil?

来源

这应该给你一个很好的起点,让你自己解决剩下的问题。

为了让您继续,我将猜测您可以使用user:pass@myproxy.com作为基本验证,或者可能在您的get请求中发送Proxy-Authorization头。

最新更新