mirror of https://github.com/Aidaho12/haproxy-wi
134 lines
4.3 KiB
Python
134 lines
4.3 KiB
Python
from flask import render_template, request, redirect, url_for, g
|
|
from flask_login import login_required
|
|
|
|
from app.routes.logs import bp
|
|
from middleware import check_services, get_user_params
|
|
import app.modules.db.sql as sql
|
|
import app.modules.common.common as common
|
|
import app.modules.roxywi.auth as roxywi_auth
|
|
import app.modules.roxywi.logs as roxy_logs
|
|
import app.modules.roxywi.common as roxywi_common
|
|
import app.modules.server.server as server_mod
|
|
import app.modules.roxy_wi_tools as roxy_wi_tools
|
|
|
|
get_config = roxy_wi_tools.GetConfigVar()
|
|
|
|
|
|
@bp.before_request
|
|
@login_required
|
|
def before_request():
|
|
""" Protect all the admin endpoints. """
|
|
pass
|
|
|
|
|
|
@bp.route('/internal')
|
|
@get_user_params()
|
|
def logs_internal():
|
|
log_type = request.args.get('type')
|
|
log_path = get_config.get_config_var('main', 'log_path')
|
|
selects = roxywi_common.get_files(log_path, file_format="log")
|
|
|
|
if log_type == '2':
|
|
roxywi_auth.page_for_admin(level=2)
|
|
else:
|
|
roxywi_auth.page_for_admin()
|
|
|
|
if log_type is None:
|
|
selects.append(['fail2ban.log', 'fail2ban.log'])
|
|
selects.append(['roxy-wi.error.log', 'error.log'])
|
|
selects.append(['roxy-wi.access.log', 'access.log'])
|
|
|
|
kwargs = {
|
|
'autorefresh': 1,
|
|
'selects': selects,
|
|
'serv': 'viewlogs',
|
|
'lang': g.user_params['lang']
|
|
}
|
|
return render_template('logs_internal.html', **kwargs)
|
|
|
|
|
|
@bp.route('/<service>', defaults={'waf': None})
|
|
@bp.route('/<service>/<waf>')
|
|
@check_services
|
|
@get_user_params()
|
|
def logs(service, waf):
|
|
serv = request.args.get('serv')
|
|
rows = request.args.get('rows')
|
|
grep = request.args.get('grep')
|
|
# exgrep = request.args.get('exgrep')
|
|
# hour = request.args.get('hour')
|
|
# minute = request.args.get('minute')
|
|
# hour1 = request.args.get('hour1')
|
|
# minute1 = request.args.get('minute1')
|
|
log_file = request.args.get('file')
|
|
|
|
if rows is None:
|
|
rows = 10
|
|
if grep is None:
|
|
grep = ''
|
|
|
|
if service in ('haproxy', 'nginx', 'keepalived', 'apache') and not waf:
|
|
service_desc = sql.select_service(service)
|
|
service_name = service_desc.service
|
|
servers = roxywi_common.get_dick_permit(service=service_desc.slug)
|
|
elif waf:
|
|
service_name = 'WAF'
|
|
servers = roxywi_common.get_dick_permit(haproxy=1)
|
|
else:
|
|
return redirect(url_for('index'))
|
|
|
|
kwargs = {
|
|
'autorefresh': 1,
|
|
'servers': servers,
|
|
'serv': serv,
|
|
'service': service,
|
|
'service_name': service_name,
|
|
'grep': grep,
|
|
'rows': rows,
|
|
'remote_file': log_file,
|
|
'waf': waf,
|
|
'lang': g.user_params['lang']
|
|
}
|
|
|
|
return render_template('logs.html', **kwargs)
|
|
|
|
|
|
@bp.route('/<service>/<serv>', methods=['GET', 'POST'])
|
|
@check_services
|
|
def show_remote_log_files(service, serv):
|
|
service = common.checkAjaxInput(service)
|
|
serv = common.checkAjaxInput(serv)
|
|
log_path = sql.get_setting(f'{service}_path_logs')
|
|
return_files = server_mod.get_remote_files(serv, log_path, 'log')
|
|
lang = roxywi_common.get_user_lang_for_flask()
|
|
|
|
if 'error: ' in return_files:
|
|
return return_files
|
|
|
|
return render_template(
|
|
'ajax/show_log_files.html', serv=serv, return_files=return_files, path_dir=log_path, lang=lang
|
|
)
|
|
|
|
|
|
@bp.route('/<service>/<serv>/<rows>', defaults={'waf': '0'}, methods=['GET', 'POST'])
|
|
@bp.route('/<service>/waf/<serv>/<rows>', defaults={'waf': '1'}, methods=['GET', 'POST'])
|
|
def show_logs(service, serv, rows, waf):
|
|
grep = request.form.get('grep') or request.args.get('grep')
|
|
exgrep = request.form.get('exgrep') or request.args.get('exgrep')
|
|
hour = request.form.get('hour') or request.args.get('hour')
|
|
minute = request.form.get('minute') or request.args.get('minute')
|
|
hour1 = request.form.get('hour1') or request.args.get('hour1')
|
|
minute1 = request.form.get('minute1') or request.args.get('minute1')
|
|
log_file = request.form.get('file') or request.args.get('file')
|
|
|
|
if roxywi_common.check_user_group_for_flask():
|
|
try:
|
|
out = roxy_logs.show_roxy_log(
|
|
serv=serv, rows=rows, waf=waf, grep=grep, exgrep=exgrep, hour=hour, minute=minute,
|
|
hour1=hour1, minute1=minute1, service=service, log_file=log_file
|
|
)
|
|
except Exception as e:
|
|
return str(e)
|
|
else:
|
|
return out
|