From 69e5c2cca9c025fdc978dde542be30f582f4982e Mon Sep 17 00:00:00 2001 From: Aidaho Date: Mon, 2 Sep 2024 10:46:50 +0300 Subject: [PATCH] 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. --- app/create_db.py | 42 +++++++++++++++++++++++++------------- app/login.py | 1 + app/modules/roxywi/auth.py | 3 ++- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/app/create_db.py b/app/create_db.py index 2f103ca0..6cb96f28 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -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() diff --git a/app/login.py b/app/login.py index 8576b06e..b7ed842c 100644 --- a/app/login.py +++ b/app/login.py @@ -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) diff --git a/app/modules/roxywi/auth.py b/app/modules/roxywi/auth.py index 2312e48a..8990f869 100644 --- a/app/modules/roxywi/auth.py +++ b/app/modules/roxywi/auth.py @@ -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')