diff --git a/app/login.py b/app/login.py index e76e0c93..1c59de75 100644 --- a/app/login.py +++ b/app/login.py @@ -10,7 +10,6 @@ import app.modules.roxy_wi_tools as roxy_wi_tools @app.before_request -@cache.memoize(3) def check_login(): if request.endpoint not in ( 'login_page', 'static', 'main.show_roxywi_version', 'service.check_service', 'smon.show_smon_status_page', @@ -63,9 +62,6 @@ def login_page(): role = 5 user1 = '' - if next_url is None: - next_url = '' - if login and password: users = sql.select_users(user=login) diff --git a/app/modules/db/sql.py b/app/modules/db/sql.py index cf1f5d1f..475cb1a7 100755 --- a/app/modules/db/sql.py +++ b/app/modules/db/sql.py @@ -361,8 +361,12 @@ def update_server_master(master, slave): except Exception as e: out_error(e) + update_master_server_by_slave_ip(master_id, slave) + + +def update_master_server_by_slave_ip(master_id: int, slave_ip: str) -> None: try: - Server.update(master=master_id).where(Server.ip == slave).execute() + Server.update(master=master_id).where(Server.ip == slave_ip).execute() except Exception as e: out_error(e) @@ -564,7 +568,7 @@ def select_server_group_by_ip(server_ip): return groups -def select_server_ip_by_id(server_id): +def select_server_ip_by_id(server_id: int) -> str: try: server_ip = Server.get(Server.server_id == server_id).ip except Exception as e: diff --git a/app/modules/server/server.py b/app/modules/server/server.py index 5f2c5198..3b57d3a4 100644 --- a/app/modules/server/server.py +++ b/app/modules/server/server.py @@ -394,12 +394,12 @@ def create_server(hostname, ip, group, typeip, enable, master, cred, port, desc, def update_server_after_creating(hostname: str, ip: str, scan_server: int) -> str: try: - try: - sql.insert_new_checker_setting_for_server(ip) - except Exception as e: - roxywi_common.logging(f'Cannot insert Checker settings for {hostname}', str(e), roxywi=1) - raise Exception(f'error: Cannot insert Checker settings for {hostname} {e}') + sql.insert_new_checker_setting_for_server(ip) + except Exception as e: + roxywi_common.logging(f'Cannot insert Checker settings for {hostname}', str(e), roxywi=1) + raise Exception(f'error: Cannot insert Checker settings for {hostname} {e}') + try: if scan_server == '1': nginx_config_path = sql.get_setting('nginx_config_path') haproxy_config_path = sql.get_setting('haproxy_config_path') diff --git a/app/modules/service/ha_cluster.py b/app/modules/service/ha_cluster.py index c5d4d5f2..7830946a 100644 --- a/app/modules/service/ha_cluster.py +++ b/app/modules/service/ha_cluster.py @@ -113,16 +113,16 @@ def update_cluster(cluster: object, group_id: int) -> str: def delete_cluster(cluster_id: int) -> str: router_id = sql.get_router_id(cluster_id, default_router=1) slaves = sql.select_cluster_slaves(cluster_id, router_id) - HaCluster.delete().where(HaCluster.id == cluster_id).execute() for slave in slaves: - slave_ip = sql.select_server_ip_by_id(slave.server_id) + slave_ip = sql.select_server_ip_by_id(slave[0]) try: - sql.update_server_master(0, slave_ip) + sql.update_master_server_by_slave_ip(0, slave_ip) except Exception as e: raise Exception(f'error: Cannot update master on slave {slave_ip}: {e}') - roxywi_common.logging(cluster_id, 'Cluster has been deleted', keep_history=1, roxywi=1, service='HA cluster') + HaCluster.delete().where(HaCluster.id == cluster_id).execute() + roxywi_common.logging(cluster_id, 'Cluster has been deleted', roxywi=1, service='HA cluster') return 'ok' diff --git a/app/routes/server/routes.py b/app/routes/server/routes.py index bfd3a7ee..5c1e61c1 100644 --- a/app/routes/server/routes.py +++ b/app/routes/server/routes.py @@ -98,7 +98,7 @@ def create_server(): user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], adding=1 ) except Exception as e: - return f'error: {e}' + return f'{e}' @bp.post('/create/after') @@ -121,7 +121,7 @@ def update_server(): typeip = request.form.get('typeip') firewall = request.form.get('firewall') enable = request.form.get('enable') - master = request.form.get('slave') + master = int(request.form.get('slave')) serv_id = request.form.get('id') cred = request.form.get('cred') port = request.form.get('port') @@ -132,11 +132,26 @@ def update_server(): return error_mess else: sql.update_server(name, group, typeip, enable, master, serv_id, cred, port, desc, firewall, protected) - roxywi_common.logging(f'The server {name}', ' has been updated ', roxywi=1, login=1) server_ip = sql.select_server_ip_by_id(serv_id) roxywi_common.logging(server_ip, f'The server {name} has been update', roxywi=1, login=1, keep_history=1, service='server') + if master == 0: + try: + sql.delete_ha_cluster_delete_slave(serv_id) + roxywi_common.logging(server_ip, f'The server {name} has been removed from HA cluster', roxywi=1, login=1, + keep_history=1, service='server') + except Exception as e: + roxywi_common.logging(server_ip, f'error: Cannot delete the server {name} from HA cluster: {e}', roxywi=1, login=1, + keep_history=1, service='server') + raise Exception(f'error: Cannot delete the server {name} from HA cluster: {e}') + else: + try: + sql.ha_cluster_add_slave(serv_id, master) + except Exception as e: + roxywi_common.logging(server_ip, f'error: Cannot add the server {name} to HA cluster: {e}', roxywi=1, login=1, + keep_history=1, service='server') + raise Exception(f'error: Cannot add the server {name} to HA cluster: {e}') - return 'ok' + return 'ok' @bp.route('/delete/') diff --git a/app/scripts/ansible/roles/haproxy-docker/tasks/main.yml b/app/scripts/ansible/roles/haproxy-docker/tasks/main.yml index 15be7f38..245763ef 100644 --- a/app/scripts/ansible/roles/haproxy-docker/tasks/main.yml +++ b/app/scripts/ansible/roles/haproxy-docker/tasks/main.yml @@ -21,7 +21,7 @@ ignore_errors: yes - name: Add logs tasks. - include: ../../haproxy/tasks/logs.yml + include_tasks: ../../haproxy/tasks/logs.yml - name: Setting sysctl values. sysctl: @@ -47,5 +47,5 @@ ansible_python_interpreter: /usr/bin/python3 - name: Add syn_flood tasks. - include: ../../haproxy/tasks/syn_flood.yml + include_tasks: ../../haproxy/tasks/syn_flood.yml when: (SYN_FLOOD is defined) and (SYN_FLOOD|length > 0)