diff --git a/ispmanager-plugin-nginx_mod_rewrite_plugin.spec b/ispmanager-plugin-nginx_mod_rewrite_plugin.spec index 57d3765..90a6770 100644 --- a/ispmanager-plugin-nginx_mod_rewrite_plugin.spec +++ b/ispmanager-plugin-nginx_mod_rewrite_plugin.spec @@ -35,6 +35,13 @@ if [ "$1" == "1" ]; then /usr/local/mgr5/sbin/mgrctl -m ispmgr exit fi +%preun +if [ "$1" == "0" ]; then + rm -f /usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf + rm -f /usr/lib64/nginx/modules/ngx_http_apache_rewrite_module.so + systemctl restart nginx +fi + %files /usr/local/mgr5/etc/xml/ispmgr_mod_nginx_mod_rewrite_plugin.xml /usr/local/mgr5/etc/plugins/ispmgr/nginx_mod_rewrite_plugin.xml diff --git a/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py b/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py index e281a07..a9469c3 100755 --- a/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py +++ b/usr/local/mgr5/addon/nginx_form_rewrite_plugin.py @@ -5,6 +5,7 @@ import xml.etree.ElementTree as etree from sys import stdin import re import datetime +from xml.dom import minidom CONFIG_PATH = "/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf" MODULE_LINE = 'load_module "/usr/lib64/nginx/modules/ngx_http_apache_rewrite_module.so";' @@ -29,6 +30,29 @@ def nginx_restart(): except Exception as e: _log(f"Error restarting nginx: {e}") +def out_error_xml(message): + import sys + root = etree.Element("error", code="access") + msg = etree.SubElement(root, "msg") + msg.text = message + xml_str = etree.tostring(root, encoding='unicode', xml_declaration=True) + print(xml_str) + sys.exit(1) + +def dump_all_to_log(root): + try: + with open(LOG_PATH, 'a') as log_file: + timestamp = datetime.datetime.now().isoformat() + xml_str = etree.tostring(root, encoding='unicode') + # Pretty‑print the XML + pretty_xml = minidom.parseString(xml_str).toprettyxml(indent=" ") + log_file.write(f"{timestamp} - Dumping XML to log:\n{pretty_xml}\n") + log_file.write(f"{timestamp} - Environment variables:\n") + for key, value in sorted(os.environ.items()): + log_file.write(f"{key}={value}\n") + except Exception: + pass + def read_global_config(params): """ Reads or writes a parameter in the global settings configuration file. @@ -183,15 +207,13 @@ if __name__ == "__main__": _log(f"Function called: {func}, User level: {user_level}") if int(user_level) < 16: _log("User level below user; skipping actions at all") - etree.dump(root) - quit(0) + out_error_xml("Access denied") if func == 'nginx_mod_rewrite_plugin_menu_settings': # Проверка уровня доступа - действия только для admin и выше (уровень 29+) if int(user_level) < 29: _log("User level below admin; skipping actions") - etree.dump(root) - quit(0) + out_error_xml("Access denied") nginx_mod_rewrite_plugin_menu_module_enable = os.getenv("PARAM_nginx_mod_rewrite_plugin_menu_module_enable") mod_enabled = check_nginx_rewrite_module() @@ -243,6 +265,26 @@ if __name__ == "__main__": elif func == "webdomain.edit": _log("webdomain.edit handler") + if int(user_level) < 16: + _log("User level below user; skipping actions at all") + out_error_xml("Access denied") + sok = os.environ.get('PARAM_sok', '') + type = os.getenv("EVENT_TYPE") + if sok == 'ok' and type == 'after': + domain = os.environ.get('PARAM_elid', '') + path_to_global_config = f'/etc/nginx/vhosts-resources/{domain}' + nginx_mod_rewrite_plugin_site_edit_enable = os.getenv("PARAM_nginx_mod_rewrite_plugin_site_edit_enable") + mod_rewrite_global = read_global_config({'param_name': 'global_mod_rewrite_enable'}) + if nginx_mod_rewrite_plugin_site_edit_enable == "on": + if mod_rewrite_global in ("1", "on"): + new_element = etree.Element("nginx_mod_rewrite_plugin_site_edit_enable") + new_element.text = "on" + root.append(new_element) + else: + _log("mod_rewrite should be disbled") + new_element = etree.Element("nginx_mod_rewrite_plugin_site_edit_enable") + new_element.text = "off" + root.append(new_element) elif func == "site.edit": _log("site.edit handler") etree.dump(root) diff --git a/usr/local/mgr5/etc/sql/webdomain.addon/nginx_mod_rewrite_plugin_webdomain_edit_enable b/usr/local/mgr5/etc/sql/webdomain.addon/nginx_mod_rewrite_plugin_webdomain_edit_enable index 7364f7e..d7ec5b5 100644 --- a/usr/local/mgr5/etc/sql/webdomain.addon/nginx_mod_rewrite_plugin_webdomain_edit_enable +++ b/usr/local/mgr5/etc/sql/webdomain.addon/nginx_mod_rewrite_plugin_webdomain_edit_enable @@ -1,4 +1,4 @@ -type=bool +type=string access_read=user+ access_write=user+ -default=false +default=""