new options
This commit is contained in:
@@ -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 auth.auth_middleware import requires_auth
|
||||||
from utils.haproxy_config import update_haproxy_config, is_frontend_exist, count_frontends_and_backends
|
from utils.haproxy_config import update_haproxy_config, is_frontend_exist, count_frontends_and_backends
|
||||||
|
|
||||||
main_bp = Blueprint('main', __name__)
|
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'])
|
@main_bp.route('/', methods=['GET', 'POST'])
|
||||||
@requires_auth
|
@requires_auth
|
||||||
def index():
|
def index():
|
||||||
@@ -35,7 +68,7 @@ def index():
|
|||||||
backend_server_ports = request.form.getlist('backend_server_ports[]')
|
backend_server_ports = request.form.getlist('backend_server_ports[]')
|
||||||
backend_server_maxconns = request.form.getlist('backend_server_maxconns[]')
|
backend_server_maxconns = request.form.getlist('backend_server_maxconns[]')
|
||||||
|
|
||||||
# Custom ACL (NEW)
|
# Custom ACL
|
||||||
add_custom_acl = 'add_custom_acl' in request.form
|
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_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 ''
|
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 ''
|
ip = backend_server_ips[i] if i < len(backend_server_ips) else ''
|
||||||
port = backend_server_ports[i] if i < len(backend_server_ports) 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
|
maxconn = backend_server_maxconns[i] if i < len(backend_server_maxconns) else None
|
||||||
|
|
||||||
if ip and port:
|
if ip and port:
|
||||||
backend_servers.append((name, ip, port, maxconn))
|
backend_servers.append((name, ip, port, maxconn))
|
||||||
|
|
||||||
@@ -177,14 +209,23 @@ def index():
|
|||||||
custom_acl_redirect_url=custom_acl_redirect_url
|
custom_acl_redirect_url=custom_acl_redirect_url
|
||||||
)
|
)
|
||||||
|
|
||||||
# Determine message type
|
# ===== RELOAD HAPROXY =====
|
||||||
message_type = "success" if "successfully" in message else "danger"
|
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',
|
return render_template('index.html',
|
||||||
message=message,
|
message=message,
|
||||||
message_type=message_type)
|
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()
|
frontend_count, backend_count, acl_count, layer7_count, layer4_count = count_frontends_and_backends()
|
||||||
|
|
||||||
return render_template('index.html',
|
return render_template('index.html',
|
||||||
|
|||||||
Reference in New Issue
Block a user