Pavel Loginov 2020-08-11 10:25:39 +02:00
parent b0169331ce
commit 2caca917b7
6 changed files with 304 additions and 324 deletions

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
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('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
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():

View File

@ -133,7 +133,7 @@
<td></td>
</tr>
{% for ssh in sshs %}
{% if ssh.5|string() == group %}
{% if ssh.5|string() == group|string() %}
<tr style="width: 50%;" id="ssh-table-{{ssh.0}}" class="{{ loop.cycle('odd', 'even') }}">
<td class="first-collumn">
{% set id = 'ssh_name-' + ssh.0|string() %}
@ -238,7 +238,7 @@
You can read the description of all parameters <a href="https://haproxy-wi.org/description.py?description=checker" title="Servers description" target="_blank">here</a>
</div>
</div>
<div id="settings">
{% include 'include/admin_settings.html' %}
</div>