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`.
|
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 Mounts Explained**
|
||||||
|
|
||||||
| Volume | Required | Purpose |
|
| Volume | Required | Purpose |
|
||||||
@@ -468,6 +486,10 @@ The **Fail2Ban Callback URL** is a critical setting that determines how Fail2Ban
|
|||||||
|
|
||||||
3. **Port Changes:**
|
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
|
- 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
|
- For custom callback URLs (e.g., reverse proxy or custom IP), you must manually update them to match your setup
|
||||||
|
|
||||||
**Important Notes:**
|
**Important Notes:**
|
||||||
|
|||||||
@@ -1118,9 +1118,14 @@ func shouldAlertForCountry(country string, alertCountries []string) bool {
|
|||||||
|
|
||||||
// IndexHandler serves the HTML page
|
// IndexHandler serves the HTML page
|
||||||
func IndexHandler(c *gin.Context) {
|
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{
|
c.HTML(http.StatusOK, "index.html", gin.H{
|
||||||
"timestamp": time.Now().Format(time.RFC1123),
|
"timestamp": time.Now().Format(time.RFC1123),
|
||||||
"version": time.Now().Unix(),
|
"version": time.Now().Unix(),
|
||||||
|
"disableExternalIP": disableExternalIP,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,10 @@
|
|||||||
|
|
||||||
window.addEventListener('DOMContentLoaded', function() {
|
window.addEventListener('DOMContentLoaded', function() {
|
||||||
showLoading(true);
|
showLoading(true);
|
||||||
|
// Only display external IP if the element exists (not disabled via template variable)
|
||||||
|
if (document.getElementById('external-ip')) {
|
||||||
displayExternalIP();
|
displayExternalIP();
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize header components (clock and status indicator)
|
// Initialize header components (clock and status indicator)
|
||||||
if (typeof initHeader === 'function') {
|
if (typeof initHeader === 'function') {
|
||||||
|
|||||||
@@ -116,10 +116,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col sm:flex-row sm:items-center gap-3">
|
<div class="flex flex-col sm:flex-row sm:items-center gap-3">
|
||||||
<div id="serverSelectorContainer" class="min-w-[220px]"></div>
|
<div id="serverSelectorContainer" class="min-w-[220px]"></div>
|
||||||
|
{{if not .disableExternalIP}}
|
||||||
<div class="text-sm text-gray-500 sm:ml-2">
|
<div class="text-sm text-gray-500 sm:ml-2">
|
||||||
<span data-i18n="dashboard.external_ip">Your ext. IP:</span>
|
<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>
|
<span id="external-ip" class="font-medium text-blue-600 hover:underline cursor-pointer">Loading…</span>
|
||||||
</div>
|
</div>
|
||||||
|
{{end}}
|
||||||
<div class="flex flex-col sm:flex-row gap-3">
|
<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"
|
<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()">
|
onclick="openServerManager()">
|
||||||
|
|||||||
Reference in New Issue
Block a user