快速FTP服务器

6
我正在寻找一个快速、无需配置的FTP服务器。类似于ServeRack_dav这样的东西,但是用于FTP,可以通过运行命令来发布一个文件夹。有没有一些gem或其他工具可以做到这样的事情?
解决方案:
基于Wayne的ftpd gem,我创建了一个快速且易于使用的gem,名为Purvey
2个回答

8

ftpd gem 支持TLS,并配有文件系统驱动程序。与em-ftpd一样,您需要提供一个驱动程序,但该驱动程序不需要做太多工作。以下是一个最简单的FTP服务器示例,它接受任何用户名/密码,并从临时目录中提供文件:

require 'ftpd'
require 'tmpdir'

class Driver

  def initialize(temp_dir)
    @temp_dir = temp_dir
  end

  def authenticate(user, password)
    true
  end

  def file_system(user)
    Ftpd::DiskFileSystem.new(@temp_dir)
  end

end

Dir.mktmpdir do |temp_dir|
  driver = Driver.new(temp_dir)
  server = Ftpd::FtpServer.new(driver)
  server.start
  puts "Server listening on port #{server.bound_port}"
  gets
end
注意:此示例允许FTP客户端上传、删除、重命名等操作。
要启用TLS:
include Ftpd::InsecureCertificate
...
server.certfile_path = insecure_certfile_path
server.tls = :explicit
server.start

声明: 我是ftpd的作者和现任维护者


太好了!我会将其作为插拔式宝石的基础。谢谢! - alf
@alfonso,请让我知道这对你起作用了吗。我的电子邮件地址在 README 中。顺便说一下,我应该提到这个例子允许写入/删除等操作。下一个版本将拥有一个 ReadOnlyDiskFileSystem。 - Wayne Conrad
宝石已创建!它叫做Purvey。我还为运行ftpd规范时遇到的一个小问题向您发送了拉取请求。如果您也感兴趣,欢迎为Purvey做出贡献 :) 感谢您的帮助! - alf

2

谢谢!看起来不错,但我需要编写一个驱动程序才能将其与实际文件系统一起使用。你知道是否已经存在这个驱动程序吗?如果没有的话,这似乎是一个有趣的开源项目 :) - alf
好的,这不是一个即插即用的宝石,但你可以在Git网站em-ftpd/examples/fake.rb上找到这样一个驱动程序的示例。 - peter
1
@peter 你好,这个轻量级FTP服务器支持安全连接吗?可能是FTPS吗? - cypronmaya
不这么认为,没有找到任何参考资料。 - peter
@cypronmaya:你有想到任何方法来实现这个吗?比如支持FTPS? - d34th4ck3r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接