221 lines
11 KiB
HTML
221 lines
11 KiB
HTML
{% extends "base.html" %}
|
|
{% set active_page = "index" %}
|
|
{% block title %}HAProxy • Index{% endblock %}
|
|
{% block breadcrumb %}<nav aria-label="breadcrumb" class="mb-3"><ol class="breadcrumb mb-0"><li class="breadcrumb-item"><a href="{{ url_for('main.index') }}"><i class="bi bi-house"></i></a></li><li class="breadcrumb-item active" aria-current="page">Konfiguracja</li></ol></nav>{% endblock %}
|
|
{% block content %}
|
|
<div class="card shadow-sm">
|
|
<div class="card-body">
|
|
<form method="post" action="/" id="fe-be-form" novalidate>
|
|
<h5 class="mb-3"><i class="fas fa-globe me-2"></i>Nowy frontend</h5>
|
|
{% if message %}
|
|
<div class="alert {% if 'already exists' in message %}alert-danger{% else %}alert-success{% endif %} alert-dismissible" role="alert">
|
|
{{ message }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="row g-3">
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="frontend_name">Nazwa</label>
|
|
<input type="text" class="form-control" name="frontend_name" id="frontend_name" required>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="frontend_ip">IP</label>
|
|
<input type="text" class="form-control" name="frontend_ip" id="frontend_ip" required>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label" for="frontend_port">Port</label>
|
|
<input type="number" class="form-control" name="frontend_port" id="frontend_port" required>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-check mt-3">
|
|
<input type="checkbox" class="form-check-input" id="ssl_checkbox" name="ssl_checkbox">
|
|
<label class="form-check-label" for="ssl_checkbox"><i class="fas fa-lock me-2"></i>SSL cert</label>
|
|
</div>
|
|
<div class="row g-3 mt-1 d-none" id="ssl_fields">
|
|
<div class="col-md-6">
|
|
<label class="form-label" for="ssl_cert_path">Ścieżka certyfikatu</label>
|
|
<input type="text" id="ssl_cert_path" class="form-control" name="ssl_cert_path">
|
|
</div>
|
|
<div class="col-md-6 d-flex align-items-end">
|
|
<div class="form-check">
|
|
<input type="checkbox" class="form-check-input" id="ssl_redirect_checkbox" name="ssl_redirect_checkbox">
|
|
<label class="form-check-label" for="ssl_redirect_checkbox"><i class="fas fa-arrow-circle-right me-2"></i>Redirect do HTTPS</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-3 mt-1">
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="lb_method">Metoda LB</label>
|
|
<select class="form-select" name="lb_method" id="lb_method">
|
|
<option value="roundrobin">Round Robin</option>
|
|
<option value="leastconn">Least Connections</option>
|
|
<option value="source">Source</option>
|
|
<option value="wrr">WRR</option>
|
|
<option value="wlc">WLC</option>
|
|
<option value="random">Random</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="protocol">Tryb</label>
|
|
<select class="form-select" name="protocol" id="protocol" required>
|
|
<option value="" disabled selected>--Wybierz--</option>
|
|
<option value="tcp">TCP</option>
|
|
<option value="http">HTTP</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-check mt-3">
|
|
<input type="checkbox" class="form-check-input" name="add_dos" id="add_dos">
|
|
<label class="form-check-label" for="add_dos"><i class="fas fa-shield-alt me-2"></i>DOS protection</label>
|
|
</div>
|
|
<div class="row g-3 mt-1 d-none" id="dos_fields">
|
|
<div class="col-md-6">
|
|
<label class="form-label" for="limit_requests">Limit (np. 20)</label>
|
|
<input type="text" class="form-control" name="limit_requests" id="limit_requests">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label" for="ban_duration">Ban (np. 15s)</label>
|
|
<input type="text" class="form-control" name="ban_duration" id="ban_duration">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-3 mt-2 d-none http-only" id="http_extras">
|
|
<div class="col-12">
|
|
<div class="row g-3">
|
|
<div class="col-md-4">
|
|
<div class="form-check">
|
|
<input type="checkbox" class="form-check-input" id="sql_injection_check" name="sql_injection_check">
|
|
<label class="form-check-label" for="sql_injection_check"><i class="fas fa-shield-alt me-2"></i>SQLi</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-check">
|
|
<input type="checkbox" class="form-check-input" id="xss_check" name="xss_check">
|
|
<label class="form-check-label" for="xss_check"><i class="fas fa-shield-alt me-2"></i>XSS</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-check">
|
|
<input type="checkbox" class="form-check-input" id="remote_uploads_check" name="remote_uploads_check">
|
|
<label class="form-check-label" for="remote_uploads_check"><i class="fas fa-shield-alt me-2"></i>Remote uploads</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-check">
|
|
<input type="checkbox" class="form-check-input" id="webshells_check" name="webshells_check">
|
|
<label class="form-check-label" for="webshells_check"><i class="fas fa-shield-alt me-2"></i>Webshells</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-check">
|
|
<input type="checkbox" class="form-check-input" id="forward_for_check" name="forward_for_check">
|
|
<label class="form-check-label" for="forward_for_check"><i class="fas fa-network-wired me-2"></i>forwardfor</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-check mt-3">
|
|
<input type="checkbox" class="form-check-input" name="add_acl" id="add_acl">
|
|
<label class="form-check-label" for="add_acl"><i class="fas fa-user-lock me-2"></i>ACL dla frontendu</label>
|
|
</div>
|
|
<div class="row g-3 mt-1 d-none" id="acl_fields">
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="acl">ACL</label>
|
|
<input type="text" class="form-control" name="acl" id="acl" placeholder="acl_name">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="acl_action">Akcja</label>
|
|
<input type="text" class="form-control" name="acl_action" id="acl_action" placeholder="hdr(host) -i test.com">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="backend_name_acl">Backend</label>
|
|
<input type="text" class="form-control" name="backend_name_acl" id="backend_name_acl" placeholder="somebackend">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-check mt-3 http-only d-none" id="forbidden_acl_container">
|
|
<input type="checkbox" class="form-check-input" name="add_acl_path" id="add_acl_path">
|
|
<label class="form-check-label" for="add_acl_path"><i class="fas fa-ban me-2"></i>Blokuj wrażliwą ścieżkę</label>
|
|
</div>
|
|
<div class="row g-3 mt-1 d-none" id="forbidden_fields">
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="forbidden_name">Nazwa ACL</label>
|
|
<input type="text" class="form-control" name="forbidden_name" id="forbidden_name">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="allowed_ip">Dozwolone IP</label>
|
|
<input type="text" class="form-control" name="allowed_ip" id="allowed_ip">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="forbidden_path">Ścieżka (np. /admin)</label>
|
|
<input type="text" class="form-control" name="forbidden_path" id="forbidden_path">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-check mt-3 http-only d-none" id="path_based_container">
|
|
<input type="checkbox" class="form-check-input" name="add_path_based" id="add_path_based">
|
|
<label class="form-check-label" for="add_path_based"><i class="fas fa-arrow-circle-right me-2"></i>Path-based redirect</label>
|
|
</div>
|
|
<div class="row g-3 mt-1 d-none" id="base_redirect_fields">
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="redirect_domain_name">Domena docelowa</label>
|
|
<input type="text" class="form-control" name="redirect_domain_name" id="redirect_domain_name" placeholder="test2.com:8888">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="root_redirect">Root path</label>
|
|
<input type="text" class="form-control" name="root_redirect" id="root_redirect" placeholder="/">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="redirect_to">Redirect to</label>
|
|
<input type="text" class="form-control" name="redirect_to" id="redirect_to" placeholder="/test">
|
|
</div>
|
|
</div>
|
|
|
|
<hr class="my-4">
|
|
|
|
<h5 class="mb-3"><i class="fas fa-sitemap me-2"></i>Pula backendów</h5>
|
|
<div class="row g-3">
|
|
<div class="col-md-6">
|
|
<label class="form-label" for="backend_name">Nazwa backendu</label>
|
|
<input type="text" class="form-control" name="backend_name" id="backend_name" required>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="backend_servers_container" class="mt-3">
|
|
<div class="row g-3 backend-server-row">
|
|
<div class="col-md-3">
|
|
<label class="form-label" for="name1">Nazwa serwera</label>
|
|
<input type="text" id="name1" class="form-control" name="backend_server_names[]" placeholder="server1" required>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label" for="ip1">IP</label>
|
|
<input type="text" id="ip1" class="form-control" name="backend_server_ips[]" required>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label" for="port1">Port</label>
|
|
<input type="number" id="port1" class="form-control" name="backend_server_ports[]" required>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label" for="maxconn1">MaxConn</label>
|
|
<input type="number" id="maxconn1" class="form-control" name="backend_server_maxconns[]">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="d-flex gap-2 mt-3">
|
|
<button type="button" class="btn btn-secondary" id="add_backend_btn"><i class="bi bi-plus-lg me-1"></i>Dodaj backend</button>
|
|
<button type="submit" class="btn btn-success" id="success_btn"><i class="bi bi-check2-circle me-1"></i>Zapisz</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
{% block page_js %}
|
|
<script src="{{ url_for('static', filename='js/index.js') }}"></script>
|
|
{% endblock %}
|