Pavel Loginov 2020-08-08 08:26:43 +02:00
parent b610c47e2a
commit 3e3d885a37
8 changed files with 74 additions and 82 deletions

View File

@ -15,7 +15,7 @@ def get_app_dir():
def get_config_var(sec, var):
from configparser import ConfigParser, ExtendedInterpolation
try:
path_config = "/var/www/haproxy-wi/app/haproxy-wi.cfg"
path_config = "haproxy-wi.cfg"
config = ConfigParser(interpolation=ExtendedInterpolation())
config.read(path_config)
except:
@ -956,7 +956,7 @@ def show_backends(serv, **kwargs):
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
if format == 'log':
file = []
@ -1057,6 +1057,7 @@ def out_error(e):
error = e
else:
error = e.args[0]
logging('localhost', error, haproxywi=1, login=1)
print('error: '+error)

View File

@ -1203,7 +1203,7 @@ if form.getvalue('nginx_exp_install'):
if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupupdate'):
server = form.getvalue('server')
serv = form.getvalue('server')
rpath = form.getvalue('rpath')
time = form.getvalue('time')
type = form.getvalue('type')
@ -1223,8 +1223,8 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup
deljob = ''
else:
deljob = ''
if sql.check_exists_backup(server):
print('info: Backup job for %s already exists' % server)
if sql.check_exists_backup(serv):
print('warning: Backup job for %s already exists' % serv)
sys.exit()
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)
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+
" 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])
@ -1248,32 +1248,32 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup
try:
l = l.split(':')[1]
l = l.split('"')[1]
print(l+"<br>")
print('error: '+l+"<br>")
break
except:
print(output)
print('error: ' + output)
break
else:
if deljob == '' and update == '':
if sql.insert_backup_job(server, 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
if not deljob and not update:
if sql.insert_backup_job(serv, rserver, rpath, type, time, cred, description):
#import http.cookies
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
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('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:
print('error: Cannot add job into DB<br>')
print('error: Cannot add job into DB')
elif deljob:
sql.delete_backups(deljob)
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:
sql.update_backup(server, rserver, rpath, type, time, cred, description, update)
sql.update_backup(serv, rserver, rpath, type, time, cred, description, update)
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'):
@ -1676,6 +1676,10 @@ if form.getvalue('serverdel') is not None:
server = sql.select_servers(id=serverdel)
for s in server:
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):
sql.delete_waf_server(serverdel)
print("Ok")

View File

@ -756,12 +756,14 @@ def update_ssh(id, name, enable, group, username, password):
def insert_backup_job(server, rserver, rpath, type, time, cred, description):
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)
try:
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:
cur.execute(sql)
con.commit()
except sqltool.Error as e:
funct.out_error(e)
print('error: '+str(e))
con.rollback()
return False
else:

View File

@ -443,30 +443,9 @@
</div>
<div id="ajax-update"></div>
</div>
<div id="backup">
<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 %}
{% 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>
{% include 'include/admin_backup.html' %}
</div>
</div>
{% include 'include/admins_dialogs.html' %}

View File

@ -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">
<span id="backup-server-{{b.0}}">{{ b.1 }}</span>
</td>
@ -6,7 +21,6 @@
{{ input('backup-rserver-'+b.0|string(), value=b.2, size='14') }}
</td>
<td>
{{ input('backup-rpath-'+b.0|string(), value=b.3) }}
</td>
<td>
@ -14,9 +28,8 @@
{{ select('backup-type-'+b.0|string(), values=values, selected=b.4, required='required', class='force_close') }}
</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') }}
</td>
<td>
<select id="backup-credentials-{{b.0}}" required>
@ -44,5 +57,15 @@
</td>
<td>
<a class="delete" onclick="confirmDeleteBackup({{b.0}})" title="Delete backup {{b.1}}" style="cursor: pointer;"></a>
</td>
</tr>
</td>
</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>

View File

@ -202,7 +202,9 @@
<select id="backup-credentials" required>
<option disabled selected>Choose credentials</option>
{% for ssh in sshs %}
<option value="{{ssh.0}}">{{ssh.1}}</option>
{% if ssh.2 == 1 %}
<option value="{{ssh.0}}">{{ssh.1}}</option>
{% endif %}
{% endfor %}
</select>
</td>

View File

@ -399,34 +399,9 @@
</table>
<div id="ajaxmon"></div>
</div>
<div id="backup">
<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 %}
{% 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>
{% include 'include/admin_backup.html' %}
</div>
</div>

View File

@ -1062,13 +1062,16 @@ function addBackup(dialog_id) {
data = data.replace(/\s+/g,' ');
if (data.indexOf('error:') != '-1') {
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);
$( "select" ).selectmenu();
} else if (data.indexOf('info') != '-1') {
} else if (data.indexOf('info: ') != '-1') {
toastr.clear();
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,' ');
if(data == "Ok ") {
$("#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);
} else if (data.indexOf('warning: ') != '-1') {
toastr.clear();
toastr.warning(data);
}
}
} );