class Falcon::Command::Virtual
def client
def client Async::HTTP::Client.new(client_endpoint) end
def invoke(parent)
def invoke(parent) container = run(parent.verbose?) container.wait end
def load_app(path, verbose)
def load_app(path, verbose) config = File.join(path, CONFIG_RU) rack_app, options = Rack::Builder.parse_file(config) return Server.middleware(rack_app, verbose: verbose), options end
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