- health.go: treat any HTTP response as reachable (only connection errors fail) - main.go: CheckRedirect in handleReturn to preserve 302 + Set-Cookie - middleware.go: Content-Length for POST/PUT/PATCH bodies, CheckRedirect in forwardToWAF and forwardToReturn - web/: replace stats panel with 3-state WAF indicator (DISABLED/ENABLED/FAILED) - README: update defaults, architecture, health check docs - .agents.md: update verified status for Wallarm integration
67 lines
2.1 KiB
HTML
67 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="zoraxy.csrf.Token" content="{{.csrfToken}}">
|
|
<title>Firewall</title>
|
|
<link rel="stylesheet" href="./style.css">
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>Firewall</h1>
|
|
<p>Inline WAF proxy with health checks and fail-open bypass.</p>
|
|
</header>
|
|
|
|
<main>
|
|
<section class="config-panel">
|
|
<h2>Configuration</h2>
|
|
|
|
<div class="field">
|
|
<label class="toggle">
|
|
<input type="checkbox" id="fw-enabled">
|
|
<span class="slider"></span>
|
|
</label>
|
|
<span id="enabled-label">Firewall Disabled</span>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="waf-url">WAF URL</label>
|
|
<input type="text" id="waf-url" placeholder="http://127.0.0.1:8080">
|
|
<small>The firewall application URL (e.g. Wallarm, ModSecurity, Coraza).</small>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="return-port">Return Port</label>
|
|
<input type="number" id="return-port" placeholder="8080" min="1" max="65535">
|
|
<small>Traffic returns to Zoraxy on this port for routing to the backend.</small>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="health-interval">Health Check Interval (s)</label>
|
|
<input type="number" id="health-interval" placeholder="5" min="1" max="60">
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="timeout-ms">Proxy Timeout (ms)</label>
|
|
<input type="number" id="timeout-ms" placeholder="10000" min="100" max="30000">
|
|
</div>
|
|
|
|
<button id="save-btn" class="btn btn-primary">Save Configuration</button>
|
|
<span id="save-status"></span>
|
|
</section>
|
|
|
|
<section class="status-panel">
|
|
<h2>WAF Status</h2>
|
|
<div class="status-indicator" id="waf-indicator">
|
|
<span class="status-dot"></span>
|
|
<span class="status-text">--</span>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<script src="/script/jquery-3.6.0.min.js"></script>
|
|
<script src="/script/utils.js"></script>
|
|
<script src="./app.js"></script>
|
|
</body>
|
|
</html>
|