diff --git a/app/create_db.py b/app/create_db.py index 354f0c95..6c39b50e 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -401,7 +401,7 @@ def update_db_v_3_4_7(**kwargs): def update_ver(**kwargs): con, cur = get_cur() - sql = """update version set version = '3.4.8.1'; """ + sql = """update version set version = '3.4.9'; """ try: cur.execute(sql) con.commit() diff --git a/app/hapservers.py b/app/hapservers.py new file mode 100644 index 00000000..7d522b12 --- /dev/null +++ b/app/hapservers.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +import funct, sql +import create_db +import os, http.cookies +from jinja2 import Environment, FileSystemLoader +env = Environment(loader=FileSystemLoader('templates/')) +template = env.get_template('hapservers.html') + +print('Content-type: text/html\n') + + +try: + cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) + user_id = cookie.get('uuid') + user = sql.get_user_name_by_uuid(user_id.value) + users = sql.select_users() + groups = sql.select_groups() + token = sql.get_token(user_id.value) + servers = sql.get_dick_permit() +except: + pass + +haproxy_sock_port = sql.get_setting('haproxy_sock_port') + +servers_with_status1 = [] +out1 = "" +for s in servers: + # print(s[2]) + servers_with_status = list() + cmd = 'echo "show info" |nc %s %s -w 1 |grep -e "Ver\|Uptime:"' % (s[2], haproxy_sock_port) + # print(cmd ) + out = funct.subprocess_execute(cmd) + servers_with_status.append(s[0]) + servers_with_status.append(s[1]) + servers_with_status.append(s[2]) + servers_with_status.append(s[11]) + for k in out: + if "Ncat: Connection refused." not in k and "Ncat: Connection timed out." not in k: + out1 = out + else: + out1 = False + servers_with_status.append(out1) + + servers_with_status1.append(servers_with_status) +# print(servers_with_status1) + +template = template.render(h2 = 1, + autorefresh = 1, + title = "HAProxy servers overview", + role = sql.get_user_role_by_uuid(user_id.value), + user = user, + users = users, + groups = groups, + servers = servers_with_status1, + versions = funct.versions(), + token = token) +print(template) diff --git a/app/overview.py b/app/overview.py index 5737a62a..dc91e6d2 100644 --- a/app/overview.py +++ b/app/overview.py @@ -28,6 +28,8 @@ try: metrics_master, stderr = funct.subprocess_execute(cmd) cmd = "ps ax |grep -e 'metrics_worker\|metrics_waf_worker.py' |grep -v grep |wc -l" metrics_worker, stderr = funct.subprocess_execute(cmd) + cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l" + keep_alive, stderr = funct.subprocess_execute(cmd) except: pass @@ -43,6 +45,7 @@ template = template.render(h2 = 1, metrics_worker = ''.join(metrics_worker), checker_master = ''.join(checker_master), checker_worker = ''.join(checker_worker), + keep_alive = ''.join(keep_alive), error = stderr, versions = funct.versions(), token = token) diff --git a/app/ovw.py b/app/ovw.py index fb41d843..df9eafd2 100644 --- a/app/ovw.py +++ b/app/ovw.py @@ -15,15 +15,14 @@ server_status = () async def async_get_overview(serv1, serv2): haproxy_config_path = sql.get_setting('haproxy_config_path') commands = [ "ls -l %s |awk '{ print $6\" \"$7\" \"$8}'" % haproxy_config_path ] - commands1 = [ "ps ax |grep waf/bin/modsecurity |grep -v grep |wc -l" ] + # commands1 = [ "ps ax |grep waf/bin/modsecurity |grep -v grep |wc -l" ] commands2 = "ps ax |grep keep_alive.py |grep -v grep |wc -l" - cmd = 'echo "show info" |nc %s %s |grep -e "Process_num"' % (serv2, haproxy_sock_port) + cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Process_num"' % (serv2, haproxy_sock_port) server_status = (serv1, serv2, funct.server_status(funct.subprocess_execute(cmd)), - funct.ssh_command(serv2, commands), - funct.ssh_command(serv2, commands1), + funct.ssh_command(serv2, commands), sql.select_servers(server=serv2, keep_alive=1), funct.subprocess_execute(commands2)) return server_status @@ -68,8 +67,13 @@ def get_overviewWaf(url): ioloop.close() async def async_get_overviewServers(serv1, serv2, desc): - commands = [ "top -u haproxy -b -n 1" ] - cmd = 'echo "show info" |nc %s %s |grep -e "Ver\|CurrConns\|SessRate\|Maxco\|MB\|Uptime:"' % (serv2, haproxy_sock_port) + # commands = [ "top -u haproxy -b -n 1" ] + # commands = [ "top -u haproxy -b -n 1 -o %MEM |grep -e 'haproxy\|PID' |awk '{print $1\"\t\"$5\"\t\"$9\"\t\"$10\"\t\"$11}'" ] + commands = [ "top -u haproxy -b -n 1 -w 67 |grep -e 'haproxy\|PID\|Cpu\|KiB' |grep -v Swap" ] + if desc == "hapservers.py": + cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|Maxco\|MB\|Uptime:"' % (serv2, haproxy_sock_port) + else: + cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|SessRate\|Maxco\|MB\|Uptime:"' % (serv2, haproxy_sock_port) out = funct.subprocess_execute(cmd) out1 = "" user_id = cookie.get('uuid') @@ -81,7 +85,7 @@ async def async_get_overviewServers(serv1, serv2, desc): os.system("/bin/rm -f " + cfg) for k in out: - if "Ncat: Connection refused." not in k: + if "Ncat: Connection refused." not in k and "Ncat: Connection timed out." not in k: for r in k: out1 += r out1 += "
" @@ -95,21 +99,27 @@ async def async_get_overviewServers(serv1, serv2, desc): return server_status -async def get_runner_overviewServers(): +async def get_runner_overviewServers(**kwargs): template = env.get_template('overviewServers.html') user_id = cookie.get('uuid') role = sql.get_user_role_by_uuid(user_id.value) - futures = [async_get_overviewServers(server[1], server[2], server[11]) for server in listhap] + if kwargs.get('server1'): + futures = [async_get_overviewServers(kwargs.get('server1'), kwargs.get('server2'), 'hapservers.py')] + else: + futures = [async_get_overviewServers(server[1], server[2], server[11]) for server in listhap] for i, future in enumerate(asyncio.as_completed(futures)): result = await future servers.append(result) servers_sorted = sorted(servers, key=funct.get_key) - template = template.render(service_status=servers_sorted, role=role) + template = template.render(service_status=servers_sorted, role=role,page=kwargs.get('page')) print(template) -def get_overviewServers(): +def get_overviewServers(**kwargs): + server1 = kwargs.get('name') + server2 = kwargs.get('ip') + page = kwargs.get('page') ioloop = asyncio.get_event_loop() - ioloop.run_until_complete(get_runner_overviewServers()) + ioloop.run_until_complete(get_runner_overviewServers(server1=server1, server2=server2,page=page)) ioloop.close() def get_map(serv): diff --git a/app/templates/ajax/config_show.html b/app/templates/ajax/config_show.html index 9099e872..a74d9769 100644 --- a/app/templates/ajax/config_show.html +++ b/app/templates/ajax/config_show.html @@ -117,5 +117,6 @@ +
Note: If you reconfigure Master server, Slave will reconfigured automatically
{% endif %} diff --git a/app/templates/ajax/overivewWaf.html b/app/templates/ajax/overivewWaf.html index d00c25f2..c6b21ca6 100644 --- a/app/templates/ajax/overivewWaf.html +++ b/app/templates/ajax/overivewWaf.html @@ -4,14 +4,15 @@ {% do waf_servers.append(1) %} + {% if service.2|int() >= 1 %} + UP + {% else %} + DOWN + {% endif %} {{ service.0 }} - {% if service.2|int() >= 1 %} - UP running {{service.2 }} processes - {% else %} - DOWN running {{service.2 }} processes - {% endif %} + {% if role <= 1 %} diff --git a/app/templates/ajax/overview.html b/app/templates/ajax/overview.html index a70caf82..43387a57 100644 --- a/app/templates/ajax/overview.html +++ b/app/templates/ajax/overview.html @@ -1,12 +1,17 @@ {% for service in service_status %} - - + + {% if service.2|int() >= 1 %} + UP + {% else %} + DOWN + {% endif %} + {{ service.0 }} - {% if service.5.0.0|int() >= 1 %} + {% if service.4.0.0|int() >= 1 %} = 1 %} + {% if service.5.0.0|int() >= 1 %} src="/inc/images/shield.png" title="Auto start enabled" {% else %} src="/inc/images/shield-red.png" title="Auto start enabled, but keep alive service does not work" @@ -17,11 +22,7 @@ - {% if service.2|int() >= 1 %} - UP running {{service.2 }} processes - {% else %} - DOWN running {{service.2 }} processes - {% endif %} + {% if role <= 1 %} diff --git a/app/templates/ajax/overviewServers.html b/app/templates/ajax/overviewServers.html index cdb350a9..14ad90ff 100644 --- a/app/templates/ajax/overviewServers.html +++ b/app/templates/ajax/overviewServers.html @@ -1,36 +1,46 @@ {% for service in service_status %} - - +
+ + {% if page != 'hapservers.py' %} + {% if service.5 != "None" %}

{{ service.0 }} :

{% else %}

{{ service.0 }} :

{% endif %} - - -
-{{ service.2 }}
-			
- - -
-{{ service.3 }}
-			
- - - - {% if 'Unknown command' in service.4 %} -Too old version HAProxy - {% else %} - {% for s in service.4 %} - -{{s}} -
- {% endfor %} + {% endif %} +
+ +{{ service.2 }} +
+
+
+{{ service.3 }}
+
+
+ + {% if page != 'hapservers.py' %} + + + {% if 'Unknown command' in service.4 %} + Too old version HAProxy + {% else %} + {% for s in service.4 %} + {% if role <= 2 %} + + {{s}} + + {% else %} + {{ s }} + {% endif %} +
+ {% endfor %} + {% endif %}
- - - + + {% endif %} + +
{% endfor %} \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index a839e992..00347286 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -42,7 +42,7 @@
  • Haproxy