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