mirror of
https://github.com/swissmakers/fail2ban-ui.git
synced 2026-04-11 13:47:05 +02:00
External IP Lookup Disable Feature implemented with environment variable: DISABLE_EXTERNAL_IP_LOOKUP
This commit is contained in:
22
README.md
22
README.md
@@ -329,6 +329,24 @@ podman run -d \
|
||||
|
||||
Access the web interface at `http://localhost:3080`.
|
||||
|
||||
**Disable External IP Lookup** (Privacy)
|
||||
|
||||
By default, the web UI displays your external IP address by querying external services. For privacy reasons, you can disable this feature using the `DISABLE_EXTERNAL_IP_LOOKUP` environment variable:
|
||||
|
||||
```bash
|
||||
podman run -d \
|
||||
--name fail2ban-ui \
|
||||
--network=host \
|
||||
-e DISABLE_EXTERNAL_IP_LOOKUP=true \
|
||||
-v /opt/podman-fail2ban-ui:/config:Z \
|
||||
-v /etc/fail2ban:/etc/fail2ban:Z \
|
||||
-v /var/log:/var/log:ro \
|
||||
-v /var/run/fail2ban:/var/run/fail2ban \
|
||||
swissmakers/fail2ban-ui:latest
|
||||
```
|
||||
|
||||
When set, the "Your ext. IP:" display will be completely hidden and no external IP lookup requests will be made.
|
||||
|
||||
**Volume Mounts Explained**
|
||||
|
||||
| Volume | Required | Purpose |
|
||||
@@ -468,6 +486,10 @@ The **Fail2Ban Callback URL** is a critical setting that determines how Fail2Ban
|
||||
|
||||
3. **Port Changes:**
|
||||
- When you change the Fail2Ban UI port (via `PORT` environment variable or UI settings), the callback URL automatically updates if it's using the default localhost pattern
|
||||
|
||||
**Privacy Settings**
|
||||
|
||||
- **External IP Lookup**: By default, the web UI displays your external IP address. To disable this feature for privacy reasons, set the `DISABLE_EXTERNAL_IP_LOOKUP` environment variable to `true` or `1`. This will hide the "Your ext. IP:" display and prevent any external IP lookup requests.
|
||||
- For custom callback URLs (e.g., reverse proxy or custom IP), you must manually update them to match your setup
|
||||
|
||||
**Important Notes:**
|
||||
|
||||
@@ -1118,9 +1118,14 @@ func shouldAlertForCountry(country string, alertCountries []string) bool {
|
||||
|
||||
// IndexHandler serves the HTML page
|
||||
func IndexHandler(c *gin.Context) {
|
||||
// Check if external IP lookup is disabled via environment variable
|
||||
// Default is enabled (false means enabled, true means disabled)
|
||||
disableExternalIP := os.Getenv("DISABLE_EXTERNAL_IP_LOOKUP") == "true" || os.Getenv("DISABLE_EXTERNAL_IP_LOOKUP") == "1"
|
||||
|
||||
c.HTML(http.StatusOK, "index.html", gin.H{
|
||||
"timestamp": time.Now().Format(time.RFC1123),
|
||||
"version": time.Now().Unix(),
|
||||
"disableExternalIP": disableExternalIP,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
showLoading(true);
|
||||
// Only display external IP if the element exists (not disabled via template variable)
|
||||
if (document.getElementById('external-ip')) {
|
||||
displayExternalIP();
|
||||
}
|
||||
|
||||
// Initialize header components (clock and status indicator)
|
||||
if (typeof initHeader === 'function') {
|
||||
|
||||
@@ -116,10 +116,12 @@
|
||||
</div>
|
||||
<div class="flex flex-col sm:flex-row sm:items-center gap-3">
|
||||
<div id="serverSelectorContainer" class="min-w-[220px]"></div>
|
||||
{{if not .disableExternalIP}}
|
||||
<div class="text-sm text-gray-500 sm:ml-2">
|
||||
<span data-i18n="dashboard.external_ip">Your ext. IP:</span>
|
||||
<span id="external-ip" class="font-medium text-blue-600 hover:underline cursor-pointer">Loading…</span>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="flex flex-col sm:flex-row gap-3">
|
||||
<button class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600 transition-colors flex items-center gap-2"
|
||||
onclick="openServerManager()">
|
||||
|
||||
Reference in New Issue
Block a user