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
Świetnie! Użyję tego jako podstawy klejnotu typu plug-and-play. Dzięki! – alf
@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. –
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