v8.1.1: Update WAF overview and simplify service ID handling

Removed redundant service checks for 'haproxy' and 'nginx' in WAF routes. Simplified action confirmation logic by using hidden input to fetch server names dynamically. Updated database operation calls to be concise for deleting and updating group settings.
pull/411/head
Aidaho 2024-11-10 11:09:07 +03:00
parent e240b673fd
commit 9548ac6d9a
6 changed files with 23 additions and 33 deletions

View File

@ -692,7 +692,7 @@ def update_db_v_8_1_2():
def update_ver():
try:
Version.update(version='8.1.2').execute()
Version.update(version='8.1.1').execute()
except Exception:
print('Cannot update version')

View File

@ -94,16 +94,14 @@ def delete_group(group_id):
def delete_group_settings(group_id):
try:
group_for_delete = Setting.delete().where(Setting.group_id == group_id)
group_for_delete.execute()
Setting.delete().where(Setting.group_id == group_id).execute()
except Exception as e:
out_error(e)
def update_group(name, descript, group_id):
try:
group_update = Groups.update(name=name, description=descript).where(Groups.group_id == group_id)
group_update.execute()
Groups.update(name=name, description=descript).where(Groups.group_id == group_id).execute()
except Exception as e:
out_error(e)

View File

@ -40,7 +40,6 @@ def waf(service):
kwargs = {
'title': 'Web application firewall',
'autorefresh': 1,
'serv': '',
'servers': waf_sql.select_waf_servers_metrics(g.user_params['group_id']),
'servers_all': servers,
@ -84,11 +83,9 @@ def waf_rules(service, server_ip):
return render_template('waf.html', **kwargs)
@bp.route('/<service>/<server_ip>/rule/<int:rule_id>')
@bp.route('/<any(haproxy, nginx):service>/<server_ip>/rule/<int:rule_id>')
@get_user_params()
def waf_rule_edit(service, server_ip, rule_id):
if service not in ('haproxy', 'nginx'):
abort(404)
roxywi_auth.page_for_admin(level=2)
if not roxywi_auth.is_access_permit_to_service(service):
abort(403, f'You do not have needed permissions to access to {service.title()} service')
@ -180,16 +177,14 @@ def enable_rule(server_ip, rule_id, enable):
return roxywi_common.handle_json_exceptions(e, f'Cannot enable WAF rule {rule_id}', server_ip)
@bp.route('/<service>/<server_ip>/rule/create', methods=['POST'])
@bp.route('/<any(haproxy, nginx):service>/<server_ip>/rule/create', methods=['POST'])
def create_rule(service, server_ip):
server_ip = common.is_ip_or_dns(server_ip)
json_data = request.get_json()
if service not in ('haproxy', 'nginx'):
return roxywi_common.handle_json_exceptions('Wrong service', '', server_ip)
try:
last_id = roxy_waf.create_waf_rule(server_ip, service, json_data)
return jsonify({'status': 'created', 'id': last_id})
return jsonify({'status': 'Ok', 'id': last_id})
except Exception as e:
return roxywi_common.handle_json_exceptions(e, 'Cannot create WAF rule', server_ip,)
@ -203,15 +198,9 @@ def change_waf_mode(service, server_id, waf_mode):
return roxywi_common.handle_json_exceptions(e, 'Cannot change WAF mode', server_id)
@bp.route('/overview/<service>/<server_ip>')
@bp.route('/overview/<any(haproxy, nginx):service>/<server_ip>')
def overview_waf(service, server_ip):
if service not in ('haproxy', 'nginx'):
abort(404)
server_ip = common.is_ip_or_dns(server_ip)
if service not in ('haproxy', 'nginx'):
return 'error: Wrong service'
claims = get_jwt()
return roxy_waf.waf_overview(server_ip, service, claims)
@ -221,6 +210,6 @@ def overview_waf(service, server_ip):
def enable_metric(enable, server_id):
try:
waf_sql.update_waf_metrics_enable(server_id, enable)
return jsonify({'status': 'updated'})
return jsonify({'status': 'Ok'})
except Exception as e:
return roxywi_common.handle_json_exceptions(e, 'Cannot enable WAF metrics', server_id)

View File

@ -216,8 +216,9 @@ $( function() {
}
});
});
function confirmAjaxAction(action, service, id, name) {
function confirmAjaxAction(action, service, id) {
let action_word = translate_div.attr('data-'+action);
let name = $('#server-name-'+id).val();
$( "#dialog-confirm" ).dialog({
resizable: false,
height: "auto",

View File

@ -16,27 +16,29 @@
{% else %}
<span class="serverDown server-status" title="WAF {{lang.words.is}} {{lang.words.stopped}} "></span>
{% endif %}
{{ service.0 }}
<input type="hidden" id="server-name-{{ service.6 }}" value="{{ service.0 }}">
{{ service.0 }}
{% else %}
<span class="serverNone server-status" title="WAF {{lang.words.is}} {{lang.words.not}} {{lang.words.installed}}"></span> <span title="WAF {{lang.words.is}} {{lang.words.not}} {{lang.words.installed}}">{{ service.0 }}</span>
<span class="serverNone server-status" title="WAF {{lang.words.is}} {{lang.words.not}} {{lang.words.installed}}"></span>
<span title="WAF {{lang.words.is}} {{lang.words.not}} {{lang.words.installed}}">{{ service.0 }}</span>
{% endif %}
</td>
{% if service.3 == "On" or service.3 == "Off" or service.3 == "DetectionOnly" %}
<td>
{% if role <= 2 %}
<a id="{{ service.1 }}" class="start-waf" title="{{lang.words.start|title()}} WAF {{lang.words.service}}">
<span class="service-start" onclick="confirmAjaxAction('start', '{{service_name}}', '{{service.1}}')"></span>
<span class="service-start" onclick="confirmAjaxAction('start', '{{service_name}}', '{{service.6}}')"></span>
</a>
<a id="{{ service.1 }}" class="stop-waf" title="{{lang.words.stop|title()}} WAF {{lang.words.service}}">
<span class="service-stop" onclick="confirmAjaxAction('stop', '{{service_name}}', '{{service.1}}')"></span>
<span class="service-stop" onclick="confirmAjaxAction('stop', '{{service_name}}', '{{service.6}}')"></span>
</a>
{% if waf_service == 'haproxy' %}
<a id="{{ service.1 }}" class="restart-waf" title="{{lang.words.restart|title()}} WAF {{lang.words.service}}">
<span class="service-reload" onclick="confirmAjaxAction('restart', 'waf', '{{service.1}}')"></span>
<span class="service-reload" onclick="confirmAjaxAction('restart', 'waf', '{{service.6}}')"></span>
</a>
{% else %}
<a id="{{ service.1 }}" class="reload-waf" title="{{lang.words.reload|title()}} WAF {{lang.words.service}}">
<span class="service-reload" onclick="confirmAjaxAction('reload', 'nginx', '{{service.1}}')"></span>
<span class="service-reload" onclick="confirmAjaxAction('reload', 'nginx', '{{service.6}}')"></span>
</a>
{% endif %}
{% endif %}

View File

@ -208,25 +208,25 @@
{% if g.user_params['role'] <= 3 %}
<span class="server-action">
<a id="start-{{ s.2 }}" class="start" title="{{lang.words.start|title()}} {{service}} {{lang.words.service}}">
<span class="service-start" onclick="confirmAjaxAction('start', '{{service}}', '{{s.0}}', '{{s.1}}')"></span>
<span class="service-start" onclick="confirmAjaxAction('start', '{{service}}', '{{s.0}}')"></span>
</a>
<a id="reload-{{ s.2 }}" class="reload" title="{{lang.words.reload|title()}} {{service}} {{lang.words.service}}">
<span class="service-reload" onclick="confirmAjaxAction('reload', '{{service}}', '{{s.0}}', '{{s.1}}')"></span>
<span class="service-reload" onclick="confirmAjaxAction('reload', '{{service}}', '{{s.0}}')"></span>
</a>
{% for set in restart_settings %}
{% if set.server_id == s.0 and set.setting == 'restart' and set.value|int == 0 %}
<a id="restart-{{ s.2 }}" class="restart" title="{{lang.words.restart|title()}} {{service}} {{lang.words.service}}">
<span class="service-reload service-restart" onclick="confirmAjaxAction('restart', '{{service}}', '{{s.0}}', '{{s.1}}')"></span>
<span class="service-reload service-restart" onclick="confirmAjaxAction('restart', '{{service}}', '{{s.0}}')"></span>
</a>
{% endif %}
{% endfor %}
{% if restart_settings|length == 0 %}
<a id="restart-{{ s.2 }}" class="restart" title="{{lang.words.restart|title()}} {{service}} {{lang.words.service}}">
<span class="service-reload service-restart" onclick="confirmAjaxAction('restart', '{{service}}', '{{s.0}}', '{{s.1}}')"></span>
<span class="service-reload service-restart" onclick="confirmAjaxAction('restart', '{{service}}', '{{s.0}}')"></span>
</a>
{% endif %}
<a id="stop-{{ s.2 }}" class="stop" title="{{lang.words.stop|title()}} {{service}} {{lang.words.service}}">
<span class="service-stop" onclick="confirmAjaxAction('stop', '{{service}}', '{{s.0}}', '{{s.1}}')"></span>
<span class="service-stop" onclick="confirmAjaxAction('stop', '{{service}}', '{{s.0}}')"></span>
</a>
<a href="{{ url_for('main.service_history', service=service, server_ip=s.2) }}" title="{{lang.words.view|title()}} {{lang.words.history3}} {{s.1}}" class="history" style="margin: 0 5px 0 10px;"></a>
{% if service != 'keepalived' %}