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'), add=form.getvalue('add'),
conf_add=form.getvalue('conf'), conf_add=form.getvalue('conf'),
group=user_group, group=user_group,
versions=funct.versions(),
options=sql.select_options(), options=sql.select_options(),
saved_servers=sql.select_saved_servers(), saved_servers=sql.select_saved_servers(),
white_lists=white_lists, white_lists=white_lists,

View File

@ -125,8 +125,6 @@ template = template.render(h2=1, title=title,
selects=servers, selects=servers,
stderr=stderr, stderr=stderr,
error=error, error=error,
note=1,
versions=funct.versions(),
service=service, service=service,
token=token) token=token)
print(template) print(template)

View File

@ -6,22 +6,22 @@ template = env.get_template('ha.html')
print('Content-type: text/html\n') print('Content-type: text/html\n')
funct.check_login() funct.check_login()
funct.page_for_admin(level = 2) funct.page_for_admin(level=2)
form = funct.form form = funct.form
serv = form.getvalue('serv') serv = form.getvalue('serv')
try: try:
user, user_id, role, token, servers = funct.get_users_params() user, user_id, role, token, servers = funct.get_users_params()
except: except Exception:
pass pass
output_from_parsed_template = template.render(h2 = 1, title = "Create and configure HA cluster", output_from_parsed_template = template.render(h2=1,
role = role, title="Create and configure HA cluster",
user = user, role=role,
serv = serv, user=user,
selects = servers, serv=serv,
versions = funct.versions(), selects=servers,
token = token) token=token)
print(output_from_parsed_template) print(output_from_parsed_template)

View File

@ -104,7 +104,6 @@ template = template.render(h2=1,
users=users, users=users,
groups=groups, groups=groups,
servers=servers_with_status1, servers=servers_with_status1,
versions=funct.versions(),
keep_alive=''.join(keep_alive), keep_alive=''.join(keep_alive),
serv=serv, serv=serv,
service=service, service=service,

View File

@ -33,7 +33,7 @@ funct.check_login()
try: try:
user, user_id, role, token, servers = funct.get_users_params() user, user_id, role, token, servers = funct.get_users_params()
except: except Exception:
pass pass
if service == 'nginx': if service == 'nginx':
@ -41,26 +41,22 @@ if service == 'nginx':
else: else:
title = "HAProxy`s logs" title = "HAProxy`s logs"
template = template.render(h2 = 1, template = template.render(h2=1,
autorefresh = 1, autorefresh=1,
title = title, title=title,
role = role, role=role,
user = user, user=user,
select_id = "serv", select_id="serv",
selects = servers, selects=servers,
serv = form.getvalue('serv'), serv=form.getvalue('serv'),
rows = rows, rows=rows,
grep = grep, grep=grep,
exgrep = exgrep, exgrep=exgrep,
hour = hour, hour=hour,
hour1 = hour1, hour1=hour1,
minut = minut, minut=minut,
minut1 = minut1, minut1=minut1,
waf = waf, waf=waf,
versions = funct.versions(), service=service,
service = service, token=token)
token = token)
print(template) print(template)

View File

@ -29,7 +29,6 @@ template = template.render(h2=1, title="Metrics",
role=role, role=role,
user=user, user=user,
servers=servers, servers=servers,
versions=funct.versions(),
services=services, services=services,
token=token) token=token)
print(template) 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"), 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"), metrics_error_log_id=funct.haproxy_wi_log(log_id=1, file="metrics-error"),
error=stderr, error=stderr,
versions=funct.versions(),
haproxy_wi_log=funct.haproxy_wi_log(), haproxy_wi_log=funct.haproxy_wi_log(),
servers=servers, servers=servers,
is_checker_worker=is_checker_worker, is_checker_worker=is_checker_worker,

View File

@ -14,17 +14,16 @@ try:
serv = form.getvalue('serv') serv = form.getvalue('serv')
if servbackend is None: if servbackend is None:
servbackend = "" servbackend = ""
except: except Exception:
pass pass
template = template.render(h2 = 0, template = template.render(h2=0,
title = "RunTime API", title="RunTime API",
role = role, role=role,
user = user, user=user,
select_id = "serv", select_id="serv",
selects = servers, selects=servers,
token = token, token=token,
versions = funct.versions(), servbackend=servbackend)
servbackend = servbackend)
print(template) print(template)

View File

@ -87,6 +87,5 @@ template = template.render(h2=1, title="Working with HAProxy configs",
end_line=end_line, end_line=end_line,
section=section, section=section,
sections=sections, sections=sections,
versions=funct.versions(),
token=token) token=token)
print(template) print(template)

View File

@ -50,7 +50,6 @@ output_from_parsed_template = template.render(title="Servers: ",
sshs=sql.select_ssh(group=user_group), sshs=sql.select_ssh(group=user_group),
telegrams=sql.get_user_telegram_by_group(user_group), telegrams=sql.get_user_telegram_by_group(user_group),
token=token, token=token,
versions=funct.versions(),
settings=settings, settings=settings,
backups=sql.select_backups(), backups=sql.select_backups(),
grafana=''.join(grafana), grafana=''.join(grafana),

View File

@ -46,7 +46,6 @@ template = template.render(h2=1, title=title,
user=user, user=user,
group=user_group, group=user_group,
telegrams=sql.get_user_telegram_by_group(user_group), telegrams=sql.get_user_telegram_by_group(user_group),
versions=funct.versions(),
smon=smon, smon=smon,
smon_status=smon_status, smon_status=smon_status,
smon_error=stderr, 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-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/inc/images/favicon/ms-icon-144x144.png"> <meta name="msapplication-TileImage" content="/inc/images/favicon/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff"> <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/fa-solid.min.js"></script>
<script defer src="/inc/fontawesome.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> <script defer src="/inc/ion.sound.min.js"></script>
<link href="/inc/awesome.css" rel="stylesheet"> <link href="/inc/awesome.css" rel="stylesheet">
<link href="/inc/style.css" rel="stylesheet"> <link href="/inc/style.css" rel="stylesheet">
@ -175,50 +173,26 @@
</div> </div>
<div class="auto-refresh-ul" id="secIntervals"> <div class="auto-refresh-ul" id="secIntervals">
<ul style="width: 100px;"> <ul style="width: 100px;">
<li> <li><a title="Auto-refresh every 5 seconds" onclick="setRefreshInterval(5000)">5 seconds</a></li>
<a title="Auto-refresh every 5 seconds" onclick="setRefreshInterval(5000)">5 seconds</a> <li><a title="Auto-refresh every 10 seconds" onclick="setRefreshInterval(10000)">10 seconds</a></li>
</li> <li><a title="Auto-refresh every 30 seconds" onclick="setRefreshInterval(30000)">30 seconds</a></li>
<li> <li><a title="Auto-refresh ever 45 seconds" onclick="setRefreshInterval(45000)">45 seconds</a></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> </ul>
</div> </div>
<div class="auto-refresh-ul"> <div class="auto-refresh-ul">
<ul style="width: 100px;"> <ul style="width: 100px;">
<li> <li><a title="Auto-refresh every 1 minute" onclick="setRefreshInterval(60000)">1 minute</a></li>
<a title="Auto-refresh every 1 minute" onclick="setRefreshInterval(60000)">1 minute</a> <li><a title="Auto-refresh every 5 minutes" onclick="setRefreshInterval(300000)">5 minutes</a></li>
</li> <li><a title="Auto-refresh every 15 minutes" onclick="setRefreshInterval(900000)">15 minutes</a></li>
<li> <li><a title="Auto-refresh ever 30 minutes" onclick="setRefreshInterval(1800000)">30 minutes</a></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> </ul>
</div> </div>
<div class="auto-refresh-ul"> <div class="auto-refresh-ul">
<ul style="width: 100px;"> <ul style="width: 100px;">
<li> <li><a title="Auto-refresh every 1 hour" onclick="setRefreshInterval(3600000)">1 hour</a></li>
<a title="Auto-refresh every 1 hour" onclick="setRefreshInterval(3600000)">1 hour</a> <li><a title="Auto-refresh every 2 hour" onclick="setRefreshInterval(7200000)">2 hour</a></li>
</li> <li><a title="Auto-refresh every 12 hour" onclick="setRefreshInterval(43200000)">12 hour</a></li>
<li> <li><a title="Auto-refresh ever 1 day" onclick="setRefreshInterval(86400000)">1 day</a></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> </ul>
</div> </div>
</div> </div>
@ -256,26 +230,7 @@
</span> </span>
</a> </a>
</div> </div>
<div id="version"> <div id="version"></div>
{% 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="logo_footer"> <div id="logo_footer">
<a href="https://haproxy-wi.org" title="HAProxy-WI official site" target="_blank"> <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" /> <img src="/inc/images/logo_footer.png" alt="logo" id="logo_footer_img" />

View File

@ -15,7 +15,7 @@
</th> </th>
<th class="checkbox-head" style="width: 5%">HAProxy</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: 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> <span title="If the server has a firewall enabled, enable this option">Firewalld</span>
</th> </th>
<th class="slave-field" style="width: 10%"> <th class="slave-field" style="width: 10%">

View File

@ -28,7 +28,7 @@
{% if first %} {% if first %}
<option {{disabled}} selected>{{first}}</option> <option {{disabled}} selected>{{first}}</option>
{% endif %} {% endif %}
{% for v, des in values|dictsort(false, 'value') %} {% for v, des in values.items() %}
{% if v == selected %} {% if v == selected %}
<option value="{{v}}" selected>{{des}}</option> <option value="{{v}}" selected>{{des}}</option>
{% else %} {% else %}

View File

@ -40,7 +40,11 @@ try:
service_name = s 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/-/./'" 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) service_ver, stderr = funct.subprocess_execute(cmd)
try:
services.append([s, status, v, service_ver[0]]) services.append([s, status, v, service_ver[0]])
except Exception:
services.append([s, status, v, ''])
try: try:
os_name = platform.linux_distribution()[0] 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 aftersave = 1
try: try:
funct.logging(serv, "configver.py upload old config %s" % configver) funct.logging(serv, "configver.py upload old config %s" % configver)
except: except Exception:
pass pass
if service == 'keepalived': if service == 'keepalived':
stderr = funct.upload_and_restart(serv, configver, just_save=save, keepalived=1) 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) stderr = funct.master_slave_upload_and_restart(serv, configver, just_save=save)
template = template.render(h2 = 1, title = title, template = template.render(h2=1, title=title,
role = role, role=role,
action = action, action=action,
user = user, user=user,
select_id = "serv", select_id="serv",
serv = serv, serv=serv,
aftersave = aftersave, aftersave=aftersave,
return_files = files, return_files=files,
selects = servers, selects=servers,
stderr = stderr, stderr=stderr,
open = form.getvalue('open'), open=form.getvalue('open'),
Select = form.getvalue('del'), Select=form.getvalue('del'),
file = file, file=file,
versions = funct.versions(), configver=configver,
configver = configver, service=service,
service = service, token=token)
token = token)
print(template) print(template)

View File

@ -49,19 +49,17 @@ try:
curpath = os.path.join(dirpath, file) curpath = os.path.join(dirpath, file)
try: try:
funct.subprocess_execute('sudo chown apache:apache ' + curpath) funct.subprocess_execute('sudo chown apache:apache ' + curpath)
except: except Exception:
pass pass
file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath)) file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath))
if datetime.datetime.now() - file_modified > datetime.timedelta(hours=time_storage_hours): if datetime.datetime.now() - file_modified > datetime.timedelta(hours=time_storage_hours):
os.remove(curpath) os.remove(curpath)
except: except Exception:
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>')
pass pass
try: try:
user, user_id, role, token, servers = funct.get_users_params() user, user_id, role, token, servers = funct.get_users_params()
except: except Exception:
pass pass
selects = funct.get_files(log_path, format="log") selects = funct.get_files(log_path, format="log")
@ -84,7 +82,6 @@ output_from_parsed_template = template.render(h2=1,
hour1=hour1, hour1=hour1,
minut=minut, minut=minut,
minut1=minut1, minut1=minut1,
versions=funct.versions(),
page = page, page = page,
token=token) token=token)
print(output_from_parsed_template) print(output_from_parsed_template)

View File

@ -10,6 +10,11 @@ service = form.getvalue('service')
print('Content-type: text/html\n') print('Content-type: text/html\n')
funct.check_login() funct.check_login()
if service == 'nginx':
title = 'Nginx stats page'
else:
title = 'HAProxy stats page'
try: try:
user, user_id, role, token, servers = funct.get_users_params(virt=1) user, user_id, role, token, servers = funct.get_users_params(virt=1)
@ -18,21 +23,20 @@ try:
for i in first_serv: for i in first_serv:
serv = i[2] serv = i[2]
break break
except: except Exception:
pass pass
output_from_parsed_template = template.render(h2 = 1, output_from_parsed_template = template.render(h2=1,
autorefresh = 1, autorefresh=1,
title = "HAProxy statistics", title=title,
role = role, role=role,
user = user, user=user,
onclick = "showStats()", onclick="showStats()",
select_id = "serv", select_id="serv",
selects = servers, selects=servers,
serv = serv, serv=serv,
versions = funct.versions(), service=service,
service = service, token=token)
token = token)
print(output_from_parsed_template) print(output_from_parsed_template)

View File

@ -5,22 +5,40 @@ from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('waf.html') template = env.get_template('waf.html')
form = funct.form
manage_rules = form.getvalue('manage_rules')
print('Content-type: text/html\n') print('Content-type: text/html\n')
funct.check_login() funct.check_login()
funct.page_for_admin(level = 2) funct.page_for_admin(level=2)
try: try:
user, user_id, role, token, servers = funct.get_users_params() user, user_id, role, token, servers = funct.get_users_params()
except: except Exception:
pass 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", template = template.render(h2=1, title=title,
autorefresh = 1, autorefresh=autorefresh,
role = role, role=role,
user = user, user=user,
servers = sql.select_waf_servers_metrics(user_id.value), serv=serv,
servers_all = servers, servers=servers_waf,
versions = funct.versions(), servers_all=servers,
token = token) manage_rules=manage_rules,
rules=rules,
token=token)
print(template) print(template)

View File

@ -873,6 +873,17 @@ $( function() {
} }
return false; 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({ var showUpdates = $( "#show-updates" ).dialog({
autoOpen: false, autoOpen: false,
resizable: false, resizable: false,

View File

@ -13,6 +13,9 @@ body {
height:100% height:100%
} }
h2 { 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; background: #5D9CEB;
border: 1px solid #5D9CEB; border: 1px solid #5D9CEB;
padding: 3px 3px 3px 2%; padding: 3px 3px 3px 2%;
@ -39,12 +42,11 @@ ul#browse_histroy {
} }
ul#browse_histroy li { ul#browse_histroy li {
display: inline; display: inline;
padding-right: 5px;
} }
ul#browse_histroy li+li:before { ul#browse_histroy li+li:before {
content: "/"; content: "/";
color: #767676; color: #767676;
margin: 0 9px 0px 2.5px; margin: 0 5px 0px 5px;
} }
#browse_histroy a { #browse_histroy a {
color: #767676; color: #767676;