44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
from flask import Blueprint, request, redirect, flash
|
|
from auth import require_level
|
|
from config_utils import load_core, save_core, verify_core_hash, queued_msg
|
|
import sanitize
|
|
import validation as validate
|
|
|
|
bp = Blueprint('action_apply_general', __name__)
|
|
|
|
|
|
@bp.route('/action/apply_general', methods=['POST'])
|
|
@require_level('administrator')
|
|
def apply_general():
|
|
log_max_kb_raw = request.form.get('log_max_kb', '').strip()
|
|
log_errors_only = 'log_errors_only' in request.form
|
|
dnsmasq_log_queries = 'dnsmasq_log_queries' in request.form
|
|
daily_execute_time = sanitize.time_24h(request.form.get('daily_execute_time_24hr_local', ''))
|
|
apply_on_save = 'apply_on_save' in request.form
|
|
|
|
log_max_kb = validate.int_range(log_max_kb_raw, 64, None)
|
|
if log_max_kb is None:
|
|
flash('Max Log Size must be a number >= 64.', 'error')
|
|
return redirect('/view/view_general')
|
|
|
|
if not verify_core_hash(request.form.get('config_hash', '')):
|
|
flash('Configuration was modified by another session. Please refresh and try again.', 'error')
|
|
return redirect('/view/view_general')
|
|
|
|
core = load_core()
|
|
core.setdefault('general', {}).update({
|
|
'log_max_kb': log_max_kb,
|
|
'log_errors_only': log_errors_only,
|
|
'dnsmasq_log_queries': dnsmasq_log_queries,
|
|
'daily_execute_time_24hr_local': daily_execute_time,
|
|
'apply_on_save': apply_on_save,
|
|
})
|
|
errors = validate.validate_config(core)
|
|
if errors:
|
|
for msg in errors:
|
|
flash(msg, 'error')
|
|
return redirect('/view/view_general')
|
|
save_core(core)
|
|
|
|
flash(queued_msg('core apply'), 'success')
|
|
return redirect('/view/view_general')
|