From 4e17fe04d0d5632bdd4a64e2fc9ce28554c4ab8a Mon Sep 17 00:00:00 2001
From: ReturnFI <151555003+ReturnFI@users.noreply.github.com>
Date: Fri, 7 Nov 2025 07:38:14 +0000
Subject: [PATCH] feat(webui): Add IP limiter clean button to settings page
---
core/scripts/webpanel/assets/js/settings.js | 17 +++++++++++++++++
core/scripts/webpanel/templates/settings.html | 2 ++
2 files changed, 19 insertions(+)
diff --git a/core/scripts/webpanel/assets/js/settings.js b/core/scripts/webpanel/assets/js/settings.js
index b818fa9..7fc3780 100644
--- a/core/scripts/webpanel/assets/js/settings.js
+++ b/core/scripts/webpanel/assets/js/settings.js
@@ -27,6 +27,7 @@ $(document).ready(function () {
restore: contentSection.dataset.restoreUrl,
startIpLimit: contentSection.dataset.startIpLimitUrl,
stopIpLimit: contentSection.dataset.stopIpLimitUrl,
+ cleanIpLimit: contentSection.dataset.cleanIpLimitUrl,
configIpLimit: contentSection.dataset.configIpLimitUrl,
statusWarp: contentSection.dataset.statusWarpUrl,
installWarp: contentSection.dataset.installWarpUrl,
@@ -493,6 +494,7 @@ $(document).ready(function () {
if (isRunning) {
$("#ip_limit_start").hide();
$("#ip_limit_stop").show();
+ $("#ip_limit_clean").show();
$configTabLi.show();
fetchIpLimitConfig();
if ($ipLimitServiceForm.find(".alert-info").length === 0) {
@@ -501,6 +503,7 @@ $(document).ready(function () {
} else {
$("#ip_limit_start").show();
$("#ip_limit_stop").hide();
+ $("#ip_limit_clean").hide();
$configTabLi.hide();
if ($('#ip-limit-config-tab').hasClass('active')) {
$('#ip-limit-service-tab').tab('show');
@@ -876,6 +879,19 @@ $(document).ready(function () {
});
}
+ function cleanIPLimit() {
+ confirmAction("clean the IP Limit database and unblock all IPs", function () {
+ sendRequest(
+ API_URLS.cleanIpLimit,
+ "POST",
+ null,
+ "IP Limit database cleaned successfully!",
+ "#ip_limit_clean",
+ true
+ );
+ });
+ }
+
function configIPLimit() {
if (!validateForm('ip_limit_config_form')) return;
const blockDuration = $("#block_duration").val();
@@ -987,6 +1003,7 @@ $(document).ready(function () {
$("#upload_backup").on("click", uploadBackup);
$("#ip_limit_start").on("click", startIPLimit);
$("#ip_limit_stop").on("click", stopIPLimit);
+ $("#ip_limit_clean").on("click", cleanIPLimit);
$("#ip_limit_change_config").on("click", configIPLimit);
$("#decoy_setup").on("click", setupDecoy);
$("#decoy_stop").on("click", stopDecoy);
diff --git a/core/scripts/webpanel/templates/settings.html b/core/scripts/webpanel/templates/settings.html
index 613b8ef..ff95b4f 100644
--- a/core/scripts/webpanel/templates/settings.html
+++ b/core/scripts/webpanel/templates/settings.html
@@ -39,6 +39,7 @@
data-restore-url="{{ url_for('restore_api') }}"
data-start-ip-limit-url="{{ url_for('start_ip_limit_api') }}"
data-stop-ip-limit-url="{{ url_for('stop_ip_limit_api') }}"
+ data-clean-ip-limit-url="{{ url_for('clean_ip_limit_api') }}"
data-config-ip-limit-url="{{ url_for('config_ip_limit_api') }}"
data-status-warp-url="{{ url_for('status_warp') }}"
data-install-warp-url="{{ url_for('install_warp') }}"
@@ -404,6 +405,7 @@
Start
+