mirror of
https://github.com/smittix/intercept.git
synced 2026-04-30 01:29:59 -07:00
Introduced Flask-Limiter to restrict login attempts to 5 per minute per IP, enhancing security against brute-force attacks. Updated error handling to display a user-friendly message when the rate limit is exceeded. Minor improvements to the login page, including clearer error messages and display of the user's IP address.
64 lines
3.3 KiB
HTML
64 lines
3.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>iNTERCEPT // Restricted Access</title>
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/index.css') }}" />
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/login.css') }}" />
|
|
</head>
|
|
<body>
|
|
<div class="landing-overlay">
|
|
<div class="landing-scanline"></div>
|
|
|
|
<div class="landing-content">
|
|
<div class="landing-logo">
|
|
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M15 30 Q5 50, 15 70" stroke="#00d4ff" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.5" class="signal-wave signal-wave-1"/>
|
|
<path d="M22 35 Q14 50, 22 65" stroke="#00d4ff" stroke-width="2.5" fill="none" stroke-linecap="round" opacity="0.7" class="signal-wave signal-wave-2"/>
|
|
<path d="M29 40 Q23 50, 29 60" stroke="#00d4ff" stroke-width="2" fill="none" stroke-linecap="round" class="signal-wave signal-wave-3"/>
|
|
<path d="M85 30 Q95 50, 85 70" stroke="#00d4ff" stroke-width="3" fill="none" stroke-linecap="round" opacity="0.5" class="signal-wave signal-wave-1"/>
|
|
<path d="M78 35 Q86 50, 78 65" stroke="#00d4ff" stroke-width="2.5" fill="none" stroke-linecap="round" opacity="0.7" class="signal-wave signal-wave-2"/>
|
|
<path d="M71 40 Q77 50, 71 60" stroke="#00d4ff" stroke-width="2" fill="none" stroke-linecap="round" class="signal-wave signal-wave-3"/>
|
|
<circle cx="50" cy="22" r="6" fill="#00ff88" class="logo-dot" />
|
|
<rect x="44" y="35" width="12" height="45" rx="2" fill="#00d4ff" />
|
|
<rect x="38" y="35" width="24" height="4" rx="1" fill="#00d4ff" />
|
|
<rect x="38" y="76" width="24" height="4" rx="1" fill="#00d4ff" />
|
|
</svg>
|
|
</div>
|
|
|
|
<h1 class="landing-title">SECURE LOGIN</h1>
|
|
<p class="landing-tagline">// Restricted Terminal Access</p>
|
|
|
|
<div class="login-box">
|
|
<div class="flash-container">
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
{% if messages %}
|
|
{% for category, message in messages %}
|
|
<div class="flash-error">
|
|
<span class="error-prefix">SIGNAL_ERR:</span>
|
|
<span class="error-message">{{ message|upper }}</span>
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endwith %}
|
|
</div>
|
|
|
|
<form method="POST">
|
|
<input type="text" name="username" placeholder="OPERATOR ID" class="form-input" required autofocus autocomplete="off" />
|
|
<input type="password" name="password" placeholder="ENCRYPTION KEY" class="form-input" required />
|
|
|
|
<button type="submit" class="landing-enter-btn">
|
|
<span class="btn-text">INITIALIZE SESSION</span>
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
<p class="landing-version">SYSTEM AUTH v{{ version }}</p>
|
|
<p class="landing-tagline" style="font-size: 0.6rem; opacity: 0.4; margin-top: 10px;">
|
|
Unauthorized access is logged. IP: {{ request.remote_addr }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html> |