Pavel Loginov 2021-01-18 22:21:51 +06:00
parent f3e43892fa
commit 3c8ab621fd
22 changed files with 156 additions and 163 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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