From 9c749a0eb2c1f5e389d11b74cf101f5d424260fe Mon Sep 17 00:00:00 2001 From: Pavel Loginov Date: Mon, 14 Oct 2019 09:55:29 +0300 Subject: [PATCH] v3.5.5 The "Overview" pages are improved --- app/create_db.py | 2 +- app/hapservers.py | 15 ++++- app/options.py | 4 +- app/ovw.py | 40 ++++-------- app/sql.py | 6 +- app/templates/admin.html | 18 +----- app/templates/ajax/overivewWaf.html | 11 ---- app/templates/ajax/overview.html | 59 +++++------------ app/templates/ajax/overviewServers.html | 7 +- app/templates/hapservers.html | 24 +++++-- app/templates/login.html | 2 +- app/templates/metrics_out.html | 0 app/templates/ovw.html | 82 +++++++++++------------- app/templates/waf.html | 5 +- image/haproxy-wi-overview.png | Bin 111186 -> 104073 bytes inc/script.js | 24 +------ inc/style.css | 19 ++++-- inc/users.js | 2 +- 18 files changed, 128 insertions(+), 192 deletions(-) delete mode 100644 app/templates/metrics_out.html diff --git a/app/create_db.py b/app/create_db.py index 12cc76f7..663f5735 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -440,7 +440,7 @@ def update_db_v_3_5_3(**kwargs): def update_ver(**kwargs): con, cur = get_cur() - sql = """update version set version = '3.5.4'; """ + sql = """update version set version = '3.5.5'; """ try: cur.execute(sql) con.commit() diff --git a/app/hapservers.py b/app/hapservers.py index 9735b9c8..87efaa4e 100644 --- a/app/hapservers.py +++ b/app/hapservers.py @@ -17,11 +17,14 @@ try: groups = sql.select_groups() token = sql.get_token(user_id.value) servers = sql.get_dick_permit() + cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l" + keep_alive, stderr = funct.subprocess_execute(cmd) except: pass haproxy_sock_port = sql.get_setting('haproxy_sock_port') - +haproxy_config_path = sql.get_setting('haproxy_config_path') +commands = [ "ls -l %s |awk '{ print $6\" \"$7\" \"$8}'" % haproxy_config_path ] servers_with_status1 = [] out1 = "" for s in servers: @@ -40,12 +43,17 @@ for s in servers: else: out1 = False servers_with_status.append(out1) - + servers_with_status.append(s[12]) + try: + servers_with_status.append(funct.ssh_command(s[2], commands)) + except: + servers_with_status.append('Cannot get last date') + servers_with_status1.append(servers_with_status) template = template.render(h2 = 1, - autorefresh = 1, + autorefresh = 0, title = "HAProxy servers overview", role = sql.get_user_role_by_uuid(user_id.value), user = user, @@ -53,5 +61,6 @@ template = template.render(h2 = 1, groups = groups, servers = servers_with_status1, versions = funct.versions(), + keep_alive = ''.join(keep_alive), token = token) print(template) diff --git a/app/options.py b/app/options.py index 5a8cf88b..a244b8dc 100644 --- a/app/options.py +++ b/app/options.py @@ -24,7 +24,7 @@ if act == "checkrestart": sys.exit() if not sql.check_token_exists(form.getvalue('token')): - print("What the fuck?! U r hacker Oo?!") + print("Your token has been expired") sys.exit() if form.getvalue('getcerts') is not None and serv is not None: @@ -140,7 +140,7 @@ if act == "overviewwaf": if act == "overviewServers": id = form.getvalue('id') name = form.getvalue('name') - ovw.get_overviewServers(ip=serv,name=name,page=form.getvalue('page')) + ovw.get_overviewServers(ip=serv,name=name,id=form.getvalue('id')) if act == "overviewHapwi": diff --git a/app/ovw.py b/app/ovw.py index 9c673a29..d010b54b 100644 --- a/app/ovw.py +++ b/app/ovw.py @@ -13,17 +13,18 @@ servers = [] 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 ] - commands2 = "ps ax |grep keep_alive.py |grep -v grep |wc -l" + # haproxy_config_path = sql.get_setting('haproxy_config_path') + # commands = [ "ls -l %s |awk '{ print $6\" \"$7\" \"$8}'" % haproxy_config_path ] + commands2 = [ "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 -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), - sql.select_servers(server=serv2, keep_alive=1), - funct.subprocess_execute(commands2)) + sql.select_servers(server=serv2, keep_alive=1), + funct.ssh_command(serv2, commands2), + sql.select_waf_servers(serv2)) return server_status async def get_runner_overview(): @@ -67,20 +68,9 @@ def get_overviewWaf(url): async def async_get_overviewServers(serv1, serv2): 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) cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|Maxco\|MB\|Uptime:"' % (serv2, haproxy_sock_port) out = funct.subprocess_execute(cmd) out1 = "" - # user_id = cookie.get('uuid') - # role = sql.get_user_role_by_uuid(user_id.value) - # hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir') - # cfg = hap_configs_dir + serv2 + "-" + funct.get_data('config') + ".cfg" - # funct.get_config(serv2, cfg) - # backends = funct.get_sections(cfg) - # os.system("/bin/rm -f " + cfg) for k in out: if "Ncat:" not in k: @@ -89,11 +79,7 @@ async def async_get_overviewServers(serv1, serv2): out1 += "
" else: out1 = "Can\'t connect to HAproxy" - - # if role <= 2: - # server_status = (serv1,serv2, out1, funct.ssh_command(serv2, commands),backends, desc) - # else: - # server_status = (serv1,serv2, out1, funct.ssh_command(serv2, commands),funct.show_backends(serv2, ret=1), desc) + server_status = (serv1,serv2, out1, funct.ssh_command(serv2, commands)) return server_status @@ -101,23 +87,21 @@ 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) - # if kwargs.get('server1'): futures = [async_get_overviewServers(kwargs.get('server1'), kwargs.get('server2'))] - # 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, id=kwargs.get('id')) print(template) def get_overviewServers(**kwargs): server1 = kwargs.get('name') server2 = kwargs.get('ip') - page = kwargs.get('page') + id = kwargs.get('id') ioloop = asyncio.get_event_loop() - ioloop.run_until_complete(get_runner_overviewServers(server1=server1, server2=server2)) + ioloop.run_until_complete(get_runner_overviewServers(server1=server1, server2=server2, id=id)) ioloop.close() def get_map(serv): diff --git a/app/sql.py b/app/sql.py index bb357631..3d210f1d 100644 --- a/app/sql.py +++ b/app/sql.py @@ -834,9 +834,9 @@ def select_waf_metrics_enable_server(ip): cur.close() con.close() -def select_waf_servers(): +def select_waf_servers(serv): con, cur = create_db.get_cur() - sql = """ select serv.ip from waf left join servers as serv on waf.server_id = serv.id where waf.metrics = '1'""" + sql = """ select serv.ip from waf left join servers as serv on waf.server_id = serv.id where serv.ip = '%s' """ % serv try: cur.execute(sql) except sqltool.Error as e: @@ -1400,7 +1400,7 @@ error_mess = 'All fields must be com def check_token(): if not check_token_exists(form.getvalue('token')): print('Content-type: text/html\n') - print("What the fuck?! U r hacker Oo?!") + print("Your token has been expired") import sys sys.exit() diff --git a/app/templates/admin.html b/app/templates/admin.html index 2031c689..f8733763 100644 --- a/app/templates/admin.html +++ b/app/templates/admin.html @@ -15,7 +15,6 @@
  • Users
  • Groups
  • Servers
  • -
  • SSH credentials
  • Checker
  • {% if user %} @@ -305,22 +304,7 @@ You can read the description of all parameters here - - - - - - - - - - - - - - - - +
    diff --git a/app/templates/ajax/overivewWaf.html b/app/templates/ajax/overivewWaf.html index 603295ad..ae6be558 100644 --- a/app/templates/ajax/overivewWaf.html +++ b/app/templates/ajax/overivewWaf.html @@ -1,7 +1,5 @@ -{% set waf_servers = [] %} {% for service in service_status %} {% if service.3 == "On" or service.3 == "Off" or service.3 == "DetectionOnly" or url == "waf.py" %} - {% do waf_servers.append(1) %} - {% if url == "waf.py" %} - {% endif %} {% endif %} {% endfor %} -{% if waf_servers|count == 0 and url != "waf.py" %} - - - -{% endif %}
    @@ -32,7 +33,9 @@
    {% endfor %} - +
    {% if service.2|int() >= 1 %} @@ -49,7 +47,6 @@ {{ service.3 }} {% endif %} {% if service.3 == "On" or service.3 == "Off" or service.3 == "DetectionOnly" %} {% if service.4|int() == 1 %} @@ -59,18 +56,10 @@ {% endif %} {% endif %}
    - You have not installed the WAF server yet -