65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/falcon/command/virtual.rb', line 65
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
|