class Falcon::Command::Virtual
def run(verbose = false)
def run(verbose = false) hosts = Falcon::Hosts.new root = Dir.pwd sites.each do |path| name = File.basename(path) hosts.add(name) do |host| host.app_root = File.expand_path(path, root) if @options[:self_signed] host.self_signed!(name) else host.ssl_certificate_path = File.join(path, "ssl", "fullchain.pem") host.ssl_key_path = File.join(path, "ssl", "privkey.pem") end end end controller = Async::Container::Controller.new hosts.each do |name, host| if container = host.start controller << container end end controller << Async::Container::Forked.new do |task| proxy = hosts.proxy secure_endpoint = Async::HTTP::URLEndpoint.parse(@options[:bind_secure], ssl_context: hosts.ssl_context) Process.setproctitle("Falcon Proxy") proxy_server = Falcon::Server.new(proxy, secure_endpoint) proxy_server.run end controller << Async::Container::Forked.new do |task| redirection = hosts.redirection insecure_endpoint = Async::HTTP::URLEndpoint.parse(@options[:bind_insecure]) Process.setproctitle("Falcon Redirector") redirection_server = Falcon::Server.new(redirection, insecure_endpoint) redirection_server.run end Process.setproctitle("Falcon Controller") return controller end