mirror of https://github.com/Aidaho12/haproxy-wi
parent
f3e43892fa
commit
3c8ab621fd
|
@ -46,7 +46,6 @@ if form.getvalue('mode') is None and form.getvalue('new_userlist') is None:
|
|||
add=form.getvalue('add'),
|
||||
conf_add=form.getvalue('conf'),
|
||||
group=user_group,
|
||||
versions=funct.versions(),
|
||||
options=sql.select_options(),
|
||||
saved_servers=sql.select_saved_servers(),
|
||||
white_lists=white_lists,
|
||||
|
|
|
@ -125,8 +125,6 @@ template = template.render(h2=1, title=title,
|
|||
selects=servers,
|
||||
stderr=stderr,
|
||||
error=error,
|
||||
note=1,
|
||||
versions=funct.versions(),
|
||||
service=service,
|
||||
token=token)
|
||||
print(template)
|
||||
|
|
18
app/ha.py
18
app/ha.py
|
@ -6,22 +6,22 @@ template = env.get_template('ha.html')
|
|||
|
||||
print('Content-type: text/html\n')
|
||||
funct.check_login()
|
||||
funct.page_for_admin(level = 2)
|
||||
funct.page_for_admin(level=2)
|
||||
|
||||
form = funct.form
|
||||
serv = form.getvalue('serv')
|
||||
|
||||
try:
|
||||
user, user_id, role, token, servers = funct.get_users_params()
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
output_from_parsed_template = template.render(h2 = 1, title = "Create and configure HA cluster",
|
||||
role = role,
|
||||
user = user,
|
||||
serv = serv,
|
||||
selects = servers,
|
||||
versions = funct.versions(),
|
||||
token = token)
|
||||
output_from_parsed_template = template.render(h2=1,
|
||||
title="Create and configure HA cluster",
|
||||
role=role,
|
||||
user=user,
|
||||
serv=serv,
|
||||
selects=servers,
|
||||
token=token)
|
||||
print(output_from_parsed_template)
|
||||
|
|
|
@ -104,7 +104,6 @@ template = template.render(h2=1,
|
|||
users=users,
|
||||
groups=groups,
|
||||
servers=servers_with_status1,
|
||||
versions=funct.versions(),
|
||||
keep_alive=''.join(keep_alive),
|
||||
serv=serv,
|
||||
service=service,
|
||||
|
|
42
app/logs.py
42
app/logs.py
|
@ -33,7 +33,7 @@ funct.check_login()
|
|||
|
||||
try:
|
||||
user, user_id, role, token, servers = funct.get_users_params()
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if service == 'nginx':
|
||||
|
@ -41,26 +41,22 @@ if service == 'nginx':
|
|||
else:
|
||||
title = "HAProxy`s logs"
|
||||
|
||||
template = template.render(h2 = 1,
|
||||
autorefresh = 1,
|
||||
title = title,
|
||||
role = role,
|
||||
user = user,
|
||||
select_id = "serv",
|
||||
selects = servers,
|
||||
serv = form.getvalue('serv'),
|
||||
rows = rows,
|
||||
grep = grep,
|
||||
exgrep = exgrep,
|
||||
hour = hour,
|
||||
hour1 = hour1,
|
||||
minut = minut,
|
||||
minut1 = minut1,
|
||||
waf = waf,
|
||||
versions = funct.versions(),
|
||||
service = service,
|
||||
token = token)
|
||||
template = template.render(h2=1,
|
||||
autorefresh=1,
|
||||
title=title,
|
||||
role=role,
|
||||
user=user,
|
||||
select_id="serv",
|
||||
selects=servers,
|
||||
serv=form.getvalue('serv'),
|
||||
rows=rows,
|
||||
grep=grep,
|
||||
exgrep=exgrep,
|
||||
hour=hour,
|
||||
hour1=hour1,
|
||||
minut=minut,
|
||||
minut1=minut1,
|
||||
waf=waf,
|
||||
service=service,
|
||||
token=token)
|
||||
print(template)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -29,7 +29,6 @@ template = template.render(h2=1, title="Metrics",
|
|||
role=role,
|
||||
user=user,
|
||||
servers=servers,
|
||||
versions=funct.versions(),
|
||||
services=services,
|
||||
token=token)
|
||||
print(template)
|
||||
|
|
|
@ -126,7 +126,6 @@ template = template.render(h2=1,
|
|||
checker_error_log_id=funct.haproxy_wi_log(log_id=1, file="checker-error"),
|
||||
metrics_error_log_id=funct.haproxy_wi_log(log_id=1, file="metrics-error"),
|
||||
error=stderr,
|
||||
versions=funct.versions(),
|
||||
haproxy_wi_log=funct.haproxy_wi_log(),
|
||||
servers=servers,
|
||||
is_checker_worker=is_checker_worker,
|
||||
|
|
|
@ -14,17 +14,16 @@ try:
|
|||
serv = form.getvalue('serv')
|
||||
if servbackend is None:
|
||||
servbackend = ""
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
template = template.render(h2 = 0,
|
||||
title = "RunTime API",
|
||||
role = role,
|
||||
user = user,
|
||||
select_id = "serv",
|
||||
selects = servers,
|
||||
token = token,
|
||||
versions = funct.versions(),
|
||||
servbackend = servbackend)
|
||||
template = template.render(h2=0,
|
||||
title="RunTime API",
|
||||
role=role,
|
||||
user=user,
|
||||
select_id="serv",
|
||||
selects=servers,
|
||||
token=token,
|
||||
servbackend=servbackend)
|
||||
print(template)
|
||||
|
|
|
@ -87,6 +87,5 @@ template = template.render(h2=1, title="Working with HAProxy configs",
|
|||
end_line=end_line,
|
||||
section=section,
|
||||
sections=sections,
|
||||
versions=funct.versions(),
|
||||
token=token)
|
||||
print(template)
|
||||
|
|
|
@ -50,7 +50,6 @@ output_from_parsed_template = template.render(title="Servers: ",
|
|||
sshs=sql.select_ssh(group=user_group),
|
||||
telegrams=sql.get_user_telegram_by_group(user_group),
|
||||
token=token,
|
||||
versions=funct.versions(),
|
||||
settings=settings,
|
||||
backups=sql.select_backups(),
|
||||
grafana=''.join(grafana),
|
||||
|
|
|
@ -46,7 +46,6 @@ template = template.render(h2=1, title=title,
|
|||
user=user,
|
||||
group=user_group,
|
||||
telegrams=sql.get_user_telegram_by_group(user_group),
|
||||
versions=funct.versions(),
|
||||
smon=smon,
|
||||
smon_status=smon_status,
|
||||
smon_error=stderr,
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
{% if versions is defined %}
|
||||
{% set current_ver = versions.0 %}
|
||||
{% set new_ver = versions.1 %}
|
||||
{% set current_ver_without_dots = versions.2 %}
|
||||
{% set new_ver_without_dots = versions.3 %}
|
||||
{% endif %}
|
||||
{% if new_ver_without_dots is defined and current_ver_without_dots is defined and new_ver is defined and new_ver_without_dots is defined %}
|
||||
<a style="color: #000; cursor: pointer;">
|
||||
{% if new_ver_without_dots > current_ver_without_dots and new_ver != "Sorry cannot get current version" %}
|
||||
<span id="show-updates-button" class="new-version-exists">v{{current_ver}} </span>
|
||||
{% else %}
|
||||
<a href="/app/users.py#updatehapwi" title="Update center" style="color: black;">v{{current_ver}}</a>
|
||||
{% endif %}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/app/users.py#updatehapwi" title="Update center" style="color: black;">v{{current_ver}}</a>
|
||||
{% endif %}
|
|
@ -26,11 +26,9 @@
|
|||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="msapplication-TileImage" content="/inc/images/favicon/ms-icon-144x144.png">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<script>
|
||||
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
||||
</script>
|
||||
<script defer src="/inc/fa-solid.min.js"></script>
|
||||
<script defer src="/inc/fontawesome.min.js"></script>
|
||||
<script>FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };</script>
|
||||
<script defer src="/inc/ion.sound.min.js"></script>
|
||||
<link href="/inc/awesome.css" rel="stylesheet">
|
||||
<link href="/inc/style.css" rel="stylesheet">
|
||||
|
@ -175,50 +173,26 @@
|
|||
</div>
|
||||
<div class="auto-refresh-ul" id="secIntervals">
|
||||
<ul style="width: 100px;">
|
||||
<li>
|
||||
<a title="Auto-refresh every 5 seconds" onclick="setRefreshInterval(5000)">5 seconds</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh every 10 seconds" onclick="setRefreshInterval(10000)">10 seconds</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh every 30 seconds" onclick="setRefreshInterval(30000)">30 seconds</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh ever 45 seconds" onclick="setRefreshInterval(45000)">45 seconds</a>
|
||||
</li>
|
||||
<li><a title="Auto-refresh every 5 seconds" onclick="setRefreshInterval(5000)">5 seconds</a></li>
|
||||
<li><a title="Auto-refresh every 10 seconds" onclick="setRefreshInterval(10000)">10 seconds</a></li>
|
||||
<li><a title="Auto-refresh every 30 seconds" onclick="setRefreshInterval(30000)">30 seconds</a></li>
|
||||
<li><a title="Auto-refresh ever 45 seconds" onclick="setRefreshInterval(45000)">45 seconds</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="auto-refresh-ul">
|
||||
<ul style="width: 100px;">
|
||||
<li>
|
||||
<a title="Auto-refresh every 1 minute" onclick="setRefreshInterval(60000)">1 minute</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh every 5 minutes" onclick="setRefreshInterval(300000)">5 minutes</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh every 15 minutes" onclick="setRefreshInterval(900000)">15 minutes</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh ever 30 minutes" onclick="setRefreshInterval(1800000)">30 minutes</a>
|
||||
</li>
|
||||
<li><a title="Auto-refresh every 1 minute" onclick="setRefreshInterval(60000)">1 minute</a></li>
|
||||
<li><a title="Auto-refresh every 5 minutes" onclick="setRefreshInterval(300000)">5 minutes</a></li>
|
||||
<li><a title="Auto-refresh every 15 minutes" onclick="setRefreshInterval(900000)">15 minutes</a></li>
|
||||
<li><a title="Auto-refresh ever 30 minutes" onclick="setRefreshInterval(1800000)">30 minutes</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="auto-refresh-ul">
|
||||
<ul style="width: 100px;">
|
||||
<li>
|
||||
<a title="Auto-refresh every 1 hour" onclick="setRefreshInterval(3600000)">1 hour</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh every 2 hour" onclick="setRefreshInterval(7200000)">2 hour</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh every 12 hour" onclick="setRefreshInterval(43200000)">12 hour</a>
|
||||
</li>
|
||||
<li>
|
||||
<a title="Auto-refresh ever 1 day" onclick="setRefreshInterval(86400000)">1 day</a>
|
||||
</li>
|
||||
<li><a title="Auto-refresh every 1 hour" onclick="setRefreshInterval(3600000)">1 hour</a></li>
|
||||
<li><a title="Auto-refresh every 2 hour" onclick="setRefreshInterval(7200000)">2 hour</a></li>
|
||||
<li><a title="Auto-refresh every 12 hour" onclick="setRefreshInterval(43200000)">12 hour</a></li>
|
||||
<li><a title="Auto-refresh ever 1 day" onclick="setRefreshInterval(86400000)">1 day</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -256,26 +230,7 @@
|
|||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id="version">
|
||||
{% if versions is defined %}
|
||||
{% set current_ver = versions.0 %}
|
||||
{% set new_ver = versions.1 %}
|
||||
{% set current_ver_without_dots = versions.2 %}
|
||||
{% set new_ver_without_dots = versions.3 %}
|
||||
{% endif %}
|
||||
{% if new_ver_without_dots is defined and current_ver_without_dots is defined and new_ver is defined and new_ver_without_dots is defined %}
|
||||
<a style="color: #000; cursor: pointer;">
|
||||
{% if new_ver_without_dots > current_ver_without_dots and new_ver != "Sorry cannot get current version" %}
|
||||
<span id="show-updates-button" class="new-version-exists">v{{current_ver}} </span>
|
||||
{% else %}
|
||||
<a href="/app/users.py#updatehapwi" title="Update center" style="color: black;">v{{current_ver}}</a>
|
||||
{% endif %}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/app/users.py#updatehapwi" title="Update center" style="color: black;">v{{current_ver}}</a>
|
||||
{% endif %}
|
||||
<br>
|
||||
</div>
|
||||
<div id="version"></div>
|
||||
<div id="logo_footer">
|
||||
<a href="https://haproxy-wi.org" title="HAProxy-WI official site" target="_blank">
|
||||
<img src="/inc/images/logo_footer.png" alt="logo" id="logo_footer_img" />
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
</th>
|
||||
<th class="checkbox-head" style="width: 5%">HAProxy</th>
|
||||
<th class="checkbox-head" style="width: 5%">Nginx</th>
|
||||
<th class="checkbox-head" style="width: 10%">
|
||||
<th class="checkbox-head" style="width: 15%">
|
||||
<span title="If the server has a firewall enabled, enable this option">Firewalld</span>
|
||||
</th>
|
||||
<th class="slave-field" style="width: 10%">
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
{% if first %}
|
||||
<option {{disabled}} selected>{{first}}</option>
|
||||
{% endif %}
|
||||
{% for v, des in values|dictsort(false, 'value') %}
|
||||
{% for v, des in values.items() %}
|
||||
{% if v == selected %}
|
||||
<option value="{{v}}" selected>{{des}}</option>
|
||||
{% else %}
|
||||
|
|
|
@ -40,7 +40,11 @@ try:
|
|||
service_name = s
|
||||
cmd = "rpm --query haproxy-wi-"+service_name+"-* |awk -F\""+service_name + "\" '{print $2}' |awk -F\".noa\" '{print $1}' |sed 's/-//1' |sed 's/-/./'"
|
||||
service_ver, stderr = funct.subprocess_execute(cmd)
|
||||
services.append([s, status, v, service_ver[0]])
|
||||
|
||||
try:
|
||||
services.append([s, status, v, service_ver[0]])
|
||||
except Exception:
|
||||
services.append([s, status, v, ''])
|
||||
|
||||
try:
|
||||
os_name = platform.linux_distribution()[0]
|
||||
|
|
|
@ -71,7 +71,7 @@ if serv is not None and form.getvalue('config') is not None:
|
|||
aftersave = 1
|
||||
try:
|
||||
funct.logging(serv, "configver.py upload old config %s" % configver)
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
if service == 'keepalived':
|
||||
stderr = funct.upload_and_restart(serv, configver, just_save=save, keepalived=1)
|
||||
|
@ -81,21 +81,20 @@ if serv is not None and form.getvalue('config') is not None:
|
|||
stderr = funct.master_slave_upload_and_restart(serv, configver, just_save=save)
|
||||
|
||||
|
||||
template = template.render(h2 = 1, title = title,
|
||||
role = role,
|
||||
action = action,
|
||||
user = user,
|
||||
select_id = "serv",
|
||||
serv = serv,
|
||||
aftersave = aftersave,
|
||||
return_files = files,
|
||||
selects = servers,
|
||||
stderr = stderr,
|
||||
open = form.getvalue('open'),
|
||||
Select = form.getvalue('del'),
|
||||
file = file,
|
||||
versions = funct.versions(),
|
||||
configver = configver,
|
||||
service = service,
|
||||
token = token)
|
||||
template = template.render(h2=1, title=title,
|
||||
role=role,
|
||||
action=action,
|
||||
user=user,
|
||||
select_id="serv",
|
||||
serv=serv,
|
||||
aftersave=aftersave,
|
||||
return_files=files,
|
||||
selects=servers,
|
||||
stderr=stderr,
|
||||
open=form.getvalue('open'),
|
||||
Select=form.getvalue('del'),
|
||||
file=file,
|
||||
configver=configver,
|
||||
service=service,
|
||||
token=token)
|
||||
print(template)
|
||||
|
|
|
@ -49,19 +49,17 @@ try:
|
|||
curpath = os.path.join(dirpath, file)
|
||||
try:
|
||||
funct.subprocess_execute('sudo chown apache:apache ' + curpath)
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath))
|
||||
if datetime.datetime.now() - file_modified > datetime.timedelta(hours=time_storage_hours):
|
||||
os.remove(curpath)
|
||||
except:
|
||||
print(
|
||||
'<center><div class="alert alert-danger" style="margin: 0; margin-bottom: 10px;">Can\'t delete old logs file. <br> Please check "log_time_storage" in config and <br>exist directory </div></center>')
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
user, user_id, role, token, servers = funct.get_users_params()
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
selects = funct.get_files(log_path, format="log")
|
||||
|
@ -84,7 +82,6 @@ output_from_parsed_template = template.render(h2=1,
|
|||
hour1=hour1,
|
||||
minut=minut,
|
||||
minut1=minut1,
|
||||
versions=funct.versions(),
|
||||
page = page,
|
||||
token=token)
|
||||
print(output_from_parsed_template)
|
||||
|
|
|
@ -10,6 +10,11 @@ service = form.getvalue('service')
|
|||
print('Content-type: text/html\n')
|
||||
funct.check_login()
|
||||
|
||||
if service == 'nginx':
|
||||
title = 'Nginx stats page'
|
||||
else:
|
||||
title = 'HAProxy stats page'
|
||||
|
||||
try:
|
||||
user, user_id, role, token, servers = funct.get_users_params(virt=1)
|
||||
|
||||
|
@ -18,21 +23,20 @@ try:
|
|||
for i in first_serv:
|
||||
serv = i[2]
|
||||
break
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
output_from_parsed_template = template.render(h2 = 1,
|
||||
autorefresh = 1,
|
||||
title = "HAProxy statistics",
|
||||
role = role,
|
||||
user = user,
|
||||
onclick = "showStats()",
|
||||
select_id = "serv",
|
||||
selects = servers,
|
||||
serv = serv,
|
||||
versions = funct.versions(),
|
||||
service = service,
|
||||
token = token)
|
||||
output_from_parsed_template = template.render(h2=1,
|
||||
autorefresh=1,
|
||||
title=title,
|
||||
role=role,
|
||||
user=user,
|
||||
onclick="showStats()",
|
||||
select_id="serv",
|
||||
selects=servers,
|
||||
serv=serv,
|
||||
service=service,
|
||||
token=token)
|
||||
print(output_from_parsed_template)
|
||||
|
||||
|
|
40
app/waf.py
40
app/waf.py
|
@ -5,22 +5,40 @@ from jinja2 import Environment, FileSystemLoader
|
|||
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
|
||||
template = env.get_template('waf.html')
|
||||
|
||||
form = funct.form
|
||||
manage_rules = form.getvalue('manage_rules')
|
||||
|
||||
print('Content-type: text/html\n')
|
||||
funct.check_login()
|
||||
funct.page_for_admin(level = 2)
|
||||
funct.page_for_admin(level=2)
|
||||
|
||||
try:
|
||||
user, user_id, role, token, servers = funct.get_users_params()
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if manage_rules == '1':
|
||||
serv = form.getvalue('serv')
|
||||
funct.check_is_server_in_group(serv)
|
||||
title = "Manage rules - Web application firewall"
|
||||
servers_waf = ''
|
||||
autorefresh = 0
|
||||
rules = sql.select_waf_rules(serv)
|
||||
else:
|
||||
title = "Web application firewall"
|
||||
servers_waf = sql.select_waf_servers_metrics(user_id.value)
|
||||
autorefresh = 1
|
||||
serv = ''
|
||||
rules = ''
|
||||
|
||||
template = template.render(h2 = 1, title = "Web application firewall",
|
||||
autorefresh = 1,
|
||||
role = role,
|
||||
user = user,
|
||||
servers = sql.select_waf_servers_metrics(user_id.value),
|
||||
servers_all = servers,
|
||||
versions = funct.versions(),
|
||||
token = token)
|
||||
print(template)
|
||||
template = template.render(h2=1, title=title,
|
||||
autorefresh=autorefresh,
|
||||
role=role,
|
||||
user=user,
|
||||
serv=serv,
|
||||
servers=servers_waf,
|
||||
servers_all=servers,
|
||||
manage_rules=manage_rules,
|
||||
rules=rules,
|
||||
token=token)
|
||||
print(template)
|
||||
|
|
|
@ -873,6 +873,17 @@ $( function() {
|
|||
}
|
||||
return false;
|
||||
});
|
||||
$.ajax( {
|
||||
url: "options.py",
|
||||
data: {
|
||||
show_versions: 1,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
success: function( data ) {
|
||||
$('#version').html(data);
|
||||
}
|
||||
} );
|
||||
var showUpdates = $( "#show-updates" ).dialog({
|
||||
autoOpen: false,
|
||||
resizable: false,
|
||||
|
|
|
@ -13,6 +13,9 @@ body {
|
|||
height:100%
|
||||
}
|
||||
h2 {
|
||||
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
|
||||
font-size: 1.5em;
|
||||
font-style: normal;
|
||||
background: #5D9CEB;
|
||||
border: 1px solid #5D9CEB;
|
||||
padding: 3px 3px 3px 2%;
|
||||
|
@ -39,12 +42,11 @@ ul#browse_histroy {
|
|||
}
|
||||
ul#browse_histroy li {
|
||||
display: inline;
|
||||
padding-right: 5px;
|
||||
}
|
||||
ul#browse_histroy li+li:before {
|
||||
content: "/";
|
||||
color: #767676;
|
||||
margin: 0 9px 0px 2.5px;
|
||||
margin: 0 5px 0px 5px;
|
||||
}
|
||||
#browse_histroy a {
|
||||
color: #767676;
|
||||
|
|
Loading…
Reference in New Issue