From 528685646091c148582d8f771927456a0c969fbf Mon Sep 17 00:00:00 2001 From: Pavel Loginov Date: Thu, 15 Jul 2021 09:14:13 +0600 Subject: [PATCH] v5.2.2.0 Changelog: https://haproxy-wi.org/changelog.py#5_2_2 --- app/create_db.py | 2 +- app/hapservers.py | 13 ++ app/options.py | 2 +- app/smon.py | 5 +- app/sql.py | 61 +++++---- app/templates/base.html | 3 +- app/templates/ha.html | 32 +++-- app/templates/hapservers.html | 9 ++ app/templates/smon.html | 91 +++++-------- inc/ha.js | 6 +- inc/script.js | 57 ++------- inc/smon.js | 234 ++++++++++++++++++++++++++++++++++ inc/users.js | 200 +++++------------------------ 13 files changed, 396 insertions(+), 319 deletions(-) create mode 100644 inc/smon.js diff --git a/app/create_db.py b/app/create_db.py index 12c06180..2f8b59d2 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -1289,7 +1289,7 @@ def update_db_v_5_2_0(**kwargs): def update_ver(): con, cur = get_cur() - sql = """update version set version = '5.2.1.0'; """ + sql = """update version set version = '5.2.2.0'; """ try: cur.execute(sql) con.commit() diff --git a/app/hapservers.py b/app/hapservers.py index 48f2c72b..a59bd7f2 100644 --- a/app/hapservers.py +++ b/app/hapservers.py @@ -112,6 +112,19 @@ for s in servers: servers_with_status.append(sql.is_master(s[2])) servers_with_status.append(sql.select_servers(server=s[2])) + is_keepalived = sql.select_keealived(s[2]) + + if is_keepalived: + try: + cmd = ['sudo kill -USR1 `cat /var/run/keepalived.pid` && grep State /tmp/keepalived.data -m 1 |awk -F"=" \'{print $2}\'|tr -d \'[:space:]\' && sudo rm -f /tmp/keepalived.data' ] + out = funct.ssh_command(s[2], cmd) + out1 = ('1', out) + servers_with_status.append(out1) + except Exception: + servers_with_status.append('') + else: + servers_with_status.append('') + servers_with_status1.append(servers_with_status) template = template.render(h2=1, diff --git a/app/options.py b/app/options.py index 17cd30d1..75ae1e4d 100644 --- a/app/options.py +++ b/app/options.py @@ -545,8 +545,8 @@ if act == "overview": server_status = (serv1, serv2, + haproxy, haproxy_process, - sql.select_servers(server=serv2, keep_alive=1), waf_process, waf, keepalived, diff --git a/app/smon.py b/app/smon.py index 75487215..831905d4 100644 --- a/app/smon.py +++ b/app/smon.py @@ -27,7 +27,10 @@ if action == 'add': title = "SMON Admin" autorefresh = 0 elif action == 'history': - smon = sql.alerts_history('SMON', user_group) + if form.getvalue('host'): + smon = sql.alerts_history('SMON', user_group, host=form.getvalue('host')) + else: + smon = sql.alerts_history('SMON', user_group) title = "SMON History" autorefresh = 0 elif action == 'checker_history': diff --git a/app/sql.py b/app/sql.py index 1063711a..e69bd994 100644 --- a/app/sql.py +++ b/app/sql.py @@ -1450,19 +1450,6 @@ def insert_metrics_http(serv, http_2xx, http_3xx, http_4xx, http_5xx): con.close() -# def select_waf_metrics_enable(id): -# con, cur = get_cur() -# sql = """ select waf.metrics from waf left join servers as serv on waf.server_id = serv.id where server_id = '%s' """ % id -# try: -# cur.execute(sql) -# except sqltool.Error as e: -# funct.out_error(e) -# else: -# return cur.fetchall() -# cur.close() -# con.close() - - def select_waf_metrics_enable_server(ip): con, cur = get_cur() sql = """ select waf.metrics from waf left join servers as serv on waf.server_id = serv.id where ip = '%s' """ % ip @@ -2168,9 +2155,9 @@ def select_roles(**kwargs): def select_alert(**kwargs): con, cur = get_cur() - sql = """select ip from servers where alert = 1 """ + sql = """select ip from servers where alert = 1 and enable = 1 """ if kwargs.get("group") is not None: - sql = """select ip from servers where alert = 1 and `groups` = '%s' """ % kwargs.get("group") + sql = """select ip from servers where alert = 1 and `groups` = '%s' and enable = 1 """ % kwargs.get("group") try: cur.execute(sql) except sqltool.Error as e: @@ -2183,9 +2170,9 @@ def select_alert(**kwargs): def select_all_alerts(**kwargs): con, cur = get_cur() - sql = """select ip from servers where alert = 1 or nginx_alert = 1 """ + sql = """select ip from servers where alert = 1 or nginx_alert = 1 and enable = 1 """ if kwargs.get("group") is not None: - sql = """select ip from servers where (alert = 1 or nginx_alert = 1) and `groups` = '%s' """ % kwargs.get("group") + sql = """select ip from servers where (alert = 1 or nginx_alert = 1) and `groups` = '%s' and enable = 1 """ % kwargs.get("group") try: cur.execute(sql) except sqltool.Error as e: @@ -2198,9 +2185,9 @@ def select_all_alerts(**kwargs): def select_nginx_alert(**kwargs): con, cur = get_cur() - sql = """select ip from servers where nginx_alert = 1 """ + sql = """select ip from servers where nginx_alert = 1 and enable = 1 """ if kwargs.get("group") is not None: - sql = """select ip from servers where nginx_alert = 1 and `groups` = '%s' """ % kwargs.get("group") + sql = """select ip from servers where nginx_alert = 1 and `groups` = '%s' and enable = 1 """ % kwargs.get("group") try: cur.execute(sql) except sqltool.Error as e: @@ -2268,7 +2255,7 @@ def update_keepalived(serv): con.close() -def select_nginx(serv, **kwargs): +def select_nginx(serv): con, cur = get_cur() sql = """select nginx from `servers` where ip='%s' """ % serv try: @@ -2298,6 +2285,20 @@ def update_nginx(serv): con.close() +def select_haproxy(serv): + con, cur = get_cur() + sql = """select haproxy from `servers` where ip='%s' """ % serv + try: + cur.execute(sql) + except sqltool.Error as e: + funct.out_error(e) + else: + for value in cur.fetchone(): + return value + cur.close() + con.close() + + def update_haproxy(serv): con, cur = get_cur() sql = """update `servers` set `haproxy` = '1' where ip = '%s' """ % serv @@ -2330,11 +2331,11 @@ def update_firewall(serv): con.close() -def update_server_pos(pos, id): +def update_server_pos(pos, server_id): con, cur = get_cur() sql = """ update servers set pos = '%s' - where id = '%s'""" % (pos, id) + where id = '%s'""" % (pos, server_id) try: cur.execute(sql) con.commit() @@ -2469,14 +2470,22 @@ def update_smon(id, ip, port, body, telegram, group, desc, en): con.close() -def alerts_history(service, user_group): +def alerts_history(service, user_group, **kwargs): con, cur = get_cur() + and_host = '' + + if kwargs.get('host'): + and_host = "and ip = '{}'".format(kwargs.get('host')) + if user_group == 1: sql_user_group = "" else: - sql_user_group = "and user_group = '" + str(user_group) + "'" - sql = """ select message, level, ip, port, date from alerts - where service = '%s' %s order by date desc; """ % (service, sql_user_group) + sql_user_group = "and user_group = '{}'".format(user_group) + + sql = (f"select message, level, ip, port, date " + f"from alerts " + f"where service = '{service}' {sql_user_group} {and_host} " + f"order by date desc; ") try: cur.execute(sql) except sqltool.Error as e: diff --git a/app/templates/base.html b/app/templates/base.html index fea7136f..310292f2 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -77,7 +77,7 @@
  • Nginx