diff --git a/haproxy_manager.py b/haproxy_manager.py index 2564789..9b204c7 100644 --- a/haproxy_manager.py +++ b/haproxy_manager.py @@ -150,6 +150,31 @@ def regenerate_conf(): 'status': 'failed', 'error': str(e) }), 500 + +@app.route('api/reload', methods=['POST']) +def reload_haproxy(): + if is_process_running('haproxy'): + subprocess.run(['echo', '"reload"', '|', 'socat', 'stdio', '/tmp/haproxy-cli']) + else: + try: + result = subprocess.run( + ['haproxy', '-W', '-S', '/tmp/haproxy-cli,level,admin', '-f', HAPROXY_CONFIG_PATH], + check=True, + capture_output=True, + text=True + ) + if result.returncode == 0: + print("HAProxy started successfully") + return jsonify({'status': 'success'}), 200 + else: + print(f"HAProxy start command returned: {result.stdout}") + print(f"Error output: {result.stderr}") + except subprocess.CalledProcessError as e: + print(f"Failed to start HAProxy: {e.stdout}\n{e.stderr}") + return jsonify({ + 'status': 'failed', + 'error': f"Failed to start HAProxy: {e.stdout}\n{e.stderr}" + }), 500 @app.route('/api/domain', methods=['POST']) def add_domain(): diff --git a/templates/hap_backend.tpl b/templates/hap_backend.tpl index e559ee2..367e566 100644 --- a/templates/hap_backend.tpl +++ b/templates/hap_backend.tpl @@ -1,7 +1,6 @@ backend {{ name }}-backend option forwardfor - option httpchk http-request add-header X-CLIENT-IP %[src] {% if ssl_enabled %}http-request set-header X-Forwarded-Proto https if { ssl_fc }{% endif %} {% for server in servers %}server {{ server.server_name }} {{ server.server_address }}:{{ server.server_port }} {{ server.server_options }}{% endfor %} diff --git a/templates/hap_backend_http_check.tpl b/templates/hap_backend_http_check.tpl new file mode 100644 index 0000000..e559ee2 --- /dev/null +++ b/templates/hap_backend_http_check.tpl @@ -0,0 +1,8 @@ + +backend {{ name }}-backend + option forwardfor + option httpchk + http-request add-header X-CLIENT-IP %[src] + {% if ssl_enabled %}http-request set-header X-Forwarded-Proto https if { ssl_fc }{% endif %} + {% for server in servers %}server {{ server.server_name }} {{ server.server_address }}:{{ server.server_port }} {{ server.server_options }}{% endfor %} + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 3062587..f533472 100644 --- a/templates/index.html +++ b/templates/index.html @@ -105,6 +105,7 @@