mirror of https://github.com/Aidaho12/haproxy-wi
v2.0.1
Add "Virt" servers, shown only on pages: "Stats" and "Runtime". Bugs fixedpull/19/head
parent
66d6a19502
commit
6534d9ca43
|
@ -26,7 +26,7 @@ print('<h2>Runtime API</h2>'
|
|||
'<select required name="serv" id="serv">'
|
||||
'<option disabled selected>Choose server</option>')
|
||||
|
||||
funct.choose_only_select(serv)
|
||||
funct.choose_only_select(serv, virt=1)
|
||||
|
||||
print('</select></td>'
|
||||
'<td style="width: 30%;">'
|
||||
|
|
|
@ -157,13 +157,11 @@ def links():
|
|||
print('<div class="top-link">'
|
||||
'<nav class="menu">'
|
||||
'<ul>'
|
||||
'<li><a title="Statistics, monitoring and logs" class="stats">Stats</a>'
|
||||
|
||||
'<li><a title="Statistics, monitoring and logs" class="stats">Stats</a>'
|
||||
'<li><a href=/cgi-bin/overview.py title="Server and service status" class="overview-link head-submenu">Overview</a> </li>'
|
||||
'<li><a href=/cgi-bin/viewsttats.py title"Show stats" class="stats head-submenu">Stats</a> </li>'
|
||||
'<li><a href=/cgi-bin/logs.py title="View logs" class="logs head-submenu">Logs</a></li>'
|
||||
'<li><a href=/cgi-bin/map.py title="View map" class="map head-submenu">Map</a></li>'
|
||||
|
||||
'<li><a href=/cgi-bin/map.py title="View map" class="map head-submenu">Map</a></li>'
|
||||
'</li>'
|
||||
'<li><a href=/cgi-bin/edit.py title="Runtime API" class="runtime">Runtime API</a> </li>'
|
||||
'<li><a title="Actions with configs" class="config-show">Configs</a>'
|
||||
|
@ -192,7 +190,7 @@ def links():
|
|||
'</li>')
|
||||
print('</ul>'
|
||||
'</nav>'
|
||||
'<div class="copyright-menu">HAproxy-WI v2.0.0.1</div>'
|
||||
'<div class="copyright-menu">HAproxy-WI v2.0.1</div>'
|
||||
'</div>')
|
||||
|
||||
def show_login_links():
|
||||
|
@ -490,14 +488,16 @@ def ssh_command(serv, commands, **kwargs):
|
|||
print(stderr.read().decode(encoding='UTF-8'))
|
||||
|
||||
def choose_only_select(serv, **kwargs):
|
||||
listhap = sql.get_dick_permit()
|
||||
if kwargs.get("virt"):
|
||||
listhap = sql.get_dick_permit(virt=1)
|
||||
else:
|
||||
listhap = sql.get_dick_permit()
|
||||
|
||||
if kwargs.get("servNew"):
|
||||
servNew = kwargs.get("servNew")
|
||||
else:
|
||||
servNew = ""
|
||||
|
||||
|
||||
for i in listhap:
|
||||
if i[2] == serv or i[2] == servNew:
|
||||
selected = 'selected'
|
||||
|
|
|
@ -15,7 +15,7 @@ def add_user(user, email, password, role, group):
|
|||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
@ -34,7 +34,7 @@ def update_user(user, email, password, role, group, id):
|
|||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
@ -60,7 +60,7 @@ def add_group(name, description):
|
|||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
@ -74,7 +74,7 @@ def delete_group(id):
|
|||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
else:
|
||||
return True
|
||||
cur.close()
|
||||
|
@ -91,21 +91,21 @@ def update_group(name, descript, id):
|
|||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
cur.close()
|
||||
con.close()
|
||||
|
||||
def add_server(hostname, ip, group):
|
||||
def add_server(hostname, ip, group, typeip):
|
||||
con, cur = get_cur()
|
||||
sql = """INSERT INTO servers (hostname, ip, groups) VALUES ('%s', '%s', '%s')""" % (hostname, ip, group)
|
||||
sql = """INSERT INTO servers (hostname, ip, groups, type_ip) VALUES ('%s', '%s', '%s', '%s')""" % (hostname, ip, group, typeip)
|
||||
try:
|
||||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
@ -119,24 +119,25 @@ def delete_server(id):
|
|||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
else:
|
||||
return True
|
||||
cur.close()
|
||||
con.close()
|
||||
|
||||
def update_server(hostname, ip, group, id):
|
||||
def update_server(hostname, ip, group, typeip, id):
|
||||
con, cur = get_cur()
|
||||
sql = """update servers set
|
||||
hostname = '%s',
|
||||
ip = '%s',
|
||||
groups = '%s'
|
||||
where id = '%s'""" % (hostname, ip, group, id)
|
||||
groups = '%s',
|
||||
type_ip = '%s'
|
||||
where id = '%s'""" % (hostname, ip, group, typeip, id)
|
||||
try:
|
||||
with con:
|
||||
cur.executescript(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
cur.close()
|
||||
con.close()
|
||||
|
||||
|
@ -162,7 +163,7 @@ def select_groups(**kwargs):
|
|||
try:
|
||||
cur.execute(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
else:
|
||||
return cur.fetchall()
|
||||
cur.close()
|
||||
|
@ -174,14 +175,14 @@ def select_user_name_group(id):
|
|||
try:
|
||||
cur.execute(sql)
|
||||
except sqlite.Error as e:
|
||||
print('<br /><span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + '</span>')
|
||||
print('<span class="alert alert-danger" id="error">An error occurred: ' + e.args[0] + ' <a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
else:
|
||||
return cur.fetchone()
|
||||
cur.close()
|
||||
con.close()
|
||||
|
||||
def get_groups_select(id, **kwargs):
|
||||
print('<select id="%s" name="%s">' % (id, id))
|
||||
print('<select class="multiselect" id="%s" name="%s">' % (id, id))
|
||||
print('<option disabled selected>Choose group</option>')
|
||||
GROUPS = select_groups()
|
||||
selected = ""
|
||||
|
@ -199,7 +200,7 @@ def get_groups_select(id, **kwargs):
|
|||
|
||||
def select_servers(**kwargs):
|
||||
con, cur = get_cur()
|
||||
sql = """select * from servers ORDER BY id"""
|
||||
sql = """select * from servers ORDER BY groups """
|
||||
if kwargs.get("server") is not None:
|
||||
sql = """select * from servers where hostname='%s' """ % kwargs.get("server")
|
||||
try:
|
||||
|
@ -211,13 +212,34 @@ def select_servers(**kwargs):
|
|||
cur.close()
|
||||
con.close()
|
||||
|
||||
def get_dick_permit():
|
||||
def get_type_ip_checkbox(id, **kwargs):
|
||||
con, cur = get_cur()
|
||||
sql = """select id, type_ip from servers where id='%s' """ % id
|
||||
try:
|
||||
cur.execute(sql)
|
||||
except sqlite.Error as e:
|
||||
print("An error occurred:", e.args[0])
|
||||
else:
|
||||
for server in cur.fetchall():
|
||||
if server[1] == 1:
|
||||
checked = 'checked'
|
||||
else:
|
||||
checked = ""
|
||||
print('<label for="typeip-%s"> Virt </label><input type="checkbox" id="typeip-%s" %s>' % (server[0],server[0], checked))
|
||||
cur.close()
|
||||
con.close()
|
||||
|
||||
def get_dick_permit(**kwargs):
|
||||
import http.cookies
|
||||
import os
|
||||
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
|
||||
login = cookie.get('login')
|
||||
con, cur = get_cur()
|
||||
sql = """ select * from user where username = '%s' """ % login.value
|
||||
if kwargs.get('virt'):
|
||||
type_ip = ""
|
||||
else:
|
||||
type_ip = "type_ip = 0"
|
||||
try:
|
||||
cur.execute(sql)
|
||||
except sqlite.Error as e:
|
||||
|
@ -225,9 +247,13 @@ def get_dick_permit():
|
|||
else:
|
||||
for group in cur:
|
||||
if group[5] == '1':
|
||||
sql = """ select * from servers """
|
||||
if kwargs.get('virt') is None:
|
||||
type_ip = 'where ' + type_ip
|
||||
sql = """ select * from servers %s """ % type_ip
|
||||
else:
|
||||
sql = """ select * from servers where groups = '%s' """ % group[5]
|
||||
if kwargs.get('virt') is None:
|
||||
type_ip = 'and ' + type_ip
|
||||
sql = """ select * from servers where groups like '%{group}%' {type_ip} """.format(group=group[5], type_ip=type_ip)
|
||||
try:
|
||||
cur.execute(sql)
|
||||
except sqlite.Error as e:
|
||||
|
@ -252,6 +278,9 @@ def show_update_servers():
|
|||
print('<td>')
|
||||
get_groups_select("123", selected=server[3])
|
||||
print('</td>')
|
||||
print('<td>')
|
||||
get_type_ip_checkbox(server[0])
|
||||
print('</td>')
|
||||
print('<td><a class="delete" onclick="removeServer(%s)" style="cursor: pointer;"></a></td>' % server[0])
|
||||
print('</tr>')
|
||||
|
||||
|
@ -283,6 +312,9 @@ def show_update_server(server):
|
|||
print('<td>')
|
||||
get_groups_select("123", selected=server[3])
|
||||
print('</td>')
|
||||
print('<td>')
|
||||
get_type_ip_checkbox(server[0])
|
||||
print('</td>')
|
||||
print('<td><a class="update-row" onclick="updateServer(%s)" style="cursor: pointer;"></a></td>' % server[0])
|
||||
print('<td><a class="delete" onclick="removeServer(%s)" style="cursor: pointer;"></a></td>' % server[0])
|
||||
print('</tr>')
|
||||
|
@ -340,7 +372,7 @@ def get_roles_select(id, **kwargs):
|
|||
print('</select>')
|
||||
|
||||
form = cgi.FieldStorage()
|
||||
error_mess = '<br /><span class="alert alert-danger" id="error">All fields must be completed <a title="Close" id="errorMess"><b>X</b></a></span>'
|
||||
error_mess = '<span class="alert alert-danger" id="error">All fields must be completed <a title="Close" id="errorMess"><b>X</b></a></span>'
|
||||
|
||||
if form.getvalue('newusername') is not None:
|
||||
email = form.getvalue('newemail')
|
||||
|
@ -379,12 +411,13 @@ if form.getvalue('newserver') is not None:
|
|||
hostname = form.getvalue('newserver')
|
||||
ip = form.getvalue('newip')
|
||||
group = form.getvalue('newservergroup')
|
||||
typeip = form.getvalue('typeip')
|
||||
if ip is None or group is None:
|
||||
print('Content-type: text/html\n')
|
||||
print(error_mess)
|
||||
else:
|
||||
print('Content-type: text/html\n')
|
||||
if add_server(hostname, ip, group):
|
||||
if add_server(hostname, ip, group, typeip):
|
||||
show_update_server(hostname)
|
||||
|
||||
if form.getvalue('serverdel') is not None:
|
||||
|
@ -419,11 +452,12 @@ if form.getvalue('updateserver') is not None:
|
|||
name = form.getvalue('updateserver')
|
||||
ip = form.getvalue('ip')
|
||||
group = form.getvalue('servergroup')
|
||||
typeip = form.getvalue('typeip')
|
||||
id = form.getvalue('id')
|
||||
if name is None or ip is None:
|
||||
print('Content-type: text/html\n')
|
||||
print(error_mess)
|
||||
else:
|
||||
print('Content-type: text/html\n')
|
||||
update_server(name, ip, group, id)
|
||||
update_server(name, ip, group, typeip, id)
|
||||
|
|
@ -36,7 +36,7 @@ print('<br />'
|
|||
'<select autofocus required name="serv" id="serv">'
|
||||
'<option disabled>Choose server</option>')
|
||||
|
||||
funct.choose_only_select(serv)
|
||||
funct.choose_only_select(serv, virt=1)
|
||||
|
||||
print('</select>'
|
||||
'<a class="ui-button ui-widget ui-corner-all" id="show" title="Show stats" onclick="showStats()">Show</a>'
|
||||
|
|
|
@ -326,7 +326,7 @@ pre {
|
|||
.menu {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
min-height: calc(100vh - 90px);
|
||||
min-height: calc(100vh - 70px);
|
||||
}
|
||||
.menu ul li{
|
||||
padding: 10px;
|
||||
|
@ -396,7 +396,6 @@ pre {
|
|||
background-color: #4A89D8 !important;
|
||||
border: none !important;
|
||||
border-color: #5D9CEB !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
.ui-tooltip, .arrow:after {
|
||||
background: #33414E !important;
|
||||
|
@ -411,7 +410,7 @@ pre {
|
|||
background: #5d9ceb !important;
|
||||
}
|
||||
.ui-menu, .ui-menu-item {
|
||||
background: #EBF1F133 !important;
|
||||
background: #EBF1F1 !important;
|
||||
}
|
||||
a {
|
||||
background-color: transparent;
|
||||
|
@ -530,9 +529,13 @@ a:focus {
|
|||
padding-left: 10px;
|
||||
}
|
||||
.alert-danger {
|
||||
color:#a94442;
|
||||
background-color:#f2dede;
|
||||
border-color:#ebccd1
|
||||
color: #a94442;
|
||||
background-color: #f2dede;
|
||||
border-color: #ebccd1;
|
||||
width: 230px;
|
||||
display: block;
|
||||
margin-top: 15px;
|
||||
margin-bottom: -50px;
|
||||
}
|
||||
label {
|
||||
display: inline-block;
|
||||
|
|
32
inc/users.js
32
inc/users.js
|
@ -1,9 +1,11 @@
|
|||
var users = '/inc/usersdop.js'
|
||||
var awesome = "/inc/fontawesome.min.js"
|
||||
|
||||
$( function() {
|
||||
$('#error').hide();
|
||||
$('.alert-danger').remove();
|
||||
|
||||
$('#add-user').click(function() {
|
||||
$('#error').hide();
|
||||
$('#error').remove();
|
||||
$.ajax( {
|
||||
url: "sql.py",
|
||||
data: {
|
||||
|
@ -16,13 +18,16 @@ $( function() {
|
|||
type: "GET",
|
||||
success: function( data ) {
|
||||
data = data.replace(/\s+/g,' ');
|
||||
if (data == '<br /><span class="alert alert-danger" id="error">All fields must be completed <a title="Close" id="errorMess"><b>X</b></a></span> ') {
|
||||
if (data.indexOf('error') != '-1') {
|
||||
$("#ajax-users").append(data);
|
||||
$.getScript(users);
|
||||
} else {
|
||||
$('.alert-danger').remove();
|
||||
$("#ajax-users").append(data);
|
||||
$( "#ajax-users tr td" ).addClass( "update", 1000, callbackUser );
|
||||
$( "#ajax-users tr td" ).addClass( "update", 1000, callbackUser );
|
||||
$.getScript(url);
|
||||
$.getScript(awesome);
|
||||
$.getScript(users);
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
@ -43,24 +48,32 @@ $( function() {
|
|||
} );
|
||||
});
|
||||
$('#add-server').click(function() {
|
||||
$('#error').hide();
|
||||
$('#error').remove();
|
||||
var typeip;
|
||||
if ($('#typeip').is(':checked')) {
|
||||
typeip = '1';
|
||||
}
|
||||
$.ajax( {
|
||||
url: "sql.py",
|
||||
data: {
|
||||
newserver: $('#new-server-add').val(),
|
||||
newip: $('#new-ip').val(),
|
||||
newservergroup: $('#new-server-group-add').val(),
|
||||
typeip: typeip
|
||||
},
|
||||
type: "GET",
|
||||
success: function( data ) {
|
||||
data = data.replace(/\s+/g,' ');
|
||||
if (data == '<br /><span class="alert alert-danger" id="error">All fields must be completed <a title="Close" id="errorMess"><b>X</b></a></span> ') {
|
||||
if (data.indexOf('error') != '-1') {
|
||||
$("#ajax-servers").append(data);
|
||||
$.getScript(users);
|
||||
} else {
|
||||
$('.alert-danger').hide();
|
||||
$("#ajax-servers").append(data);
|
||||
$( "#ajax-servers tr td" ).addClass( "update", 1000, callback );
|
||||
$( "#ajax-servers tr td" ).addClass( "update", 1000, callback );
|
||||
$.getScript(url);
|
||||
$.getScript(awesome);
|
||||
$.getScript(users);
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
@ -196,12 +209,17 @@ function updateGroup(id) {
|
|||
} );
|
||||
}
|
||||
function updateServer(id) {
|
||||
var typeip;
|
||||
if ($('#typeip-'+id).is(':checked')) {
|
||||
typeip = '1';
|
||||
}
|
||||
$.ajax( {
|
||||
url: "sql.py",
|
||||
data: {
|
||||
updateserver: $('#hostname-'+id).val(),
|
||||
ip: $('#ip-'+id).val(),
|
||||
servergroup: $('#servergroup-'+id+' option:selected' ).val(),
|
||||
typeip: typeip,
|
||||
id: id
|
||||
},
|
||||
type: "GET",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
$( function() {
|
||||
$('#errorMess').click(function() {
|
||||
$('#error').hide();
|
||||
});
|
||||
});
|
||||
$('.alert-danger').click(function() {
|
||||
$('.alert-danger').remove();
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue