new_functions_and_fixes #1
@@ -1,9 +1,42 @@
|
||||
from flask import Blueprint, render_template, request
|
||||
from flask import Blueprint, render_template, request, flash
|
||||
import subprocess
|
||||
from auth.auth_middleware import requires_auth
|
||||
from utils.haproxy_config import update_haproxy_config, is_frontend_exist, count_frontends_and_backends
|
||||
|
||||
main_bp = Blueprint('main', __name__)
|
||||
|
||||
def reload_haproxy():
|
||||
"""Reload HAProxy via supervisorctl"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['/usr/sbin/haproxy', '-f', '/etc/haproxy/haproxy.cfg', '-c'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=10
|
||||
)
|
||||
|
||||
if result.returncode != 0:
|
||||
print(f"[HAPROXY] Config validation failed: {result.stderr}", flush=True)
|
||||
return False, "Config validation failed"
|
||||
|
||||
result = subprocess.run(
|
||||
['/usr/bin/supervisorctl', 'restart', 'haproxy'],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=10
|
||||
)
|
||||
|
||||
if result.returncode == 0:
|
||||
print(f"[HAPROXY] Restarted successfully via supervisorctl", flush=True)
|
||||
return True, "HAProxy restarted successfully"
|
||||
else:
|
||||
print(f"[HAPROXY] Restart failed: {result.stderr}", flush=True)
|
||||
return False, f"Restart failed: {result.stderr}"
|
||||
|
||||
except Exception as e:
|
||||
print(f"[HAPROXY] Error reloading: {e}", flush=True)
|
||||
return False, f"Error: {e}"
|
||||
|
||||
@main_bp.route('/', methods=['GET', 'POST'])
|
||||
@requires_auth
|
||||
def index():
|
||||
@@ -35,7 +68,7 @@ def index():
|
||||
backend_server_ports = request.form.getlist('backend_server_ports[]')
|
||||
backend_server_maxconns = request.form.getlist('backend_server_maxconns[]')
|
||||
|
||||
# Custom ACL (NEW)
|
||||
# Custom ACL
|
||||
add_custom_acl = 'add_custom_acl' in request.form
|
||||
custom_acl_name = request.form.get('custom_acl_name', '').strip() if add_custom_acl else ''
|
||||
custom_acl_type = request.form.get('custom_acl_type', 'path_beg') if add_custom_acl else ''
|
||||
@@ -88,7 +121,6 @@ def index():
|
||||
ip = backend_server_ips[i] if i < len(backend_server_ips) else ''
|
||||
port = backend_server_ports[i] if i < len(backend_server_ports) else ''
|
||||
maxconn = backend_server_maxconns[i] if i < len(backend_server_maxconns) else None
|
||||
|
||||
if ip and port:
|
||||
backend_servers.append((name, ip, port, maxconn))
|
||||
|
||||
@@ -177,14 +209,23 @@ def index():
|
||||
custom_acl_redirect_url=custom_acl_redirect_url
|
||||
)
|
||||
|
||||
# Determine message type
|
||||
message_type = "success" if "successfully" in message else "danger"
|
||||
# ===== RELOAD HAPROXY =====
|
||||
message_type = "success" if "successfully" in message.lower() else "danger"
|
||||
|
||||
if message_type == "success":
|
||||
reload_ok, reload_msg = reload_haproxy()
|
||||
if reload_ok:
|
||||
message = message + " ✓ " + reload_msg
|
||||
message_type = "success"
|
||||
else:
|
||||
message = message + " ⚠ " + reload_msg
|
||||
message_type = "warning"
|
||||
|
||||
return render_template('index.html',
|
||||
message=message,
|
||||
message_type=message_type)
|
||||
|
||||
# GET request - display stats
|
||||
# GET request - display stats
|
||||
frontend_count, backend_count, acl_count, layer7_count, layer4_count = count_frontends_and_backends()
|
||||
|
||||
return render_template('index.html',
|
||||
|
||||
Reference in New Issue
Block a user