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):
 | 
			
		||||
	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)
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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: 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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' %}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								inc/users.js
								
								
								
								
							
							
						
						
									
										14
									
								
								inc/users.js
								
								
								
								
							| 
						 | 
				
			
			@ -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);
 | 
			
		||||
			}
 | 
			
		||||
		}					
 | 
			
		||||
	} );	
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue