2012-05-04 126 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