2012-05-04 22 views
5

Szukam szybkiego, bezkonfliktowego serwera FTP. Coś dokładnie takiego, jak Serve lub Rack_dav, ale dla FTP, który może opublikować folder po prostu wykonując polecenie. Czy jest jakiś klejnot, czy coś takiego?Szybki serwer FTP

Rozwiązanie

podstawie Wayne'a ftpd gem, stworzyłem szybki i łatwy w użyciu gem nazwie Purvey.

Odpowiedz

7

ftpd gem obsługuje TLS, i jest wyposażony w sterownik systemu plików. Podobnie jak em-ftpd, dostarczasz sterownik, ale ten sterownik nie musi wiele robić. Oto gołe minimum serwer FTP, który przyjmuje jakąkolwiek nazwę użytkownika/hasło, a służy pliki z katalogu tymczasowego:

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 

UWAGA: Ten przykład pozwala klient FTP do przesyłania, usuwać itd

Aby włączyć TLS:

include Ftpd::InsecureCertificate 
... 
server.certfile_path = insecure_certfile_path 
server.tls = :explicit 
server.start 

ujawnienie: jestem ftpd autora i aktualny opiekun

+0

Świetnie! Użyję tego jako podstawy klejnotu typu plug-and-play. Dzięki! – alf

+0

@alfonso, proszę dać mi znać, jak to działa dla Ciebie. Mój adres e-mail znajduje się w pliku README. Przy okazji, powinienem wspomnieć, że ten przykład * pozwala zapisywać/usuwać/itp. *. Następne wydanie będzie miało ReadOnlyDiskFileSystem. –

+0

klej stworzony! Nazywa się [Purvey] (https://github.com/alfonsocora/purvey). Wysłałem Ci także prośbę o wyciągnięcie małego problemu, który miałem podczas pracy ze specyfikacją dla ftpd. Zapraszam do udziału w Purvey, jeśli czujesz się zbyt :) Dzięki za pomoc! – alf

2

spojrzeć na ten klejnot, Lightweight ramach serwera FTP zbudowany na EventMachine https://github.com/yob/em-ftpd

+0

Dzięki! Wygląda dobrze, ale muszę napisać sterownik, aby użyć go z prawdziwym systemem plików. Czy wiesz, czy ten sterownik już istnieje? Brzmi jak interesujący projekt open source, jeśli nie :) – alf

+0

cóż, to nie jest plug and go gem, ale masz przykład takiego sterownika na stronie Git em-ftpd/examples/fake.rb – peter

+1

@peter hi , czy ten serwer FTP LightWeight obsługuje bezpieczne połączenie? ftps może być? – cypronmaya