Pavel Loginov 2020-11-18 10:45:34 +06:00
parent 769df0f6c4
commit 676430c8a0
8 changed files with 62 additions and 15 deletions

View File

@ -733,7 +733,7 @@ def upload_and_restart(serv, cfg, **kwargs):
commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl reload "+haproxy_service_name+""] commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl reload "+haproxy_service_name+""]
else: else:
commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl restart "+haproxy_service_name+""] commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl restart "+haproxy_service_name+""]
if sql.get_setting('firewall_enable') == "1": if sql.return_firewall(serv):
commands[0] += open_port_firewalld(cfg, serv=serv) commands[0] += open_port_firewalld(cfg, serv=serv)
error += str(upload(serv, tmp_file, cfg, dir='fullpath')) error += str(upload(serv, tmp_file, cfg, dir='fullpath'))

View File

@ -1648,6 +1648,7 @@ if form.getvalue('newserver') is not None:
typeip = form.getvalue('typeip') typeip = form.getvalue('typeip')
haproxy = form.getvalue('haproxy') haproxy = form.getvalue('haproxy')
nginx = form.getvalue('nginx') nginx = form.getvalue('nginx')
firewall = form.getvalue('firewall')
enable = form.getvalue('enable') enable = form.getvalue('enable')
master = form.getvalue('slave') master = form.getvalue('slave')
cred = form.getvalue('cred') cred = form.getvalue('cred')
@ -1656,7 +1657,7 @@ if form.getvalue('newserver') is not None:
port = form.getvalue('newport') port = form.getvalue('newport')
desc = form.getvalue('desc') desc = form.getvalue('desc')
if sql.add_server(hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx): if sql.add_server(hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx, firewall):
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
@ -1688,6 +1689,7 @@ if form.getvalue('updateserver') is not None:
typeip = form.getvalue('typeip') typeip = form.getvalue('typeip')
haproxy = form.getvalue('haproxy') haproxy = form.getvalue('haproxy')
nginx = form.getvalue('nginx') nginx = form.getvalue('nginx')
firewall = form.getvalue('firewall')
enable = form.getvalue('enable') enable = form.getvalue('enable')
master = form.getvalue('slave') master = form.getvalue('slave')
serv_id = form.getvalue('id') serv_id = form.getvalue('id')
@ -1698,7 +1700,7 @@ if form.getvalue('updateserver') is not None:
if name is None or port is None: if name is None or port is None:
print(error_mess) print(error_mess)
else: else:
sql.update_server(name, group, typeip, enable, master, serv_id, cred, port, desc, haproxy, nginx) sql.update_server(name, group, typeip, enable, master, serv_id, cred, port, desc, haproxy, nginx, firewall)
funct.logging('the server ' + name, ' has updated ', haproxywi=1, login=1) funct.logging('the server ' + name, ' has updated ', haproxywi=1, login=1)
if form.getvalue('serverdel') is not None: if form.getvalue('serverdel') is not None:

View File

@ -291,11 +291,11 @@ def update_group(name, descript, id):
return True return True
def add_server(hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx): def add_server(hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx, firewall):
con, cur = get_cur() con, cur = get_cur()
sql = """ INSERT INTO servers (hostname, ip, groups, type_ip, enable, master, cred, port, `desc`, haproxy, nginx) sql = """ INSERT INTO servers (hostname, ip, groups, type_ip, enable, master, cred, port, `desc`, haproxy, nginx, firewall_enable)
VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')
""" % (hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx) """ % (hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx, firewall)
try: try:
cur.execute(sql) cur.execute(sql)
con.commit() con.commit()
@ -336,6 +336,7 @@ def update_hapwi_server(server_id, alert, metrics, active, service_name):
metrics = '%s', metrics = '%s',
'%s' = '%s' '%s' = '%s'
where id = '%s'""" % (alert, metrics, updated_service, active, server_id) where id = '%s'""" % (alert, metrics, updated_service, active, server_id)
try: try:
cur.execute(sql) cur.execute(sql)
con.commit() con.commit()
@ -346,7 +347,7 @@ def update_hapwi_server(server_id, alert, metrics, active, service_name):
con.close() con.close()
def update_server(hostname, group, typeip, enable, master, id, cred, port, desc, haproxy, nginx): def update_server(hostname, group, typeip, enable, master, id, cred, port, desc, haproxy, nginx, firewall):
con, cur = get_cur() con, cur = get_cur()
sql = """ update servers set sql = """ update servers set
hostname = '%s', hostname = '%s',
@ -358,8 +359,9 @@ def update_server(hostname, group, typeip, enable, master, id, cred, port, desc,
port = '%s', port = '%s',
`desc` = '%s', `desc` = '%s',
haproxy = '%s', haproxy = '%s',
nginx = '%s' nginx = '%s',
where id = '%s'""" % (hostname, group, typeip, enable, master, cred, port, desc, haproxy, nginx, id) firewall_enable = '%s'
where id = '%s'""" % (hostname, group, typeip, enable, master, cred, port, desc, haproxy, nginx, firewall, id)
try: try:
cur.execute(sql) cur.execute(sql)
con.commit() con.commit()
@ -2304,6 +2306,24 @@ def is_cloud():
return cloud_uuid return cloud_uuid
def return_firewall(serv):
con, cur = get_cur()
sql = """ select firewall_enable from servers where ip = '%s' """ % serv
try:
cur.execute(sql)
except sqltool.Error as e:
cur.close()
con.close()
return False
else:
for server in cur.fetchall():
firewall = server[0]
cur.close()
con.close()
return True if firewall == '1' else False
form = funct.form form = funct.form
error_mess = 'error: All fields must be completed' error_mess = 'error: All fields must be completed'

View File

@ -16,7 +16,7 @@
Port Port
<span class="need-field">*</span> <span class="need-field">*</span>
</td> </td>
<td>{{ input('new-port', value='22', size='1') }}</td> <td>{{ input('new-port', value='22', size='3') }}</td>
</tr> </tr>
<tr> <tr>
<td class="padding20">Enable</td> <td class="padding20">Enable</td>
@ -34,6 +34,10 @@
<td class="padding20" title="Is there Nginx?">Nginx</td> <td class="padding20" title="Is there Nginx?">Nginx</td>
<td>{{ checkbox('nginx') }}</td> <td>{{ checkbox('nginx') }}</td>
</tr> </tr>
<tr>
<td class="padding20" title="Is there Firewall?">Firewall</td>
<td>{{ checkbox('firewall') }}</td>
</tr>
<tr> <tr>
<td class="padding20" title="Actions with master config will automatically apply on slave">Slave for</td> <td class="padding20" title="Actions with master config will automatically apply on slave">Slave for</td>
<td> <td>

View File

@ -15,6 +15,9 @@
</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: 5%">
<span title="If the server has a firewall enabled, enable this option">Firewall</span>
</th>
<th class="slave-field" style="width: 10%"> <th class="slave-field" style="width: 10%">
<span title="Actions with the master config will automatically apply on the slave">Slave for</span> <span title="Actions with the master config will automatically apply on the slave">Slave for</span>
</th> </th>
@ -88,6 +91,14 @@
{{ checkbox(id) }} {{ checkbox(id) }}
{% endif %} {% endif %}
</td> </td>
<td class="checkbox">
{% set id = 'firewall-' + server.0|string() %}
{% if server.18 == 1 %}
{{ checkbox(id, checked='checked') }}
{% else %}
{{ checkbox(id) }}
{% endif %}
</td>
<td> <td>
<select id="slavefor-{{server.0}}"> <select id="slavefor-{{server.0}}">
<option value="0" selected>Not slave</option> <option value="0" selected>Not slave</option>

View File

@ -47,7 +47,7 @@ try:
cmd = "sudo openvpn3 configs-list |grep -E 'ovpn|(^|[^0-9])[0-9]{4}($|[^0-9])' |grep -v net|awk -F\" \" '{print $1}'|awk 'ORS=NR%2?\" \":\"\\n\"'" cmd = "sudo openvpn3 configs-list |grep -E 'ovpn|(^|[^0-9])[0-9]{4}($|[^0-9])' |grep -v net|awk -F\" \" '{print $1}'|awk 'ORS=NR%2?\" \":\"\\n\"'"
openvpn_configs, stderr = funct.subprocess_execute(cmd) openvpn_configs, stderr = funct.subprocess_execute(cmd)
cmd = "sudo openvpn3 sessions-list|grep -E 'Config|Status'|awk -F\":\" '{print $2}'|awk 'ORS=NR%2?\" \":\"\\n\"'| sed 's/^ //g'" cmd = "sudo openvpn3 sessions-list|grep -E 'Config|Status'|awk -F\":\" '{print $2}'|awk 'ORS=NR%2?\" \":\"\\n\"'| sed 's/^ //g'"
# cmd = 'echo "client.ovpn Connection, Client connected"' cmd = 'echo "client.ovpn Connection, Client connected"'
openvpn_sess, stderr = funct.subprocess_execute(cmd) openvpn_sess, stderr = funct.subprocess_execute(cmd)
openvpn = stdout[0] openvpn = stdout[0]

View File

@ -405,6 +405,7 @@ function showLog() {
} }
function showMap() { function showMap() {
$("#ajax").empty(); $("#ajax").empty();
$('.alert').remove();
try { try {
myCodeMirror.toTextArea(); myCodeMirror.toTextArea();
} catch (e) { } catch (e) {
@ -414,7 +415,6 @@ function showMap() {
$("h4").remove(); $("h4").remove();
$("#ajax-compare").empty(); $("#ajax-compare").empty();
$("#config").empty(); $("#config").empty();
$(".alert-info").empty();
var unique = $.now(); var unique = $.now();
$.ajax( { $.ajax( {
url: "options.py", url: "options.py",
@ -458,6 +458,7 @@ function showCompare() {
} }
function showCompareConfigs() { function showCompareConfigs() {
$("#ajax").empty(); $("#ajax").empty();
$('.alert').remove();
try { try {
myCodeMirror.toTextArea(); myCodeMirror.toTextArea();
} catch (e) { } catch (e) {
@ -465,7 +466,6 @@ function showCompareConfigs() {
} }
$("#saveconfig").remove(); $("#saveconfig").remove();
$("h4").remove(); $("h4").remove();
$(".alert-info").empty();
$.ajax( { $.ajax( {
url: "options.py", url: "options.py",
data: { data: {
@ -492,6 +492,7 @@ function showCompareConfigs() {
function showConfig() { function showConfig() {
var service = $('#service').val(); var service = $('#service').val();
$("#ajax").empty(); $("#ajax").empty();
$('.alert').remove();
try { try {
myCodeMirror.toTextArea(); myCodeMirror.toTextArea();
} catch (e) { } catch (e) {
@ -501,7 +502,6 @@ function showConfig() {
$("h4").remove(); $("h4").remove();
$("#ajax-compare").empty(); $("#ajax-compare").empty();
$("#config").empty(); $("#config").empty();
$(".alert").empty();
$.ajax( { $.ajax( {
url: "options.py", url: "options.py",
data: { data: {

View File

@ -860,6 +860,7 @@ function addServer(dialog_id) {
var enable = 0; var enable = 0;
var haproxy = 0; var haproxy = 0;
var nginx = 0; var nginx = 0;
var firewall = 0;
if ($('#typeip').is(':checked')) { if ($('#typeip').is(':checked')) {
typeip = '1'; typeip = '1';
} }
@ -872,6 +873,9 @@ function addServer(dialog_id) {
if ($('#nginx').is(':checked')) { if ($('#nginx').is(':checked')) {
nginx = '1'; nginx = '1';
} }
if ($('#firewall').is(':checked')) {
firewall = '1';
}
allFields = $( [] ).add( $('#new-server-add') ).add( $('#new-ip') ).add( $('#new-port') ) allFields = $( [] ).add( $('#new-server-add') ).add( $('#new-ip') ).add( $('#new-port') )
allFields.removeClass( "ui-state-error" ); allFields.removeClass( "ui-state-error" );
valid = valid && checkLength( $('#new-server-add'), "Hostname", 1 ); valid = valid && checkLength( $('#new-server-add'), "Hostname", 1 );
@ -889,6 +893,7 @@ function addServer(dialog_id) {
typeip: typeip, typeip: typeip,
haproxy: haproxy, haproxy: haproxy,
nginx: nginx, nginx: nginx,
firewall: firewall,
enable: enable, enable: enable,
slave: $('#slavefor' ).val(), slave: $('#slavefor' ).val(),
cred: cred, cred: cred,
@ -1476,6 +1481,7 @@ function updateServer(id) {
var enable = 0; var enable = 0;
var haproxy = 0; var haproxy = 0;
var nginx = 0; var nginx = 0;
var firewall = 0;
if ($('#typeip-'+id).is(':checked')) { if ($('#typeip-'+id).is(':checked')) {
typeip = '1'; typeip = '1';
} }
@ -1488,6 +1494,9 @@ function updateServer(id) {
if ($('#enable-'+id).is(':checked')) { if ($('#enable-'+id).is(':checked')) {
enable = '1'; enable = '1';
} }
if ($('#firewall-'+id).is(':checked')) {
firewall = '1';
}
var servergroup = $('#servergroup-'+id+' option:selected' ).val(); var servergroup = $('#servergroup-'+id+' option:selected' ).val();
if (cur_url[0].split('#')[0] == "servers.py") { if (cur_url[0].split('#')[0] == "servers.py") {
servergroup = $('#new-server-group-add').val(); servergroup = $('#new-server-group-add').val();
@ -1501,6 +1510,7 @@ function updateServer(id) {
typeip: typeip, typeip: typeip,
haproxy: haproxy, haproxy: haproxy,
nginx: nginx, nginx: nginx,
firewall: firewall,
enable: enable, enable: enable,
slave: $('#slavefor-'+id+' option:selected' ).val(), slave: $('#slavefor-'+id+' option:selected' ).val(),
cred: $('#credentials-'+id+' option:selected').val(), cred: $('#credentials-'+id+' option:selected').val(),