v8.0: Log exceptions and add DB update to version 8

Added logging for exceptions in user login and authentication processes. Enhanced `update_db.py` to include error handling for database migration and added a new database update version 8 function.
pull/399/head v8.0
Aidaho 2024-09-02 10:46:50 +03:00
parent 0727c2979f
commit 69e5c2cca9
3 changed files with 31 additions and 15 deletions

View File

@ -576,32 +576,45 @@ def update_db_v_7_3_1():
def update_db_v_7_4():
try:
migrate(
migrator.rename_column('user', 'role', 'role_id'),
migrator.rename_column('backups', 'cred', 'cred_id'),
migrator.rename_column('backups', 'backup_type', 'type'),
migrator.rename_column('servers', 'active', 'haproxy_active'),
migrator.rename_column('servers', 'metrics', 'haproxy_metrics'),
migrator.rename_column('servers', 'alert', 'haproxy_alert'),
migrator.rename_column('udp_balancers', 'desc', 'description'),
migrator.rename_column('ha_clusters', 'desc', 'description'),
migrator.rename_column('servers', 'desc', 'description'),
)
except Exception as e:
if e.args[0] == 'no such column: "cred"' or str(e) == '(1060, no such column: "cred")':
print("Updating... DB has been updated to version 7.4")
elif e.args[0] == "'bool' object has no attribute 'sql'":
print("Updating... DB has been updated to version 7.4")
else:
print("An error occurred:", e)
def update_db_v_8():
try:
migrate(
migrator.rename_column('telegram', 'groups', 'group_id'),
migrator.rename_column('slack', 'groups', 'group_id'),
migrator.rename_column('mattermost', 'groups', 'group_id'),
migrator.rename_column('pd', 'groups', 'group_id'),
migrator.rename_column('servers', 'groups', 'group_id'),
migrator.rename_column('servers', 'cred', 'cred_id'),
migrator.rename_column('servers', 'enable', 'enabled'),
migrator.rename_column('user', 'activeuser', 'enabled'),
migrator.rename_column('user', 'groups', 'group_id'),
migrator.rename_column('udp_balancers', 'desc', 'description'),
migrator.rename_column('ha_clusters', 'desc', 'description'),
migrator.rename_column('cred', 'enable', 'key_enabled'),
migrator.rename_column('cred', 'groups', 'group_id'),
migrator.rename_column('servers', 'desc', 'description'),
migrator.rename_column('servers', 'active', 'haproxy_active'),
migrator.rename_column('servers', 'metrics', 'haproxy_metrics'),
migrator.rename_column('servers', 'alert', 'haproxy_alert'),
migrator.rename_column('servers', 'cred', 'cred_id'),
migrator.rename_column('servers', 'enable', 'enabled'),
migrator.rename_column('servers', 'groups', 'group_id'),
migrator.rename_column('user', 'activeuser', 'enabled'),
migrator.rename_column('user', 'groups', 'group_id'),
migrator.rename_column('user', 'role', 'role_id'),
)
except Exception as e:
if e.args[0] == 'no such column: "role"' or str(e) == '(1060, no such column: "role")':
print("Updating... DB has been updated to version 7.4")
if e.args[0] == 'no such column: "groups"' or str(e) == '(1060, no such column: "groups")':
print("Updating... DB has been updated to version 8")
elif e.args[0] == "'bool' object has no attribute 'sql'":
print("Updating... DB has been updated to version 7.4")
print("Updating... DB has been updated to version 8")
else:
print("An error occurred:", e)
@ -633,4 +646,5 @@ def update_all():
update_db_v_7_2_3()
update_db_v_7_3_1()
update_db_v_7_4()
update_db_v_8()
update_ver()

View File

@ -52,6 +52,7 @@ def login_page():
try:
user_params = roxywi_auth.check_user_password(login, password)
except Exception as e:
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)

View File

@ -136,7 +136,8 @@ def check_user_password(login: str, password: str) -> dict:
raise Exception('There is no login or password')
try:
user = user_sql.get_user_by_username(login)
except Exception:
except Exception as e:
roxywi_common.logging('Roxy-WI server', f'error: Cannot login user {e}', roxywi=1)
raise Exception('ban')
if user.enabled == 0:
raise Exception('Your login is disabled')