Fixes
This commit is contained in:
@@ -35,6 +35,13 @@ if [ "$1" == "1" ]; then
|
|||||||
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
|
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
|
||||||
fi
|
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
|
%files
|
||||||
/usr/local/mgr5/etc/xml/ispmgr_mod_nginx_mod_rewrite_plugin.xml
|
/usr/local/mgr5/etc/xml/ispmgr_mod_nginx_mod_rewrite_plugin.xml
|
||||||
/usr/local/mgr5/etc/plugins/ispmgr/nginx_mod_rewrite_plugin.xml
|
/usr/local/mgr5/etc/plugins/ispmgr/nginx_mod_rewrite_plugin.xml
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import xml.etree.ElementTree as etree
|
|||||||
from sys import stdin
|
from sys import stdin
|
||||||
import re
|
import re
|
||||||
import datetime
|
import datetime
|
||||||
|
from xml.dom import minidom
|
||||||
|
|
||||||
CONFIG_PATH = "/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf"
|
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";'
|
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:
|
except Exception as e:
|
||||||
_log(f"Error restarting nginx: {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):
|
def read_global_config(params):
|
||||||
"""
|
"""
|
||||||
Reads or writes a parameter in the global settings configuration file.
|
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}")
|
_log(f"Function called: {func}, User level: {user_level}")
|
||||||
if int(user_level) < 16:
|
if int(user_level) < 16:
|
||||||
_log("User level below user; skipping actions at all")
|
_log("User level below user; skipping actions at all")
|
||||||
etree.dump(root)
|
out_error_xml("Access denied")
|
||||||
quit(0)
|
|
||||||
|
|
||||||
if func == 'nginx_mod_rewrite_plugin_menu_settings':
|
if func == 'nginx_mod_rewrite_plugin_menu_settings':
|
||||||
# Проверка уровня доступа - действия только для admin и выше (уровень 29+)
|
# Проверка уровня доступа - действия только для admin и выше (уровень 29+)
|
||||||
if int(user_level) < 29:
|
if int(user_level) < 29:
|
||||||
_log("User level below admin; skipping actions")
|
_log("User level below admin; skipping actions")
|
||||||
etree.dump(root)
|
out_error_xml("Access denied")
|
||||||
quit(0)
|
|
||||||
|
|
||||||
nginx_mod_rewrite_plugin_menu_module_enable = os.getenv("PARAM_nginx_mod_rewrite_plugin_menu_module_enable")
|
nginx_mod_rewrite_plugin_menu_module_enable = os.getenv("PARAM_nginx_mod_rewrite_plugin_menu_module_enable")
|
||||||
mod_enabled = check_nginx_rewrite_module()
|
mod_enabled = check_nginx_rewrite_module()
|
||||||
@@ -243,6 +265,26 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
elif func == "webdomain.edit":
|
elif func == "webdomain.edit":
|
||||||
_log("webdomain.edit handler")
|
_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":
|
elif func == "site.edit":
|
||||||
_log("site.edit handler")
|
_log("site.edit handler")
|
||||||
etree.dump(root)
|
etree.dump(root)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
type=bool
|
type=string
|
||||||
access_read=user+
|
access_read=user+
|
||||||
access_write=user+
|
access_write=user+
|
||||||
default=false
|
default=""
|
||||||
|
|||||||
Reference in New Issue
Block a user