mirror of https://github.com/Aidaho12/haproxy-wi
parent
b610c47e2a
commit
3e3d885a37
|
@ -15,7 +15,7 @@ def get_app_dir():
|
||||||
def get_config_var(sec, var):
|
def get_config_var(sec, var):
|
||||||
from configparser import ConfigParser, ExtendedInterpolation
|
from configparser import ConfigParser, ExtendedInterpolation
|
||||||
try:
|
try:
|
||||||
path_config = "/var/www/haproxy-wi/app/haproxy-wi.cfg"
|
path_config = "haproxy-wi.cfg"
|
||||||
config = ConfigParser(interpolation=ExtendedInterpolation())
|
config = ConfigParser(interpolation=ExtendedInterpolation())
|
||||||
config.read(path_config)
|
config.read(path_config)
|
||||||
except:
|
except:
|
||||||
|
@ -956,7 +956,7 @@ def show_backends(serv, **kwargs):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def get_files(dir = get_config_var('configs', 'haproxy_save_configs_dir'), format = 'cfg', **kwargs):
|
def get_files(dir=get_config_var('configs', 'haproxy_save_configs_dir'), format='cfg', **kwargs):
|
||||||
import glob
|
import glob
|
||||||
if format == 'log':
|
if format == 'log':
|
||||||
file = []
|
file = []
|
||||||
|
@ -1057,6 +1057,7 @@ def out_error(e):
|
||||||
error = e
|
error = e
|
||||||
else:
|
else:
|
||||||
error = e.args[0]
|
error = e.args[0]
|
||||||
|
logging('localhost', error, haproxywi=1, login=1)
|
||||||
print('error: '+error)
|
print('error: '+error)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1203,7 +1203,7 @@ if form.getvalue('nginx_exp_install'):
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupupdate'):
|
if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupupdate'):
|
||||||
server = form.getvalue('server')
|
serv = form.getvalue('server')
|
||||||
rpath = form.getvalue('rpath')
|
rpath = form.getvalue('rpath')
|
||||||
time = form.getvalue('time')
|
time = form.getvalue('time')
|
||||||
type = form.getvalue('type')
|
type = form.getvalue('type')
|
||||||
|
@ -1223,8 +1223,8 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup
|
||||||
deljob = ''
|
deljob = ''
|
||||||
else:
|
else:
|
||||||
deljob = ''
|
deljob = ''
|
||||||
if sql.check_exists_backup(server):
|
if sql.check_exists_backup(serv):
|
||||||
print('info: Backup job for %s already exists' % server)
|
print('warning: Backup job for %s already exists' % serv)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
servers = sql.select_servers(server=serv)
|
servers = sql.select_servers(server=serv)
|
||||||
|
@ -1233,9 +1233,9 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup
|
||||||
|
|
||||||
os.system("cp scripts/%s ." % script)
|
os.system("cp scripts/%s ." % script)
|
||||||
|
|
||||||
commands = [ "chmod +x "+script +" && ./"+script +" HOST="+rserver+" SERVER="+server+" TYPE="+type+
|
commands = ["chmod +x "+script +" && ./"+script +" HOST="+rserver+" SERVER="+serv+" TYPE="+type+
|
||||||
" SSH_PORT="+ssh_port+
|
" SSH_PORT="+ssh_port+
|
||||||
" TIME="+time+" RPATH="+rpath+" DELJOB="+deljob+" USER="+str(ssh_user_name)+" KEY="+str(ssh_key_name) ]
|
" TIME="+time+" RPATH="+rpath+" DELJOB="+deljob+" USER="+str(ssh_user_name)+" KEY="+str(ssh_key_name)]
|
||||||
|
|
||||||
output, error = funct.subprocess_execute(commands[0])
|
output, error = funct.subprocess_execute(commands[0])
|
||||||
|
|
||||||
|
@ -1248,32 +1248,32 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup
|
||||||
try:
|
try:
|
||||||
l = l.split(':')[1]
|
l = l.split(':')[1]
|
||||||
l = l.split('"')[1]
|
l = l.split('"')[1]
|
||||||
print(l+"<br>")
|
print('error: '+l+"<br>")
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
print(output)
|
print('error: ' + output)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
if deljob == '' and update == '':
|
if not deljob and not update:
|
||||||
if sql.insert_backup_job(server, rserver, rpath, type, time, cred, description):
|
if sql.insert_backup_job(serv, rserver, rpath, type, time, cred, description):
|
||||||
funct.logging('backup ', ' has created a new backup job for server '+server , haproxywi=1, login=1)
|
#import http.cookies
|
||||||
import http.cookies
|
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
|
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
|
||||||
template = env.get_template('new_backup.html')
|
template = env.get_template('new_backup.html')
|
||||||
template = template.render(backups=sql.select_backups(server=server, rserver=rserver), sshs=sql.select_ssh())
|
template = template.render(backups=sql.select_backups(server=serv, rserver=rserver), sshs=sql.select_ssh())
|
||||||
print(template)
|
print(template)
|
||||||
print('success: Backup job has created<br>')
|
print('success: Backup job has created')
|
||||||
|
funct.logging('backup ', ' has created a new backup job for server '+serv , haproxywi=1, login=1)
|
||||||
else:
|
else:
|
||||||
print('error: Cannot add job into DB<br>')
|
print('error: Cannot add job into DB')
|
||||||
elif deljob:
|
elif deljob:
|
||||||
sql.delete_backups(deljob)
|
sql.delete_backups(deljob)
|
||||||
print('Ok')
|
print('Ok')
|
||||||
funct.logging('backup ', ' has deleted a backup job for server '+server, haproxywi=1, login=1)
|
funct.logging('backup ', ' has deleted a backup job for server '+serv, haproxywi=1, login=1)
|
||||||
elif update:
|
elif update:
|
||||||
sql.update_backup(server, rserver, rpath, type, time, cred, description, update)
|
sql.update_backup(serv, rserver, rpath, type, time, cred, description, update)
|
||||||
print('Ok')
|
print('Ok')
|
||||||
funct.logging('backup ', ' has updated a backup job for server '+server, haproxywi=1, login=1)
|
funct.logging('backup ', ' has updated a backup job for server '+serv, haproxywi=1, login=1)
|
||||||
|
|
||||||
|
|
||||||
if form.getvalue('install_nginx'):
|
if form.getvalue('install_nginx'):
|
||||||
|
@ -1676,6 +1676,10 @@ if form.getvalue('serverdel') is not None:
|
||||||
server = sql.select_servers(id=serverdel)
|
server = sql.select_servers(id=serverdel)
|
||||||
for s in server:
|
for s in server:
|
||||||
hostname = s[1]
|
hostname = s[1]
|
||||||
|
ip = s[2]
|
||||||
|
if sql.check_exists_backup(ip):
|
||||||
|
print('warning: Delete the backup first ')
|
||||||
|
sys.exit()
|
||||||
if sql.delete_server(serverdel):
|
if sql.delete_server(serverdel):
|
||||||
sql.delete_waf_server(serverdel)
|
sql.delete_waf_server(serverdel)
|
||||||
print("Ok")
|
print("Ok")
|
||||||
|
|
|
@ -756,12 +756,14 @@ def update_ssh(id, name, enable, group, username, password):
|
||||||
|
|
||||||
def insert_backup_job(server, rserver, rpath, type, time, cred, description):
|
def insert_backup_job(server, rserver, rpath, type, time, cred, description):
|
||||||
con, cur = get_cur()
|
con, cur = get_cur()
|
||||||
sql = """insert into backups(server, rhost, rpath, type, time, cred, description) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s') """ % (server, rserver, rpath, type, time, cred, description)
|
sql = """insert into backups(server, rhost, rpath, `type`, `time`, `cred`, `description`)
|
||||||
|
values ('%s', '%s', '%s', '%s', '%s', '%s', '%s') """ % (server, rserver, rpath, type, time, cred, description)
|
||||||
try:
|
try:
|
||||||
cur.execute(sql)
|
cur.execute(sql)
|
||||||
con.commit()
|
con.commit()
|
||||||
except sqltool.Error as e:
|
except sqltool.Error as e:
|
||||||
funct.out_error(e)
|
funct.out_error(e)
|
||||||
|
print('error: '+str(e))
|
||||||
con.rollback()
|
con.rollback()
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -445,28 +445,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="backup">
|
<div id="backup">
|
||||||
<table class="overview" id="ajax-backup-table">
|
{% include 'include/admin_backup.html' %}
|
||||||
<tr class="overviewHead">
|
|
||||||
<td class="padding10 first-collumn">Servers</td>
|
|
||||||
<td class="padding10">Remote server</td>
|
|
||||||
<td class="padding10">Remote folder</td>
|
|
||||||
<td class="padding10">Backup type</td>
|
|
||||||
<td class="padding10">Period time</td>
|
|
||||||
<td class="padding10">Credentials</td>
|
|
||||||
<td class="padding10">Description</td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
{% for b in backups %}
|
|
||||||
{% include 'include/admin_backup.html' %}
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
<br /><span class="add-button" title="Add a new backup job" id="add-backup-button">+ Add a new backup job</span>
|
|
||||||
<br /><br />
|
|
||||||
<div id="ajax-backup"></div>
|
|
||||||
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
|
||||||
You can read the description of all parameters <a href="https://haproxy-wi.org/description.py?description=backup" title="Backup description" target="_blank">here</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% include 'include/admins_dialogs.html' %}
|
{% include 'include/admins_dialogs.html' %}
|
||||||
|
|
|
@ -1,4 +1,19 @@
|
||||||
<tr id="backup-table-{{b.0}}">
|
<table class="overview" id="ajax-backup-table">
|
||||||
|
<tr class="overviewHead">
|
||||||
|
<td class="padding10 first-collumn">Servers</td>
|
||||||
|
<td class="padding10">Remote server</td>
|
||||||
|
<td class="padding10">Remote folder</td>
|
||||||
|
<td class="padding10">Backup type</td>
|
||||||
|
<td class="padding10">Period time</td>
|
||||||
|
<td class="padding10">Credentials</td>
|
||||||
|
<td class="padding10">Description</td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
{% for b in backups %}
|
||||||
|
{% for s in servers %}
|
||||||
|
{% if b.1 in s.2 %}
|
||||||
|
<tr id="backup-table-{{b.0}}">
|
||||||
<td class="padding10 first-collumn">
|
<td class="padding10 first-collumn">
|
||||||
<span id="backup-server-{{b.0}}">{{ b.1 }}</span>
|
<span id="backup-server-{{b.0}}">{{ b.1 }}</span>
|
||||||
</td>
|
</td>
|
||||||
|
@ -6,7 +21,6 @@
|
||||||
{{ input('backup-rserver-'+b.0|string(), value=b.2, size='14') }}
|
{{ input('backup-rserver-'+b.0|string(), value=b.2, size='14') }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
{{ input('backup-rpath-'+b.0|string(), value=b.3) }}
|
{{ input('backup-rpath-'+b.0|string(), value=b.3) }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -14,9 +28,8 @@
|
||||||
{{ select('backup-type-'+b.0|string(), values=values, selected=b.4, required='required', class='force_close') }}
|
{{ select('backup-type-'+b.0|string(), values=values, selected=b.4, required='required', class='force_close') }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% set values = {'hourly':'hourly','daily':'daily','weekly':'weekly', 'monthly':'monthly'} %}
|
{% set values = {'hourly':'hourly','daily':'daily','weekly':'weekly', 'monthly':'monthly'} %}
|
||||||
{{ select('backup-time-'+b.0|string(), values=values, selected=b.5, required='required', class='force_close') }}
|
{{ select('backup-time-'+b.0|string(), values=values, selected=b.5, required='required', class='force_close') }}
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select id="backup-credentials-{{b.0}}" required>
|
<select id="backup-credentials-{{b.0}}" required>
|
||||||
|
@ -45,4 +58,14 @@
|
||||||
<td>
|
<td>
|
||||||
<a class="delete" onclick="confirmDeleteBackup({{b.0}})" title="Delete backup {{b.1}}" style="cursor: pointer;"></a>
|
<a class="delete" onclick="confirmDeleteBackup({{b.0}})" title="Delete backup {{b.1}}" style="cursor: pointer;"></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<br /><span class="add-button" title="Add a new backup job" id="add-backup-button">+ Add a new backup job</span>
|
||||||
|
<br /><br />
|
||||||
|
<div id="ajax-backup"></div>
|
||||||
|
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||||
|
You can read the description of all parameters <a href="https://haproxy-wi.org/description.py?description=backup" title="Backup description" target="_blank">here</a>
|
||||||
|
</div>
|
|
@ -202,7 +202,9 @@
|
||||||
<select id="backup-credentials" required>
|
<select id="backup-credentials" required>
|
||||||
<option disabled selected>Choose credentials</option>
|
<option disabled selected>Choose credentials</option>
|
||||||
{% for ssh in sshs %}
|
{% for ssh in sshs %}
|
||||||
<option value="{{ssh.0}}">{{ssh.1}}</option>
|
{% if ssh.2 == 1 %}
|
||||||
|
<option value="{{ssh.0}}">{{ssh.1}}</option>
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -401,32 +401,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="backup">
|
<div id="backup">
|
||||||
<table class="overview" id="ajax-backup-table">
|
{% include 'include/admin_backup.html' %}
|
||||||
<tr class="overviewHead">
|
|
||||||
<td class="padding10 first-collumn">Servers</td>
|
|
||||||
<td class="padding10">Remote server</td>
|
|
||||||
<td class="padding10">Remote folder</td>
|
|
||||||
<td class="padding10">Backup type</td>
|
|
||||||
<td class="padding10">Period time</td>
|
|
||||||
<td class="padding10">Credentials</td>
|
|
||||||
<td class="padding10">Description</td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
{% for b in backups %}
|
|
||||||
{% for s in servers %}
|
|
||||||
{% if b.1 in s.2 %}
|
|
||||||
{% include 'include/admin_backup.html' %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
<br /><span class="add-button" title="Add a new backup job" id="add-backup-button">+ Add a new backup job</span>
|
|
||||||
<br /><br />
|
|
||||||
<div id="ajax-backup"></div>
|
|
||||||
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
|
||||||
You can read the description of all parameters <a href="https://haproxy-wi.org/description.py?description=backup" title="Backup description" target="_blank">here</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
12
inc/users.js
12
inc/users.js
|
@ -1062,12 +1062,15 @@ function addBackup(dialog_id) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g,' ');
|
||||||
if (data.indexOf('error:') != '-1') {
|
if (data.indexOf('error:') != '-1') {
|
||||||
toastr.error(data);
|
toastr.error(data);
|
||||||
} else if (data.indexOf('success') != '-1') {
|
} else if (data.indexOf('success: ') != '-1') {
|
||||||
common_ajax_action_after_success(dialog_id, 'newbackup', 'ajax-backup-table', data);
|
common_ajax_action_after_success(dialog_id, 'newbackup', 'ajax-backup-table', data);
|
||||||
$( "select" ).selectmenu();
|
$( "select" ).selectmenu();
|
||||||
} else if (data.indexOf('info') != '-1') {
|
} else if (data.indexOf('info: ') != '-1') {
|
||||||
toastr.clear();
|
toastr.clear();
|
||||||
toastr.info(data);
|
toastr.info(data);
|
||||||
|
} else if (data.indexOf('warning: ') != '-1') {
|
||||||
|
toastr.clear();
|
||||||
|
toastr.warning(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
@ -1342,8 +1345,11 @@ function removeServer(id) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g,' ');
|
||||||
if(data == "Ok ") {
|
if(data == "Ok ") {
|
||||||
$("#server-"+id).remove();
|
$("#server-"+id).remove();
|
||||||
} else if (data.indexOf('error:') != '-1' || data.indexOf('unique') != '-1') {
|
} else if (data.indexOf('error: ') != '-1' || data.indexOf('unique') != '-1') {
|
||||||
toastr.error(data);
|
toastr.error(data);
|
||||||
|
} else if (data.indexOf('warning: ') != '-1') {
|
||||||
|
toastr.clear();
|
||||||
|
toastr.warning(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
Loading…
Reference in New Issue