Changelog: https://roxy-wi.org/changelog#7.0.0
pull/364/head
Aidaho 2023-10-01 00:38:22 +03:00
parent 9ec2cd3c8f
commit 9f022fb614
14 changed files with 224 additions and 220 deletions

View File

@ -1,19 +1,16 @@
import uuid
import distro
from datetime import datetime, timedelta
from flask import render_template, request, redirect, url_for, flash, make_response from flask import render_template, request, redirect, url_for, flash, make_response
from flask_login import login_user, login_required, logout_user, current_user from flask_login import login_required, logout_user, current_user
from app import app, login_manager, cache from app import app, login_manager, cache
import app.modules.db.sql as sql import app.modules.db.sql as sql
import app.modules.server.server as server_mod
import app.modules.roxywi.common as roxywi_common import app.modules.roxywi.common as roxywi_common
import app.modules.roxywi.auth as roxywi_auth import app.modules.roxywi.auth as roxywi_auth
import app.modules.roxywi.roxy as roxy
import app.modules.roxy_wi_tools as roxy_wi_tools import app.modules.roxy_wi_tools as roxy_wi_tools
@app.before_request @app.before_request
@cache.memoize(2)
def check_login(): def check_login():
if request.endpoint not in ('login_page', 'static', 'main.show_roxywi_version'): if request.endpoint not in ('login_page', 'static', 'main.show_roxywi_version'):
try: try:
@ -21,13 +18,13 @@ def check_login():
except Exception: except Exception:
return redirect(url_for('login_page')) return redirect(url_for('login_page'))
if user_params is None: if not sql.is_user_active(user_params['user_id']):
make_response(redirect(url_for('login_page'))) return redirect(url_for('login_page'))
try: try:
roxywi_auth.check_login(user_params['user_uuid'], user_params['token']) roxywi_auth.check_login(user_params['user_uuid'], user_params['token'])
except Exception: except Exception:
make_response(redirect(url_for('login_page'))) return redirect(url_for('login_page'))
@login_manager.user_loader @login_manager.user_loader
@ -53,6 +50,7 @@ def redirect_to_login(response):
@app.route('/login', methods=['GET', 'POST']) @app.route('/login', methods=['GET', 'POST'])
def login_page(): def login_page():
roxy.update_plan()
next_url = request.args.get('next') or request.form.get('next') next_url = request.args.get('next') or request.form.get('next')
login = request.form.get('login') login = request.form.get('login')
password = request.form.get('pass') password = request.form.get('pass')
@ -62,89 +60,31 @@ def login_page():
if next_url is None: if next_url is None:
next_url = '' next_url = ''
try:
groups = sql.select_groups(id=user_groups)
for g in groups:
if g[0] == int(user_groups):
user_group = g[1]
except Exception:
user_group = ''
try:
if distro.id() == 'ubuntu':
if os.path.exists('/etc/apt/auth.conf.d/roxy-wi.conf'):
cmd = "grep login /etc/apt/auth.conf.d/roxy-wi.conf |awk '{print $2}'"
get_user_name, stderr = server_mod.subprocess_execute(cmd)
user_name = get_user_name[0]
else:
user_name = 'git'
else:
if os.path.exists('/etc/yum.repos.d/roxy-wi.repo'):
cmd = "grep base /etc/yum.repos.d/roxy-wi.repo |awk -F\":\" '{print $2}'|awk -F\"/\" '{print $3}'"
get_user_name, stderr = server_mod.subprocess_execute(cmd)
user_name = get_user_name[0]
else:
user_name = 'git'
if sql.select_user_name():
sql.update_user_name(user_name)
else:
sql.insert_user_name(user_name)
except Exception as e:
roxywi_common.logging('Cannot update subscription: ', str(e), roxywi=1)
try:
session_ttl = int(sql.get_setting('session_ttl'))
except Exception:
session_ttl = 5
expires = datetime.utcnow() + timedelta(days=session_ttl)
if login and password: if login and password:
users = sql.select_users(user=login) users = sql.select_users(user=login)
for user in users: for user in users:
if user.activeuser == 0: if user.activeuser == 0:
flash('Your login is disabled', 'alert alert-danger wrong-login') return 'Your login is disabled', 200
if user.ldap_user == 1: if user.ldap_user == 1:
if login in user.username: if login in user.username:
print(str(user.groups))
if roxywi_auth.check_in_ldap(login, password): if roxywi_auth.check_in_ldap(login, password):
login_user(user) role = int(user.role)
resp = make_response(next_url or url_for('overview.index')) user1 = user.username
resp.set_cookie('uuid', user_uuid, secure=True, expires=expires.strftime("%a, %d %b %Y %H:%M:%S GMT")) user_uuid, user_token = roxywi_auth.create_uuid_and_token(login)
resp.set_cookie('group', str(user.groups), secure=True, expires=expires.strftime("%a, %d %b %Y %H:%M:%S GMT")) return roxywi_auth.do_login(user_uuid, str(user.groups), user, next_url)
else: else:
passwordHashed = roxy_wi_tools.Tools.get_hash(password) hashed_password = roxy_wi_tools.Tools.get_hash(password)
if login in user.username and passwordHashed == user.password: if login in user.username and hashed_password == user.password:
user_uuid = str(uuid.uuid4())
user_token = str(uuid.uuid4())
sql.write_user_uuid(login, user_uuid)
sql.write_user_token(login, user_token)
role = int(user.role) role = int(user.role)
user1 = user.username user1 = user.username
user_uuid, user_token = roxywi_auth.create_uuid_and_token(login)
login_user(user) return roxywi_auth.do_login(user_uuid, str(user.groups), user, next_url)
resp = make_response(next_url or url_for('overview.index'))
try:
resp.set_cookie('uuid', user_uuid, secure=True, expires=expires.strftime("%a, %d %b %Y %H:%M:%S GMT"))
resp.set_cookie('group', str(user.groups), secure=True, expires=expires.strftime("%a, %d %b %Y %H:%M:%S GMT"))
except Exception as e:
print(e)
try:
user_name = sql.get_user_name_by_uuid(user_uuid)
roxywi_common.logging('Roxy-WI server', f' user: {user_name}, group: {user_group} login', roxywi=1)
except Exception:
pass
return resp
else: else:
flash('Login or password is not correct', 'alert alert-danger wrong-login') return 'Login or password is not correct'
else: else:
return 'ban', 200 return 'ban', 200
else:
flash('Login or password is not correct', 'alert alert-danger wrong-login')
try: try:
lang = roxywi_common.get_user_lang_for_flask() lang = roxywi_common.get_user_lang_for_flask()

View File

@ -382,6 +382,15 @@ def select_users(**kwargs):
return query_res return query_res
def is_user_active(user_id: int) -> int:
try:
query = User.get(User.user_id == user_id).activeuser
except Exception as e:
out_error(e)
else:
return int(query)
def select_user_groups(user_id, **kwargs): def select_user_groups(user_id, **kwargs):
if kwargs.get("limit") is not None: if kwargs.get("limit") is not None:
query = UserGroups.select().where(UserGroups.user_id == user_id).limit(1) query = UserGroups.select().where(UserGroups.user_id == user_id).limit(1)

View File

@ -1,97 +1,138 @@
from flask import request, abort import uuid
from flask import request, abort, make_response, url_for
from flask_login import login_user
from datetime import datetime, timedelta
import modules.db.sql as sql import modules.db.sql as sql
import app.modules.roxywi.common as roxywi_common
def check_login(user_uuid, token, **kwargs) -> str: def check_login(user_uuid, token, **kwargs) -> str:
if user_uuid is None: if user_uuid is None:
return 'login_page' return 'login_page'
try: try:
sql.delete_old_uuid() sql.delete_old_uuid()
except Exception as e: except Exception as e:
raise Exception(f'error: cannot connect to DB {e}') raise Exception(f'error: cannot connect to DB {e}')
if user_uuid is not None: if user_uuid is not None:
if sql.get_user_name_by_uuid(user_uuid) is None: if sql.get_user_name_by_uuid(user_uuid) is None:
return 'login_page' return 'login_page'
if kwargs.get('service'): if kwargs.get('service'):
required_service = str(kwargs.get('service')) required_service = str(kwargs.get('service'))
user_id = sql.get_user_id_by_uuid(user_uuid) user_id = sql.get_user_id_by_uuid(user_uuid)
user_services = sql.select_user_services(user_id) user_services = sql.select_user_services(user_id)
if required_service in user_services: if required_service in user_services:
return 'ok' return 'ok'
else: else:
return 'index' return 'overview.index'
try: try:
ip = request.remote_addr ip = request.remote_addr
except Exception: except Exception:
ip = '' ip = ''
sql.update_last_act_user(user_uuid, token, ip) sql.update_last_act_user(user_uuid, token, ip)
return 'login_page' return 'login_page'
def is_admin(level=1, **kwargs): def is_admin(level=1, **kwargs):
if kwargs.get('role_id'): if kwargs.get('role_id'):
role = kwargs.get('role_id') role = kwargs.get('role_id')
else: else:
user_id = request.cookies.get('uuid') user_id = request.cookies.get('uuid')
group_id = request.cookies.get('group') group_id = request.cookies.get('group')
try: try:
role = sql.get_user_role_by_uuid(user_id, group_id) role = sql.get_user_role_by_uuid(user_id, group_id)
except Exception: except Exception:
role = 4 role = 4
pass pass
try: try:
return True if int(role) <= int(level) else False return True if int(role) <= int(level) else False
except Exception: except Exception:
return False return False
def page_for_admin(level=1) -> None: def page_for_admin(level=1) -> None:
if not is_admin(level=level): if not is_admin(level=level):
return abort(400, 'bad permission') return abort(400, 'bad permission')
def check_in_ldap(user, password): def check_in_ldap(user, password):
import ldap import ldap
server = sql.get_setting('ldap_server') server = sql.get_setting('ldap_server')
port = sql.get_setting('ldap_port') port = sql.get_setting('ldap_port')
ldap_class_search = sql.get_setting('ldap_class_search') ldap_class_search = sql.get_setting('ldap_class_search')
root_user = sql.get_setting('ldap_user') root_user = sql.get_setting('ldap_user')
root_password = sql.get_setting('ldap_password') root_password = sql.get_setting('ldap_password')
ldap_base = sql.get_setting('ldap_base') ldap_base = sql.get_setting('ldap_base')
ldap_search_field = sql.get_setting('ldap_search_field') ldap_search_field = sql.get_setting('ldap_search_field')
ldap_user_attribute = sql.get_setting('ldap_user_attribute') ldap_user_attribute = sql.get_setting('ldap_user_attribute')
ldap_type = sql.get_setting('ldap_type') ldap_type = sql.get_setting('ldap_type')
ldap_proto = 'ldap' if ldap_type == "0" else 'ldaps' ldap_proto = 'ldap' if ldap_type == "0" else 'ldaps'
ldap_bind = ldap.initialize('{}://{}:{}/'.format(ldap_proto, server, port)) ldap_bind = ldap.initialize('{}://{}:{}/'.format(ldap_proto, server, port))
try: try:
ldap_bind.protocol_version = ldap.VERSION3 ldap_bind.protocol_version = ldap.VERSION3
ldap_bind.set_option(ldap.OPT_REFERRALS, 0) ldap_bind.set_option(ldap.OPT_REFERRALS, 0)
bind = ldap_bind.simple_bind_s(root_user, root_password) bind = ldap_bind.simple_bind_s(root_user, root_password)
criteria = "(&(objectClass=" + ldap_class_search + ")(" + ldap_user_attribute + "=" + user + "))" criteria = "(&(objectClass=" + ldap_class_search + ")(" + ldap_user_attribute + "=" + user + "))"
attributes = [ldap_search_field] attributes = [ldap_search_field]
result = ldap_bind.search_s(ldap_base, ldap.SCOPE_SUBTREE, criteria, attributes) result = ldap_bind.search_s(ldap_base, ldap.SCOPE_SUBTREE, criteria, attributes)
bind = ldap_bind.simple_bind_s(result[0][0], password) bind = ldap_bind.simple_bind_s(result[0][0], password)
except ldap.INVALID_CREDENTIALS: except ldap.INVALID_CREDENTIALS:
return False return False
except ldap.SERVER_DOWN: except ldap.SERVER_DOWN:
raise Exception('error: LDAP server is down') raise Exception('error: LDAP server is down')
except ldap.LDAPError as e: except ldap.LDAPError as e:
if type(e.message) == dict and 'desc' in e.message: if type(e.message) == dict and 'desc' in e.message:
raise Exception(f'error: {e.message["desc"]}') raise Exception(f'error: {e.message["desc"]}')
else: else:
raise Exception (f'error: {e}') raise Exception (f'error: {e}')
else: else:
return True return True
def create_uuid_and_token(login: str):
user_uuid = str(uuid.uuid4())
user_token = str(uuid.uuid4())
sql.write_user_uuid(login, user_uuid)
sql.write_user_token(login, user_token)
return user_uuid, user_token
def do_login(user_uuid: str, user_group: str, user: str, next_url: str):
try:
session_ttl = int(sql.get_setting('session_ttl'))
except Exception:
session_ttl = 5
expires = datetime.utcnow() + timedelta(days=session_ttl)
login_user(user)
resp = make_response(next_url or url_for('overview.index'))
resp.set_cookie('uuid', user_uuid, secure=True, expires=expires.strftime("%a, %d %b %Y %H:%M:%S GMT"))
resp.set_cookie('group', str(user_group), secure=True, expires=expires.strftime("%a, %d %b %Y %H:%M:%S GMT"))
try:
user_group_name = sql.get_group_name_by_id(user_group)
except Exception:
user_group_name = ''
try:
user_name = sql.get_user_name_by_uuid(user_uuid)
roxywi_common.logging('Roxy-WI server', f' user: {user_name}, group: {user_group_name} login', roxywi=1)
except Exception as e:
print(f'error: {e}')
return resp

View File

@ -1,9 +1,8 @@
import os import os
import cgi
import glob import glob
import distro import distro
from flask import request, redirect, make_response, url_for from flask import request
import modules.db.sql as sql import modules.db.sql as sql
import modules.roxy_wi_tools as roxy_wi_tools import modules.roxy_wi_tools as roxy_wi_tools
@ -120,7 +119,7 @@ def logging(server_ip: str, action: str, **kwargs) -> None:
user_group = '' user_group = ''
try: try:
ip = cgi.escape(os.environ["REMOTE_ADDR"]) ip = request.remote_addr
except Exception: except Exception:
ip = '' ip = ''
@ -220,27 +219,24 @@ def get_users_params(**kwargs):
user_uuid = request.cookies.get('uuid') user_uuid = request.cookies.get('uuid')
user = sql.get_user_name_by_uuid(user_uuid) user = sql.get_user_name_by_uuid(user_uuid)
except Exception: except Exception:
make_response(redirect(url_for('login_page'))) raise Exception('error: Cannot get user UUID')
return
try: try:
group_id = int(request.cookies.get('group')) group_id = int(request.cookies.get('group'))
except Exception: except Exception:
make_response(redirect(url_for('login_page'))) raise Exception('error: Cannot get user group')
return
try: try:
role = sql.get_user_role_by_uuid(user_uuid, group_id) role = sql.get_user_role_by_uuid(user_uuid, group_id)
except Exception: except Exception:
make_response(redirect(url_for('login_page'))) raise Exception('error: Cannot get user role')
return
try: try:
user_id = sql.get_user_id_by_uuid(user_uuid) user_id = sql.get_user_id_by_uuid(user_uuid)
user_services = sql.select_user_services(user_id) user_services = sql.select_user_services(user_id)
token = sql.get_token(user_uuid) token = sql.get_token(user_uuid)
except Exception: except Exception:
make_response(redirect(url_for('login_page'))) raise Exception('error: Cannot get user token')
return
if kwargs.get('virt') and kwargs.get('haproxy'): if kwargs.get('virt') and kwargs.get('haproxy'):
servers = get_dick_permit(virt=1, haproxy=1) servers = get_dick_permit(virt=1, haproxy=1)
@ -264,7 +260,8 @@ def get_users_params(**kwargs):
'token': token, 'token': token,
'servers': servers, 'servers': servers,
'user_services': user_services, 'user_services': user_services,
'lang': user_lang 'lang': user_lang,
'user_id': user_id
} }
return user_params return user_params

View File

@ -1,12 +1,14 @@
import os import os
import re import re
import distro
import requests import requests
from requests.adapters import HTTPAdapter from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry from requests.packages.urllib3.util.retry import Retry
import modules.db.sql as sql import modules.db.sql as sql
import modules.roxywi.common as roxywi_common import modules.roxywi.common as roxywi_common
import app.modules.server.server as server_mod
def is_docker() -> bool: def is_docker() -> bool:
@ -34,7 +36,7 @@ def versions():
current_ver_without_dots += '0' current_ver_without_dots += '0'
current_ver_without_dots = int(current_ver_without_dots) current_ver_without_dots = int(current_ver_without_dots)
except Exception: except Exception:
current_ver = "Sorry cannot get current version" current_ver = "Cannot get current version"
current_ver_without_dots = 0 current_ver_without_dots = 0
try: try:
@ -100,3 +102,25 @@ def action_service(action: str, service: str) -> str:
os.system(cmd) os.system(cmd)
roxywi_common.logging('Roxy-WI server', f' The service {service} has been {action}ed', roxywi=1, login=1) roxywi_common.logging('Roxy-WI server', f' The service {service} has been {action}ed', roxywi=1, login=1)
return 'ok' return 'ok'
def update_plan():
try:
if distro.id() == 'ubuntu':
path_to_repo = '/etc/apt/auth.conf.d/roxy-wi.conf'
cmd = "grep login /etc/apt/auth.conf.d/roxy-wi.conf |awk '{print $2}'"
else:
path_to_repo = '/etc/yum.repos.d/roxy-wi.repo'
cmd = "grep base /etc/yum.repos.d/roxy-wi.repo |awk -F\":\" '{print $2}'|awk -F\"/\" '{print $3}'"
if os.path.exists(path_to_repo):
get_user_name, stderr = server_mod.subprocess_execute(cmd)
user_name = get_user_name[0]
else:
user_name = 'git'
if sql.select_user_name():
sql.update_user_name(user_name)
else:
sql.insert_user_name(user_name)
except Exception as e:
roxywi_common.logging('Cannot update subscription: ', str(e), roxywi=1)

View File

@ -291,8 +291,7 @@ def show_version(service, server_ip, configver, save):
stderr = config_mod.master_slave_upload_and_restart(server_ip, configver, save_action, service) stderr = config_mod.master_slave_upload_and_restart(server_ip, configver, save_action, service)
return render_template( return render_template(
'configver.html', 'configver.html', role=user_params['role'], user=user, select_id="serv", serv=server_ip, aftersave=aftersave,
h2=1, role=user_params['role'], user=user, select_id="serv", serv=server_ip, aftersave=aftersave,
selects=servers, stderr=stderr, save=save, configver=configver, service=service, selects=servers, stderr=stderr, save=save, configver=configver, service=service,
user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang'] user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang']
) )

View File

@ -1,5 +1,6 @@
import os import os
import datetime
from flask import render_template, request, redirect, url_for from flask import render_template, request, redirect, url_for
from flask_login import login_required from flask_login import login_required
@ -39,7 +40,6 @@ def logs_internal():
time_storage = sql.get_setting('log_time_storage') time_storage = sql.get_setting('log_time_storage')
log_path = get_config.get_config_var('main', 'log_path') log_path = get_config.get_config_var('main', 'log_path')
selects = roxywi_common.get_files(log_path, file_format="log")
try: try:
time_storage_hours = time_storage * 24 time_storage_hours = time_storage * 24
@ -49,8 +49,10 @@ def logs_internal():
file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath)) file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath))
if datetime.datetime.now() - file_modified > datetime.timedelta(hours=time_storage_hours): if datetime.datetime.now() - file_modified > datetime.timedelta(hours=time_storage_hours):
os.remove(curpath) os.remove(curpath)
except Exception: except Exception as e:
pass print(f'error: cannot delete old log files: {e}')
selects = roxywi_common.get_files(log_path, file_format="log")
if log_type is None: if log_type is None:
selects.append(['fail2ban.log', 'fail2ban.log']) selects.append(['fail2ban.log', 'fail2ban.log'])
@ -58,7 +60,7 @@ def logs_internal():
selects.append(['roxy-wi.access.log', 'access.log']) selects.append(['roxy-wi.access.log', 'access.log'])
return render_template( return render_template(
'logs_internal.html', h2=1, autorefresh=1, role=user_params['role'], user=user, 'logs_internal.html', autorefresh=1, role=user_params['role'], user=user,
user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang'], user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang'],
selects=selects, serv='viewlogs' selects=selects, serv='viewlogs'
) )

View File

@ -60,7 +60,7 @@ def stats(service, serv):
return redirect(url_for('overview.index')) return redirect(url_for('overview.index'))
return render_template( return render_template(
'statsview.html', h2=1, autorefresh=1, role=user_params['role'], user=user, selects=servers, serv=serv, 'statsview.html', autorefresh=1, role=user_params['role'], user=user, selects=servers, serv=serv,
service=service, user_services=user_params['user_services'], token=user_params['token'], service=service, user_services=user_params['user_services'], token=user_params['token'],
select_id="serv", lang=user_params['lang'], service_desc=service_desc select_id="serv", lang=user_params['lang'], service_desc=service_desc
) )

View File

@ -27,9 +27,9 @@ def index():
groups = sql.select_groups() groups = sql.select_groups()
return render_template( return render_template(
'ovw.html', h2=1, autorefresh=1, role=user_params['role'], user=user, groups=groups, 'ovw.html', autorefresh=1, role=user_params['role'], user=user, groups=groups, roles=sql.select_roles(),
roles=sql.select_roles(), servers=user_params['servers'], user_services=user_params['user_services'], servers=user_params['servers'], user_services=user_params['user_services'], roxy_wi_log=roxy_logs.roxy_wi_log(),
roxy_wi_log=roxy_logs.roxy_wi_log(), token=user_params['token'], guide_me=1, lang=user_params['lang'] token=user_params['token'], guide_me=1, lang=user_params['lang']
) )

View File

@ -41,7 +41,7 @@ def portscanner():
user_subscription = roxywi_common.return_user_subscription() user_subscription = roxywi_common.return_user_subscription()
return render_template( return render_template(
'portscanner.html', h2=1, autorefresh=0, role=user_params['role'], user=user, servers=user_params['servers'], 'portscanner.html', autorefresh=0, role=user_params['role'], user=user, servers=user_params['servers'],
port_scanner_settings=port_scanner_settings, count_ports=count_ports, port_scanner=''.join(port_scanner), port_scanner_settings=port_scanner_settings, count_ports=count_ports, port_scanner=''.join(port_scanner),
port_scanner_stderr=port_scanner_stderr, user_services=user_params['user_services'], user_status=user_subscription['user_status'], port_scanner_stderr=port_scanner_stderr, user_services=user_params['user_services'], user_status=user_subscription['user_status'],
user_plan=user_subscription['user_plan'], token=user_params['token'], lang=user_params['lang'] user_plan=user_subscription['user_plan'], token=user_params['token'], lang=user_params['lang']

View File

@ -15,7 +15,7 @@ def before_request():
pass pass
@bp.route('/') @bp.route('')
def runtimeapi(): def runtimeapi():
try: try:
user_params = roxywi_common.get_users_params(haproxy=1) user_params = roxywi_common.get_users_params(haproxy=1)

View File

@ -103,9 +103,9 @@ def smon_history():
return redirect(url_for('login_page')) return redirect(url_for('login_page'))
return render_template( return render_template(
'smon/history.html', h2=1, autorefresh=0, role=user_params['role'], user=user, smon=smon, 'smon/history.html', autorefresh=0, role=user_params['role'], user=user, smon=smon, lang=user_params['lang'],
lang=user_params['lang'], user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], token=user_params['token'],
token=user_params['token'], smon_status=smon_status, smon_error=stderr, user_services=user_params['user_services'] smon_status=smon_status, smon_error=stderr, user_services=user_params['user_services']
) )
@ -126,7 +126,7 @@ def smon_host_history(server_ip):
return redirect(url_for('login_page')) return redirect(url_for('login_page'))
return render_template( return render_template(
'smon/history.html', h2=1, autorefresh=0, role=user_params['role'], user=user, smon=smon, 'smon/history.html', autorefresh=0, role=user_params['role'], user=user, smon=smon,
lang=user_params['lang'], user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], lang=user_params['lang'], user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'],
token=user_params['token'], smon_status=smon_status, smon_error=stderr, user_services=user_params['user_services'] token=user_params['token'], smon_status=smon_status, smon_error=stderr, user_services=user_params['user_services']
) )
@ -169,7 +169,7 @@ def smon_admin():
return redirect(url_for('login_page')) return redirect(url_for('login_page'))
return render_template( return render_template(
'smon/add.html', h2=1, autorefresh=0, role=user_params['role'], user=user, smon=smon, lang=user_params['lang'], 'smon/add.html', autorefresh=0, role=user_params['role'], user=user, smon=smon, lang=user_params['lang'],
user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], token=user_params['token'], user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], token=user_params['token'],
smon_status=smon_status, smon_error=stderr, user_services=user_params['user_services'], telegrams=telegrams, smon_status=smon_status, smon_error=stderr, user_services=user_params['user_services'], telegrams=telegrams,
slacks=slacks, pds=pds, smon_ping=smon_ping, smon_tcp=smon_tcp, smon_http=smon_http, smon_dns=smon_dns slacks=slacks, pds=pds, smon_ping=smon_ping, smon_tcp=smon_tcp, smon_http=smon_http, smon_dns=smon_dns

View File

@ -50,12 +50,11 @@ def waf(service):
autorefresh = 1 autorefresh = 1
return render_template( return render_template(
'waf.html', 'waf.html', title=title, autorefresh=autorefresh, role=user_params['role'], user=user_params['user'], serv=serv,
h2=1, title=title, autorefresh=autorefresh, role=user_params['role'], user=user_params['user'], serv=serv, servers=servers_waf, servers_all=servers, manage_rules=manage_rules, rules=rules,
servers=servers_waf, user_services=user_params['user_services'], waf_rule_file=waf_rule_file, waf_rule_id=waf_rule_id,
servers_all=servers, manage_rules=manage_rules, rules=rules, user_services=user_params['user_services'], config=config_read, cfg=cfg, token=user_params['token'], config_file_name=config_file_name, service=service,
waf_rule_file=waf_rule_file, waf_rule_id=waf_rule_id, config=config_read, cfg=cfg, token=user_params['token'], lang=user_params['lang']
config_file_name=config_file_name, service=service, lang=user_params['lang']
) )
@ -82,12 +81,11 @@ def waf_rules(service, server_ip):
roxywi_auth.check_login(user_params['user_uuid'], user_params['token'], service=1) roxywi_auth.check_login(user_params['user_uuid'], user_params['token'], service=1)
return render_template( return render_template(
'waf.html', 'waf.html', title=title, autorefresh=0, role=user_params['role'], user=user_params['user'], serv=server_ip,
h2=1, title=title, autorefresh=0, role=user_params['role'], user=user_params['user'], serv=server_ip, servers=servers_waf, servers_all=servers, manage_rules=manage_rules, rules=rules,
servers=servers_waf, user_services=user_params['user_services'], waf_rule_file=waf_rule_file, waf_rule_id=waf_rule_id,
servers_all=servers, manage_rules=manage_rules, rules=rules, user_services=user_params['user_services'], config=config_read, cfg=cfg, token=user_params['token'], config_file_name=config_file_name, service=service,
waf_rule_file=waf_rule_file, waf_rule_id=waf_rule_id, config=config_read, cfg=cfg, token=user_params['token'], lang=user_params['lang']
config_file_name=config_file_name, service=service, lang=user_params['lang']
) )
@ -125,12 +123,10 @@ def waf_rule_edit(service, server_ip, rule_id):
print('Cannot read imported config file') print('Cannot read imported config file')
return render_template( return render_template(
'waf.html', 'waf.html', title=title, autorefresh=0, role=user_params['role'], user=user_params['user'], serv=server_ip,
h2=1, title=title, autorefresh=0, role=user_params['role'], user=user_params['user'], serv=server_ip, servers=servers_waf, servers_all=servers, manage_rules=manage_rules, rules=rules,
servers=servers_waf, user_services=user_params['user_services'], waf_rule_file=waf_rule_file, waf_rule_id=rule_id, config=config_read,
servers_all=servers, manage_rules=manage_rules, rules=rules, user_services=user_params['user_services'], cfg=cfg, token=user_params['token'], config_file_name=config_file_name, service=service, lang=user_params['lang']
waf_rule_file=waf_rule_file, waf_rule_id=rule_id, config=config_read, cfg=cfg, token=user_params['token'],
config_file_name=config_file_name, service=service, lang=user_params['lang']
) )

View File

@ -206,26 +206,24 @@
</div> </div>
</div> </div>
<div class="container"> <div class="container">
{% if h2 %} <h2>
<h2> {% block h2 %}{% endblock %}
{% block h2 %}{% endblock %} {% include 'include/login.html' %}
{% include 'include/login.html' %} {% if autorefresh %}
{% if autorefresh %} <span class="auto-refresh">
<span class="auto-refresh"> <a onclick="pauseAutoRefresh()" class="auto-refresh-pause" style="display: none; margin-top: 3px; position: absolute;"></a>
<a onclick="pauseAutoRefresh()" class="auto-refresh-pause" style="display: none; margin-top: 3px; position: absolute;"></a> <a onclick="pauseAutoResume()" class="auto-refresh-resume" style="display: none; margin-top: 4px; position: absolute;"></a>
<a onclick="pauseAutoResume()" class="auto-refresh-resume" style="display: none; margin-top: 4px; position: absolute;"></a> <span id="0" class="auto-refresh-span">
<span id="0" class="auto-refresh-span"> <span class="auto-refresh-reload auto-refresh-reload-icon"></span>
<span class="auto-refresh-reload auto-refresh-reload-icon"></span> {{lang.words.auto|title()}}-{{lang.words.refresh}}
{{lang.words.auto|title()}}-{{lang.words.refresh}} </span>
</span> <span id="1" style="display: none;" class="auto-refresh-span">
<span id="1" style="display: none;" class="auto-refresh-span"> <span class="auto-refresh-reload auto-refresh-reload-icon"></span>
<span class="auto-refresh-reload auto-refresh-reload-icon"></span> {{lang.words.auto|title()}}-{{lang.words.refresh}}
{{lang.words.auto|title()}}-{{lang.words.refresh}} </span>
</span> </span>
</span> {% endif %}
{% endif %} </h2>
</h2>
{% endif %}
{% if autorefresh %} {% if autorefresh %}
<div class="auto-refresh-div"> <div class="auto-refresh-div">
<div class="auto-refresh-head"> <div class="auto-refresh-head">
@ -266,9 +264,7 @@
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% if h2 %} <ul id='browse_histroy'></ul>
<ul id='browse_histroy'></ul>
{% endif %}
{% if role %} {% if role %}
{% if role <= 2 %} {% if role <= 2 %}
<div id="apply" style="display: none;"> <div id="apply" style="display: none;">