From 8c690284e90cca0c6482d896a2a3f4817f301506 Mon Sep 17 00:00:00 2001 From: Alexey Berezhok Date: Fri, 10 Jul 2026 00:29:57 +0300 Subject: [PATCH] Fixes --- ...nager-plugin-nginx_mod_rewrite_plugin.spec | 6 +- .../mgr5/addon/nginx_form_rewrite_plugin.py | 84 ++++++++++++++++++ ...anager-plugin-nginx_mod_rewrite_plugin.png | Bin 0 -> 3082 bytes 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 usr/local/mgr5/skins/common/plugin-logo/ispmanager-plugin-nginx_mod_rewrite_plugin.png diff --git a/ispmanager-plugin-nginx_mod_rewrite_plugin.spec b/ispmanager-plugin-nginx_mod_rewrite_plugin.spec index 531cdbc..57d3765 100644 --- a/ispmanager-plugin-nginx_mod_rewrite_plugin.spec +++ b/ispmanager-plugin-nginx_mod_rewrite_plugin.spec @@ -23,6 +23,7 @@ cp -r usr/* %{buildroot}/usr mkdir -p %{buildroot}/usr/local/ispmanager-mod_rewrite/utils wget -O %{buildroot}/usr/local/ispmanager-mod_rewrite/mod_rewrite.zip https://github.com/bayrepo/ngx_http_apache_rewrite_module/archive/refs/heads/main.zip cp utils/build_mod_rewrite.py %{buildroot}/usr/local/ispmanager-mod_rewrite/utils +mkdir -p %{buildroot}/usr/local/ispmanager-mod_rewrite/settings %triggerin -- nginx /usr/local/ispmanager-mod_rewrite/utils/build_mod_rewrite.py @@ -41,9 +42,12 @@ fi %attr(700, root, root) /usr/local/mgr5/addon/nginx_form_rewrite_plugin.py %attr(600, root, root) /usr/local/ispmanager-mod_rewrite/mod_rewrite.zip %attr(700, root, root) /usr/local/ispmanager-mod_rewrite/utils/build_mod_rewrite.py +%attr(700, root, root) %dir /usr/local/ispmanager-mod_rewrite/settings %attr(644, root, root) /usr/local/mgr5/skins/icons/mod_rewrite_menu.svg %attr(644, root, root) /usr/local/mgr5/skins/icons/mod_rewrite_tool.svg -%attr(644, root, root) /usr/local/mgr5/etc/sql/webdomain.addon/nginx_mod_rewrite_plugin +%attr(644, root, root) /usr/local/mgr5/skins/common/plugin-logo/ispmanager-plugin-nginx_mod_rewrite_plugin.png +%attr(600, root, root) /usr/local/mgr5/etc/sql/webdomain.addon/nginx_mod_rewrite_plugin_webdomain_edit_enable + %changelog * Mon Jun 29 2026 Alexey BayRepo - 0.0.1-1 diff --git a/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py b/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py index f3992e0..e281a07 100755 --- a/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py +++ b/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py @@ -29,6 +29,68 @@ def nginx_restart(): except Exception as e: _log(f"Error restarting nginx: {e}") +def read_global_config(params): + """ + Reads or writes a parameter in the global settings configuration file. + :param params: dict with keys 'param_name' and 'param_value'. + :return: param_value as string if reading; None otherwise. + """ + param_name = params.get('param_name') + if not param_name: + return None + param_value = params.get('param_value') + config_path = "/usr/local/ispmanager-mod_rewrite/settings/global_settings.cfg" + + if param_value is None: + # Read mode + if not os.path.exists(config_path): + return None + try: + with open(config_path, 'r', encoding='utf-8') as f: + for line in f: + stripped = line.strip() + if stripped.startswith('#'): + continue + pattern = rf'^\s*{re.escape(param_name)}\s*=\s*(.*)$' + m = re.match(pattern, line) + if m: + return m.group(1).strip() + except Exception: + return None + return None + else: + # Write mode + dir_path = os.path.dirname(config_path) + try: + os.makedirs(dir_path, exist_ok=True) + except Exception: + return None + lines = [] + found = False + if os.path.exists(config_path): + try: + with open(config_path, 'r', encoding='utf-8') as f: + lines = f.readlines() + except Exception: + return None + for idx, line in enumerate(lines): + stripped = line.strip() + if stripped.startswith('#'): + continue + pattern = rf'^\s*{re.escape(param_name)}\s*=\s*.*$' + if re.match(pattern, line): + lines[idx] = f"{param_name}={param_value}\n" + found = True + break + if not found: + lines.append(f"{param_name}={param_value}\n") + try: + with open(config_path, 'w', encoding='utf-8') as f: + f.writelines(lines) + except Exception: + return None + return None + def check_nginx_rewrite_module(): _log("check_nginx_rewrite_module called") if not os.path.exists(CONFIG_PATH): @@ -134,6 +196,7 @@ if __name__ == "__main__": nginx_mod_rewrite_plugin_menu_module_enable = os.getenv("PARAM_nginx_mod_rewrite_plugin_menu_module_enable") mod_enabled = check_nginx_rewrite_module() _log(f"Current module state: {'enabled' if mod_enabled else 'disabled'}") + mod_rewrite_global = read_global_config({'param_name': 'global_mod_rewrite_enable'}) if os.getenv('PARAM_clicked_button') == 'ok' and nginx_mod_rewrite_plugin_menu_module_enable is not None: if nginx_mod_rewrite_plugin_menu_module_enable == "on" and not mod_enabled: @@ -157,6 +220,27 @@ if __name__ == "__main__": new_element.text = "on" if mod_enabled else "off" root.append(new_element) + nginx_mod_rewrite_plugin_menu_global_module_enable = os.getenv("PARAM_nginx_mod_rewrite_plugin_menu_global_module_enable") + if os.getenv('PARAM_clicked_button') == 'ok' and nginx_mod_rewrite_plugin_menu_global_module_enable is not None: + if nginx_mod_rewrite_plugin_menu_global_module_enable == "on" and mod_rewrite_global not in ("1", "on"): + read_global_config({'param_name': 'global_mod_rewrite_enable', 'param_value': 'on'}) + new_element = etree.Element("nginx_mod_rewrite_plugin_menu_global_module_enable") + new_element.text = "on" + root.append(new_element) + elif nginx_mod_rewrite_plugin_menu_global_module_enable == "off" and mod_rewrite_global in ("1", "on"): + read_global_config({'param_name': 'global_mod_rewrite_enable', 'param_value': 'off'}) + new_element = etree.Element("nginx_mod_rewrite_plugin_menu_global_module_enable") + new_element.text = "off" + root.append(new_element) + else: + new_element = etree.Element("nginx_mod_rewrite_plugin_menu_global_module_enable") + new_element.text = "on" if mod_rewrite_global in ("1", "on") else "off" + root.append(new_element) + else: + new_element = etree.Element("nginx_mod_rewrite_plugin_menu_global_module_enable") + new_element.text = "on" if mod_rewrite_global in ("1", "on") else "off" + root.append(new_element) + elif func == "webdomain.edit": _log("webdomain.edit handler") elif func == "site.edit": diff --git a/usr/local/mgr5/skins/common/plugin-logo/ispmanager-plugin-nginx_mod_rewrite_plugin.png b/usr/local/mgr5/skins/common/plugin-logo/ispmanager-plugin-nginx_mod_rewrite_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..af75e33fe0fe845930a0ade30e4a22af68e6ebb5 GIT binary patch literal 3082 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 literal 0 HcmV?d00001