mirror of https://github.com/Aidaho12/haproxy-wi
v8.1.2: Refactor database interactions and cleanup unused code
Refactor multiple functions to call `get_group` instead of `get_group_name_by_id`. Remove the `ApiToken` class and related database table operations. Simplify the template logic in `show_sub_ovw.html` by removing unnecessary loop and context variables. Cleanup unused imports and streamline several function implementations across the codebase.pull/401/head
parent
e9473088d5
commit
0128321642
|
@ -55,10 +55,12 @@ def login_page():
|
|||
print(str(e))
|
||||
return roxywi_common.handle_json_exceptions(e, 'Cannot check login password'), 401
|
||||
try:
|
||||
return roxywi_auth.do_login(user_params, next_url)
|
||||
response = roxywi_auth.do_login(user_params, next_url)
|
||||
except Exception as e:
|
||||
return roxywi_common.handle_json_exceptions(e, 'Cannot do login'), 401
|
||||
|
||||
return response
|
||||
|
||||
|
||||
@app.route('/logout', methods=['GET', 'POST'])
|
||||
@jwt_required()
|
||||
|
|
|
@ -149,19 +149,6 @@ class PD(BaseModel):
|
|||
table_name = 'pd'
|
||||
|
||||
|
||||
class ApiToken(BaseModel):
|
||||
token = CharField()
|
||||
user_name = CharField()
|
||||
user_group_id = IntegerField()
|
||||
user_role = IntegerField()
|
||||
create_date = DateTimeField(default=datetime.now)
|
||||
expire_date = DateTimeField(default=datetime.now)
|
||||
|
||||
class Meta:
|
||||
table_name = 'api_tokens'
|
||||
primary_key = False
|
||||
|
||||
|
||||
class Setting(BaseModel):
|
||||
param = CharField()
|
||||
value = CharField(null=True)
|
||||
|
@ -804,7 +791,7 @@ def create_tables():
|
|||
conn = connect()
|
||||
with conn:
|
||||
conn.create_tables(
|
||||
[User, Server, Role, Telegram, Slack, ApiToken, Groups, UserGroups, ConfigVersion, Setting, RoxyTool, Alerts,
|
||||
[User, Server, Role, Telegram, Slack, Groups, UserGroups, ConfigVersion, Setting, RoxyTool, Alerts,
|
||||
Cred, Backup, Metrics, WafMetrics, Version, Option, SavedServer, Waf, ActionHistory, PortScannerSettings,
|
||||
PortScannerPorts, PortScannerHistory, ServiceSetting, MetricsHttpStatus, SMON, WafRules, GeoipCodes,
|
||||
NginxMetrics, SystemInfo, Services, UserName, GitSetting, CheckerSetting, ApacheMetrics, WafNginx, ServiceStatus,
|
||||
|
|
|
@ -3,20 +3,11 @@ from app.modules.db.common import out_error
|
|||
from app.modules.roxywi.exception import RoxywiResourceNotFound
|
||||
|
||||
|
||||
def select_groups(**kwargs):
|
||||
if kwargs.get("group") is not None:
|
||||
query = Groups.select().where(Groups.name == kwargs.get('group'))
|
||||
elif kwargs.get("id") is not None:
|
||||
query = Groups.select().where(Groups.group_id == kwargs.get('id'))
|
||||
else:
|
||||
query = Groups.select().order_by(Groups.group_id)
|
||||
|
||||
def select_groups():
|
||||
try:
|
||||
query_res = query.execute()
|
||||
return Groups.select().order_by(Groups.group_id).execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
else:
|
||||
return query_res
|
||||
|
||||
|
||||
def add_group(name: str, description: str) -> int:
|
||||
|
@ -107,8 +98,6 @@ def delete_group_settings(group_id):
|
|||
group_for_delete.execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def update_group(name, descript, group_id):
|
||||
|
@ -117,24 +106,12 @@ def update_group(name, descript, group_id):
|
|||
group_update.execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def get_group_name_by_id(group_id):
|
||||
def get_group(group_id: int) -> Groups:
|
||||
try:
|
||||
return Groups.get(Groups.group_id == group_id).name
|
||||
return Groups.get(Groups.group_id == group_id)
|
||||
except Groups.DoesNotExist:
|
||||
raise RoxywiResourceNotFound
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
|
||||
|
||||
def get_group_id_by_name(group_name):
|
||||
try:
|
||||
group_id = Groups.get(Groups.name == group_name)
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
else:
|
||||
return group_id.group_id
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
from typing import Union
|
||||
|
||||
from app.modules.db.db_model import UserName, RoxyTool, Version
|
||||
from app.modules.db.common import out_error
|
||||
|
||||
|
@ -9,19 +11,9 @@ def insert_user_name(user_name):
|
|||
pass
|
||||
|
||||
|
||||
def select_user_name():
|
||||
try:
|
||||
query_res = UserName.get().UserName
|
||||
except Exception:
|
||||
return False
|
||||
else:
|
||||
return query_res
|
||||
|
||||
|
||||
def update_user_name(user_name):
|
||||
user_update = UserName.update(UserName=user_name)
|
||||
try:
|
||||
user_update.execute()
|
||||
UserName.update(UserName=user_name).execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
return False
|
||||
|
@ -30,46 +22,22 @@ def update_user_name(user_name):
|
|||
|
||||
|
||||
def update_user_status(status, plan, method):
|
||||
user_update = UserName.update(Status=status, Method=method, Plan=plan)
|
||||
try:
|
||||
user_update.execute()
|
||||
UserName.update(Status=status, Method=method, Plan=plan).execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
|
||||
|
||||
def get_user() -> Union[UserName, bool]:
|
||||
try:
|
||||
return UserName.get()
|
||||
except Exception:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def select_user_status():
|
||||
try:
|
||||
query_res = UserName.get().Status
|
||||
except Exception:
|
||||
return False
|
||||
else:
|
||||
return query_res
|
||||
|
||||
|
||||
def select_user_plan():
|
||||
try:
|
||||
query_res = UserName.get().Plan
|
||||
except Exception:
|
||||
return False
|
||||
else:
|
||||
return query_res
|
||||
|
||||
|
||||
def select_user_all():
|
||||
try:
|
||||
query_res = UserName.select()
|
||||
except Exception:
|
||||
return False
|
||||
else:
|
||||
return query_res
|
||||
|
||||
|
||||
def get_roxy_tools():
|
||||
query = RoxyTool.select()
|
||||
try:
|
||||
query_res = query.where(RoxyTool.is_roxy == 1).execute()
|
||||
query_res = RoxyTool.select().where(RoxyTool.is_roxy == 1).execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
else:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from peewee import Case, JOIN
|
||||
|
||||
from app.modules.db.db_model import User, UserGroups, Groups, ApiToken
|
||||
from app.modules.db.db_model import User, UserGroups, Groups
|
||||
from app.modules.db.sql import get_setting
|
||||
from app.modules.db.common import out_error
|
||||
import app.modules.roxy_wi_tools as roxy_wi_tools
|
||||
|
@ -29,13 +29,6 @@ def add_user(user, email, password, role, enabled, group):
|
|||
return last_id
|
||||
|
||||
|
||||
def update_user(user, email, role, user_id, enabled):
|
||||
try:
|
||||
User.update(username=user, email=email, role_id=role, enabled=enabled).where(User.user_id == user_id).execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
|
||||
|
||||
def update_user_from_admin_area(user_id, **kwargs):
|
||||
try:
|
||||
User.update(**kwargs).where(User.user_id == user_id).execute()
|
||||
|
@ -85,11 +78,10 @@ def delete_user(user_id):
|
|||
user_for_delete = User.delete().where(User.user_id == user_id)
|
||||
user_for_delete.execute()
|
||||
delete_user_groups(user_id)
|
||||
except User.DoesNotExist:
|
||||
raise RoxywiResourceNotFound
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def update_user_role(user_id: int, group_id: int, role_id: int) -> None:
|
||||
|
|
|
@ -5,7 +5,6 @@ from flask_jwt_extended import verify_jwt_in_request
|
|||
|
||||
import app.modules.db.sql as sql
|
||||
import app.modules.db.user as user_sql
|
||||
import app.modules.db.group as group_sql
|
||||
import app.modules.db.service as service_sql
|
||||
import app.modules.roxywi.common as roxywi_common
|
||||
import app.modules.roxy_wi_tools as roxy_wi_tools
|
||||
|
@ -113,16 +112,6 @@ def do_login(user_params: dict, next_url: str):
|
|||
access_token = create_jwt_token(user_params)
|
||||
set_access_cookies(response, access_token)
|
||||
|
||||
try:
|
||||
user_group_name = group_sql.get_group_name_by_id(user_params['group'])
|
||||
except Exception:
|
||||
user_group_name = ''
|
||||
|
||||
try:
|
||||
roxywi_common.logging('Roxy-WI server', f'user: {user_params["name"]}, group: {user_group_name} login', roxywi=1)
|
||||
except Exception as e:
|
||||
print(str(e))
|
||||
|
||||
return response
|
||||
|
||||
|
||||
|
|
|
@ -33,13 +33,12 @@ def get_user_group(**kwargs) -> int:
|
|||
verify_jwt_in_request()
|
||||
claims = get_jwt()
|
||||
user_group_id = claims['group']
|
||||
groups = group_sql.select_groups(id=user_group_id)
|
||||
for group in groups:
|
||||
if group.group_id == int(user_group_id):
|
||||
if kwargs.get('id'):
|
||||
user_group = group.group_id
|
||||
else:
|
||||
user_group = group.name
|
||||
group = group_sql.get_group(user_group_id)
|
||||
if group.group_id == int(user_group_id):
|
||||
if kwargs.get('id'):
|
||||
user_group = group.group_id
|
||||
else:
|
||||
user_group = group.name
|
||||
except Exception as e:
|
||||
raise Exception(f'error: {e}')
|
||||
return user_group
|
||||
|
@ -273,8 +272,8 @@ def get_user_lang_for_flask() -> str:
|
|||
|
||||
def return_user_status() -> dict:
|
||||
user_subscription = {}
|
||||
user_subscription.setdefault('user_status', roxy_sql.select_user_status())
|
||||
user_subscription.setdefault('user_plan', roxy_sql.select_user_plan())
|
||||
user_subscription.setdefault('user_status', roxy_sql.get_user().Status)
|
||||
user_subscription.setdefault('user_plan', roxy_sql.get_user().Plan)
|
||||
|
||||
return user_subscription
|
||||
|
||||
|
|
|
@ -13,13 +13,11 @@ def update_group(group_id: int, group_name: str, desc: str) -> None:
|
|||
raise Exception(e)
|
||||
|
||||
|
||||
def delete_group(group_id: int) -> str:
|
||||
group = group_sql.select_groups(id=group_id)
|
||||
group_name = ''
|
||||
def delete_group(group_id: int) -> None:
|
||||
group_name = group_sql.get_group(group_id).name
|
||||
|
||||
for g in group:
|
||||
group_name = g.name
|
||||
|
||||
if group_sql.delete_group(group_id):
|
||||
try:
|
||||
group_sql.delete_group(group_id)
|
||||
roxywi_common.logging('Roxy-WI server', f'The {group_name} has been deleted', roxywi=1, login=1)
|
||||
return 'ok'
|
||||
except Exception as e:
|
||||
raise e
|
||||
|
|
|
@ -37,7 +37,7 @@ def user_owv() -> str:
|
|||
def show_sub_ovw() -> str:
|
||||
lang = roxywi_common.get_user_lang_for_flask()
|
||||
|
||||
return render_template('ajax/show_sub_ovw.html', sub=roxy_sql.select_user_all(), lang=lang)
|
||||
return render_template('ajax/show_sub_ovw.html', sub=roxy_sql.get_user(), lang=lang)
|
||||
|
||||
|
||||
def show_overview(serv) -> str:
|
||||
|
|
|
@ -102,7 +102,7 @@ def action_service(action: str, service: str) -> str:
|
|||
'restart': 'restart',
|
||||
}
|
||||
cmd = f"sudo systemctl {actions[action]} {service}"
|
||||
if not roxy_sql.select_user_status():
|
||||
if not roxy_sql.get_user().Status:
|
||||
return 'warning: The service is disabled because you are not subscribed. Read <a href="https://roxy-wi.org/pricing" ' \
|
||||
'title="Roxy-WI pricing" target="_blank">here</a> about subscriptions'
|
||||
if is_in_docker:
|
||||
|
@ -138,7 +138,7 @@ def update_plan():
|
|||
else:
|
||||
user_name = 'git'
|
||||
|
||||
if roxy_sql.select_user_name():
|
||||
if roxy_sql.get_user().UserName:
|
||||
roxy_sql.update_user_name(user_name)
|
||||
else:
|
||||
roxy_sql.insert_user_name(user_name)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
from typing import Union
|
||||
|
||||
from flask import render_template, make_response
|
||||
|
||||
|
@ -9,27 +10,27 @@ import app.modules.roxywi.common as roxywi_common
|
|||
import app.modules.tools.alerting as alerting
|
||||
|
||||
|
||||
def create_user(new_user: str, email: str, password: str, role: int, enabled: int, group: int) -> int:
|
||||
def create_user(new_user: str, email: str, password: str, role: int, enabled: int, group: int) -> Union[int, tuple]:
|
||||
try:
|
||||
user_id = user_sql.add_user(new_user, email, password, role, enabled, group)
|
||||
roxywi_common.logging(f'a new user {new_user}', 'has been created', roxywi=1, login=1)
|
||||
try:
|
||||
user_sql.update_user_role(user_id, group, role)
|
||||
except Exception as e:
|
||||
raise Exception(f'error: cannot update user role {e}')
|
||||
try:
|
||||
if password == 'aduser':
|
||||
password = 'your domain password'
|
||||
message = f"A user has been created for you on Roxy-WI portal!\n\n" \
|
||||
f"Now you can login to https://{os.environ.get('HTTP_HOST', '')}\n\n" \
|
||||
f"Your credentials are:\n" \
|
||||
f"Login: {new_user}\n" \
|
||||
f"Password: {password}"
|
||||
alerting.send_email(email, 'A user has been created for you', message)
|
||||
except Exception as e:
|
||||
roxywi_common.logging('error: Cannot send email for a new user', e, roxywi=1, login=1)
|
||||
except Exception as e:
|
||||
roxywi_common.handle_exceptions(e, 'Roxy-WI server', 'Cannot create a new user', roxywi=1, login=1)
|
||||
return roxywi_common.handler_exceptions_for_json_data(e, 'Cannot create a new user')
|
||||
try:
|
||||
user_sql.update_user_role(user_id, group, role)
|
||||
except Exception as e:
|
||||
return roxywi_common.handler_exceptions_for_json_data(e, 'Cannot update user role')
|
||||
try:
|
||||
if password == 'aduser':
|
||||
password = 'your domain password'
|
||||
message = f"A user has been created for you on Roxy-WI portal!\n\n" \
|
||||
f"Now you can login to https://{os.environ.get('HTTP_HOST', '')}\n\n" \
|
||||
f"Your credentials are:\n" \
|
||||
f"Login: {new_user}\n" \
|
||||
f"Password: {password}"
|
||||
alerting.send_email(email, 'A user has been created for you', message)
|
||||
except Exception as e:
|
||||
roxywi_common.logging('error: Cannot send email for a new user', str(e), roxywi=1, login=1)
|
||||
|
||||
return user_id
|
||||
|
||||
|
@ -39,10 +40,13 @@ def delete_user(user_id: int):
|
|||
count_super_admin_users = user_sql.get_super_admin_count()
|
||||
if count_super_admin_users < 2:
|
||||
raise Exception('error: you cannot delete a last user with superAdmin role')
|
||||
user = user_sql.get_user_id(user_id)
|
||||
if user_sql.delete_user(user_id):
|
||||
try:
|
||||
user = user_sql.get_user_id(user_id)
|
||||
user_sql.delete_user(user_id)
|
||||
user_sql.delete_user_groups(user_id)
|
||||
roxywi_common.logging(user.username, 'has been deleted user', roxywi=1, login=1)
|
||||
except Exception as e:
|
||||
return roxywi_common.handler_exceptions_for_json_data(e)
|
||||
|
||||
|
||||
def update_user_password(password, user_id):
|
||||
|
@ -83,26 +87,11 @@ def change_user_active_group(group_id: int, user_id: int) -> str:
|
|||
|
||||
|
||||
def get_user_active_group(group_id: int, user_id: int) -> str:
|
||||
# group_id = user_sql.get_user_id_by_uuid(uuid)
|
||||
groups = user_sql.select_user_groups_with_names(user_id)
|
||||
lang = roxywi_common.get_user_lang_for_flask()
|
||||
return render_template('ajax/user_current_group.html', groups=groups, group=group_id, lang=lang)
|
||||
|
||||
|
||||
# def show_user_groups_and_roles(user_id: int, lang: str) -> str:
|
||||
# groups = user_sql.select_user_groups_with_names(user_id, user_not_in_group=1)
|
||||
# roles = sql.select_roles()
|
||||
# user_groups = user_sql.select_user_groups_with_names(user_id)
|
||||
# return render_template('ajax/user_groups_and_roles.html', groups=groups, user_groups=user_groups, roles=roles, lang=lang)
|
||||
|
||||
|
||||
# def is_current_user(user_id: int, user_uuid: str) -> bool:
|
||||
# current_user_id = user_sql.get_user_id_by_uuid(user_uuid)
|
||||
# if current_user_id == user_id:
|
||||
# return True
|
||||
# return False
|
||||
|
||||
|
||||
def save_user_group_and_role(user: str, groups_and_roles: dict):
|
||||
resp = make_response('ok')
|
||||
for k, v in groups_and_roles.items():
|
||||
|
|
|
@ -93,7 +93,7 @@ def create_ssh_cred(name: str, password: str, group: int, username: str, enable:
|
|||
def upload_ssh_key(ssh_id: int, key: str, passphrase: str) -> None:
|
||||
key = key.replace("'", "")
|
||||
ssh = cred_sql.get_ssh(ssh_id)
|
||||
group_name = group_sql.get_group_name_by_id(ssh.group_id)
|
||||
group_name = group_sql.get_group(ssh.group_id).name
|
||||
lib_path = get_config.get_config_var('main', 'lib_path')
|
||||
full_dir = f'{lib_path}/keys/'
|
||||
name = ssh.name
|
||||
|
@ -242,7 +242,7 @@ def get_creds(group_id: int = None, cred_id: int = None, not_shared: bool = Fals
|
|||
|
||||
def _return_correct_ssh_file(cred: CredRequest) -> str:
|
||||
lib_path = get_config.get_config_var('main', 'lib_path')
|
||||
group_name = group_sql.get_group_name_by_id(cred.group_id)
|
||||
group_name = group_sql.get_group(cred.group_id).name
|
||||
if group_name not in cred.name:
|
||||
return f'{lib_path}/keys/{cred.name}_{group_name}.pem'
|
||||
else:
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
from typing import Union
|
||||
|
||||
from matplotlib.artist import kwdoc
|
||||
|
||||
import app.modules.db.server as server_sql
|
||||
import app.modules.db.ha_cluster as ha_sql
|
||||
import app.modules.db.service as service_sql
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
{% import 'languages/'+lang|default('en')+'.html' as lang %}
|
||||
{% for s in sub %}
|
||||
{% if s.Plan == 'user' %}
|
||||
{% if sub.Plan == 'user' %}
|
||||
{% set plan = 'Home' %}
|
||||
{% elif s.Plan == 'company' %}
|
||||
{% elif sub.Plan == 'company' %}
|
||||
{% set plan = 'Enterprise' %}
|
||||
{% elif s.Plan == 'cloud' %}
|
||||
{% elif sub.Plan == 'cloud' %}
|
||||
{% set plan = 'Cloud' %}
|
||||
{% elif s.Plan == 'support' %}
|
||||
{% elif sub.Plan == 'support' %}
|
||||
{% set plan = 'Premium' %}
|
||||
{% elif s.Plan == 'Trial' %}
|
||||
{% elif sub.Plan == 'Trial' %}
|
||||
{% set plan = 'Trial' %}
|
||||
{% else %}
|
||||
{% set plan = 'Free' %}
|
||||
|
@ -24,7 +23,7 @@
|
|||
N/A
|
||||
{% else %}
|
||||
<span
|
||||
{% if s.Status|int() == 1 %}
|
||||
{% if sub.Status|int() == 1 %}
|
||||
style="color: var(--green-color); font-weight: bold">{{lang.words.active|title()}}
|
||||
{% else %}
|
||||
style="color: var(--red-color); font-weight: bold">Blocked
|
||||
|
@ -39,14 +38,13 @@
|
|||
{% if plan == 'Free' %}
|
||||
N/A
|
||||
{% else %}
|
||||
{% if s.Method == 'Boosty' %}
|
||||
{% if sub.Method == 'Boosty' %}
|
||||
<a href="https://boosty.to/roxy-wi" title="Boosty.to" class="logs_link" target="_blank">Boosty</a>
|
||||
{% elif s.Method == 'Patreon' %}
|
||||
{% elif sub.Method == 'Patreon' %}
|
||||
<a href="https://www.patreon.com/roxy_wi" title="Patreon.con" class="logs_link" target="_blank">Patreon</a>
|
||||
{% else %}
|
||||
{{s.Method}}
|
||||
{{sub.Method}}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -176,6 +176,7 @@
|
|||
{% endif %}
|
||||
<script>
|
||||
{%- for server in servers %}
|
||||
sessionStorage.removeItem('server-{{ server.0 }}')
|
||||
setInterval(serverIsUp, 18000, '{{server.0}}');
|
||||
serverIsUp('{{server.0}}');
|
||||
{%- endfor %}
|
||||
|
|
|
@ -458,9 +458,8 @@ class ServerGroupView(MethodView):
|
|||
description: 'Server group not found'
|
||||
"""
|
||||
try:
|
||||
groups = group_sql.select_groups(id=group_id)
|
||||
for group in groups:
|
||||
return model_to_dict(group)
|
||||
group = group_sql.get_group(group_id)
|
||||
return model_to_dict(group)
|
||||
except Exception as e:
|
||||
return roxywi_common.handler_exceptions_for_json_data(e, 'Cannot get group')
|
||||
|
||||
|
@ -564,9 +563,7 @@ class ServerGroupView(MethodView):
|
|||
@staticmethod
|
||||
def _check_is_user_and_group(group_id: int):
|
||||
try:
|
||||
groups = group_sql.get_group_name_by_id(group_id)
|
||||
if len(groups) == 0:
|
||||
raise RoxywiResourceNotFound
|
||||
group_sql.get_group(group_id)
|
||||
except Exception as e:
|
||||
raise e
|
||||
|
||||
|
|
|
@ -485,9 +485,7 @@ class UserGroupView(MethodView):
|
|||
def _check_is_user_and_group(user_id: int, group_id: int):
|
||||
try:
|
||||
_ = user_sql.get_user_id(user_id)
|
||||
groups = group_sql.get_group_name_by_id(group_id)
|
||||
if len(groups) == 0:
|
||||
raise RoxywiResourceNotFound
|
||||
group_sql.get_group(group_id)
|
||||
except Exception as e:
|
||||
raise e
|
||||
|
||||
|
|
Loading…
Reference in New Issue