2023-09-17 09:42:39 +00:00
|
|
|
import pytz
|
2023-10-16 10:48:38 +00:00
|
|
|
from flask import render_template, request, g
|
2023-09-17 09:42:39 +00:00
|
|
|
from flask_login import login_required
|
|
|
|
|
2023-10-16 10:12:36 +00:00
|
|
|
from app import scheduler
|
2023-09-17 09:42:39 +00:00
|
|
|
from app.routes.admin import bp
|
2023-09-30 08:48:54 +00:00
|
|
|
import app.modules.db.sql as sql
|
2024-03-03 07:11:48 +00:00
|
|
|
import app.modules.db.cred as cred_sql
|
|
|
|
import app.modules.db.user as user_sql
|
|
|
|
import app.modules.db.group as group_sql
|
|
|
|
import app.modules.db.server as server_sql
|
|
|
|
import app.modules.db.service as service_sql
|
|
|
|
from app.middleware import get_user_params
|
2023-09-30 08:48:54 +00:00
|
|
|
import app.modules.roxywi.roxy as roxy
|
|
|
|
import app.modules.roxywi.auth as roxywi_auth
|
|
|
|
import app.modules.roxywi.common as roxywi_common
|
2024-04-17 08:06:29 +00:00
|
|
|
import app.modules.tools.smon as smon_mod
|
2023-09-30 08:48:54 +00:00
|
|
|
import app.modules.tools.common as tools_common
|
2023-09-17 09:42:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
@bp.before_request
|
|
|
|
@login_required
|
|
|
|
def before_request():
|
2024-02-04 07:28:17 +00:00
|
|
|
""" Protect all the admin endpoints. """
|
2023-09-17 09:42:39 +00:00
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('')
|
2023-10-16 10:12:36 +00:00
|
|
|
@get_user_params()
|
2023-09-17 09:42:39 +00:00
|
|
|
def admin():
|
2024-05-03 12:22:58 +00:00
|
|
|
roxywi_auth.page_for_admin(level=2)
|
|
|
|
user_group = roxywi_common.get_user_group(id=1)
|
|
|
|
if g.user_params['role'] == 1:
|
|
|
|
users = user_sql.select_users()
|
|
|
|
servers = server_sql.select_servers(full=1)
|
|
|
|
masters = server_sql.select_servers(get_master_servers=1)
|
|
|
|
sshs = cred_sql.select_ssh()
|
|
|
|
else:
|
|
|
|
users = user_sql.select_users(group=user_group)
|
|
|
|
servers = roxywi_common.get_dick_permit(virt=1, disable=0, only_group=1)
|
|
|
|
masters = server_sql.select_servers(get_master_servers=1, uuid=g.user_params['user_uuid'])
|
|
|
|
sshs = cred_sql.select_ssh(group=user_group)
|
|
|
|
|
2024-01-17 06:08:27 +00:00
|
|
|
kwargs = {
|
|
|
|
'lang': g.user_params['lang'],
|
2024-05-03 12:22:58 +00:00
|
|
|
'users': users,
|
2024-03-03 07:11:48 +00:00
|
|
|
'groups': group_sql.select_groups(),
|
2024-05-03 12:22:58 +00:00
|
|
|
'group': roxywi_common.get_user_group(id=1),
|
|
|
|
'sshs': sshs,
|
|
|
|
'servers': servers,
|
2024-01-17 06:08:27 +00:00
|
|
|
'roles': sql.select_roles(),
|
|
|
|
'ldap_enable': sql.get_setting('ldap_enable'),
|
2024-03-03 07:11:48 +00:00
|
|
|
'services': service_sql.select_services(),
|
2024-05-03 12:22:58 +00:00
|
|
|
'masters': masters,
|
2024-01-17 06:08:27 +00:00
|
|
|
'guide_me': 1,
|
2024-05-03 12:22:58 +00:00
|
|
|
'user_subscription': roxywi_common.return_user_subscription(),
|
2024-05-13 09:08:51 +00:00
|
|
|
'users_roles': user_sql.select_users_roles(),
|
2024-05-03 12:22:58 +00:00
|
|
|
'user_roles': user_sql.select_user_roles_by_group(user_group),
|
2024-01-17 06:08:27 +00:00
|
|
|
}
|
2023-09-17 09:42:39 +00:00
|
|
|
|
2024-01-17 06:08:27 +00:00
|
|
|
return render_template('admin.html', **kwargs)
|
2023-09-17 09:42:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/tools')
|
|
|
|
def show_tools():
|
|
|
|
roxywi_auth.page_for_admin()
|
|
|
|
lang = roxywi_common.get_user_lang_for_flask()
|
|
|
|
try:
|
2023-10-26 08:07:08 +00:00
|
|
|
services = tools_common.get_services_status(update_cur_ver=1)
|
2023-09-17 09:42:39 +00:00
|
|
|
except Exception as e:
|
|
|
|
return str(e)
|
|
|
|
|
|
|
|
return render_template('ajax/load_services.html', services=services, lang=lang)
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/tools/update/<service>')
|
|
|
|
def update_tools(service):
|
|
|
|
roxywi_auth.page_for_admin()
|
|
|
|
|
|
|
|
try:
|
2023-09-30 08:48:54 +00:00
|
|
|
return tools_common.update_roxy_wi(service)
|
2023-09-17 09:42:39 +00:00
|
|
|
except Exception as e:
|
|
|
|
return f'error: {e}'
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/tools/action/<service>/<action>')
|
|
|
|
def action_tools(service, action):
|
|
|
|
roxywi_auth.page_for_admin()
|
|
|
|
if action not in ('start', 'stop', 'restart'):
|
|
|
|
return 'error: wrong action'
|
|
|
|
|
|
|
|
return roxy.action_service(action, service)
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/update')
|
|
|
|
def update_roxywi():
|
|
|
|
roxywi_auth.page_for_admin()
|
|
|
|
versions = roxy.versions()
|
2023-09-30 08:48:54 +00:00
|
|
|
services = tools_common.get_services_status()
|
2023-09-17 09:42:39 +00:00
|
|
|
lang = roxywi_common.get_user_lang_for_flask()
|
|
|
|
|
|
|
|
return render_template(
|
2023-10-16 10:12:36 +00:00
|
|
|
'ajax/load_updateroxywi.html', services=services, versions=versions, lang=lang
|
2023-09-17 09:42:39 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
2023-10-16 10:12:36 +00:00
|
|
|
@bp.route('/update/check')
|
|
|
|
def check_update():
|
|
|
|
roxywi_auth.page_for_admin()
|
|
|
|
scheduler.run_job('check_new_version')
|
|
|
|
return 'ok'
|
|
|
|
|
|
|
|
|
2024-05-03 12:22:58 +00:00
|
|
|
@bp.get('/settings')
|
|
|
|
@get_user_params()
|
|
|
|
def get_settings():
|
|
|
|
kwargs = {
|
|
|
|
'settings': sql.get_setting('', all=1),
|
|
|
|
'timezones': pytz.all_timezones,
|
|
|
|
}
|
|
|
|
return render_template('include/admin_settings.html', **kwargs)
|
|
|
|
|
|
|
|
|
2023-09-20 10:11:10 +00:00
|
|
|
@bp.post('/setting/<param>')
|
|
|
|
def update_settings(param):
|
|
|
|
roxywi_auth.page_for_admin(level=2)
|
|
|
|
val = request.form.get('val').replace('92', '/')
|
2023-09-17 09:42:39 +00:00
|
|
|
user_group = roxywi_common.get_user_group(id=1)
|
|
|
|
if sql.update_setting(param, val, user_group):
|
|
|
|
roxywi_common.logging('Roxy-WI server', f'The {param} setting has been changed to: {val}', roxywi=1, login=1)
|
|
|
|
|
2024-04-17 08:06:29 +00:00
|
|
|
if param == 'master_port':
|
|
|
|
try:
|
|
|
|
smon_mod.change_smon_port(val)
|
|
|
|
except Exception as e:
|
|
|
|
return f'{e}'
|
|
|
|
|
2023-09-17 09:42:39 +00:00
|
|
|
return 'Ok'
|