Fixes
This commit is contained in:
@@ -27,12 +27,23 @@ cp utils/build_mod_rewrite.py %{buildroot}/usr/local/ispmanager-mod_rewrite/util
|
||||
%triggerin -- nginx
|
||||
/usr/local/ispmanager-mod_rewrite/utils/build_mod_rewrite.py
|
||||
|
||||
%posttrans
|
||||
killall core
|
||||
if [ "$1" == "1" ]; then
|
||||
rm -rf /usr/local/mgr5/var/.db.cache*
|
||||
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
|
||||
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
|
||||
%attr(700, root, root) /usr/local/mgr5/addon/nginx_mod_rewrite_plugin.py
|
||||
%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(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
|
||||
|
||||
%changelog
|
||||
* Mon Jun 29 2026 Alexey BayRepo <a@bayrepo.ru> - 0.0.1-1
|
||||
|
||||
34
usr/local/mgr5/addon/nginx_form_rewrite_plugin.py
Normal file
34
usr/local/mgr5/addon/nginx_form_rewrite_plugin.py
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import xml.etree.ElementTree as etree
|
||||
from sys import stdin
|
||||
|
||||
import re
|
||||
|
||||
def check_nginx_rewrite_module():
|
||||
config_path = "/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf"
|
||||
if not os.path.exists(config_path):
|
||||
return False
|
||||
pattern = re.compile(r'^\s*load_module\s+"\/usr\/lib64\/nginx\/modules\/ngx_http_apache_rewrite_module.so";\s*$')
|
||||
with open(config_path, 'r') as f:
|
||||
for line in f:
|
||||
stripped = line.lstrip()
|
||||
if stripped.startswith('#'):
|
||||
continue
|
||||
if pattern.match(line):
|
||||
return True
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
root = etree.parse(stdin).getroot()
|
||||
|
||||
func = os.getenv('PARAM_func')
|
||||
|
||||
if func == 'nginx_mod_rewrite_plugin_menu_settings':
|
||||
nginx_mod_rewrite_plugin_menu_module_enable = os.getenv("PARAM_nginx_mod_rewrite_plugin_menu_module_enable")
|
||||
|
||||
|
||||
|
||||
etree.dump(root)
|
||||
quit(0)
|
||||
@@ -0,0 +1,4 @@
|
||||
type=bool
|
||||
access_read=user+
|
||||
access_write=user+
|
||||
default=false
|
||||
@@ -1,34 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<mgrdata>
|
||||
<plugin name="nginx_mod_rewrite_plugin">
|
||||
<dist>1</dist>
|
||||
<settings>nginx_mod_rewrite_plugin.settings</settings>
|
||||
<free />
|
||||
</plugin>
|
||||
<handler name="nginx_mod_rewrite_plugin.py" type="xml">
|
||||
<func name="nginx_mod_rewrite_plugin.settings" />
|
||||
</handler>
|
||||
<metadata name="nginx_mod_rewrite_plugin.settings" type="form" mgr="ispmgr">
|
||||
<form>
|
||||
<plugin name="nginx_mod_rewrite_plugin">
|
||||
<dist>1</dist>
|
||||
<settings>nginx_mod_rewrite_plugin.settings</settings>
|
||||
<free />
|
||||
</plugin>
|
||||
<handler name="nginx_mod_rewrite_plugin.py" type="xml">
|
||||
<func name="nginx_mod_rewrite_plugin.settings" />
|
||||
</handler>
|
||||
<metadata name="nginx_mod_rewrite_plugin.settings" type="form" mgr="ispmgr">
|
||||
<form>
|
||||
<field name="nginx_mod_rewrite_plugin_field" noname="yes" fullwidth="yes">
|
||||
<textdata name="nginx_mod_rewrite_plugin_msg" type="msg" />
|
||||
</field>
|
||||
</form>
|
||||
<buttons>
|
||||
<button name="ok" type="ok" />
|
||||
<button name="cancel" type="cancel" />
|
||||
</buttons>
|
||||
</metadata>
|
||||
<lang name="ru">
|
||||
<messages name="nginx_mod_rewrite_plugin.settings">
|
||||
<msg name="title">Установка модуля для nginx</msg>
|
||||
<msg name="nginx_mod_rewrite_plugin_msg">Данный плагин установит ряд пакетов для сборки модуля nginx</msg>
|
||||
<msg name="msg_create">Собрать модуль и установить хук на пересборку</msg>
|
||||
<msg name="msg_back"><< Отменить сборку</msg>
|
||||
</messages>
|
||||
<messages name="mgrerror_nginx_mod_rewrite_plugin">
|
||||
<msg name="msg_error_nginx_mod_rewrite_plugin">Ошибка модуля: __object__</msg>
|
||||
<msg name="wrong_value">__value__</msg>
|
||||
</messages>
|
||||
</lang>
|
||||
</form>
|
||||
<buttons>
|
||||
<button name="ok" type="ok" />
|
||||
<button name="cancel" type="cancel" />
|
||||
</buttons>
|
||||
</metadata>
|
||||
<metadata name="site.edit" type="form">
|
||||
<form>
|
||||
<page name="optimization">
|
||||
<field name="site_nginx_mod_rewrite_plugin_site_edit_enable">
|
||||
<input type="checkbox" name="site_nginx_mod_rewrite_plugin_site_edit_enable" setvalues="yes" />
|
||||
</field>
|
||||
</page>
|
||||
</form>
|
||||
</metadata>
|
||||
<metadata name="webdomain.edit" type="form">
|
||||
<form>
|
||||
<page name="optimization">
|
||||
<field name="nginx_mod_rewrite_plugin_site_edit_enable">
|
||||
<input type="checkbox" name="nginx_mod_rewrite_plugin_site_edit_enable" setvalues="yes" />
|
||||
</field>
|
||||
</page>
|
||||
</form>
|
||||
</metadata>
|
||||
<handler name="nginx_form_rewrite_plugin.py" type="xml">
|
||||
<event name="webdomain.edit" after="yes"/>
|
||||
<event name="site.edit" after="yes"/>
|
||||
<func name="nginx_mod_rewrite_plugin_menu_settings"/>
|
||||
</handler>
|
||||
<mainmenu level="admin+">
|
||||
<modernmenu>
|
||||
<node name="nginx_mod_rewrite_plugin_menu" customicon="/manimg/icons/mod_rewrite_menu.svg">
|
||||
<node name="nginx_mod_rewrite_plugin_menu_settings" customicon="/manimg/icons/mod_rewrite_tool.svg"/>
|
||||
</node>
|
||||
</modernmenu>
|
||||
</mainmenu>
|
||||
<metadata name="nginx_mod_rewrite_plugin_menu_settings" type="form">
|
||||
<form needconfirm="yes">
|
||||
<field name="nginx_mod_rewrite_plugin_menu_module_enable">
|
||||
<input type="checkbox" name="nginx_mod_rewrite_plugin_menu_module_enable"/>
|
||||
</field>
|
||||
<field name="nginx_mod_rewrite_plugin_menu_global_module_enable">
|
||||
<input type="checkbox" name="nginx_mod_rewrite_plugin_menu_global_module_enable"/>
|
||||
</field>
|
||||
</form>
|
||||
</metadata>
|
||||
<lang name="ru">
|
||||
<messages name="nginx_mod_rewrite_plugin.settings">
|
||||
<msg name="title">Установка модуля для nginx</msg>
|
||||
<msg name="nginx_mod_rewrite_plugin_msg">Данный плагин установит ряд пакетов для сборки модуля nginx</msg>
|
||||
<msg name="msg_create">Собрать модуль и установить хук на пересборку</msg>
|
||||
<msg name="msg_back"><< Отменить сборку</msg>
|
||||
</messages>
|
||||
<messages name="mgrerror_nginx_mod_rewrite_plugin">
|
||||
<msg name="msg_error_nginx_mod_rewrite_plugin">Ошибка модуля: __object__</msg>
|
||||
<msg name="wrong_value">__value__</msg>
|
||||
</messages>
|
||||
<messages name="site.edit">
|
||||
<msg name="site_nginx_mod_rewrite_plugin_site_edit_enable">Включить для сайта поддержку mod_rewrite для nginx</msg>
|
||||
</messages>
|
||||
<messages name="desktop">
|
||||
<msg name="modernmenu_nginx_mod_rewrite_plugin_menu">mod_rewrite для nginx</msg>
|
||||
<msg name="modernmenu_nginx_mod_rewrite_plugin_menu_settings">Настройка модуля nginx</msg>
|
||||
</messages>
|
||||
<messages name="nginx_mod_rewrite_plugin_menu_settings">
|
||||
<msg name="title">Глобальные настройки mod_rewrite для nginx</msg>
|
||||
<msg name="nginx_mod_rewrite_plugin_menu_module_enable">Добавить модуль в nginx</msg>
|
||||
<msg name="nginx_mod_rewrite_plugin_menu_global_module_enable">Включать глобально для всех location сайта</msg>
|
||||
<msg name="msg_create">Сохранить</msg>
|
||||
</messages>
|
||||
</lang>
|
||||
</mgrdata>
|
||||
|
||||
133
usr/local/mgr5/skins/icons/mod_rewrite_menu.svg
Normal file
133
usr/local/mgr5/skins/icons/mod_rewrite_menu.svg
Normal file
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 4.23328 4.23328"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
sodipodi:docname="mod_rewrite_menu.svg"
|
||||
shape-rendering="crispEdges"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="px"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
width="15px"
|
||||
inkscape:zoom="13.255892"
|
||||
inkscape:cx="0.18859538"
|
||||
inkscape:cy="-3.6210313"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1019"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:showpageshadow="false"
|
||||
showborder="true"
|
||||
scale-x="0.36458">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid9" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1725"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1721"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1689"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1685"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Слой 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 0.26458,0.52916 H 1.85206 L 3.43954,2.11664 V 3.9687 H 0.26458 Z"
|
||||
id="path44"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 1.05832,1.3229 c 0,0.617618 0,1.2349711 0,1.85206"
|
||||
id="path1683"
|
||||
inkscape:path-effect="#path-effect1685"
|
||||
inkscape:original-d="m 1.05832,1.3229 c 2.646e-4,0.617618 2.646e-4,1.2349711 0,1.85206"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 1.05832,2.38122 c 0.1766513,0 0.3530379,0 0.4410989,0.1324249 C 1.58748,2.6460699 1.58748,2.9106446 1.58748,3.17496"
|
||||
id="path1687"
|
||||
inkscape:path-effect="#path-effect1689"
|
||||
inkscape:original-d="m 1.05832,2.38122 c 0.1766513,2.646e-4 0.3530379,2.646e-4 0.52916,0 2.646e-4,0.2648499 2.646e-4,0.5294246 0,0.79374"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 1.85206,1.58748 c 0,0.353038 0,0.7058112 0.044177,0.9704195 0.044177,0.2646083 0.1323684,0.4409913 0.2206157,0.5290259 C 2.2051,3.17496 2.2932913,3.17496 2.38122,3.17496"
|
||||
id="path1719"
|
||||
inkscape:path-effect="#path-effect1721"
|
||||
inkscape:original-d="m 1.85206,1.58748 c 2.646e-4,0.353038 2.646e-4,0.7058112 0,1.05832 0.08846,0.1766548 0.1766513,0.3530378 0.26458,0.52916 0.08846,2.646e-4 0.1766513,2.646e-4 0.26458,0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 1.85206,2.11664 c 0.1766513,0 0.3530379,0 0.52916,0"
|
||||
id="path1723"
|
||||
inkscape:path-effect="#path-effect1725"
|
||||
inkscape:original-d="m 1.85206,2.11664 c 0.1766513,2.646e-4 0.3530379,2.646e-4 0.52916,0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 2.38122,0.26458 3.9687,1.85206 V 0.26458 Z"
|
||||
id="path3269" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
62
usr/local/mgr5/skins/icons/mod_rewrite_tool.svg
Normal file
62
usr/local/mgr5/skins/icons/mod_rewrite_tool.svg
Normal file
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
sodipodi:docname="mod_rewrite_tool.svg"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
id="svg5"
|
||||
version="1.1"
|
||||
viewBox="0 0 4.2333332 4.2333334"
|
||||
height="16"
|
||||
width="16"
|
||||
shape-rendering="crispEdges"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="px"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
width="15px"
|
||||
inkscape:zoom="13.255892"
|
||||
inkscape:cx="0.18859538"
|
||||
inkscape:cy="-3.6210313"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1019"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid9" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2" />
|
||||
<g
|
||||
inkscape:label="Слой 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="M 0.26458333,0.26458333 H 1.8520833 l 2.1166667,0 0,1.85208327 V 3.96875 H 0.26458333 Z"
|
||||
id="path44"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<g
|
||||
inkscape:label="Rendered Gears"
|
||||
transform="matrix(0.91089865,0,0,0.9218829,1.8670605,2.3662564)"
|
||||
id="g4791" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 1.8520833,1.0583333 V 1.5875 h 0.79375 V 1.0583333 H 3.175 V 2.1166667 H 2.6458333 V 2.6458333 H 3.175 v 0.79375 H 2.6458333 V 3.175 h -0.79375 V 3.4395833 H 1.3229167 v -0.79375 H 1.8520833 V 2.1166667 H 1.3229167 V 1.0583333 h 0.5291666"
|
||||
id="path5631" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
Reference in New Issue
Block a user