2012-05-04 124 views
5

我正在寻找一个快速,无配置的FTP服务器。与ServeRack_dav完全相同,但对于只能通过运行命令发布文件夹的FTP。 有没有宝石或什么可以做这样的事情?快速FTP服务器

解决方案

基于韦恩的ftpd的宝石,我创建了一个快速且易于使用的宝石叫Purvey

回答

7

ftpd宝石支持TLS,并配备了一个文件系统驱动程序轻量级FTP服务器架构。像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时的作者和当前的维护者

+0

太棒了!我将用它作为即插即用宝石的基础。谢谢! – alf

+0

@alfonso,请让我知道它是如何为你工作的。我的电子邮件地址在README中。顺便说一句,我应该提到这个例子*允许写/删除/等。下一个版本将有一个ReadOnlyDiskFileSystem。 –

+0

宝石创建!它被称为[Purvey](https://github.com/alfonsocora/purvey)。我还向您发送了一个针对我在运行ftpd规格时遇到的小问题的请求。如果您感觉自己也愿意为Purvey做出贡献:)感谢您的帮助! – alf

2

看看这个宝石,建立在EventMachine的 https://github.com/yob/em-ftpd

+0

谢谢!看起来不错,但我需要编写一个驱动程序才能将它用于真正的文件系统。你知道这个驱动程序是否已经存在?听起来像是一个感兴趣的开源项目,如果它没有:) – alf

+0

好吧,它不是一个插件,去宝石,但你有一个这样的驱动程序在Git站点的例子em-ftpd/examples/fake.rb – peter

+1

@peter hi ,这个LightWeight FTP服务器是否支持安全连接? ftps可能是? – cypronmaya