passenger 6.1.3 → 6.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +20 -1
- data/Rakefile +1 -1
- data/build/agent.rb +15 -15
- data/build/apache2.rb +18 -18
- data/build/basics.rb +1 -1
- data/build/common_library.rb +21 -20
- data/build/cxx_tests.rb +19 -19
- data/build/integration_tests.rb +3 -3
- data/build/misc.rb +10 -9
- data/build/nginx.rb +12 -12
- data/build/oxt_tests.rb +7 -7
- data/build/packaging.rb +11 -11
- data/build/ruby_extension.rb +3 -3
- data/build/ruby_tests.rb +1 -1
- data/build/schema_printer.rb +13 -13
- data/build/support/cplusplus.rb +8 -8
- data/build/support/cxx_dependency_map.rb +622 -622
- data/build/support/general.rb +0 -1
- data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +4 -4
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
- data/build/test_basics.rb +4 -4
- data/dev/colorize-logs +6 -6
- data/dev/copy_boost_headers +8 -8
- data/dev/index_cxx_dependencies.rb +6 -6
- data/dev/install_scripts_bootstrap_code.rb +4 -4
- data/dev/list_tests +2 -2
- data/dev/nginx_version_sha256 +2 -2
- data/dev/parse_file_descriptor_log +1 -1
- data/passenger.gemspec +5 -4
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
- data/src/helper-scripts/download_binaries/extconf.rb +8 -8
- data/src/helper-scripts/meteor-loader.rb +39 -39
- data/src/helper-scripts/rack-loader.rb +1 -0
- data/src/helper-scripts/rack-preloader.rb +2 -1
- data/src/ruby_native_extension/extconf.rb +27 -28
- data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +27 -27
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +9 -8
- data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +24 -24
- data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +526 -526
- data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +105 -105
- data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +17 -17
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +18 -18
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +10 -10
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -12
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +24 -23
- data/src/ruby_supportlib/phusion_passenger/config/main.rb +26 -26
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +4 -4
- data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +14 -13
- data/src/ruby_supportlib/phusion_passenger/config/utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +34 -33
- data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +35 -36
- data/src/ruby_supportlib/phusion_passenger/message_channel.rb +17 -16
- data/src/ruby_supportlib/phusion_passenger/message_client.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/native_support.rb +42 -42
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +548 -548
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +85 -84
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +13 -13
- data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +65 -65
- data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +10 -10
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +6 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/utilities.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +14 -13
- data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +27 -26
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +16 -16
- data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +29 -28
- data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info.rb +37 -36
- data/src/ruby_supportlib/phusion_passenger/plugin.rb +3 -3
- data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +16 -15
- data/src/ruby_supportlib/phusion_passenger/public_api.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +5 -4
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +8 -7
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +9 -11
- data/src/ruby_supportlib/phusion_passenger/request_handler.rb +27 -26
- data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +6 -5
- data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +13 -13
- data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +351 -351
- data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +11 -11
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +13 -14
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +21 -23
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +4 -4
- data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +5 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/download.rb +12 -11
- data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +9 -9
- data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +8 -7
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +4 -4
- data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/shellwords.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +13 -12
- data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -3
- data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/utils.rb +17 -16
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +2 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +13 -13
- data/src/ruby_supportlib/phusion_passenger.rb +27 -26
- metadata +3 -3
|
@@ -29,10 +29,10 @@ module PhusionPassenger
|
|
|
29
29
|
# Core of the `passenger` command (Passenger Standalone). Dispatches a subcommand to a specific class.
|
|
30
30
|
module Standalone
|
|
31
31
|
KNOWN_COMMANDS = [
|
|
32
|
-
["start", "StartCommand"],
|
|
33
|
-
["stop", "StopCommand"],
|
|
34
|
-
["status", "StatusCommand"],
|
|
35
|
-
["version", "VersionCommand"]
|
|
32
|
+
[ "start", "StartCommand" ],
|
|
33
|
+
[ "stop", "StopCommand" ],
|
|
34
|
+
[ "status", "StatusCommand" ],
|
|
35
|
+
[ "version", "VersionCommand" ],
|
|
36
36
|
]
|
|
37
37
|
|
|
38
38
|
def self.run!(argv)
|
|
@@ -69,15 +69,15 @@ module PhusionPassenger
|
|
|
69
69
|
|
|
70
70
|
private
|
|
71
71
|
def self.help_requested?(argv)
|
|
72
|
-
|
|
72
|
+
argv.size == 1 && (argv[0] == "--help" || argv[0] == "-h" || argv[0] == "help")
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def self.version_requested?(argv)
|
|
76
|
-
|
|
76
|
+
argv.size == 1 && (argv[0] == "--version" || argv[0] == "-v")
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def self.show_version
|
|
80
|
-
command_class, new_argv = lookup_command_class_by_argv(["version"])
|
|
80
|
+
command_class, new_argv = lookup_command_class_by_argv([ "version" ])
|
|
81
81
|
command_class.new(new_argv).run
|
|
82
82
|
end
|
|
83
83
|
|
|
@@ -86,18 +86,18 @@ module PhusionPassenger
|
|
|
86
86
|
|
|
87
87
|
# Convert "passenger help <COMMAND>" to "passenger <COMMAND> --help".
|
|
88
88
|
if argv.size == 2 && argv[0] == "help"
|
|
89
|
-
argv = [argv[1], "--help"]
|
|
89
|
+
argv = [ argv[1], "--help" ]
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
KNOWN_COMMANDS.each do |props|
|
|
93
93
|
if argv[0] == props[0]
|
|
94
94
|
command_class = lookup_command_class_by_class_name(props[1])
|
|
95
95
|
new_argv = argv[1 .. -1]
|
|
96
|
-
return [command_class, new_argv]
|
|
96
|
+
return [ command_class, new_argv ]
|
|
97
97
|
end
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
nil
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
def self.lookup_command_class_by_class_name(class_name)
|
|
@@ -107,7 +107,7 @@ module PhusionPassenger
|
|
|
107
107
|
base_name.sub!(/^_/, '')
|
|
108
108
|
base_name << ".rb"
|
|
109
109
|
PhusionPassenger.require_passenger_lib("standalone/#{base_name}")
|
|
110
|
-
|
|
110
|
+
PhusionPassenger::Standalone.const_get(class_name)
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
|
+
|
|
2
3
|
# Phusion Passenger - https://www.phusionpassenger.com/
|
|
3
4
|
# Copyright (c) 2014-2025 Asynchronous B.V.
|
|
4
5
|
#
|
|
@@ -34,7 +35,6 @@ PhusionPassenger.require_passenger_lib 'utils/json'
|
|
|
34
35
|
module PhusionPassenger
|
|
35
36
|
module Standalone
|
|
36
37
|
class StartCommand
|
|
37
|
-
|
|
38
38
|
module BuiltinEngine
|
|
39
39
|
private
|
|
40
40
|
def start_engine_real
|
|
@@ -97,7 +97,7 @@ module PhusionPassenger
|
|
|
97
97
|
end
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
command << "#{@agent_exe} watchdog"
|
|
100
|
+
command << "#{@agent_exe} watchdog"
|
|
101
101
|
command << " --passenger-root #{Shellwords.escape PhusionPassenger.install_spec}"
|
|
102
102
|
command << " --daemonize"
|
|
103
103
|
command << " --no-user-switching"
|
|
@@ -195,27 +195,27 @@ module PhusionPassenger
|
|
|
195
195
|
command << " --EC --BU"
|
|
196
196
|
add_param(command, :core_file_descriptor_ulimit, "--core-file-descriptor-ulimit")
|
|
197
197
|
|
|
198
|
-
|
|
199
|
-
:
|
|
200
|
-
:
|
|
201
|
-
:
|
|
202
|
-
:
|
|
203
|
-
:
|
|
204
|
-
:
|
|
205
|
-
:
|
|
198
|
+
{
|
|
199
|
+
identifier: "#{AGENT_EXE} watchdog",
|
|
200
|
+
start_command: command,
|
|
201
|
+
ping_command: ping_spec,
|
|
202
|
+
pid_file: @options[:pid_file],
|
|
203
|
+
log_file: @options[:log_file],
|
|
204
|
+
start_timeout: 25,
|
|
205
|
+
stop_timeout: @options[:stop_timeout],
|
|
206
206
|
}
|
|
207
207
|
end
|
|
208
208
|
|
|
209
209
|
def listen_address(options = @options, for_ping_port = false)
|
|
210
210
|
if options[:socket_file]
|
|
211
|
-
|
|
211
|
+
"unix:#{options[:socket_file]}"
|
|
212
212
|
else
|
|
213
|
-
|
|
213
|
+
"tcp://" + compose_ip_and_port(options[:address], options[:port])
|
|
214
214
|
end
|
|
215
215
|
end
|
|
216
216
|
|
|
217
217
|
def prestart_urls_json
|
|
218
|
-
PhusionPassenger::Utils::JSON.generate([listen_url(@apps[0])])
|
|
218
|
+
PhusionPassenger::Utils::JSON.generate([ listen_url(@apps[0]) ])
|
|
219
219
|
end
|
|
220
220
|
|
|
221
221
|
def add_param(command, option_name, param_name)
|
|
@@ -274,7 +274,6 @@ module PhusionPassenger
|
|
|
274
274
|
|
|
275
275
|
#####################
|
|
276
276
|
end # module BuiltinEngine
|
|
277
|
-
|
|
278
277
|
end # module StartCommand
|
|
279
278
|
end # module Standalone
|
|
280
279
|
end # module PhusionPassenger
|
|
@@ -35,7 +35,6 @@ PhusionPassenger.require_passenger_lib 'utils/json'
|
|
|
35
35
|
module PhusionPassenger
|
|
36
36
|
module Standalone
|
|
37
37
|
class StartCommand
|
|
38
|
-
|
|
39
38
|
module NginxEngine
|
|
40
39
|
private
|
|
41
40
|
def start_engine_real
|
|
@@ -121,7 +120,7 @@ module PhusionPassenger
|
|
|
121
120
|
"message returned by the Nginx engine is:\n\n" \
|
|
122
121
|
"#{output}\n\n"
|
|
123
122
|
debug_log_file = Utils::TmpIO.new('passenger-standalone',
|
|
124
|
-
:
|
|
123
|
+
suffix: '.log', binary: true, unlink_immediately: false)
|
|
125
124
|
begin
|
|
126
125
|
File.open(path, 'rb') do |f|
|
|
127
126
|
debug_log_file.write(f.read)
|
|
@@ -149,31 +148,31 @@ module PhusionPassenger
|
|
|
149
148
|
|
|
150
149
|
def build_daemon_controller_options
|
|
151
150
|
if @options[:socket_file]
|
|
152
|
-
ping_spec = [:unix, @options[:socket_file]]
|
|
151
|
+
ping_spec = [ :unix, @options[:socket_file] ]
|
|
153
152
|
else
|
|
154
|
-
ping_spec = [:tcp, @options[:address], @options[:port]]
|
|
153
|
+
ping_spec = [ :tcp, @options[:address], @options[:port] ]
|
|
155
154
|
end
|
|
156
|
-
|
|
157
|
-
:
|
|
158
|
-
:
|
|
155
|
+
{
|
|
156
|
+
identifier: 'Nginx',
|
|
157
|
+
start_command: "#{Shellwords.escape @nginx_binary} " \
|
|
159
158
|
"-c #{Shellwords.escape nginx_config_path} " \
|
|
160
159
|
"-p #{Shellwords.escape @working_dir}",
|
|
161
|
-
:
|
|
160
|
+
stop_command: "#{Shellwords.escape @nginx_binary} " \
|
|
162
161
|
"-c #{Shellwords.escape nginx_config_path} " \
|
|
163
162
|
"-p #{Shellwords.escape @working_dir} " \
|
|
164
163
|
'-s quit',
|
|
165
|
-
:
|
|
166
|
-
:
|
|
167
|
-
:
|
|
168
|
-
:
|
|
169
|
-
:
|
|
170
|
-
:
|
|
171
|
-
:
|
|
164
|
+
ping_command: ping_spec,
|
|
165
|
+
pid_file: @options[:pid_file],
|
|
166
|
+
log_file: @options[:log_file],
|
|
167
|
+
start_timeout: 25,
|
|
168
|
+
stop_timeout: @options[:stop_timeout],
|
|
169
|
+
log_file_activity_timeout: 12,
|
|
170
|
+
dont_stop_if_pid_file_invalid: true,
|
|
172
171
|
}
|
|
173
172
|
end
|
|
174
173
|
|
|
175
174
|
def nginx_config_path
|
|
176
|
-
|
|
175
|
+
"#{@working_dir}/nginx.conf"
|
|
177
176
|
end
|
|
178
177
|
|
|
179
178
|
def write_nginx_config_file(path)
|
|
@@ -200,15 +199,15 @@ module PhusionPassenger
|
|
|
200
199
|
|
|
201
200
|
def nginx_config_template_filename
|
|
202
201
|
if @options[:nginx_config_template]
|
|
203
|
-
|
|
202
|
+
@options[:nginx_config_template]
|
|
204
203
|
else
|
|
205
|
-
|
|
204
|
+
File.join(PhusionPassenger.resources_dir,
|
|
206
205
|
"templates", "standalone", "config.erb")
|
|
207
206
|
end
|
|
208
207
|
end
|
|
209
208
|
|
|
210
209
|
def debugging?
|
|
211
|
-
|
|
210
|
+
ENV['PASSENGER_DEBUG'] && !ENV['PASSENGER_DEBUG'].empty?
|
|
212
211
|
end
|
|
213
212
|
|
|
214
213
|
def next_eoutvar
|
|
@@ -238,7 +237,7 @@ module PhusionPassenger
|
|
|
238
237
|
def default_group_for(username)
|
|
239
238
|
user = Etc.getpwnam(username)
|
|
240
239
|
group = Etc.getgrgid(user.gid)
|
|
241
|
-
|
|
240
|
+
group.name
|
|
242
241
|
end
|
|
243
242
|
|
|
244
243
|
def nginx_http_option(option_name)
|
|
@@ -318,7 +317,7 @@ module PhusionPassenger
|
|
|
318
317
|
def default_group_for(username)
|
|
319
318
|
user = Etc.getpwnam(username)
|
|
320
319
|
group = Etc.getgrgid(user.gid)
|
|
321
|
-
|
|
320
|
+
group.name
|
|
322
321
|
end
|
|
323
322
|
|
|
324
323
|
def serialize_strset(*items)
|
|
@@ -328,12 +327,11 @@ module PhusionPassenger
|
|
|
328
327
|
else
|
|
329
328
|
null = "\0"
|
|
330
329
|
end
|
|
331
|
-
|
|
330
|
+
[ items.join(null) ].pack('m*').gsub("\n", "").strip
|
|
332
331
|
end
|
|
333
332
|
|
|
334
333
|
#####################
|
|
335
334
|
end # module NginxEngine
|
|
336
|
-
|
|
337
335
|
end # module StartCommand
|
|
338
336
|
end # module Standalone
|
|
339
337
|
end # module PhusionPassenger
|
|
@@ -235,7 +235,7 @@ module PhusionPassenger
|
|
|
235
235
|
# quickly switches to a mirror.
|
|
236
236
|
"--connect-timeout", "0",
|
|
237
237
|
"--engine", @options[:engine],
|
|
238
|
-
"--idle-timeout", "0"
|
|
238
|
+
"--idle-timeout", "0",
|
|
239
239
|
]
|
|
240
240
|
if @options[:auto]
|
|
241
241
|
args << "--auto"
|
|
@@ -398,13 +398,13 @@ module PhusionPassenger
|
|
|
398
398
|
end
|
|
399
399
|
|
|
400
400
|
def touch_temp_dir_in_background
|
|
401
|
-
command = [@agent_exe,
|
|
401
|
+
command = [ @agent_exe,
|
|
402
402
|
"temp-dir-toucher",
|
|
403
403
|
@working_dir,
|
|
404
404
|
"--cleanup",
|
|
405
405
|
"--daemonize",
|
|
406
406
|
"--pid-file", "#{@working_dir}/temp_dir_toucher.pid",
|
|
407
|
-
"--log-file", @options[:log_file]]
|
|
407
|
+
"--log-file", @options[:log_file] ]
|
|
408
408
|
command << "--user" << @options[:user] unless @options[:user].nil?
|
|
409
409
|
command << "--nginx-pid" << @engine.pid.to_s if @options[:engine] == 'nginx'
|
|
410
410
|
result = system(*command)
|
|
@@ -487,7 +487,7 @@ module PhusionPassenger
|
|
|
487
487
|
end
|
|
488
488
|
|
|
489
489
|
def should_wait_until_engine_has_exited?
|
|
490
|
-
|
|
490
|
+
!@options[:daemonize] || @app_finder.multi_mode?
|
|
491
491
|
end
|
|
492
492
|
|
|
493
493
|
|
|
@@ -110,11 +110,11 @@ module PhusionPassenger
|
|
|
110
110
|
def create_controller
|
|
111
111
|
Standalone::ControlUtils.require_daemon_controller
|
|
112
112
|
@controller = DaemonController.new(
|
|
113
|
-
:
|
|
114
|
-
:
|
|
115
|
-
:
|
|
116
|
-
:
|
|
117
|
-
:
|
|
113
|
+
identifier: "#{PROGRAM_NAME} Standalone engine",
|
|
114
|
+
start_command: "true", # Doesn't matter
|
|
115
|
+
ping_command: "true", # Doesn't matter
|
|
116
|
+
pid_file: @options[:pid_file],
|
|
117
|
+
log_file: "/dev/null"
|
|
118
118
|
)
|
|
119
119
|
end
|
|
120
120
|
end
|
|
@@ -126,12 +126,12 @@ module PhusionPassenger
|
|
|
126
126
|
def create_controller
|
|
127
127
|
Standalone::ControlUtils.require_daemon_controller
|
|
128
128
|
@controller = DaemonController.new(
|
|
129
|
-
:
|
|
130
|
-
:
|
|
131
|
-
:
|
|
132
|
-
:
|
|
133
|
-
:
|
|
134
|
-
:
|
|
129
|
+
identifier: "#{PROGRAM_NAME} Standalone engine",
|
|
130
|
+
start_command: "true", # Doesn't matter
|
|
131
|
+
ping_command: "true", # Doesn't matter
|
|
132
|
+
pid_file: @options[:pid_file],
|
|
133
|
+
log_file: "/dev/null",
|
|
134
|
+
stop_timeout: @options[:stop_timeout]
|
|
135
135
|
)
|
|
136
136
|
end
|
|
137
137
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
|
+
|
|
2
3
|
# Phusion Passenger - https://www.phusionpassenger.com/
|
|
3
4
|
# Copyright (c) 2013-2025 Asynchronous B.V.
|
|
4
5
|
#
|
|
@@ -63,8 +64,8 @@ module PhusionPassenger
|
|
|
63
64
|
# Set to nil to disable this timeout. Default: nil.
|
|
64
65
|
def download(url, output, options = {})
|
|
65
66
|
options = {
|
|
66
|
-
:
|
|
67
|
-
:
|
|
67
|
+
connect_timeout: 4,
|
|
68
|
+
idle_timeout: 5,
|
|
68
69
|
}.merge(options)
|
|
69
70
|
logger = options[:logger] || Logger.new(STDERR)
|
|
70
71
|
|
|
@@ -78,22 +79,22 @@ module PhusionPassenger
|
|
|
78
79
|
end
|
|
79
80
|
|
|
80
81
|
if PlatformInfo.find_command("curl")
|
|
81
|
-
|
|
82
|
+
download_with_curl(logger, url, output, options)
|
|
82
83
|
elsif PlatformInfo.find_command("wget")
|
|
83
|
-
|
|
84
|
+
download_with_wget(logger, url, output, options)
|
|
84
85
|
else
|
|
85
86
|
logger.error "Could not download #{url}: no download tool found (curl or wget required)"
|
|
86
|
-
|
|
87
|
+
false
|
|
87
88
|
end
|
|
88
89
|
end
|
|
89
90
|
|
|
90
91
|
private
|
|
91
92
|
def basename_from_url(url)
|
|
92
|
-
|
|
93
|
+
url.sub(/.*\//, '')
|
|
93
94
|
end
|
|
94
95
|
|
|
95
96
|
def download_with_curl(logger, url, output, options)
|
|
96
|
-
command = ["curl", "-f", "-L", "-o", output]
|
|
97
|
+
command = [ "curl", "-f", "-L", "-o", output ]
|
|
97
98
|
if options[:show_progress]
|
|
98
99
|
command << "-#"
|
|
99
100
|
else
|
|
@@ -167,15 +168,15 @@ module PhusionPassenger
|
|
|
167
168
|
end
|
|
168
169
|
end
|
|
169
170
|
|
|
170
|
-
|
|
171
|
+
result
|
|
171
172
|
end
|
|
172
173
|
|
|
173
174
|
def remove_curl_output_prefix(line)
|
|
174
|
-
|
|
175
|
+
line.gsub(/^curl: (\([0-9]+\) )?/, '')
|
|
175
176
|
end
|
|
176
177
|
|
|
177
178
|
def download_with_wget(logger, url, output, options)
|
|
178
|
-
command = ["wget", "--tries=1", "-O", output]
|
|
179
|
+
command = [ "wget", "--tries=1", "-O", output ]
|
|
179
180
|
if !options[:show_progress]
|
|
180
181
|
command << "-nv"
|
|
181
182
|
end
|
|
@@ -219,7 +220,7 @@ module PhusionPassenger
|
|
|
219
220
|
end
|
|
220
221
|
end
|
|
221
222
|
|
|
222
|
-
|
|
223
|
+
result
|
|
223
224
|
end
|
|
224
225
|
end
|
|
225
226
|
|
|
@@ -64,11 +64,11 @@ module PhusionPassenger
|
|
|
64
64
|
filenames = filenames.map do |filename|
|
|
65
65
|
filename.to_s
|
|
66
66
|
end
|
|
67
|
-
|
|
67
|
+
_new(filenames, termination_pipe)
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
def self.opens_files?
|
|
71
|
-
|
|
71
|
+
true
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
else
|
|
@@ -76,7 +76,7 @@ module PhusionPassenger
|
|
|
76
76
|
attr_accessor :poll_interval
|
|
77
77
|
|
|
78
78
|
def self.opens_files?
|
|
79
|
-
|
|
79
|
+
false
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def initialize(filenames, termination_pipe = nil)
|
|
@@ -107,7 +107,7 @@ module PhusionPassenger
|
|
|
107
107
|
while true
|
|
108
108
|
if changed?
|
|
109
109
|
return true
|
|
110
|
-
elsif select([@termination_pipe], nil, nil, @poll_interval)
|
|
110
|
+
elsif select([ @termination_pipe ], nil, nil, @poll_interval)
|
|
111
111
|
return nil
|
|
112
112
|
end
|
|
113
113
|
end
|
|
@@ -151,9 +151,9 @@ module PhusionPassenger
|
|
|
151
151
|
end
|
|
152
152
|
end
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
count != @subfiles.size
|
|
155
155
|
rescue Errno::EACCES, Errno::ENOENT
|
|
156
|
-
|
|
156
|
+
true
|
|
157
157
|
end
|
|
158
158
|
end
|
|
159
159
|
|
|
@@ -170,14 +170,14 @@ module PhusionPassenger
|
|
|
170
170
|
else
|
|
171
171
|
mtime_changed = false
|
|
172
172
|
end
|
|
173
|
-
|
|
173
|
+
@stat.ino != new_stat.ino || @stat.ftype != new_stat.ftype || mtime_changed
|
|
174
174
|
rescue Errno::EACCES, Errno::ENOENT
|
|
175
|
-
|
|
175
|
+
true
|
|
176
176
|
end
|
|
177
177
|
end
|
|
178
178
|
|
|
179
179
|
def changed?
|
|
180
|
-
|
|
180
|
+
@dirs.any? { |dir_info| dir_info.changed? } ||
|
|
181
181
|
@files.any? { |file_info| file_info.changed? }
|
|
182
182
|
end
|
|
183
183
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: binary
|
|
2
|
+
|
|
2
3
|
# Phusion Passenger - https://www.phusionpassenger.com/
|
|
3
4
|
# Copyright (c) 2010-2025 Asynchronous B.V.
|
|
4
5
|
#
|
|
@@ -47,24 +48,24 @@ module PhusionPassenger
|
|
|
47
48
|
end
|
|
48
49
|
|
|
49
50
|
def ip_count
|
|
50
|
-
|
|
51
|
+
@ips.size
|
|
51
52
|
end
|
|
52
53
|
|
|
53
54
|
def host_count
|
|
54
|
-
|
|
55
|
+
@host_names.size
|
|
55
56
|
end
|
|
56
57
|
|
|
57
58
|
def resolve(host_name)
|
|
58
59
|
if host_name.downcase == "localhost"
|
|
59
|
-
|
|
60
|
+
"127.0.0.1"
|
|
60
61
|
else
|
|
61
|
-
|
|
62
|
+
@host_names[host_name.downcase]
|
|
62
63
|
end
|
|
63
64
|
end
|
|
64
65
|
|
|
65
66
|
def resolves_to_localhost?(hostname)
|
|
66
67
|
ip = resolve(hostname)
|
|
67
|
-
|
|
68
|
+
ip == "127.0.0.1" || ip == "::1" || ip == "0.0.0.0"
|
|
68
69
|
end
|
|
69
70
|
|
|
70
71
|
def add_group_data(marker, data)
|
|
@@ -113,7 +114,7 @@ module PhusionPassenger
|
|
|
113
114
|
line = line.strip
|
|
114
115
|
return nil if line.empty?
|
|
115
116
|
ip, *host_names = line.split(/[ \t]+/)
|
|
116
|
-
|
|
117
|
+
[ ip, host_names ]
|
|
117
118
|
end
|
|
118
119
|
|
|
119
120
|
def find_line(start_index, content)
|
|
@@ -125,7 +126,7 @@ module PhusionPassenger
|
|
|
125
126
|
i += 1
|
|
126
127
|
end
|
|
127
128
|
end
|
|
128
|
-
|
|
129
|
+
nil
|
|
129
130
|
end
|
|
130
131
|
end
|
|
131
132
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
|
+
|
|
2
3
|
#
|
|
3
4
|
## Stupid small pure Ruby JSON parser & generator.
|
|
4
5
|
#
|
|
@@ -55,7 +56,7 @@ class JSON
|
|
|
55
56
|
def_delegators :scanner, :scan, :matched
|
|
56
57
|
private :s, :scan, :matched
|
|
57
58
|
|
|
58
|
-
def initialize
|
|
59
|
+
def initialize(data)
|
|
59
60
|
@scanner = PhusionPassenger::Utils::StringScanner.new data.to_s
|
|
60
61
|
end
|
|
61
62
|
|
|
@@ -105,7 +106,7 @@ class JSON
|
|
|
105
106
|
ary
|
|
106
107
|
end
|
|
107
108
|
|
|
108
|
-
SPEC = {'b' => "\b", 'f' => "\f", 'n' => "\n", 'r' => "\r", 't' => "\t"}
|
|
109
|
+
SPEC = { 'b' => "\b", 'f' => "\f", 'n' => "\n", 'r' => "\r", 't' => "\t" }
|
|
109
110
|
UNI = 'u'; CODE = /[a-fA-F0-9]{4}/
|
|
110
111
|
STR = /"/; STE = '"'
|
|
111
112
|
ESC = '\\'
|
|
@@ -133,7 +134,7 @@ class JSON
|
|
|
133
134
|
raise "parse error at: #{scan(/.{1,20}/m).inspect}"
|
|
134
135
|
end
|
|
135
136
|
|
|
136
|
-
def repeat_until
|
|
137
|
+
def repeat_until(reg)
|
|
137
138
|
until scan(reg)
|
|
138
139
|
pos = s.pos
|
|
139
140
|
yield
|
|
@@ -157,7 +158,7 @@ class JSON
|
|
|
157
158
|
end
|
|
158
159
|
end
|
|
159
160
|
|
|
160
|
-
ESC_MAP = Hash.new {|h,k| k }.update \
|
|
161
|
+
ESC_MAP = Hash.new { |h, k| k }.update \
|
|
161
162
|
"\r" => 'r',
|
|
162
163
|
"\n" => 'n',
|
|
163
164
|
"\f" => 'f',
|
|
@@ -167,7 +168,7 @@ class JSON
|
|
|
167
168
|
def quote(str) %("#{str}") end
|
|
168
169
|
|
|
169
170
|
def generate_String(str)
|
|
170
|
-
quote str.gsub(/[\r\n\f\t\b"\\]/) { "\\#{ESC_MAP[$&]}"}
|
|
171
|
+
quote str.gsub(/[\r\n\f\t\b"\\]/) { "\\#{ESC_MAP[$&]}" }
|
|
171
172
|
end
|
|
172
173
|
|
|
173
174
|
def generate_VersionComparer(vc)
|
|
@@ -188,7 +189,7 @@ class JSON
|
|
|
188
189
|
|
|
189
190
|
def generate_NilClass(*) 'null' end
|
|
190
191
|
|
|
191
|
-
def generate_Array(ary) '[%s]' % ary.map {|o| generate_type(o) }.join(', ') end
|
|
192
|
+
def generate_Array(ary) '[%s]' % ary.map { |o| generate_type(o) }.join(', ') end
|
|
192
193
|
|
|
193
194
|
def generate_Hash(hash)
|
|
194
195
|
'{%s}' % hash.map { |key, value|
|
|
@@ -35,12 +35,12 @@ module PhusionPassenger
|
|
|
35
35
|
# Split the given string into an hash. Keys and values are obtained by splitting the
|
|
36
36
|
# string using the null character as the delimitor.
|
|
37
37
|
def split_by_null_into_hash(data)
|
|
38
|
-
|
|
38
|
+
PhusionPassenger::NativeSupport.split_by_null_into_hash(data)
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
# Wrapper for getrusage().
|
|
42
42
|
def process_times
|
|
43
|
-
|
|
43
|
+
PhusionPassenger::NativeSupport.process_times
|
|
44
44
|
end
|
|
45
45
|
else
|
|
46
46
|
NULL = "\0".freeze
|
|
@@ -51,12 +51,12 @@ module PhusionPassenger
|
|
|
51
51
|
def split_by_null_into_hash(data)
|
|
52
52
|
args = data.split(NULL, -1)
|
|
53
53
|
args.pop
|
|
54
|
-
|
|
54
|
+
Hash[*args]
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def process_times
|
|
58
58
|
times = Process.times
|
|
59
|
-
|
|
59
|
+
ProcessTimes.new((times.utime * 1_000_000).to_i,
|
|
60
60
|
(times.stime * 1_000_000).to_i)
|
|
61
61
|
end
|
|
62
62
|
end
|