From c572522f43c0760383faab1039f88dcce70ca828 Mon Sep 17 00:00:00 2001 From: Alexey Berezhok Date: Tue, 17 Dec 2024 23:47:00 +0300 Subject: [PATCH] Added passeneg manager. Part 5 --- func/domain.sh | 16 +++++++ func_ruby/ext-modules/passenger_manager.mod | 9 +++- .../payload/passenger_manager/passenger.stpl | 48 +++++++++++++++++++ .../payload/passenger_manager/passenger.tpl | 33 +++++++++++++ func_ruby/modules.rb | 7 ++- web/templates/pages/edit_web.php | 4 +- 6 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 func_ruby/ext-modules/payload/passenger_manager/passenger.stpl create mode 100644 func_ruby/ext-modules/payload/passenger_manager/passenger.tpl diff --git a/func/domain.sh b/func/domain.sh index a97b509..5dd9f43 100644 --- a/func/domain.sh +++ b/func/domain.sh @@ -289,6 +289,22 @@ add_web_config() { domain_idn=$domain format_domain_idn + PASS_TPL="" + #Passenger generator + if [ -e /usr/local/hestia/bin/v-ext-modules ]; then + res=$(/usr/local/hestia/bin/v-ext-modules state passenger_manager | tail -n 1) + if [ -n "$res" ]; then + enabled=$(echo "$res" | grep enabled) + if [ -n "$enabled" ]; then + ruby_res=$(/usr/local/hestia/bin/v-ext-modules-run passenger_manager get_user_ruby "$domain" | tail -n1) + if [ -n "$ruby_res" ]; then + : + #TODO + fi + fi + fi + fi + WEBTPL_LOCATION="$WEBTPL/$1" if [ "$1" != "$PROXY_SYSTEM" ] && [ -n "$WEB_BACKEND" ] && [ -d "$WEBTPL_LOCATION/$WEB_BACKEND" ]; then if [ -f "$WEBTPL_LOCATION/$WEB_BACKEND/$2" ]; then diff --git a/func_ruby/ext-modules/passenger_manager.mod b/func_ruby/ext-modules/passenger_manager.mod index 8b52313..9509ee3 100644 --- a/func_ruby/ext-modules/passenger_manager.mod +++ b/func_ruby/ext-modules/passenger_manager.mod @@ -164,9 +164,16 @@ class PassengerWorker < Kernel::ModuleCoreWorker val = hestia_get_file_key_pair(dom_file, domain) result = Hash.new result["RUBY"] = val - hestia_print_array_of_hashes(result, format, "RUBY") + a_result = [] + a_result << result + hestia_print_array_of_hashes(a_result, format, "RUBY") ACTION_OK end + when "get_tpl_path" + result = [{ "RUBY_TPL" => get_module_paydata_dir }] + format = (args[1].nil? ? "shell" : args[1].strip) + hestia_print_array_of_hashes(result, format, "RUBY_TPL") + ACTION_OK else log_return("Unknown commands. #{args}") end diff --git a/func_ruby/ext-modules/payload/passenger_manager/passenger.stpl b/func_ruby/ext-modules/payload/passenger_manager/passenger.stpl new file mode 100644 index 0000000..3e82fc2 --- /dev/null +++ b/func_ruby/ext-modules/payload/passenger_manager/passenger.stpl @@ -0,0 +1,48 @@ +# Default Web Domain Template # +# DO NOT MODIFY THIS FILE! CHANGES WILL BE LOST WHEN REBUILDING DOMAINS # +#=========================================================================# + +server { + listen %ip%:%proxy_ssl_port% ssl; + server_name %domain_idn% %alias_idn%; + root %docroot% + error_log /var/log/%web_system%/domains/%domain%.error.log error; + + ssl_certificate %ssl_pem%; + ssl_certificate_key %ssl_key%; + ssl_stapling on; + ssl_stapling_verify on; + + # TLS 1.3 0-RTT anti-replay + if ($anti_replay = 307) { return 307 https://$host$request_uri; } + if ($anti_replay = 425) { return 425; } + + include %home%/%user%/conf/web/%domain%/nginx.hsts.conf*; + + location ~ /\.(?!well-known\/|file) { + deny all; + return 404; + } + + passenger_enabled on; + passenger_user %user%; + passenger_group %user%; + + location / { + passenger_base_uri /; + passenger_app_root %docroot%; + passenger_document_root %docroot%; + passenger_startup_file config.rb; + passenger_app_type rack; + } + + location /error/ { + alias %home%/%user%/web/%domain%/document_errors/; + } + + disable_symlinks if_not_owner from=%sdocroot%; + + proxy_hide_header Upgrade; + + include %home%/%user%/conf/web/%domain%/nginx.ssl.conf_*; +} \ No newline at end of file diff --git a/func_ruby/ext-modules/payload/passenger_manager/passenger.tpl b/func_ruby/ext-modules/payload/passenger_manager/passenger.tpl new file mode 100644 index 0000000..c373494 --- /dev/null +++ b/func_ruby/ext-modules/payload/passenger_manager/passenger.tpl @@ -0,0 +1,33 @@ +# Default Web Domain Template # +# DO NOT MODIFY THIS FILE! CHANGES WILL BE LOST WHEN REBUILDING DOMAINS # +#=========================================================================# + +server { + listen %ip%:%proxy_port%; + server_name %domain_idn% %alias_idn%; + root %docroot%; + error_log /var/log/%web_system%/domains/%domain%.error.log error; + + include %home%/%user%/conf/web/%domain%/nginx.forcessl.conf*; + + location ~ /\.(?!well-known\/|file) { + deny all; + return 404; + } + + passenger_enabled on; + passenger_user %user%; + passenger_group %user%; + + location / { + passenger_base_uri /; + passenger_app_root %docroot%; + passenger_document_root %docroot%; + passenger_startup_file config.rb; + passenger_app_type rack; + } + + disable_symlinks if_not_owner from=%docroot%; + + include %home%/%user%/conf/web/%domain%/nginx.conf_*; +} \ No newline at end of file diff --git a/func_ruby/modules.rb b/func_ruby/modules.rb index 1903694..42a8502 100644 --- a/func_ruby/modules.rb +++ b/func_ruby/modules.rb @@ -133,8 +133,13 @@ class Kernel::ModuleCoreWorker ACTION_OK end + def get_module_paydata_dir() + "#{Kernel::PluginConfiguration::MODULES_DATA_PATH}/#{self.class::MODULE_ID}/" + end + def get_module_paydata(file_path) - "#{Kernel::PluginConfiguration::MODULES_DATA_PATH}/#{self.class::MODULE_ID}/#{file_path}" + dir = get_module_paydata_dir + "#{dir}#{file_path}" end def get_module_conf(file_path) diff --git a/web/templates/pages/edit_web.php b/web/templates/pages/edit_web.php index c4f8a84..33f866d 100644 --- a/web/templates/pages/edit_web.php +++ b/web/templates/pages/edit_web.php @@ -477,7 +477,7 @@ if ($passenger_state == "enabled") {
> @@ -493,7 +493,7 @@ if ($passenger_state == "enabled") { $value) { echo "\t\t\t\t\n";