From 4a10c586e1785c26a6da6f28288d6cc38dc5453d Mon Sep 17 00:00:00 2001 From: Alexey Berezhok Date: Wed, 11 Dec 2024 23:46:22 +0300 Subject: [PATCH] Added passenger_manager commands --- func_ruby/ext-modules/passenger_manager.mod | 31 +++++++++++- func_ruby/main.rb | 49 +++++++++++++++++++ .../edit/index.php | 8 +-- .../pages/extmodules_passenger_manager.php | 25 ++++++++++ 4 files changed, 108 insertions(+), 5 deletions(-) rename web/extm/{passenger_manger => passenger_manager}/edit/index.php (57%) create mode 100644 web/templates/pages/extmodules_passenger_manager.php diff --git a/func_ruby/ext-modules/passenger_manager.mod b/func_ruby/ext-modules/passenger_manager.mod index 4dd197b..ad85949 100644 --- a/func_ruby/ext-modules/passenger_manager.mod +++ b/func_ruby/ext-modules/passenger_manager.mod @@ -132,11 +132,40 @@ class PassengerWorker < Kernel::ModuleCoreWorker ACTION_OK end when "set_user_ruby" + domain = args[1] + ruby_ver = args[2] + if domain.nil? || ruby_ver.nil? + log_return("Domain or ruby version should be specified. #{args}") + else + if File.exist?(ruby_ver) + dom_file = get_module_conf("domains.conf") + hestia_save_file_key_pair(dom_file, domain, ruby_ver) + ACTION_OK + else + log_return("Ruby path doesn't exists. #{ruby_ver}") + end + end + when "disable_user" domain = args[1] if domain.nil? log_return("Domain should be specified. #{args}") else - #TODO + dom_file = get_module_conf("domains.conf") + hestia_save_file_key_pair(dom_file, domain, "") + ACTION_OK + end + when "get_user_ruby" + domain = args[1] + if domain.nil? + log_return("Domain should be specified. #{args}") + else + dom_file = get_module_conf("domains.conf") + format = (args[2].nil? ? "shell" : args[2].strip) + val = hestia_get_file_key_pair(dom_file, domain) + result = Hash.new + result["RUBY"] = val + hestia_print_array_of_hashes(result, format, "RUBY") + ACTION_OK end else log_return("Unknown commands. #{args}") diff --git a/func_ruby/main.rb b/func_ruby/main.rb index 24f08a5..edad552 100644 --- a/func_ruby/main.rb +++ b/func_ruby/main.rb @@ -246,3 +246,52 @@ def hestia_read_config_with_lock(config_file) end arr end + +def hestia_get_file_key_pair(file, key) + value = "" + if File.exist?(file) + File.open(file, File::RDONLY) do |f| + f.flock(File::LOCK_SH) + f.each do |line| + result = line.strip.split("=", 2) + if result.length > 1 + k = result[0].strip + v = result[1].strip + if k == key + value = v + break + end + end + end + end + end + value +end + +def hestia_save_file_key_pair(file, key, value) + File.open(file, File::RDWR | File::CREAT, 0600) do |f| + f.flock(File::LOCK_EX) + f.rewind + storage = {} + f.each do |line| + result = line.strip.split("=", 2) + if result.length > 1 + k = result[0].strip + v = result[1].strip + storage[k] = v + end + end + if value.strip == "" + if storage.key?(key.strip) + storage.delete(key.strip) + end + else + storage[key.strip] = value.strip + end + f.rewind + f.truncate(0) + storage.each do |k, v| + f.puts("#{k}=#{v}") + end + end +end diff --git a/web/extm/passenger_manger/edit/index.php b/web/extm/passenger_manager/edit/index.php similarity index 57% rename from web/extm/passenger_manger/edit/index.php rename to web/extm/passenger_manager/edit/index.php index 875d328..7c304c2 100644 --- a/web/extm/passenger_manger/edit/index.php +++ b/web/extm/passenger_manager/edit/index.php @@ -11,14 +11,14 @@ if ($_SESSION["userContext"] != "admin") { } // Data -exec(HESTIA_CMD . "v-ext-modules list json", $output, $return_var); -$data = json_decode(implode("", $output), true); -ksort($data); +exec(HESTIA_CMD . "v-ext-modules-run passenger_manager get_rubys json", $output, $return_var); +$rubys = json_decode(implode("", $output), true); +ksort($rubys); unset($output); // Render page -render_page($user, $TAB, "extmodules"); +render_page($user, $TAB, "extmodules_passenger_manager"); // Back uri $_SESSION["back"] = $_SERVER["REQUEST_URI"]; \ No newline at end of file diff --git a/web/templates/pages/extmodules_passenger_manager.php b/web/templates/pages/extmodules_passenger_manager.php new file mode 100644 index 0000000..24cabb3 --- /dev/null +++ b/web/templates/pages/extmodules_passenger_manager.php @@ -0,0 +1,25 @@ + +
+
+
+ + + +
+
+
+ + +
+ +

+ +
+ +