From 14af530339ae8fd7b9bb7284b35105dbc7ddddbc Mon Sep 17 00:00:00 2001 From: Alexey Berezhok Date: Fri, 31 Jan 2025 00:10:16 +0300 Subject: [PATCH] Added alternative php. Part 10 --- bin/v-ext-modules-run | 2 +- func_ruby/ext-modules/php_brepo_modules.mod | 80 ++++++++++++++++++++- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/bin/v-ext-modules-run b/bin/v-ext-modules-run index f7c21fa..5b891f2 100755 --- a/bin/v-ext-modules-run +++ b/bin/v-ext-modules-run @@ -2,7 +2,7 @@ # info: action with extended modules # options: MODULE_ID [MODULE_RELATED_COMMNDS] # -# example: v-ext-modules list json +# example: v-ext-modules passenger_manager list json # # This function enables and disables additional modules diff --git a/func_ruby/ext-modules/php_brepo_modules.mod b/func_ruby/ext-modules/php_brepo_modules.mod index b75cfdf..2841cd8 100644 --- a/func_ruby/ext-modules/php_brepo_modules.mod +++ b/func_ruby/ext-modules/php_brepo_modules.mod @@ -9,7 +9,7 @@ class EmptyWorker < Kernel::ModuleCoreWorker NAME: MODULE_ID, DESCR: "Module for managing of php modules for php's from brepo repository", REQ: "", - CONF: "", + CONF: "yes", } end @@ -22,6 +22,84 @@ class EmptyWorker < Kernel::ModuleCoreWorker end def get_list_of_installed_php + php_list = [] + lst = Dir["/opt/brepo/php*/etc/php.ini"] + if lst.length.positive? + php_list = lst.select do |item| + %r{/opt/brepo/php\d+/etc/php\.ini} =~ item + end.map do |item| + res = item.match %r{/opt/brepo/php(?\d+)/etc/php\.ini} + res[:ver] + end + end + php_list + end + + def get_list_of_installed_php_modules(php_ver) + php_modules = {} + php_list = get_list_of_installed_php + if php_list.include? php_ver + lst = Dir["/opt/brepo/php#{php_ver}/etc/mod-installed/*.ini"] + php_list_m = lst.map { |item| File.basename(item, ".ini") }.select { |item| item.strip != "" } + lst_enabled = Dir["/opt/brepo/php#{php_ver}/etc/php.d/*.ini"] + php_list_i = {} + lst_enabled.each do |item| + fname = File.basename(item, ".ini") + if fname.strip != "" + if File.symlink? item + fname_n = File.readlink(item) + fname_n = File.basename(fname_n, ".ini") + php_list_i[fname_n] = fname unless fname_n.strip == "" + end + end + end + php_list_m.each do |item| + php_modules[item] = "disabled" + php_modules[item] = php_list_i[item] unless php_list_i[item].nil? + end + end + php_modules + end + + def command(args) + return log_return("Not enough arguments. Needed command") if args.length < 1 + + m_command = args[0].strip + case m_command + when "php_list" + result = get_list_of_installed_php.map { |item| { "PHPVER" => item } } + format = (args[1].nil? ? "shell" : args[1].strip) + hestia_print_array_of_hashes(result, format, "PHPVER") + ACTION_OK + when "php_modules" + vers = args[1] + if vers.nil? + log_return("Verssion should be specified. #{args}") + else + vers = vers.strip + modules_list = get_list_of_installed_php_modules(vers) + m_keys = modules_list.keys.sort + result = [] + m_keys.each do |kk| + tmp_hash = {} + tmp_hash["PHPVER"] = vers + tmp_hash["MODNAME"] = kk + tmp_hash["STATE"] = modules_list[kk] + result << tmp_hash + end + hestia_print_array_of_hashes(result, format, "PHPVER,MODNAME,STATE") + ACTION_OK + end + when "help" + puts "#{$0} php_brepo_modules COMMAND [OPTIONS] [json|csv|plain]" + puts "COMMANDS:" + puts " php_list - list all local php installed" + puts " php_modules [php_ver] - list available php module" + puts " help - help" + ACTION_OK + else + log_return("Unknown command. #{args}") + end end implements IPluginInterface