mirror of https://github.com/Aidaho12/haproxy-wi
parent
2374855a5e
commit
a923cf1d40
|
@ -473,7 +473,7 @@ def update_db_v_4_3(**kwargs):
|
||||||
con.close()
|
con.close()
|
||||||
|
|
||||||
|
|
||||||
def update_db_v_4_3_1(**kwargs):
|
def update_db_v_4_3_0(**kwargs):
|
||||||
con, cur = get_cur()
|
con, cur = get_cur()
|
||||||
sql = """
|
sql = """
|
||||||
insert OR IGNORE into user_groups(user_id, user_group_id) select id, groups from user;
|
insert OR IGNORE into user_groups(user_id, user_group_id) select id, groups from user;
|
||||||
|
@ -484,7 +484,7 @@ def update_db_v_4_3_1(**kwargs):
|
||||||
except sqltool.Error as e:
|
except sqltool.Error as e:
|
||||||
if kwargs.get('silent') != 1:
|
if kwargs.get('silent') != 1:
|
||||||
if e.args[0] == 'duplicate column name: haproxy' or e == " 1060 (42S21): Duplicate column name 'haproxy' ":
|
if e.args[0] == 'duplicate column name: haproxy' or e == " 1060 (42S21): Duplicate column name 'haproxy' ":
|
||||||
print('DB was update to 4.3.0')
|
print('Updating... go to version 4.3.1')
|
||||||
else:
|
else:
|
||||||
print("An error occurred:", e)
|
print("An error occurred:", e)
|
||||||
return False
|
return False
|
||||||
|
@ -494,9 +494,31 @@ def update_db_v_4_3_1(**kwargs):
|
||||||
con.close()
|
con.close()
|
||||||
|
|
||||||
|
|
||||||
|
def update_db_v_4_3_1(**kwargs):
|
||||||
|
con, cur = get_cur()
|
||||||
|
sql = """
|
||||||
|
ALTER TABLE `servers` ADD COLUMN pos INTEGER NOT NULL DEFAULT 0;
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
cur.execute(sql)
|
||||||
|
con.commit()
|
||||||
|
except sqltool.Error as e:
|
||||||
|
if kwargs.get('silent') != 1:
|
||||||
|
if e.args[0] == 'duplicate column name: pos' or e == " 1060 (42S21): Duplicate column name 'pos' ":
|
||||||
|
print('DB was update to 4.3.1')
|
||||||
|
else:
|
||||||
|
print("An error occurred:", e)
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
print("DB was update to 4.3.1")
|
||||||
|
return True
|
||||||
|
cur.close()
|
||||||
|
con.close()
|
||||||
|
|
||||||
|
|
||||||
def update_ver(**kwargs):
|
def update_ver(**kwargs):
|
||||||
con, cur = get_cur()
|
con, cur = get_cur()
|
||||||
sql = """update version set version = '4.3.0.0'; """
|
sql = """update version set version = '4.3.1.0'; """
|
||||||
try:
|
try:
|
||||||
cur.execute(sql)
|
cur.execute(sql)
|
||||||
con.commit()
|
con.commit()
|
||||||
|
@ -522,6 +544,7 @@ def update_all():
|
||||||
update_db_v_42()
|
update_db_v_42()
|
||||||
update_db_v_4_2_3()
|
update_db_v_4_2_3()
|
||||||
update_db_v_4_3()
|
update_db_v_4_3()
|
||||||
|
update_db_v_4_3_0()
|
||||||
update_db_v_4_3_1()
|
update_db_v_4_3_1()
|
||||||
update_ver()
|
update_ver()
|
||||||
|
|
||||||
|
@ -542,6 +565,7 @@ def update_all_silent():
|
||||||
update_db_v_42(silent=1)
|
update_db_v_42(silent=1)
|
||||||
update_db_v_4_2_3(silent=1)
|
update_db_v_4_2_3(silent=1)
|
||||||
update_db_v_4_3(silent=1)
|
update_db_v_4_3(silent=1)
|
||||||
|
update_db_v_4_3_0(silent=1)
|
||||||
update_db_v_4_3_1(silent=1)
|
update_db_v_4_3_1(silent=1)
|
||||||
update_ver()
|
update_ver()
|
||||||
|
|
||||||
|
|
|
@ -90,8 +90,14 @@ if form.getvalue('backend') is not None:
|
||||||
funct.show_backends(serv)
|
funct.show_backends(serv)
|
||||||
|
|
||||||
|
|
||||||
|
if form.getvalue('change_pos') is not None:
|
||||||
|
import sql
|
||||||
|
pos = form.getvalue('change_pos')
|
||||||
|
sql.update_server_pos(pos, serv)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('ip') is not None and serv is not None:
|
if form.getvalue('ip') is not None and serv is not None:
|
||||||
commands = [ "sudo ip a |grep inet |egrep -v '::1' |awk '{ print $2 }' |awk -F'/' '{ print $1 }'" ]
|
commands = [ "sudo ip a |grep inet |egrep -v '::1' |awk '{ print $2 }' |awk -F'/' '{ print $1 }'" ]
|
||||||
funct.ssh_command(serv, commands, ip="1")
|
funct.ssh_command(serv, commands, ip="1")
|
||||||
|
|
||||||
|
|
||||||
|
@ -143,6 +149,7 @@ if form.getvalue('action_service') is not None:
|
||||||
output, stderr = funct.subprocess_execute(cmd)
|
output, stderr = funct.subprocess_execute(cmd)
|
||||||
funct.logging('localhost', ' The service '+serv+ 'was '+action+'ed', haproxywi=1, login=1)
|
funct.logging('localhost', ' The service '+serv+ 'was '+action+'ed', haproxywi=1, login=1)
|
||||||
|
|
||||||
|
|
||||||
if act == "overviewHapserverBackends":
|
if act == "overviewHapserverBackends":
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
|
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
|
||||||
|
@ -598,7 +605,7 @@ if form.getvalue('servaction') is not None:
|
||||||
haproxy_sock = sql.get_setting('haproxy_sock')
|
haproxy_sock = sql.get_setting('haproxy_sock')
|
||||||
enable = form.getvalue('servaction')
|
enable = form.getvalue('servaction')
|
||||||
backend = form.getvalue('servbackend')
|
backend = form.getvalue('servbackend')
|
||||||
cmd='echo "%s %s" |sudo socat stdio %s | cut -d "," -f 1-2,5-10,18,34-36 | column -s, -t' % (enable, backend, haproxy_sock)
|
cmd='echo "%s %s" |sudo socat stdio %s' % (enable, backend, haproxy_sock)
|
||||||
|
|
||||||
if form.getvalue('save') == "on":
|
if form.getvalue('save') == "on":
|
||||||
save_command = 'echo "show servers state" | sudo socat %s stdio > %s' % (haproxy_sock, server_state_file)
|
save_command = 'echo "show servers state" | sudo socat %s stdio > %s' % (haproxy_sock, server_state_file)
|
||||||
|
|
19
app/sql.py
19
app/sql.py
|
@ -654,9 +654,9 @@ def get_dick_permit(**kwargs):
|
||||||
if select_user_groups(user, check_id=grp):
|
if select_user_groups(user, check_id=grp):
|
||||||
con, cur = get_cur()
|
con, cur = get_cur()
|
||||||
if grp == '1':
|
if grp == '1':
|
||||||
sql = """ select * from servers where enable = 1 %s %s %s """ % (disable, type_ip, nginx)
|
sql = """ select * from servers where enable = 1 %s %s %s order by pos""" % (disable, type_ip, nginx)
|
||||||
else:
|
else:
|
||||||
sql = """ select * from servers where groups = '{group}' and (enable = 1 {disable}) {type_ip} {ip} {haproxy} {nginx} {keepalived}
|
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:
|
||||||
|
@ -1670,6 +1670,21 @@ def update_haproxy(serv):
|
||||||
con.close()
|
con.close()
|
||||||
|
|
||||||
|
|
||||||
|
def update_server_pos(pos, id):
|
||||||
|
con, cur = get_cur()
|
||||||
|
sql = """ update servers set
|
||||||
|
pos = '%s'
|
||||||
|
where id = '%s'""" % (pos, id)
|
||||||
|
try:
|
||||||
|
cur.execute(sql)
|
||||||
|
con.commit()
|
||||||
|
except sqltool.Error as e:
|
||||||
|
funct.out_error(e)
|
||||||
|
con.rollback()
|
||||||
|
cur.close()
|
||||||
|
con.close()
|
||||||
|
|
||||||
|
|
||||||
def check_token_exists(token):
|
def check_token_exists(token):
|
||||||
try:
|
try:
|
||||||
import http.cookies
|
import http.cookies
|
||||||
|
|
|
@ -94,7 +94,8 @@
|
||||||
<li><a href="/app/servers.py#users" title="Actions with users" class="users head-submenu">Users</a></li>
|
<li><a href="/app/servers.py#users" title="Actions with users" class="users head-submenu">Users</a></li>
|
||||||
<li><a href="/app/servers.py#servers" title="Server manage" class="runtime head-submenu">Servers</a></li>
|
<li><a href="/app/servers.py#servers" title="Server manage" class="runtime head-submenu">Servers</a></li>
|
||||||
<li><a href="/app/servers.py#ssh" title="Manage SSH credentials" class="admin head-submenu">SSH credentials</a></li>
|
<li><a href="/app/servers.py#ssh" title="Manage SSH credentials" class="admin head-submenu">SSH credentials</a></li>
|
||||||
<li><a href="/app/servers.py#installhaproxy" title="Installation HAProxy" class="hap head-submenu">Installation</a> </li>
|
<li><a href="/app/servers.py#installproxy" title="Installation Proxy services" class="hap head-submenu">Installation Proxy</a> </li>
|
||||||
|
<li><a href="/app/servers.py#installmon" title="Installation Monitoring services" class="hap1 head-submenu">Installation Monitoring</a> </li>
|
||||||
<li><a href="/app/servers.py#backup" title="Backups HAProxy's config files" class="backup head-submenu">Backups</a> </li>
|
<li><a href="/app/servers.py#backup" title="Backups HAProxy's config files" class="backup head-submenu">Backups</a> </li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -30,6 +30,24 @@
|
||||||
host = host.replace(/\./g, '\\.');
|
host = host.replace(/\./g, '\\.');
|
||||||
hostnamea.push(host)
|
hostnamea.push(host)
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
$( function() {
|
||||||
|
$( ".sortable" ).sortable({
|
||||||
|
revert: true,
|
||||||
|
placeholder: "ui-state-highlight"
|
||||||
|
});
|
||||||
|
$( ".sortable" ).disableSelection();
|
||||||
|
|
||||||
|
$( ".sortable" ).sortable({
|
||||||
|
stop: function(event, ui) {
|
||||||
|
var itemOrder = $('.sortable').sortable("toArray");
|
||||||
|
for (var i = 0; i < itemOrder.length; i++) {
|
||||||
|
var pos = i;
|
||||||
|
var id = itemOrder[i].split('-')[2]
|
||||||
|
change_pos(pos, id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
<div id="up-pannel" class="sortable">
|
<div id="up-pannel" class="sortable">
|
||||||
{% if servers|length == 0 %}
|
{% if servers|length == 0 %}
|
||||||
|
|
|
@ -28,27 +28,19 @@ th, tr, td {
|
||||||
<canvas id="{{s.0}}" role="img"></canvas>
|
<canvas id="{{s.0}}" role="img"></canvas>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</div>
|
||||||
<script>
|
<script>
|
||||||
$( function() {
|
function showMetrics() {
|
||||||
$( "#sortable" ).sortable({
|
let metrics = new Promise(
|
||||||
revert: true,
|
(resolve, reject) => {
|
||||||
items: "> div",
|
{% for s in servers %}
|
||||||
placeholder: "ui-state-highlight"
|
getChartData('{{s.0}}')
|
||||||
});
|
{% endfor %}
|
||||||
$( "sortable" ).disableSelection();
|
loadMetrics()
|
||||||
} );
|
});
|
||||||
function showMetrics() {
|
metrics.then();
|
||||||
let metrics = new Promise(
|
}
|
||||||
(resolve, reject) => {
|
showMetrics()
|
||||||
{% for s in servers %}
|
|
||||||
getChartData('{{s.0}}')
|
|
||||||
{% endfor %}
|
|
||||||
loadMetrics()
|
|
||||||
});
|
|
||||||
metrics.then();
|
|
||||||
}
|
|
||||||
showMetrics()
|
|
||||||
</script>
|
</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -1,59 +1,167 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% from 'include/input_macros.html' import input, checkbox %}
|
{% from 'include/input_macros.html' import input, checkbox %}
|
||||||
<table class="overview">
|
<script type="text/javascript" charset="utf8" src="/inc/runtimeapi.js"></script>
|
||||||
<tr class="overviewHead">
|
<div id="tabs">
|
||||||
<td class="padding10 first-collumn">Server</td>
|
<ul>
|
||||||
<td>Disable/Enable server or output any information</td>
|
<li><a href="#runtimeapi">Runtime API</a></li>
|
||||||
<td>Command</td>
|
{% if role <= 2 %}
|
||||||
<td class="checkbox-head">Save change</td>
|
<li><a href="#maxconn">Change Maxconn</a></li>
|
||||||
<td></td>
|
<li><a href="#ip">Change IP and Port</a></li>
|
||||||
</tr>
|
{% endif %}
|
||||||
<tr>
|
{% include 'include/login.html' %}
|
||||||
<td class="padding10 first-collumn" style="width: 25%;">
|
</ul>
|
||||||
<form action="{{ action }}" method="post" id="runtimeapiform">
|
<ul id='browse_histroy'></ul>
|
||||||
{% include 'include/select.html' %}
|
<div id="runtimeapi">
|
||||||
</td>
|
<table class="overview">
|
||||||
<td style="width: 30%;">
|
<tr class="overviewHead">
|
||||||
<select required name="servaction" id="servaction">
|
<td class="padding10 first-collumn">Server</td>
|
||||||
<option disabled>Choose action</option>
|
<td>Disable/Enable server or output any information</td>
|
||||||
|
<td>Command</td>
|
||||||
|
<td class="checkbox-head">Save change</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="padding10 first-collumn" style="width: 25%;">
|
||||||
|
<form action="" method="post" id="runtimeapiform">
|
||||||
|
{% include 'include/select.html' %}
|
||||||
|
</td>
|
||||||
|
<td style="width: 30%;">
|
||||||
|
<select required name="servaction" id="servaction">
|
||||||
|
<option disabled>Choose action</option>
|
||||||
|
{% if role <= 2 %}
|
||||||
|
<option value="disable">Disable</option>
|
||||||
|
<option value="enable">Enable</option>
|
||||||
|
<option value="set">Set</option>
|
||||||
|
{% endif %}
|
||||||
|
<option value="show" selected>Show</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ input('servbackend', value=servbackend, title='Frontend, backend/server, show: info, pools or help', required='required') }}
|
||||||
|
</td>
|
||||||
|
<td class="checkbox">
|
||||||
{% if role <= 2 %}
|
{% if role <= 2 %}
|
||||||
<option value="disable">Disable</option>
|
{{ checkbox('save', value='123') }}
|
||||||
<option value="enable">Enable</option>
|
|
||||||
<option value="set">Set</option>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<option value="show" selected>Show</option>
|
</td>
|
||||||
</select>
|
<td>
|
||||||
</td>
|
<button type="submit" name="Enter" value="Enter" id="enter">Enter</button>
|
||||||
<td>
|
</td>
|
||||||
{{ input('servbackend', value=servbackend, title='Frontend, backend/server, show: info, pools or help', required='required') }}
|
</form>
|
||||||
</td>
|
</tr>
|
||||||
<td class="checkbox">
|
</table>
|
||||||
{% if role <= 2 %}
|
<script>
|
||||||
{{ checkbox('save', value='123') }}
|
if (window.matchMedia('(max-width: 786px)').matches || window.matchMedia('(max-width: 1024px)').matches || window.matchMedia('(max-width: 667px)').matches) {
|
||||||
{% endif %}
|
$( "#servaction" ).selectmenu({
|
||||||
</td>
|
width: 150
|
||||||
<td>
|
});
|
||||||
<button type="submit" name="Enter" value="Enter" id="enter">Enter</button>
|
$( "#serv" ).selectmenu({
|
||||||
</td>
|
width: 150
|
||||||
</form>
|
});
|
||||||
</tr>
|
}
|
||||||
</table>
|
</script>
|
||||||
<script>
|
<div id="ajaxruntime"></div>
|
||||||
if($('#servbackend').val()) {
|
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||||
window.onload = {{ onclick }}
|
You can read the description of all Run Time API <a href="https://haproxy-wi.org/description.py?description=runtimeapi#commands" title="Run Time API description" target="_blank">here</a>
|
||||||
}
|
</div>
|
||||||
if (window.matchMedia('(max-width: 786px)').matches || window.matchMedia('(max-width: 1024px)').matches || window.matchMedia('(max-width: 667px)').matches) {
|
|
||||||
$( "#servaction" ).selectmenu({
|
|
||||||
width: 150
|
|
||||||
});
|
|
||||||
$( "#serv" ).selectmenu({
|
|
||||||
width: 150
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<div id="ajaxruntime"></div>
|
|
||||||
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
|
||||||
You can read the description of all Run Time API <a href="https://haproxy-wi.org/description.py?description=runtimeapi" title="Run Time API description" target="_blank">here</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div id="maxconn">
|
||||||
|
<table class="overview">
|
||||||
|
<tr class="overviewHead">
|
||||||
|
<td class="padding10 first-collumn">Server</td>
|
||||||
|
<td>Choose Frontend</td>
|
||||||
|
<td>Maxconn</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="padding10 first-collumn" style="width: 25%;">
|
||||||
|
<form action="" method="post" id="maxconnform">
|
||||||
|
<select autofocus required name="serv" id="maxconn_select">
|
||||||
|
<option disabled selected>Choose server</option>
|
||||||
|
{% for select in selects %}
|
||||||
|
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="width: 30%;">
|
||||||
|
<select required name="maxconnfront" id="maxconnfront">
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ input('maxconnint', title='Enter maxconn', type="number", required='required') }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button type="submit" name="Enter" value="Enter" id="enter">Enter</button>
|
||||||
|
</td>
|
||||||
|
</form>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div id="ajaxmaxconn"></div>
|
||||||
|
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||||
|
You can read how it works <a href="https://haproxy-wi.org/description.py?description=runtimeapi#maxconn" title="Change Maxconn" target="_blank">here</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="ip">
|
||||||
|
<table class="overview">
|
||||||
|
<tr class="overviewHead">
|
||||||
|
<td class="padding10 first-collumn">Server</td>
|
||||||
|
<td>Choose Backend</td>
|
||||||
|
<td>Choose Server</td>
|
||||||
|
<td>New IP</td>
|
||||||
|
<td>New Port</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="padding10 first-collumn" style="width: 25%;">
|
||||||
|
<form action="" method="post" id="runtimeapiip">
|
||||||
|
<select autofocus required name="ip_select" id="ip_select">
|
||||||
|
<option disabled selected>Choose server</option>
|
||||||
|
{% for select in selects %}
|
||||||
|
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select required name="ipbackend" id="ipbackend">
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select required name="backend_server" id="backend_server">
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ input('backend_ip', title='Set new server IP', required='required', size='16') }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ input('backend_port', title='Set new server Port', type="number", required='required', size='6') }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button type="submit" name="Enter" value="Enter" id="enter">Enter</button>
|
||||||
|
</td>
|
||||||
|
</form>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div id="ajaxip"></div>
|
||||||
|
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||||
|
You can read how it works <a href="https://haproxy-wi.org/description.py?description=runtimeapi#ip" title="Change IP and Port" target="_blank">here</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
$( function() {
|
||||||
|
if (window.matchMedia('(max-width: 1280px)').matches) {
|
||||||
|
$("#ip_select" ).selectmenu({
|
||||||
|
width: 100
|
||||||
|
});
|
||||||
|
$("#ipbackend" ).selectmenu({
|
||||||
|
width: 100
|
||||||
|
});
|
||||||
|
$("#backend_server" ).selectmenu({
|
||||||
|
width: 100
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -17,7 +17,8 @@
|
||||||
<li><a href="#servers">Servers</a></li>
|
<li><a href="#servers">Servers</a></li>
|
||||||
<li><a href="#ssh">SSH credentials</a></li>
|
<li><a href="#ssh">SSH credentials</a></li>
|
||||||
<li><a href="#checker">Checker</a></li>
|
<li><a href="#checker">Checker</a></li>
|
||||||
<li><a href="#installhaproxy">Installation</a></li>
|
<li><a href="#installproxy">Installation Proxy</a></li>
|
||||||
|
<li><a href="#installmon">Installation Monitoring</a></li>
|
||||||
<li><a href="#backup">Backup</a></li>
|
<li><a href="#backup">Backup</a></li>
|
||||||
{% include 'include/login.html' %}
|
{% include 'include/login.html' %}
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -276,7 +277,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>
|
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>
|
</div>
|
||||||
<div id="installhaproxy">
|
<div id="installproxy">
|
||||||
<table class="overview">
|
<table class="overview">
|
||||||
<caption><h3>Install HAProxy</h3></caption>
|
<caption><h3>Install HAProxy</h3></caption>
|
||||||
<tr class="overviewHead">
|
<tr class="overviewHead">
|
||||||
|
@ -341,6 +342,10 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
<div id="ajax"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="installmon">
|
||||||
<table>
|
<table>
|
||||||
<caption><h3>Install Grafana and Prometheus servers</h3></caption>
|
<caption><h3>Install Grafana and Prometheus servers</h3></caption>
|
||||||
<tr class="overviewHead">
|
<tr class="overviewHead">
|
||||||
|
@ -434,7 +439,7 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div id="ajax"></div>
|
<div id="ajaxmon"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="backup">
|
<div id="backup">
|
||||||
|
|
|
@ -92,6 +92,11 @@
|
||||||
font-family: "Font Awesome 5 Solid";
|
font-family: "Font Awesome 5 Solid";
|
||||||
content: "\f074";
|
content: "\f074";
|
||||||
}
|
}
|
||||||
|
.hap1::before {
|
||||||
|
display: none;
|
||||||
|
font-family: "Font Awesome 5 Solid";
|
||||||
|
content: "\f074";
|
||||||
|
}
|
||||||
.backup::before {
|
.backup::before {
|
||||||
display: none;
|
display: none;
|
||||||
font-family: "Font Awesome 5 Solid";
|
font-family: "Font Awesome 5 Solid";
|
||||||
|
|
105
inc/overview.js
105
inc/overview.js
|
@ -134,53 +134,53 @@ function ajaxActionServers(action, id) {
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
function ajaxActionNginxServers(action, id) {
|
function ajaxActionNginxServers(action, id) {
|
||||||
var bad_ans = 'Bad config, check please';
|
var bad_ans = 'Bad config, check please';
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
action_nginx: action,
|
action_nginx: action,
|
||||||
serv: id,
|
serv: id,
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g,' ');
|
||||||
if( data == 'Bad config, check please ' ) {
|
if( data == 'Bad config, check please ' ) {
|
||||||
alert(data);
|
alert(data);
|
||||||
} else {
|
} else {
|
||||||
if (cur_url[0] == "hapservers.py") {
|
if (cur_url[0] == "hapservers.py") {
|
||||||
location.reload()
|
location.reload()
|
||||||
} else {
|
} else {
|
||||||
setTimeout(showOverview(ip, hostnamea), 2000)
|
setTimeout(showOverview(ip, hostnamea), 2000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(){
|
error: function(){
|
||||||
alert(w.data_error);
|
alert(w.data_error);
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
function ajaxActionWafServers(action, id) {
|
function ajaxActionWafServers(action, id) {
|
||||||
var bad_ans = 'Bad config, check please';
|
var bad_ans = 'Bad config, check please';
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
action_waf: action,
|
action_waf: action,
|
||||||
serv: id,
|
serv: id,
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g,' ');
|
||||||
if( data == 'Bad config, check please ' ) {
|
if( data == 'Bad config, check please ' ) {
|
||||||
alert(data);
|
alert(data);
|
||||||
} else {
|
} else {
|
||||||
setTimeout(showOverviewWaf(ip, hostnamea), 2000)
|
setTimeout(showOverviewWaf(ip, hostnamea), 2000)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(){
|
error: function(){
|
||||||
alert(w.data_error);
|
alert(w.data_error);
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
$( function() {
|
$( function() {
|
||||||
$( "#show-all-users" ).click( function() {
|
$( "#show-all-users" ).click( function() {
|
||||||
$( ".show-users" ).show("fast");
|
$( ".show-users" ).show("fast");
|
||||||
|
@ -304,4 +304,17 @@ function updateHapWIServer(id) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
}
|
||||||
|
function change_pos(pos, id) {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
change_pos: pos,
|
||||||
|
serv: id,
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
error: function(){
|
||||||
|
console.log(w.data_error);
|
||||||
|
}
|
||||||
|
} );
|
||||||
}
|
}
|
|
@ -0,0 +1,189 @@
|
||||||
|
function showRuntime() {
|
||||||
|
if($('#save').prop('checked')) {
|
||||||
|
saveCheck = "on";
|
||||||
|
} else {
|
||||||
|
saveCheck = "";
|
||||||
|
}
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
servaction: $('#servaction').val(),
|
||||||
|
serv: $("#serv").val(),
|
||||||
|
servbackend: $("#servbackend").val(),
|
||||||
|
save: saveCheck,
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
$("#ajaxruntime").html(data);
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
$( function() {
|
||||||
|
$('#runtimeapiform').submit(function() {
|
||||||
|
showRuntime();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$( "#maxconn_select" ).on('selectmenuchange',function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
maxconn_select: $('#maxconn_select').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g,' ');
|
||||||
|
if (data.indexOf('error') != '-1') {
|
||||||
|
alert(data)
|
||||||
|
} else {
|
||||||
|
var value = data.split('<br>')
|
||||||
|
$('#maxconnfront').find('option').remove();
|
||||||
|
$('#maxconnfront').append($("<option></option>").attr("value","disabled").text("Choose Frontend"));
|
||||||
|
$('#maxconnfront').append($("<option></option>").attr("value","global").text("global"));
|
||||||
|
|
||||||
|
for(let i = 0; i < data.split('<br>').length; i++){
|
||||||
|
if(value[i] != '') {
|
||||||
|
$('#maxconnfront').append($("<option></option>")
|
||||||
|
.attr("value",value[i])
|
||||||
|
.text(value[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#maxconnfront').selectmenu("refresh");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
$('#maxconnform').submit(function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
serv: $('#maxconn_select').val(),
|
||||||
|
maxconn_frontend: $('#maxconnfront').val(),
|
||||||
|
maxconn_int: $('#maxconnint').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g,' ');
|
||||||
|
if (data.indexOf('error') != '-1') {
|
||||||
|
$("#ajaxmaxconn").html('<div class="alert alert-danger" style="margin: 10px;">'+data+'</div>');
|
||||||
|
} else {
|
||||||
|
$("#ajaxmaxconn").html('<div class="alert alert-success" style="margin: 10px;">'+data+'</div>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$( "#ip_select" ).on('selectmenuchange',function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
ip_select: $('#ip_select').val(),
|
||||||
|
serv: $('#ip_select').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g,' ');
|
||||||
|
if (data.indexOf('error') != '-1') {
|
||||||
|
alert(data)
|
||||||
|
} else {
|
||||||
|
var value = data.split('<br>')
|
||||||
|
$('#ipbackend').find('option').remove();
|
||||||
|
$('#ipbackend').append($("<option></option>").attr("value","disabled").text("Choose Backend"));
|
||||||
|
|
||||||
|
for(let i = 0; i < data.split('<br>').length; i++){
|
||||||
|
if(value[i] != '') {
|
||||||
|
$('#ipbackend').append($("<option></option>")
|
||||||
|
.attr("value",value[i])
|
||||||
|
.text(value[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#ipbackend').selectmenu("refresh");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
$( "#ipbackend" ).on('selectmenuchange',function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
serv: $('#ip_select').val(),
|
||||||
|
ipbackend: $('#ipbackend').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g,' ');
|
||||||
|
if (data.indexOf('error') != '-1') {
|
||||||
|
alert(data)
|
||||||
|
} else {
|
||||||
|
var value = data.split('<br>')
|
||||||
|
$('#backend_server').find('option').remove();
|
||||||
|
$('#backend_server').append($("<option></option>").attr("value","disabled").text("Choose Server"));
|
||||||
|
|
||||||
|
for(let i = 0; i < data.split('<br>').length; i++){
|
||||||
|
if(value[i] != ' ') {
|
||||||
|
value[i] = value[i].replace(/\s+/g,'');
|
||||||
|
$('#backend_server').append($("<option></option>")
|
||||||
|
.attr("value",value[i])
|
||||||
|
.text(value[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#backend_server').selectmenu("refresh");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
$( "#backend_server" ).on('selectmenuchange',function() {
|
||||||
|
$('#backend_ip').val();
|
||||||
|
$('#backend_port').val();
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
serv: $('#ip_select').val(),
|
||||||
|
ipbackend: $('#ipbackend').val(),
|
||||||
|
backend_server: $('#backend_server').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g,' ');
|
||||||
|
if (data.indexOf('error') != '-1') {
|
||||||
|
alert(data)
|
||||||
|
} else {
|
||||||
|
var server = data.split(':')[0]
|
||||||
|
var port = data.split(':')[1]
|
||||||
|
port = port.replace(/\s+/g,'');
|
||||||
|
server = server.replace(/\s+/g,'');
|
||||||
|
$('#backend_port').val(port);
|
||||||
|
$('#backend_ip').val(server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
$('#runtimeapiip').submit(function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
serv: $('#ip_select').val(),
|
||||||
|
backend_backend: $('#ipbackend').val(),
|
||||||
|
backend_server: $('#backend_server').val(),
|
||||||
|
backend_ip: $('#backend_ip').val(),
|
||||||
|
backend_port: $('#backend_port').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g,' ');
|
||||||
|
if (data.indexOf('error') != '-1') {
|
||||||
|
$("#ajaxip").html('<div class="alert alert-danger" style="margin: 10px;">'+data+'</div>');
|
||||||
|
} else {
|
||||||
|
$("#ajaxip").html('<div class="alert alert-success" style="margin: 10px;">'+data+'</div>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
|
@ -854,6 +854,15 @@ $( function() {
|
||||||
});
|
});
|
||||||
$( "#tabs" ).tabs( "option", "active", 4 );
|
$( "#tabs" ).tabs( "option", "active", 4 );
|
||||||
} );
|
} );
|
||||||
|
$( ".hap1" ).on( "click", function() {
|
||||||
|
$('.menu li ul li').each(function () {
|
||||||
|
$(this).find('a').css('padding-left', '20px')
|
||||||
|
$(this).find('a').css('border-left', '0px solid #5D9CEB');
|
||||||
|
$(this).children(".hap1").css('padding-left', '30px');
|
||||||
|
$(this).children(".hap1").css('border-left', '4px solid #5D9CEB');
|
||||||
|
});
|
||||||
|
$( "#tabs" ).tabs( "option", "active", 5 );
|
||||||
|
} );
|
||||||
$( ".backup" ).on( "click", function() {
|
$( ".backup" ).on( "click", function() {
|
||||||
$('.menu li ul li').each(function () {
|
$('.menu li ul li').each(function () {
|
||||||
$(this).find('a').css('padding-left', '20px')
|
$(this).find('a').css('padding-left', '20px')
|
||||||
|
@ -861,7 +870,7 @@ $( function() {
|
||||||
$(this).children(".backup").css('padding-left', '30px');
|
$(this).children(".backup").css('padding-left', '30px');
|
||||||
$(this).children(".backup").css('border-left', '4px solid #5D9CEB');
|
$(this).children(".backup").css('border-left', '4px solid #5D9CEB');
|
||||||
});
|
});
|
||||||
$( "#tabs" ).tabs( "option", "active", 5 );
|
$( "#tabs" ).tabs( "option", "active", 6 );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -950,4 +959,4 @@ function changeCurrentGroupF(){
|
||||||
Cookies.remove('group');
|
Cookies.remove('group');
|
||||||
Cookies.set('group', $('#newCurrentGroup').val(), { path: '/app', sameSite: 'Strict', Secure: 'True' });
|
Cookies.set('group', $('#newCurrentGroup').val(), { path: '/app', sameSite: 'Strict', Secure: 'True' });
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
34
inc/users.js
34
inc/users.js
|
@ -220,8 +220,8 @@ $( function() {
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
$('#grafna_install').click(function() {
|
$('#grafna_install').click(function() {
|
||||||
$("#ajax").html('')
|
$("#ajaxmon").html('')
|
||||||
$("#ajax").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
|
@ -232,26 +232,26 @@ $( function() {
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g,' ');
|
||||||
if (data.indexOf('FAILED') != '-1') {
|
if (data.indexOf('FAILED') != '-1') {
|
||||||
$("#ajax").html('<div class="alert alert-danger">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-danger">'+data+'</div>');
|
||||||
} else if (data.indexOf('success') != '-1' ){
|
} else if (data.indexOf('success') != '-1' ){
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-success">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-success">'+data+'</div>');
|
||||||
} else if (data.indexOf('Info') != '-1' ){
|
} else if (data.indexOf('Info') != '-1' ){
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-info">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-info">'+data+'</div>');
|
||||||
} else {
|
} else {
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-info">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-info">'+data+'</div>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
$('#haproxy_exp_install').click(function() {
|
$('#haproxy_exp_install').click(function() {
|
||||||
$("#ajax").html('')
|
$("#ajaxmon").html('')
|
||||||
$("#ajax").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
|
@ -262,17 +262,17 @@ $( function() {
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g,' ');
|
||||||
if (data.indexOf('error') != '-1' || data.indexOf('FAILED') != '-1') {
|
if (data.indexOf('error') != '-1' || data.indexOf('FAILED') != '-1') {
|
||||||
$("#ajax").html('<div class="alert alert-danger">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-danger">'+data+'</div>');
|
||||||
} else if (data.indexOf('success') != '-1' ){
|
} else if (data.indexOf('success') != '-1' ){
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-success">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-success">'+data+'</div>');
|
||||||
$('#cur_haproxy_exp_ver').text('HAProxy expoter is installed');
|
$('#cur_haproxy_exp_ver').text('HAProxy expoter is installed');
|
||||||
$('#haproxy_exp_install').text('Update');
|
$('#haproxy_exp_install').text('Update');
|
||||||
} else if (data.indexOf('Info') != '-1' ){
|
} else if (data.indexOf('Info') != '-1' ){
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-info">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-info">'+data+'</div>');
|
||||||
} else {
|
} else {
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
|
@ -282,8 +282,8 @@ $( function() {
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
$('#nginx_exp_install').click(function() {
|
$('#nginx_exp_install').click(function() {
|
||||||
$("#ajax").html('')
|
$("#ajaxmon").html('')
|
||||||
$("#ajax").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
|
@ -294,21 +294,21 @@ $( function() {
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g,' ');
|
||||||
if (data.indexOf('error') != '-1' || data.indexOf('FAILED') != '-1') {
|
if (data.indexOf('error') != '-1' || data.indexOf('FAILED') != '-1') {
|
||||||
$("#ajax").html('<div class="alert alert-danger">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-danger">'+data+'</div>');
|
||||||
} else if (data.indexOf('success') != '-1' ){
|
} else if (data.indexOf('success') != '-1' ){
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-success">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-success">'+data+'</div>');
|
||||||
$('#cur_nginx_exp_ver').text('Nginx expoter is installed');
|
$('#cur_nginx_exp_ver').text('Nginx expoter is installed');
|
||||||
$('#nginx_exp_install').text('Update');
|
$('#nginx_exp_install').text('Update');
|
||||||
} else if (data.indexOf('Info') != '-1' ){
|
} else if (data.indexOf('Info') != '-1' ){
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-info">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-info">'+data+'</div>');
|
||||||
} else {
|
} else {
|
||||||
$('.alert-danger').remove();
|
$('.alert-danger').remove();
|
||||||
$('.alert-warning').remove();
|
$('.alert-warning').remove();
|
||||||
$("#ajax").html('<div class="alert alert-info">'+data+'</div>');
|
$("#ajaxmon").html('<div class="alert alert-info">'+data+'</div>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
Loading…
Reference in New Issue