diff --git a/app/funct.py b/app/funct.py index b0a82ce5..2ee0d4b7 100644 --- a/app/funct.py +++ b/app/funct.py @@ -45,12 +45,32 @@ def get_data(type): fmt = "%b %d %H:%M:%S" return now_utc.strftime(fmt) - + + +def get_user_group(**kwargs): + import sql + import http.cookies + try: + cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) + user_group_id = cookie.get('group') + user_group_id1 = user_group_id.value + groups = sql.select_groups(id=user_group_id1) + for g in groups: + if g[0] == int(user_group_id1): + if kwargs.get('id'): + user_group = g[0] + else: + user_group = g[1] + except: + user_group = '' + + return user_group def logging(serv, action, **kwargs): import sql import http.cookies log_path = get_config_var('main', 'log_path') + user_group = get_user_group() cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) if not os.path.exists(log_path): @@ -66,16 +86,6 @@ def logging(serv, action, **kwargs): login = sql.get_user_name_by_uuid(user_uuid.value) except: login = '' - - try: - user_group_id = cookie.get('group') - user_group_id1 = user_group_id.value - groups = sql.select_groups(id=user_group_id1) - for g in groups: - if g[0] == int(user_group_id1): - user_group = g[1] - except: - user_group = '' if kwargs.get('alerting') == 1: mess = get_data('date_in_log') + action + "\n" @@ -290,6 +300,7 @@ def diff_config(oldcfg, cfg): import sql cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) log_path = get_config_var('main', 'log_path') + user_group = get_user_group() diff = "" date = get_data('date_in_log') cmd="/bin/diff -ub %s %s" % (oldcfg, cfg) @@ -300,16 +311,6 @@ def diff_config(oldcfg, cfg): except: login = '' - try: - user_group_id = cookie.get('group') - user_group_id1 = user_group_id.value - groups = sql.select_groups(id=user_group_id1) - for g in groups: - if g[0] == int(user_group_id1): - user_group = g[1] - except: - user_group = '' - output, stderr = subprocess_execute(cmd) for line in output: @@ -859,18 +860,7 @@ def show_haproxy_log(serv, rows=10, waf='0', grep=None, hour='00', minut='00', h return show_log(output, grep=grep) elif service == 'internal': - import http.cookies - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - - try: - user_group_id = cookie.get('group') - user_group_id1 = user_group_id.value - groups = sql.select_groups(id=user_group_id1) - for g in groups: - if g[0] == int(user_group_id1): - user_group = g[1] - except: - user_group = '' + user_group = get_user_group() if user_group != '' and user_group != 'All': user_grep = "|grep 'group: " + user_group + "'" @@ -1131,21 +1121,27 @@ def get_users_params(**kwargs): servers = sql.get_dick_permit() return user, user_id, role, token, servers - -def check_group(group, role_id): + +def check_user_group(**kwargs): import http.cookies + import os import sql cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_id = cookie.get('uuid') - id = sql.get_user_id_by_uuid(user_id.value) - if sql.select_user_groups(id, check_id=group) or role_id == 1: + user_uuid = cookie.get('uuid') + group = cookie.get('group') + group_id = group.value + user_id = sql.get_user_id_by_uuid(user_uuid.value) + + if sql.check_user_group(user_id, group_id): return True else: logging('localhost', ' has tried to actions in not own group ', haproxywi=1, login=1) + print('Atata!') + sys.exit() return False - - + + def check_service(serv, service_name): commands = [ "systemctl status "+service_name+" |grep Active |awk '{print $1}'" ] return ssh_command(serv, commands) diff --git a/app/options.py b/app/options.py index 1ce0856f..022e3405 100644 --- a/app/options.py +++ b/app/options.py @@ -267,7 +267,6 @@ if form.getvalue('list_select_id') is not None: if form.getvalue('list_id_for_delete') is not None: - import http.cookies haproxy_sock_port = sql.get_setting('haproxy_sock_port') lists_path = sql.get_setting('lists_path') fullpath = funct.get_config_var('main', 'fullpath') @@ -275,10 +274,7 @@ if form.getvalue('list_id_for_delete') is not None: ip = form.getvalue('list_ip_for_delete') list_id = form.getvalue('list_id_for_delete') list_name = form.getvalue('list_name') - - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_group = cookie.get('group') - user_group = user_group.value + user_group = funct.get_user_group(id=1) cmd = "sed -i 's!%s$!!' %s/%s/%s/%s && sed -i '/^$/d' %s/%s/%s/%s" % (ip, fullpath, lists_path, user_group, list_name, fullpath, lists_path, user_group, list_name) output, stderr = funct.subprocess_execute(cmd) @@ -297,17 +293,13 @@ if form.getvalue('list_id_for_delete') is not None: if form.getvalue('list_ip_for_add') is not None: - import http.cookies haproxy_sock_port = sql.get_setting('haproxy_sock_port') lists_path = sql.get_setting('lists_path') fullpath = funct.get_config_var('main', 'fullpath') ip = form.getvalue('list_ip_for_add') list_id = form.getvalue('list_id_for_add') list_name = form.getvalue('list_name') - - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_group = cookie.get('group') - user_group = user_group.value + user_group = funct.get_user_group(id=1) cmd = 'echo "%s" >> %s/%s/%s/%s' % (ip, fullpath, lists_path, user_group, list_name) output, stderr = funct.subprocess_execute(cmd) @@ -676,13 +668,12 @@ if form.getvalue('viewlogs') is not None: minut = form.getvalue('minut') hour1 = form.getvalue('hour1') minut1 = form.getvalue('minut1') - out = funct.show_haproxy_log(serv=viewlog, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1, minut1=minut1, service='internal') + if funct.check_user_group(): + out = funct.show_haproxy_log(serv=viewlog, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1, minut1=minut1, service='internal') print(out) if serv is not None and act == "showMap": - #from datetime import datetime - #from pytz import timezone import networkx as nx import matplotlib matplotlib.use('Agg') @@ -1555,7 +1546,7 @@ if form.getvalue('newuser') is not None: group = form.getvalue('newgroupuser') role_id = sql.get_role_id_by_name(role) - if funct.check_group(group, role_id): + if funct.check_user_group(): if funct.is_admin(level=role_id): if sql.add_user(new_user, email, password, role, activeuser): from jinja2 import Environment, FileSystemLoader @@ -1592,7 +1583,7 @@ if form.getvalue('updateuser') is not None: group = form.getvalue('usergroup') role_id = sql.get_role_id_by_name(role) - if funct.check_group(group, role_id): + if funct.check_user_group(): if funct.is_admin(level=role_id): sql.update_user(new_user, email, role, id, activeuser) funct.logging(new_user, ' has updated user ', haproxywi=1, login=1) @@ -1727,10 +1718,7 @@ if form.getvalue('updategroup') is not None: if form.getvalue('new_ssh'): - import http.cookies - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - group = cookie.get('group') - user_group = group.value + user_group = funct.get_user_group() name = form.getvalue('new_ssh') name = name + '_' + user_group enable = form.getvalue('ssh_enable') @@ -1804,10 +1792,7 @@ if form.getvalue('updatessh'): if form.getvalue('ssh_cert'): - import http.cookies - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - group = cookie.get('group') - user_group = group.value + user_group = funct.get_user_group() name = form.getvalue('name') name = name + '_' + user_group @@ -1924,10 +1909,7 @@ if form.getvalue('getcurrentusergroup') is not None: if form.getvalue('newsmon') is not None: - import http.cookies - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_group = cookie.get('group') - user_group = user_group.value + user_group = funct.get_user_group(id=1) server = form.getvalue('newsmon') port = form.getvalue('newsmonport') enable = form.getvalue('newsmonenable') @@ -1963,22 +1945,17 @@ if form.getvalue('newsmon') is not None: if form.getvalue('smondel') is not None: - import http.cookies - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_group = cookie.get('group') - user_group = user_group.value + user_group = funct.get_user_group(id=1) id = form.getvalue('smondel') - if sql.delete_smon(id, user_group): - print('Ok') - funct.logging('SMON', ' Has been delete server from SMON ', haproxywi=1, login=1) + if funct.check_user_group(): + if sql.delete_smon(id, user_group): + print('Ok') + funct.logging('SMON', ' Has been delete server from SMON ', haproxywi=1, login=1) if form.getvalue('showsmon') is not None: - import http.cookies - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_group = cookie.get('group') - user_group = user_group.value + user_group = funct.get_user_group(id=1) sort = form.getvalue('sort') from jinja2 import Environment, FileSystemLoader diff --git a/app/servers.py b/app/servers.py index 20693deb..bdd82ffe 100644 --- a/app/servers.py +++ b/app/servers.py @@ -1,8 +1,6 @@ #!/usr/bin/env python3 import funct import sql -import http.cookies -import os from jinja2 import Environment, FileSystemLoader env = Environment(extensions=["jinja2.ext.do"],loader=FileSystemLoader('templates/'), autoescape=True) template = env.get_template('servers.html') @@ -15,9 +13,7 @@ try: user, user_id, role, token, servers = funct.get_users_params() ldap_enable = sql.get_setting('ldap_enable') grafana, stderr = funct.subprocess_execute("service grafana-server status |grep Active |awk '{print $1}'") - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - group = cookie.get('group') - user_group = group.value + user_group = funct.get_user_group(id=1) settings = sql.get_setting('', all=1) except Exception as e: pass diff --git a/app/smon.py b/app/smon.py index 7c653491..13dbaa75 100644 --- a/app/smon.py +++ b/app/smon.py @@ -15,24 +15,21 @@ funct.check_login() try: user, user_id, role, token, servers = funct.get_users_params() - import http.cookies - import os - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - group = cookie.get('group') - user_group = group.value + user_group = funct.get_user_group(id=1) cmd = "systemctl status smon |grep Active |awk '{print $2}'" smon_status, stderr = funct.subprocess_execute(cmd) -except: +except Exception as e: pass if action == 'add': - smon = sql.select_smon(user_group=user_group,action='add') + smon = sql.select_smon(user_group,action='add') funct.page_for_admin(level=2) title = "SMON Admin" else: smon = sql.smon_list(user_group) title = "SMON Dashboard" + template = template.render(h2 = 1, title = title, autoreœfresh = 1, role = role, diff --git a/app/sql.py b/app/sql.py index d996f173..e5114a1b 100644 --- a/app/sql.py +++ b/app/sql.py @@ -386,26 +386,40 @@ def select_user_groups(id, **kwargs): sql = """select user_group_id from user_groups where user_id = '%s' """ % id if kwargs.get("limit") is not None: sql = """select user_group_id from user_groups where user_id = '%s' limit 1 """ % id - if kwargs.get("check_id") is not None: - sql = """select * from user_groups where user_id='%s' and user_group_id = '%s' """ % (id, kwargs.get("check_id")) + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: - if kwargs.get("check_id") is not None: - for g in cur.fetchall(): - if g[0]: - return True - else: - return False - elif kwargs.get("limit") is not None: + if kwargs.get("limit") is not None: for g in cur.fetchall(): return g[0] else: return cur.fetchall() cur.close() - con.close() + con.close() + + +def check_user_group(user_id, group_id): + con, cur = get_cur() + sql = """select * from user_groups where user_id='%s' and user_group_id = '%s' """ % (user_id, group_id) + try: + cur.execute(sql) + except sqltool.Error as e: + funct.out_error(e) + print(str(e)) + else: + for g in cur.fetchall(): + #print(str(g[0])) + if g[0] != '': + return True + else: + #print('Atata!') + return False + + cur.close() + con.close() def select_user_groups_with_names(id, **kwargs): @@ -734,43 +748,43 @@ def get_dick_permit(**kwargs): if kwargs.get('keepalived'): nginx = "and keepalived = 1" - if select_user_groups(user, check_id=grp): + if funct.check_user_group(): con, cur = get_cur() if grp == '1': sql = """ select * from servers where enable = 1 %s %s %s order by pos""" % (disable, type_ip, nginx) else: sql = """ select * from servers where groups = '{group}' and (enable = 1 {disable}) {type_ip} {ip} {haproxy} {nginx} {keepalived} order by pos - """.format(group=grp, disable=disable, type_ip=type_ip, ip=ip, haproxy=haproxy, nginx=nginx, keepalived=keepalived) + """.format(group=grp, disable=disable, type_ip=type_ip, ip=ip, haproxy=haproxy, nginx=nginx, keepalived=keepalived) - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - - cur.close() - con.close() + + cur.close() + con.close() else: print('Atata!') - - - + + + def is_master(ip, **kwargs): con, cur = get_cur() sql = """ select slave.ip, slave.hostname from servers as master left join servers as slave on master.id = slave.master where master.ip = '%s' """ % ip if kwargs.get('master_slave'): sql = """ select master.hostname, master.ip, slave.hostname, slave.ip from servers as master left join servers as slave on master.id = slave.master where slave.master > 0 """ try: - cur.execute(sql) + cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def select_ssh(**kwargs): con, cur = get_cur() sql = """select * from cred """ @@ -782,44 +796,44 @@ def select_ssh(**kwargs): sql = """select serv.cred, cred.* from servers as serv left join cred on cred.id = serv.cred where serv.ip = '%s' """ % kwargs.get("serv") if kwargs.get("group") is not None: sql = """select * from cred where groups = '%s' """ % kwargs.get("group") - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def insert_new_ssh(name, enable, group, username, password): con, cur = get_cur() sql = """insert into cred(name, enable, groups, username, password) values ('%s', '%s', '%s', '%s', '%s') """ % (name, enable, group, username, password) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def delete_ssh(id): con, cur = get_cur() sql = """ delete from cred where id = %s """ % (id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() + cur.close() + con.close() def update_ssh(id, name, enable, group, username, password): @@ -830,16 +844,16 @@ def update_ssh(id, name, enable, group, username, password): groups = %s, username = '%s', password = '%s' where id = '%s' """ % (name, enable, group, username, password, id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def insert_backup_job(server, rserver, rpath, type, time, cred, description): con, cur = get_cur() sql = """insert into backups(server, rhost, rpath, `type`, `time`, `cred`, `description`) @@ -852,27 +866,27 @@ def insert_backup_job(server, rserver, rpath, type, time, cred, description): print('error: '+str(e)) con.rollback() return False - else: + else: return True - cur.close() + cur.close() con.close() - - + + def select_backups(**kwargs): con, cur = get_cur() sql = """select * from backups ORDER BY id""" if kwargs.get("server") is not None and kwargs.get("rserver") is not None: sql = """select * from backups where server='%s' and rhost = '%s' """ % (kwargs.get("server"), kwargs.get("rserver")) - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def update_backup(server, rserver, rpath, type, time, cred, description, id): con, cur = get_cur() sql = """update backups set server = '%s', @@ -882,38 +896,38 @@ def update_backup(server, rserver, rpath, type, time, cred, description, id): time = '%s', cred = '%s', description = '%s' where id = '%s' """ % (server, rserver, rpath, type, time, cred, description, id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() return False - else: + else: return True - cur.close() + cur.close() con.close() - - + + def delete_backups(id): con, cur = get_cur() sql = """ delete from backups where id = %s """ % (id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def check_exists_backup(server): con, cur = get_cur() sql = """ select id from backups where server = '%s' """ % server - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) @@ -923,40 +937,40 @@ def check_exists_backup(server): return True else: return False - cur.close() + cur.close() con.close() - + def insert_new_telegram(token, chanel, group): con, cur = get_cur() sql = """insert into telegram(`token`, `chanel_name`, `groups`) values ('%s', '%s', '%s') """ % (token, chanel, group) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() - else: + else: return True - cur.close() - con.close() + cur.close() + con.close() def delete_telegram(id): con, cur = get_cur() sql = """ delete from telegram where id = %s """ % (id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def select_telegram(**kwargs): con, cur = get_cur() sql = """select * from telegram """ @@ -966,31 +980,31 @@ def select_telegram(**kwargs): sql = """select * from telegram where token = '%s' """ % kwargs.get('token') if kwargs.get('id'): sql = """select * from telegram where id = '%s' """ % kwargs.get('id') - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def insert_new_telegram(token, chanel, group): con, cur = get_cur() sql = """insert into telegram(`token`, `chanel_name`, `groups`) values ('%s', '%s', '%s') """ % (token, chanel, group) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: print('An error occurred: ' + e.args[0] + ' X') con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def update_telegram(token, chanel, group, id): con, cur = get_cur() sql = """ update telegram set @@ -998,31 +1012,31 @@ def update_telegram(token, chanel, group, id): `chanel_name` = '%s', `groups` = '%s' where id = '%s' """ % (token, chanel, group, id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def insert_new_option(option, group): con, cur = get_cur() sql = """insert into options(`options`, `groups`) values ('%s', '%s') """ % (option, group) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def select_options(**kwargs): con, cur = get_cur() sql = """select * from options """ @@ -1030,61 +1044,61 @@ def select_options(**kwargs): sql = """select * from options where options = '%s' """ % kwargs.get('option') if kwargs.get('group'): sql = """select options from options where groups = '{}' and options like '{}%' """.format(kwargs.get('group'), kwargs.get('term')) - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def update_options(option, id): con, cur = get_cur() sql = """ update options set options = '%s' where id = '%s' """ % (option, id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def delete_option(id): con, cur = get_cur() sql = """ delete from options where id = %s """ % (id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def insert_new_savedserver(server, description, group): con, cur = get_cur() sql = """insert into saved_servers(`server`, `description`, `groups`) values ('%s', '%s', '%s') """ % (server, description, group) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def select_saved_servers(**kwargs): con, cur = get_cur() sql = """select * from saved_servers """ @@ -1092,120 +1106,120 @@ def select_saved_servers(**kwargs): sql = """select * from saved_servers where server = '%s' """ % kwargs.get('server') if kwargs.get('group'): sql = """select server,description from saved_servers where groups = '{}' and server like '{}%' """.format(kwargs.get('group'), kwargs.get('term')) - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def update_savedserver(server, description, id): con, cur = get_cur() sql = """ update saved_servers set server = '%s', description = '%s' where id = '%s' """ % (server, description, id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def delete_savedserver(id): con, cur = get_cur() sql = """ delete from saved_servers where id = %s """ % (id) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - else: + else: return True - cur.close() - con.close() - - + cur.close() + con.close() + + def insert_mentrics(serv, curr_con, cur_ssl_con, sess_rate, max_sess_rate): con, cur = get_cur() if mysql_enable == '1': sql = """ insert into metrics (serv, curr_con, cur_ssl_con, sess_rate, max_sess_rate, date) values('%s', '%s', '%s', '%s', '%s', now()) """ % (serv, curr_con, cur_ssl_con, sess_rate, max_sess_rate) else: sql = """ insert into metrics (serv, curr_con, cur_ssl_con, sess_rate, max_sess_rate, date) values('%s', '%s', '%s', '%s', '%s', datetime('now', 'localtime')) """ % (serv, curr_con, cur_ssl_con, sess_rate, max_sess_rate) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() 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: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() + 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 - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: for enable in cur.fetchall(): return enable[0] - cur.close() + cur.close() con.close() - + def select_waf_servers(serv): con, cur = get_cur() sql = """ select serv.ip from waf left join servers as serv on waf.server_id = serv.id where serv.ip = '%s' """ % serv - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() + cur.close() con.close() - - + + def select_all_waf_servers(): con, cur = get_cur() sql = """ select serv.ip from waf left join servers as serv on waf.server_id = serv.id """ - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() + cur.close() con.close() - - + + def select_waf_servers_metrics(uuid, **kwargs): con, cur = get_cur() sql = """ select * from user where username = '%s' """ % get_user_name_by_uuid(uuid) - try: + try: cur.execute(sql) except sqltool.Error as e: print("An error occurred:", e) @@ -1214,43 +1228,43 @@ def select_waf_servers_metrics(uuid, **kwargs): if group[5] == '1': sql = """ select servers.ip from servers left join waf as waf on waf.server_id = servers.id where servers.enable = 1 and waf.metrics = '1' """ else: - sql = """ select servers.ip from servers left join waf as waf on waf.server_id = servers.id where servers.enable = 1 and waf.metrics = '1' and servers.groups like '%{group}%' """.format(group=group[5]) - try: + sql = """ select servers.ip from servers left join waf as waf on waf.server_id = servers.id where servers.enable = 1 and waf.metrics = '1' and servers.groups like '%{group}%' """.format(group=group[5]) + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def select_waf_metrics(serv, **kwargs): con, cur = get_cur() if mysql_enable == '1': sql = """ select * from waf_metrics where serv = '%s' order by `date` desc limit 60 """ % serv else: sql = """ select * from (select * from waf_metrics where serv = '%s' order by `date` desc limit 60) order by `date`""" % serv - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() + cur.close() con.close() - - + + def insert_waf_metrics_enable(serv, enable): con, cur = get_cur() sql = """ insert into waf (server_id, metrics) values((select id from servers where ip = '%s'), '%s') """ % (serv, enable) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() def insert_waf_rules(serv): @@ -1311,146 +1325,144 @@ def select_waf_rules(serv): cur.close() con.close() - + def delete_waf_server(id): con, cur = get_cur() sql = """ delete from waf where server_id = '%s' """ % id - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def insert_waf_mentrics(serv, conn): con, cur = get_cur() if mysql_enable == '1': sql = """ insert into waf_metrics (serv, conn, date) values('%s', '%s', now()) """ % (serv, conn) else: sql = """ insert into waf_metrics (serv, conn, date) values('%s', '%s', datetime('now', 'localtime')) """ % (serv, conn) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def delete_waf_mentrics(): con, cur = get_cur() if mysql_enable == '1': - sql = """ delete from metrics where date < now() - INTERVAL 3 day """ + sql = """ delete from metrics where date < now() - INTERVAL 3 day """ else: sql = """ delete from metrics where date < datetime('now', '-3 days') """ - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def update_waf_metrics_enable(name, enable): con, cur = get_cur() sql = """ update waf set metrics = %s where server_id = (select id from servers where hostname = '%s') """ % (enable, name) - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def delete_mentrics(): con, cur = get_cur() if mysql_enable == '1': - sql = """ delete from metrics where date < now() - INTERVAL 3 day """ + sql = """ delete from metrics where date < now() - INTERVAL 3 day """ else: sql = """ delete from metrics where date < datetime('now', '-3 days') """ - try: + try: cur.execute(sql) con.commit() except sqltool.Error as e: funct.out_error(e) con.rollback() - cur.close() + cur.close() con.close() - - + + def select_metrics(serv, **kwargs): con, cur = get_cur() if mysql_enable == '1': sql = """ select * from metrics where serv = '%s' order by `date` desc limit 60 """ % serv else: sql = """ select * from (select * from metrics where serv = '%s' order by `date` desc limit 60) order by `date` """ % serv - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() + cur.close() con.close() - - + + def select_servers_metrics_for_master(**kwargs): con, cur = get_cur() sql = """select ip from servers where metrics = 1 """ if kwargs.get('group') is not None: sql = """select ip from servers where metrics = 1 and groups = '%s' """ % kwargs.get('group') - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def select_servers_metrics(uuid, **kwargs): con, cur = get_cur() import http.cookies import os cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_id = cookie.get('uuid') group = cookie.get('group') group = group.value - id = get_user_id_by_uuid(user_id.value) - if select_user_groups(id, check_id=group): + + if funct.check_user_group(): if group == '1': sql = """ select ip from servers where enable = 1 and metrics = '1' """ else: - sql = """ select ip from servers where groups = '{group}' and metrics = '1'""".format(group=group) - try: + sql = """ select ip from servers where groups = '{group}' and metrics = '1'""".format(group=group) + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) else: return cur.fetchall() - cur.close() - con.close() - - + cur.close() + con.close() + + def select_table_metrics(uuid): con, cur = get_cur() import http.cookies import os cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) - user_id = cookie.get('uuid') group = cookie.get('group') group = group.value - id = get_user_id_by_uuid(user_id.value) - if select_user_groups(id, check_id=group): + + if funct.check_user_group(): if group == '1': groups = "" else: @@ -1645,17 +1657,17 @@ def select_table_metrics(uuid): and ip.ip=max_con_3d.ip group by hostname.ip """ % groups - - try: + + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) - else: + else: return cur.fetchall() - cur.close() + cur.close() con.close() - - + + def get_setting(param, **kwargs): import os import http.cookies @@ -1670,7 +1682,7 @@ def get_setting(param, **kwargs): sql = """select value from `settings` where param='%s' and `group` = '%s'""" % (param, user_group) if kwargs.get('all'): sql = """select * from `settings` where `group` = '%s' order by section desc""" % user_group - try: + try: cur.execute(sql) except sqltool.Error as e: funct.out_error(e) @@ -1680,28 +1692,30 @@ def get_setting(param, **kwargs): else: for value in cur.fetchone(): return value - cur.close() - con.close() - - + cur.close() + con.close() + + def update_setting(param, val): import http.cookies import os cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) group = cookie.get('group') user_group = group.value - con, cur = get_cur() - sql = """update `settings` set `value` = '%s' where param = '%s' and `group` = '%s' """ % (val, param, user_group) - try: - cur.execute(sql) - con.commit() - return True - except sqltool.Error as e: - funct.out_error(e) - con.rollback() - return False - cur.close() - con.close() + + if funct.check_user_group(): + con, cur = get_cur() + sql = """update `settings` set `value` = '%s' where param = '%s' and `group` = '%s' """ % (val, param, user_group) + try: + cur.execute(sql) + con.commit() + return True + except sqltool.Error as e: + funct.out_error(e) + con.rollback() + return False + cur.close() + con.close() def get_ver(): diff --git a/app/templates/servers.html b/app/templates/servers.html index c32224bb..180a464e 100644 --- a/app/templates/servers.html +++ b/app/templates/servers.html @@ -133,7 +133,7 @@