mirror of https://github.com/Aidaho12/haproxy-wi
				
				
				
			
							parent
							
								
									6e72b709d7
								
							
						
					
					
						commit
						3779c047b3
					
				| 
						 | 
				
			
			@ -143,7 +143,7 @@ After update old config saved at /tmp/ folder. Compare new and old config, if in
 | 
			
		|||
# Update DB
 | 
			
		||||
```
 | 
			
		||||
$ cd /var/www/haproxy-wi/app
 | 
			
		||||
$ ./update_db.py
 | 
			
		||||
$ ./create_db.py
 | 
			
		||||
```
 | 
			
		||||
# Troubleshooting
 | 
			
		||||
If you have error:
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +162,7 @@ Internal Server Error
 | 
			
		|||
Do this:
 | 
			
		||||
```
 | 
			
		||||
$ cd /var/www/haproxy-wi/app
 | 
			
		||||
$ ./update_db.py
 | 
			
		||||
$ ./create_db.py
 | 
			
		||||
```
 | 
			
		||||
and check executeble py files
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -238,7 +238,7 @@ def update_db_v_3_2_3(**kwargs):
 | 
			
		|||
	except sqltool.Error as e:
 | 
			
		||||
		if kwargs.get('silent') != 1:
 | 
			
		||||
			if e.args[0] == 'duplicate column name: port' or e == " 1060 (42S21): Duplicate column name 'port' ":
 | 
			
		||||
				print('DB was update<br />')
 | 
			
		||||
				print('Updating... go to version 3.2.8')
 | 
			
		||||
			else:
 | 
			
		||||
				print("An error occurred:", e)
 | 
			
		||||
		return False
 | 
			
		||||
| 
						 | 
				
			
			@ -247,18 +247,41 @@ def update_db_v_3_2_3(**kwargs):
 | 
			
		|||
		return True
 | 
			
		||||
	cur.close() 
 | 
			
		||||
	con.close()
 | 
			
		||||
	
 | 
			
		||||
def update_db_v_3_2_8(**kwargs):
 | 
			
		||||
	con, cur = get_cur()
 | 
			
		||||
	sql = """
 | 
			
		||||
	ALTER TABLE `servers` ADD COLUMN desc varchar(64);
 | 
			
		||||
	"""
 | 
			
		||||
	try:    
 | 
			
		||||
		cur.execute(sql)
 | 
			
		||||
		con.commit()
 | 
			
		||||
	except sqltool.Error as e:
 | 
			
		||||
		if kwargs.get('silent') != 1:
 | 
			
		||||
			if e.args[0] == 'duplicate column name: desc' or e == " 1060 (42S21): Duplicate column name 'desc' ":
 | 
			
		||||
				print('DB was update<br />')
 | 
			
		||||
			else:
 | 
			
		||||
				print("An error occurred:", e)
 | 
			
		||||
		return False
 | 
			
		||||
	else:
 | 
			
		||||
		print("DB was update to 3.2.8<br />")
 | 
			
		||||
		return True
 | 
			
		||||
	cur.close() 
 | 
			
		||||
	con.close()
 | 
			
		||||
			
 | 
			
		||||
def update_all():	
 | 
			
		||||
	update_db_v_31()
 | 
			
		||||
	update_db_v_3_2()
 | 
			
		||||
	update_db_v_3_21()
 | 
			
		||||
	update_db_v_3_2_3()
 | 
			
		||||
	update_db_v_3_2_8()
 | 
			
		||||
	
 | 
			
		||||
def update_all_silent():
 | 
			
		||||
	update_db_v_31(silent=1)
 | 
			
		||||
	update_db_v_3_2(silent=1)
 | 
			
		||||
	update_db_v_3_21(silent=1)
 | 
			
		||||
	update_db_v_3_2_3(silent=1)
 | 
			
		||||
	update_db_v_3_2_8(silent=1)
 | 
			
		||||
	
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
	create_table()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ def get_overviewWaf(url):
 | 
			
		|||
	ioloop.run_until_complete(get_runner_overviewWaf(url))
 | 
			
		||||
	ioloop.close()
 | 
			
		||||
 | 
			
		||||
async def async_get_overviewServers(serv1, serv2):
 | 
			
		||||
async def async_get_overviewServers(serv1, serv2, desc):
 | 
			
		||||
	commands =  [ "top -u haproxy -b -n 1" ]
 | 
			
		||||
	cmd = 'echo "show info" |nc %s %s |grep -e "Ver\|CurrConns\|SessRate\|Maxco\|MB\|Uptime:"' % (serv2, haproxy_sock_port)
 | 
			
		||||
	out = funct.subprocess_execute(cmd)
 | 
			
		||||
| 
						 | 
				
			
			@ -73,13 +73,13 @@ async def async_get_overviewServers(serv1, serv2):
 | 
			
		|||
				out1 += "<br />"
 | 
			
		||||
		else:
 | 
			
		||||
			out1 = "Can\'t connect to HAproxy"
 | 
			
		||||
	server_status = (serv1,serv2, out1, funct.ssh_command(serv2, commands),funct.show_backends(serv2, ret=1))
 | 
			
		||||
	server_status = (serv1,serv2, out1, funct.ssh_command(serv2, commands),funct.show_backends(serv2, ret=1), desc)
 | 
			
		||||
	return server_status
 | 
			
		||||
	
 | 
			
		||||
async def get_runner_overviewServers():
 | 
			
		||||
	template = env.get_template('overviewServers.html')	
 | 
			
		||||
	
 | 
			
		||||
	futures = [async_get_overviewServers(server[1], server[2]) for server in listhap]
 | 
			
		||||
	futures = [async_get_overviewServers(server[1], server[2], server[11]) for server in listhap]
 | 
			
		||||
	for i, future in enumerate(asyncio.as_completed(futures)):
 | 
			
		||||
		result = await future
 | 
			
		||||
		servers.append(result)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								app/sql.py
								
								
								
								
							
							
						
						
									
										21
									
								
								app/sql.py
								
								
								
								
							| 
						 | 
				
			
			@ -116,11 +116,11 @@ def update_group(name, descript, id):
 | 
			
		|||
	cur.close()    
 | 
			
		||||
	con.close()
 | 
			
		||||
 | 
			
		||||
def add_server(hostname, ip, group, typeip, enable, master, cred, alert, metrics, port):
 | 
			
		||||
def add_server(hostname, ip, group, typeip, enable, master, cred, alert, metrics, port, desc):
 | 
			
		||||
	con, cur = create_db.get_cur()
 | 
			
		||||
	sql = """ INSERT INTO servers (hostname, ip, groups, type_ip, enable, master, cred, alert, metrics, port) 
 | 
			
		||||
			VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')
 | 
			
		||||
		""" % (hostname, ip, group, typeip, enable, master, cred, alert, metrics, port)
 | 
			
		||||
	sql = """ INSERT INTO servers (hostname, ip, groups, type_ip, enable, master, cred, alert, metrics, port, desc) 
 | 
			
		||||
			VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')
 | 
			
		||||
		""" % (hostname, ip, group, typeip, enable, master, cred, alert, metrics, port, desc)
 | 
			
		||||
	try:    
 | 
			
		||||
		cur.execute(sql)
 | 
			
		||||
		con.commit()
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +146,7 @@ def delete_server(id):
 | 
			
		|||
	cur.close()    
 | 
			
		||||
	con.close() 		
 | 
			
		||||
 | 
			
		||||
def update_server(hostname, ip, group, typeip, enable, master, id, cred, alert, metrics, port):
 | 
			
		||||
def update_server(hostname, ip, group, typeip, enable, master, id, cred, alert, metrics, port, desc):
 | 
			
		||||
	con, cur = create_db.get_cur()
 | 
			
		||||
	sql = """ update servers set 
 | 
			
		||||
			hostname = '%s',
 | 
			
		||||
| 
						 | 
				
			
			@ -158,8 +158,9 @@ def update_server(hostname, ip, group, typeip, enable, master, id, cred, alert,
 | 
			
		|||
			cred = '%s',
 | 
			
		||||
			alert = '%s',
 | 
			
		||||
			metrics = '%s',
 | 
			
		||||
			port = '%s'
 | 
			
		||||
			where id = '%s'""" % (hostname, ip, group, typeip, enable, master, cred, alert, metrics, port, id)
 | 
			
		||||
			port = '%s',
 | 
			
		||||
			desc = '%s'
 | 
			
		||||
			where id = '%s'""" % (hostname, ip, group, typeip, enable, master, cred, alert, metrics, port, desc, id)
 | 
			
		||||
	try:    
 | 
			
		||||
		cur.execute(sql)
 | 
			
		||||
		con.commit()
 | 
			
		||||
| 
						 | 
				
			
			@ -1083,11 +1084,12 @@ if form.getvalue('newserver') is not None:
 | 
			
		|||
	page = form.getvalue('page')
 | 
			
		||||
	page = page.split("#")[0]
 | 
			
		||||
	port = form.getvalue('newport')	
 | 
			
		||||
	desc = form.getvalue('desc')	
 | 
			
		||||
	print('Content-type: text/html\n')
 | 
			
		||||
	if ip is None or group is None or cred is None or port is None:		
 | 
			
		||||
		print(error_mess)
 | 
			
		||||
	else:	
 | 
			
		||||
		if add_server(hostname, ip, group, typeip, enable, master, cred, alert, metrics, port):
 | 
			
		||||
		if add_server(hostname, ip, group, typeip, enable, master, cred, alert, metrics, port, desc):
 | 
			
		||||
			show_update_server(ip, page)
 | 
			
		||||
		
 | 
			
		||||
if form.getvalue('serverdel') is not None:
 | 
			
		||||
| 
						 | 
				
			
			@ -1133,11 +1135,12 @@ if form.getvalue('updateserver') is not None:
 | 
			
		|||
	alert = form.getvalue('alert_en')	
 | 
			
		||||
	metrics = form.getvalue('metrics')	
 | 
			
		||||
	port = form.getvalue('port')	
 | 
			
		||||
	desc = form.getvalue('desc')	
 | 
			
		||||
	print('Content-type: text/html\n')
 | 
			
		||||
	if name is None or ip is None or port is None:
 | 
			
		||||
		print(error_mess)
 | 
			
		||||
	else:		
 | 
			
		||||
		update_server(name, ip, group, typeip, enable, master, id, cred, alert, metrics, port)
 | 
			
		||||
		update_server(name, ip, group, typeip, enable, master, id, cred, alert, metrics, port, desc)
 | 
			
		||||
			
 | 
			
		||||
if form.getvalue('updatessh'):
 | 
			
		||||
	id = form.getvalue('id')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@
 | 
			
		|||
						{% endfor %}
 | 
			
		||||
					</select>
 | 
			
		||||
				</td>
 | 
			
		||||
				<td><a class="delete" onclick="confirmDeleteUser({{user.0}})"  style="cursor: pointer;"></a></td> 
 | 
			
		||||
				<td><a class="delete" onclick="confirmDeleteUser({{user.0}})" title="Delete user {{user.1}}" style="cursor: pointer;"></a></td> 
 | 
			
		||||
			</tr>
 | 
			
		||||
		{% endfor %}
 | 
			
		||||
		</table>
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +129,7 @@
 | 
			
		|||
					<input type="text" id="descript-{{ group.0 }}" value="{{ group.2 }}" class="form-control" size="100">
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<a class="delete" onclick="confirmDeleteGroup({{ group.0 }})"  style="cursor: pointer;"></a>
 | 
			
		||||
					<a class="delete" onclick="confirmDeleteGroup({{ group.0 }})" title="Delete group {{group.1}}" style="cursor: pointer;"></a>
 | 
			
		||||
				</td>
 | 
			
		||||
			{% endif %}
 | 
			
		||||
			</tr>
 | 
			
		||||
| 
						 | 
				
			
			@ -169,6 +169,7 @@
 | 
			
		|||
				<td><span title="Enable save and show metrics">Metrics(?)</span></td>
 | 
			
		||||
				<td><span title="Actions with master config will automatically apply on slave">Slave for (?)</span></td>
 | 
			
		||||
				<td>Credentials</td>
 | 
			
		||||
				<td>Desciption</td>
 | 
			
		||||
				<td></td>
 | 
			
		||||
			</tr>
 | 
			
		||||
						
 | 
			
		||||
| 
						 | 
				
			
			@ -178,7 +179,7 @@
 | 
			
		|||
					<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">
 | 
			
		||||
					<input type="text" id="ip-{{server.0}}" value="{{server.2}}" size="14" class="form-control">
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<input type="text" id="port-{{server.0}}" value="{{server.10}}" size="1" class="form-control">
 | 
			
		||||
| 
						 | 
				
			
			@ -248,7 +249,14 @@
 | 
			
		|||
					</select>
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<a class="delete" onclick="confirmDeleteServer({{server.0}})"  style="cursor: pointer;"></a>
 | 
			
		||||
					{% if server.11 %}
 | 
			
		||||
						<input type="text" id="desc-{{server.0}}" value="{{server.11}}" size="30" class="form-control">
 | 
			
		||||
					{% else %}
 | 
			
		||||
						<input type="text" id="desc-{{server.0}}" value="" size="30" class="form-control">
 | 
			
		||||
					{% endif %}
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<a class="delete" onclick="confirmDeleteServer({{server.0}})" title="Delete server {{server.1}}" style="cursor: pointer;"></a>
 | 
			
		||||
				</td> 
 | 
			
		||||
			</tr>
 | 
			
		||||
		{% endfor %}
 | 
			
		||||
| 
						 | 
				
			
			@ -267,6 +275,7 @@
 | 
			
		|||
				<td><span title="Enable save and show metrics">Metrics(?)</span></td>
 | 
			
		||||
				<td title="Actions with master config will automatically apply on slave">Slave for</td>
 | 
			
		||||
				<td>Credentials</td>
 | 
			
		||||
				<td>Desciption</td>
 | 
			
		||||
				<td></td>
 | 
			
		||||
			</tr>
 | 
			
		||||
			<tr>
 | 
			
		||||
| 
						 | 
				
			
			@ -274,7 +283,7 @@
 | 
			
		|||
					<input type="text" name="new-server-add" id="new-server-add" class="form-control">
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<input type="text" name="new-ip" id="new-ip" class="form-control">
 | 
			
		||||
					<input type="text" name="new-ip" id="new-ip" size="14" class="form-control">
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<input type="text" name="new-port" id="new-port" size=1 class="form-control" value="22">
 | 
			
		||||
| 
						 | 
				
			
			@ -315,6 +324,9 @@
 | 
			
		|||
						{% endfor %}
 | 
			
		||||
					</select>
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<input type="text" id="desc" size="30" class="form-control">
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<a class="add-admin"  id="add-server" style="cursor: pointer;"></a>
 | 
			
		||||
				</td>
 | 
			
		||||
| 
						 | 
				
			
			@ -390,7 +402,7 @@
 | 
			
		|||
						<br>
 | 
			
		||||
					</td>
 | 
			
		||||
					<td>
 | 
			
		||||
						<a class="delete" onclick="confirmDeleteSsh({{ssh.0}})"  style="cursor: pointer;"></a>
 | 
			
		||||
						<a class="delete" onclick="confirmDeleteSsh({{ssh.0}})" title="Delete SSH credentials {{ssh.1}}" style="cursor: pointer;"></a>
 | 
			
		||||
					</td>
 | 
			
		||||
				</tr>
 | 
			
		||||
			{% endfor %}
 | 
			
		||||
| 
						 | 
				
			
			@ -489,7 +501,7 @@
 | 
			
		|||
						</select>
 | 
			
		||||
					</td>
 | 
			
		||||
					<td>
 | 
			
		||||
						<a class="delete" onclick="confirmDeleteTelegram({{telegram.0}})"  style="cursor: pointer;"></a>
 | 
			
		||||
						<a class="delete" onclick="confirmDeleteTelegram({{telegram.0}})" title="Delete channel {{telegram.2}}" style="cursor: pointer;"></a>
 | 
			
		||||
					</td>
 | 
			
		||||
				</tr>
 | 
			
		||||
			{% endfor %}
 | 
			
		||||
| 
						 | 
				
			
			@ -528,4 +540,12 @@
 | 
			
		|||
		<div id="ajax-telegram"></div>
 | 
			
		||||
	</div>
 | 
			
		||||
</div>
 | 
			
		||||
<style>
 | 
			
		||||
.ui-selectmenu-button.ui-button {
 | 
			
		||||
    width: 12em;
 | 
			
		||||
}
 | 
			
		||||
.first-collumn {
 | 
			
		||||
    width: 10%;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +78,10 @@
 | 
			
		|||
					</select>
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<a class="delete" onclick="removeServer({{server.0}})"  style="cursor: pointer;"></a>
 | 
			
		||||
					<input type="text" id="desc-{{server.0}}" value="{{server.11}}" size="30" class="form-control">
 | 
			
		||||
				</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<a class="delete" onclick="removeServer({{server.0}})" title="Delete server {{server.1}}" style="cursor: pointer;"></a>
 | 
			
		||||
				</td> 
 | 
			
		||||
			</tr>
 | 
			
		||||
		{% endfor %}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,11 @@
 | 
			
		|||
	<tr>
 | 
			
		||||
		<td class="overviewTr first-collumn">
 | 
			
		||||
			<a name="{{ service.0 }}"></a>
 | 
			
		||||
			<h3 title="IP  {{ service.1 }}"> {{ service.0 }} :</h3>
 | 
			
		||||
			{% if service.5 != "None" %}
 | 
			
		||||
				<h3 title="IP  {{ service.1 }} {{ service.5 }}"> {{ service.0 }} :</h3>
 | 
			
		||||
			{% else %}
 | 
			
		||||
				<h3 title="IP  {{ service.1 }}"> {{ service.0 }} :</h3>
 | 
			
		||||
			{% endif %}
 | 
			
		||||
		</td>
 | 
			
		||||
		<td class="overviewTd" style="padding-top: 10px;">
 | 
			
		||||
			<pre style="font-size: 12px;">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,7 +101,7 @@
 | 
			
		|||
					</ul>
 | 
			
		||||
				</nav>
 | 
			
		||||
				<div class="copyright-menu">
 | 
			
		||||
					HAproxy-WI v3.2.7
 | 
			
		||||
					HAproxy-WI v3.2.8
 | 
			
		||||
					<br>
 | 
			
		||||
					<a href="https://www.patreon.com/haproxy_wi" title="Donate" target="_blank" style="color: #fff; margin-left: 30px; color: red;" class="patreon">  Patreon</a>
 | 
			
		||||
				</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 318 KiB After Width: | Height: | Size: 350 KiB  | 
| 
						 | 
				
			
			@ -85,11 +85,9 @@ function autoRefreshStyle(autoRefresh) {
 | 
			
		|||
	$('.auto-refresh-resume').css('margin-left', "-25px");		
 | 
			
		||||
	$('.auto-refresh img').remove();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function setRefreshInterval(interval) {
 | 
			
		||||
	if (interval == "0") {
 | 
			
		||||
		Cookies.remove('auto-refresh');
 | 
			
		||||
		Cookies.remove('auto-refresh-pause');
 | 
			
		||||
		pauseAutoRefresh();
 | 
			
		||||
		$('.auto-refresh').prepend('<img src=/image/pic/update.png alt="restart" class="icon">');
 | 
			
		||||
		$('.auto-refresh').css('margin-top', '-3px');
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -220,7 +220,8 @@ $( function() {
 | 
			
		|||
				cred: $('#credentials').val(),
 | 
			
		||||
				alert_en: alert_en,
 | 
			
		||||
				metrics: metrics,
 | 
			
		||||
				page: cur_url[0]
 | 
			
		||||
				page: cur_url[0],
 | 
			
		||||
				desc: $('#desc').val()
 | 
			
		||||
			},
 | 
			
		||||
			type: "GET",
 | 
			
		||||
			success: function( data ) {
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +236,6 @@ $( function() {
 | 
			
		|||
					$('.alert-danger').remove();
 | 
			
		||||
					$("#ajax-servers").append(data);
 | 
			
		||||
					$(".newserver").addClass( "update", 1000, callbackServer );		
 | 
			
		||||
					//$.getScript(url);	
 | 
			
		||||
					$( "input[type=submit], button" ).button();
 | 
			
		||||
					$( "input[type=checkbox]" ).checkboxradio();
 | 
			
		||||
					$( "select" ).selectmenu();
 | 
			
		||||
| 
						 | 
				
			
			@ -734,7 +734,8 @@ function updateServer(id) {
 | 
			
		|||
			cred: $('#credentials-'+id+' option:selected').val(),
 | 
			
		||||
			id: id,
 | 
			
		||||
			metrics: metrics,
 | 
			
		||||
			alert_en: alert_en
 | 
			
		||||
			alert_en: alert_en,
 | 
			
		||||
			desc: $('#desc-'+id).val()
 | 
			
		||||
		},
 | 
			
		||||
		type: "GET",
 | 
			
		||||
		success: function( data ) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue