pull/145/head
Pavel Loginov 2019-09-23 14:18:38 +03:00
parent 9d7a84929f
commit b252f8fa3b
11 changed files with 233 additions and 256 deletions

View File

@ -54,7 +54,10 @@ def ban():
c["ban"] = 1
c["ban"]["path"] = "/app/"
c["ban"]["expires"] = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")
funct.logging('locahost', login+' Failed log in', haproxywi=1, login=1)
try:
funct.logging('locahost', login+' Failed log in', haproxywi=1, login=1)
except:
funct.logging('locahost', ' Failed log in', haproxywi=1)
print(c)
print("Content-type: text/html\n")
print('ban')

View File

@ -41,6 +41,7 @@ template = template.render(h2 = 1,
user = user,
users = users,
groups = groups,
roles = sql.select_roles(),
metrics_master = ''.join(metrics_master),
metrics_worker = ''.join(metrics_worker),
checker_master = ''.join(checker_master),

View File

@ -10,7 +10,7 @@
<li><a href="#users">Users</a></li>
<li><a href="#groups">Groups</a></li>
<li><a href="#servers">Servers</a></li>
<li><a href="#roles">Roles</a></li>
<!-- <li><a href="#roles">Roles</a></li> -->
<li><a href="#ssh">SSH credentials</a></li>
<li><a href="#checker">Checker</a></li>
{% if user %}
@ -273,21 +273,21 @@
<br /><span class="add-button" title="Add server" id="add-server-button">+ Add</span>
<br /><br />
</div>
<div id="roles">
<table class="overview" id="ajax-group">
<tr class="overviewHead">
<td class="padding10 first-collumn">Name</td>
<td>Desciption</td>
</tr>
<tr>
{% for role in roles %}
<tr id="group-{{role.0}}" class="{{ loop.cycle('odd', 'even') }}">
<td class="padding10 first-collumn">{{role.1}}</td>
<td>{{role.2}}</td>
</tr>
{% endfor %}
</table>
</div>
<!-- <div id="roles"> -->
<!-- <table class="overview" id="ajax-group"> -->
<!-- <tr class="overviewHead"> -->
<!-- <td class="padding10 first-collumn">Name</td> -->
<!-- <td>Desciption</td> -->
<!-- </tr> -->
<!-- <tr> -->
<!-- {% for role in roles %} -->
<!-- <tr id="group-{{role.0}}" class="{{ loop.cycle('odd', 'even') }}"> -->
<!-- <td class="padding10 first-collumn">{{role.1}}</td> -->
<!-- <td>{{role.2}}</td> -->
<!-- </tr> -->
<!-- {% endfor %} -->
<!-- </table> -->
<!-- </div> -->
<div id="ssh">
<table id="ssh_enable_table" class="overview">

View File

@ -94,6 +94,9 @@
<input type="text" id="desc-{{server.0}}" value="" size="30" class="form-control">
{% endif %}
</td>
<td>
<a class="add" onclick="cloneServer({{server.0}})" id="clone-{{server.0}}" title="Clone {{server.1}}" style="cursor: pointer;"></a>
</td>
<td>
<a class="delete" onclick="removeServer({{server.0}})" title="Delete server {{server.1}}" style="cursor: pointer;"></a>
</td>

View File

@ -3,7 +3,7 @@
{% if service.3 == "On" or service.3 == "Off" or service.3 == "DetectionOnly" or url == "waf.py" %}
{% do waf_servers.append(1) %}
<tr class="{{ loop.cycle('odd', 'even') }}" id="{{service.0}}-select-line">
<td class="padding10 first-collumn">
<td class="padding10 first-collumn-wi">
{% if service.2|int() >= 1 %}
<span class="serverUp" title="running {{service.2 }} processes"> UP</span>
{% else %}
@ -11,9 +11,9 @@
{% endif %}
<a href="#{{ service.0 }}" title="Go to {{ service.0 }} status" style="color: #000">{{ service.0 }}</a>
</td>
<td class="second-collumn">
<!-- <td class="second-collumn"> -->
</td>
<!-- </td> -->
<td>
{% if role <= 1 %}
<a id="{{ service.1 }}" class="start-waf" title="Start WAF service">
@ -67,7 +67,7 @@
{% endfor %}
{% if waf_servers|count == 0 and url != "waf.py" %}
<tr>
<td class="padding10 first-collumn">
<td class="padding10 first-collumn-wi">
You have not installed the WAF server yet
</td>
</tr>

View File

@ -21,9 +21,9 @@
</a>
</td>
<td class="second-collumn">
<!-- <td class="second-collumn"> -->
</td>
<!-- </td> -->
<td>
{% if role <= 1 %}
<a id="{{ service.1 }}" class="start" title="Start HAProxy service">
@ -37,7 +37,7 @@
</a>
{% endif %}
{% if role <= 2 %}
<a href="/app/config.py?serv={{ service.1 }}" target="_blank" title="Working with HAProxy configs">
<a href="/app/config.py?serv={{ service.1 }}&open=open" target="_blank" title="Working with HAProxy configs">
<img src="/inc/images/edit.png" alt="edit" class="icon" width="15px">
</a>
{% endif %}
@ -45,7 +45,7 @@
<img src="/inc/images/show.png" alt="show" class="icon" width="20px" style="margin-bottom: -3px;">
</a>
</td>
<td>
<td class="third-collumn-wi">
{% if "ls: cannot access" in service.3 %}
Cannot find HAProxy config
{% else %}

View File

@ -1,53 +0,0 @@
{% for server in servers %}
<tr id="server-{{server.0}}">
<td class="padding10 first-collumn">
<input type="text" id="hostname-{{server.0}}" value="{{server.1}}" class="form-control">
</td>
<td>
<input type="text" id="ip-{{server.0}}" value="{{server.2}}" class="form-control">
</td>
<td>
<select id="servergroup-{{server.0}}" name="servergroup-{{server.0}}">
<option disabled selected>Choose group</option>
{% for group in groups %}
{% if server.3 == group.0|string() %}
<option value="{{ group.0 }}" selected>{{ group.1 }}</option>
{% else %}
<option value="{{ group.0 }}">{{ group.1 }}</option>
{% endif %}
{% endfor %}
</select>
</td>
<td>
{% if server.5 == 1 %}
<label for="enable-{{server.0}}"></label><input type="checkbox" id="enable-{{server.0}}" checked>
{% else %}
<label for="enable-{{server.0}}"></label><input type="checkbox" id="enable-{{server.0}}">
{% endif %}
</td>
<td>
{% if server.4 == 1 %}
<label for="typeip-{{server.0}}"></label><input type="checkbox" id="typeip-{{server.0}}" checked>
{% else %}
<label for="typeip-{{server.0}}"></label><input type="checkbox" id="typeip-{{server.0}}">
{% endif %}
</td>
<td>
<select id="slavefor-{{server.0}}">
<option value="0" selected>Not slave</option>
{% for master in masters %}
{% if master.0 == server.6 %}
<option value="{{master.0}}" selected>{{master.1}}</option>
{% else %}
<option value="{{master.0}}">{{master.1}}</option>
{% endif %}
{% endfor %}
</select>
</td>
<td>
<a class="delete" onclick="removeServer({{server.0}})" style="cursor: pointer;"></a>
</td>
</tr>
{% endfor %}
<script defer src="/inc/fontawesome.min.js"></script>
<script src="/inc/script.js"></script>

View File

@ -1,51 +0,0 @@
{% for server in servers %}
<tr id="server-{{server.0}}">
<td class="padding10 first-collumn">
<input type="text" id="hostname-{{server.0}}" value="{{server.1}}" class="form-control">
</td>
<td>
<input type="text" id="ip-{{server.0}}" value="{{server.2}}" class="form-control">
</td>
<td>
<select id="servergroup-{{server.0}}" name="servergroup-{{server.0}}">
<option disabled selected>Choose group</option>
{% for group in groups %}
{% if server.3 == group.0|string() %}
<option value="{{ group.0 }}" selected>{{ group.1 }}</option>
{% else %}
<option value="{{ group.0 }}">{{ group.1 }}</option>
{% endif %}
{% endfor %}
</select>
</td>
<td>
{% if server.5 == 1 %}
<label for="enable-{{server.0}}"></label><input type="checkbox" id="enable-{{server.0}}" checked>
{% else %}
<label for="enable-{{server.0}}"></label><input type="checkbox" id="enable-{{server.0}}">
{% endif %}
</td>
<td>
{% if server.4 == 1 %}
<label for="typeip-{{server.0}}"></label><input type="checkbox" id="typeip-{{server.0}}" checked>
{% else %}
<label for="typeip-{{server.0}}"></label><input type="checkbox" id="typeip-{{server.0}}">
{% endif %}
</td>
<td>
<select id="slavefor-{{server.0}}">
<option value="0" selected>Not slave</option>
{% for master in masters %}
{% if master.0 == server.6 %}
<option value="{{master.0}}" selected>{{master.1}}</option>
{% else %}
<option value="{{master.0}}">{{master.1}}</option>
{% endif %}
{% endfor %}
</select>
</td>
<td>
<a class="delete" onclick="removeServer({{server.0}})" style="cursor: pointer;"></a>
</td>
</tr>
{% endfor %}

View File

@ -81,7 +81,7 @@
<li><a href=/app/users.py#users title="Actions with users" class="users head-submenu">Users</a></li>
<li><a href=/app/users.py#groups title="Actions with groups" class="group head-submenu">Groups</a></li>
<li><a href=/app/users.py#servers title="Actions with servers" class="runtime head-submenu">Servers</a></li>
<li><a href=/app/users.py#roles title="Users roles" class="role head-submenu">Roles</a></li>
<!-- <li><a href=/app/users.py#roles title="Users roles" class="role head-submenu">Roles</a></li> -->
<li><a href=/app/users.py#ssh title="Manage SSH credentials" class="admin head-submenu">SSH credentials</a></li>
<li><a href=/app/settings.py title="HAproxy-WI settings" class="settings head-submenu">Settings</a></li>
<li><a href=/app/viewlogs.py title="View internal logs" class="logs head-submenu">Internal logs</a></li>

View File

@ -3,122 +3,15 @@
<script>
$("#secIntervals").css("display", "none");
</script>
{% if role <= 1 %}
<table class="overview">
<tr class="overviewHead">
<td class="padding10 first-collumn">Login</td>
<td class="padding10 second-collumn"><!--Email--></td>
<td class="second-collumn">Group</td>
<td>Role</td>
<td class="padding10">
<span class="add-button">
<a title="Show all users" id="show-all-users" style="color: #fff">
Show all
</a>
</span>
</td>
</tr>
{% set counter = 0 -%}
{% for USER in users %}
{% set counter = counter + loop.index0 %}
{% if counter <= 2 %}
<tr class="{{ loop.cycle('odd', 'even') }}">
<td class="padding10 first-collumn">
<a href="users.py#users" title="Edit user" style="color: #000;">
{{ USER.1 }}
<img src="/inc/images/edit.png" alt="Edit" width="15" style="margin-bottom: -3px;" />
</a>
</td>
<td class="padding10 second-collumn"> <!--{{ USER.2 }}--></td>
{% for group in groups %}
{% if USER.5 == group.0|string() %}
<td class="third-collumn">{{ group.1 }}</td>
{% endif %}
{% endfor %}
<td>{{ USER.4 }}</td>
<td></td>
</tr>
{% else %}
<tr style="display: none;" class="show-users {{ loop.cycle('odd', 'even') }}">
<td class="padding10 first-collumn">
<a href="users.py#users" title="Edit user" style="color: #000;">
{{ USER.1 }}
<img src="/inc/images/edit.png" alt="Edit" width="15" style="margin-bottom: -3px;" />
</a>
</td>
<td class="padding10"> {{ USER.2 }}</td>
{% for group in groups %}
{% if group.0|string() == USER.5 %}
<td class="third-collumn">{{ group.1 }}</td>
{% endif %}
{% endfor %}
<td>{{ USER.4 }}</td>
<td></td>
</tr>
{% endif %}
{% endfor %}
</table>
<table class="overview">
<tr class="overviewHead">
<th class="padding10 first-collumn" colspan=4>
Tools status
</th>
</tr>
<tr>
<td class="padding10 first-collumn">
{% if metrics_master|int() >= 1 %}
<span title="running {{ metrics_master }} master processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{ metrics_master }} master processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Metrics master</span>
<br />
<br />
{% if metrics_worker|int() >= 1 %}
<span title="running {{metrics_worker}} worker processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{metrics_worker}} worker processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Metrics workers</span>
</td>
<td class="padding10 second-collumn"></td>
<td class="third-collumn">
{% if checker_master|int() >= 1 %}
<span title="running {{ checker_master }} master processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{ checker_master }} master processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Checker master</span>
<br />
<br />
{% if checker_worker|int() >= 1 %}
<span title="running {{ checker_worker }} worker processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{ checker_worker }} worker processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Checker workers</span>
</td>
<td class="third-collumn">
{% if keep_alive|int() >= 1 %}
<span title="Keep alive is run"><span class="serverUp"> UP</span>
{% else %}
<span title="Keep alive is down"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Keep alive</span>
</td>
</tr>
</table>
{% endif %}
<table class="overview">
<table class="overview-wi">
<tr class="overviewHead">
<td class="padding10 first-collumn">
<td class="padding10 first-collumn-wi">
Server
</td class="padding10 second-collumn">
<td class="padding10 second-collumn">
<!-- HAproxy status-->
</td>
<td class="padding10 third-collumn">
<!-- <td class="padding10 second-collumn"> -->
<!-- HAproxy status -->
<!-- </td> -->
<td class="padding10 third-collumn-wi">
Action
</td>
<td class="padding10">
@ -129,16 +22,16 @@
</td>
</tr>
<tbody id="ajaxstatus"></tbody>
<table class="overview">
</table>
<table class="overview-wi">
<tr class="overviewHead">
<td class="padding10 first-collumn">
<td class="padding10 first-collumn-wi">
WAF
</td class="padding10 second-collumn">
<td class="padding10 second-collumn">
<!-- <td class="padding10 second-collumn"> -->
<!-- WAF status -->
</td>
<td class="padding10 third-collumn">
<!-- </td> -->
<td class="padding10 third-collumn-wi">
Action
</td>
<td class="padding10">
@ -150,15 +43,167 @@
</tr>
<tbody id="ajaxwafstatus"></tbody>
</table>
<table class="overview-wi" style="height: 172;">
<tr class="overviewHead">
<th class="padding10 first-collumn-wi" colspan=4>
Tools status
</th>
</tr>
<tr>
<td class="padding10 first-collumn-wi">
{% if metrics_master|int() >= 1 %}
<span title="running {{ metrics_master }} master processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{ metrics_master }} master processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Metrics master</span>
</td>
<td class="third-collumn-wi">
{% if checker_master|int() >= 1 %}
<span title="running {{ checker_master }} master processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{ checker_master }} master processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Checker master</span>
</td>
<td class="third-collumn-wi" style="border-right: 1px solid #ddd;">
{% if keep_alive|int() >= 1 %}
<span title="Keep alive is run"><span class="serverUp"> UP</span>
{% else %}
<span title="Keep alive is down"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Keep alive</span>
</td>
</tr>
<tr>
<td class="padding10 first-collumn-wi">
{% if metrics_worker|int() >= 1 %}
<span title="running {{metrics_worker}} worker processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{metrics_worker}} worker processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Metrics workers</span>
</td>
<td>
{% if checker_worker|int() >= 1 %}
<span title="running {{ checker_worker }} worker processes"><span class="serverUp"> UP</span>
{% else %}
<span title="running {{ checker_worker }} worker processes"><span class="serverDown"> DOWN</span>
{% endif %}
<span>Checker workers</span>
</td>
<td style="border-right: 1px solid #ddd;"></td>
</tr>
</table>
{% if role <= 1 %}
<table class="overview-wi">
<tr class="overviewHead">
<td class="padding10 first-collumn-wi">Login</td>
<!-- <td class="padding10 second-collumn">Email</td> -->
<td class="second-collumn">Group</td>
<td>Role</td>
<td class="padding10">
<span class="add-button-wi">
<a title="Show all users" id="show-all-users" style="color: #fff">
Show all
</a>
</span>
</td>
</tr>
{% set counter = 0 -%}
{% for USER in users %}
{% set counter = counter + loop.index0 %}
{% if counter <= 2 %}
<tr class="{{ loop.cycle('odd', 'even') }}">
<td class="padding10 first-collumn-wi">
<a href="users.py#users" title="Edit user" style="color: #000;">
{{ USER.1 }}
<img src="/inc/images/edit.png" alt="Edit" width="15" style="margin-bottom: -3px;" />
</a>
</td>
<!-- <td class="padding10 second-collumn"> {{ USER.2 }}</td> -->
{% for group in groups %}
{% if USER.5 == group.0|string() %}
<td class="third-collumn-wi">{{ group.1 }}</td>
{% endif %}
{% endfor %}
<td>{{ USER.4 }}</td>
<td></td>
</tr>
{% else %}
<tr style="display: none;" class="show-users {{ loop.cycle('odd', 'even') }}">
<td class="padding10 first-collumn-wi">
<a href="users.py#users" title="Edit user" style="color: #000;">
{{ USER.1 }}
<img src="/inc/images/edit.png" alt="Edit" width="15" style="margin-bottom: -3px;" />
</a>
</td>
<!-- <td class="padding10"> {{ USER.2 }}</td> -->
{% for group in groups %}
{% if group.0|string() == USER.5 %}
<td class="third-collumn-wi">{{ group.1 }}</td>
{% endif %}
{% endfor %}
<td>{{ USER.4 }}</td>
<td></td>
</tr>
{% endif %}
{% endfor %}
</table>
<table class="overview-wi">
<tr class="overviewHead">
<td class="padding10 first-collumn-wi">Group</td>
<td class="second-collumn" style="width: 50%">Desctiption</td>
<td></td>
<td></td>
</tr>
{% for group in groups %}
<tr class="{{ loop.cycle('odd', 'even') }}">
<td class="padding10 first-collumn-wi">
<a href="users.py#groups" title="Edit groups" style="color: #000;">
{{ group.1 }}
<img src="/inc/images/edit.png" alt="Edit" width="15" style="margin-bottom: -3px;" />
</a>
</td>
<td class="third-collumn-wi">{{ group.2 }}</td>
<td></td>
<td></td>
</tr>
{% endfor %}
</table>
<table class="overview-wi">
<tr class="overviewHead">
<td class="padding10 first-collumn-wi">Role</td>
<td class="second-collumn" style="width: 50%">Desctiption</td>
<td></td>
<td></td>
</tr>
{% for role in roles %}
<tr class="{{ loop.cycle('odd', 'even') }}">
<td class="padding10 first-collumn-wi">
{{ role.1 }}
</td>
<td class="third-collumn-wi">{{ role.2 }}</td>
<td></td>
<td></td>
</tr>
{% endfor %}
</table>
{% endif %}
<!-- <table class="overview" > -->
<!-- <tr class="overviewHead"> -->
<!-- <td class="padding10 first-collumn"> -->
<!-- <td class="padding10 first-collumn-wi"> -->
<!-- Server -->
<!-- </td> -->
<!-- <td class="padding10 second-collumn"> -->
<!-- HAproxy info -->
<!-- </td> -->
<!-- <td class="padding10 third-collumn"> -->
<!-- <td class="padding10 third-collumn-wi"> -->
<!-- Server status -->
<!-- </td> -->
<!-- <td class="padding10"> -->

View File

@ -10,6 +10,7 @@ body {
margin: 0;
padding: 0;
overflow: auto;
height:100%
}
h2 {
background: #5D9CEB;
@ -42,7 +43,8 @@ pre {
}
.top-menu {
position: absolute;
height: 110%;
min-height: calc(99vh - 50px);
height: 120%;
width: 207px;
float: left;
margin-bottom: 20px;
@ -74,6 +76,7 @@ pre {
}
.container {
min-height: calc(99vh - 50px);
height: 100%;
max-width: 91%;
min-width: 40%;
background-color: #fff;
@ -83,7 +86,7 @@ pre {
}
.footer {
min-height: 50px;
top: calc(99vh - 50px);
top: calc(99vh - 40px);
right: 0;
left: 0;
max-width: 91%;
@ -93,6 +96,7 @@ pre {
margin-right: 20px;
border-top: 1px solid #ddd;
clear: both;
position: fixed;
}
.footer-div {
display: block;
@ -238,6 +242,7 @@ pre {
font-style: italic;
color: #fff;
margin-left: 30px;
position: fixed;
}
.line {
background-color: #f5faf4;
@ -317,11 +322,23 @@ pre {
width: 100%;
/* margin-top: 1.5em; */
}
.overview-wi {
width: 46%;
min-width: 600px;
max-width: 50%;
border: 1px solid #ddd;
height: 160px;
float: left;
margin: 20px;
}
.overviewHead {
border-radius: 5px;
background-color: #F9FFF8;
font-weight: bold;
}
.overview-wi .overviewHead {
border: 1px solid #ddd;
}
.overview tr{
border-bottom: 1px solid #ddd;
border-radius: 5px;
@ -360,7 +377,7 @@ pre {
.serverUp {
background-color: #5CB85C;
}
.add-button {
.add-button, .add-button-wi {
background-color: #5CB85C;
border-radius: 5px;
color: #fff;
@ -368,9 +385,14 @@ pre {
padding-right: 10px;
padding-left: 10px;
float: right;
margin-right: 10px;
margin-right: 1px;
cursor: pointer;
}
.add-button-wi {
padding-right: 5px;
padding-left: 5px;
font-size: 13px;
}
.serverDown {
background-color: red;
}
@ -388,12 +410,19 @@ pre {
padding-left: 15px;
width: 20%;
}
.first-collumn-wi {
padding-left: 15px;
width: 40%;
}
.second-collumn {
width: 20%;
}
.third-collumn {
width: 45%;
}
.third-collumn-wi {
width: 30%;
}
.ro {
border: none;
}
@ -700,7 +729,7 @@ label {
color: #999;
}
.server-act-links a {
margin-right: 0.36em !important
margin-right: 4.3px !important
}
.server-act-links a:last-child {
margin-right: 0 !important;