v1.2.38 - Add idle_ban_whitelist config: comma-separated IPs that are never idle-banned

This commit is contained in:
Your Name
2026-02-25 06:48:41 -04:00
parent 3d7aa2196f
commit 10c19bc243
4 changed files with 31 additions and 5 deletions
+1 -1
View File
@@ -1 +1 @@
2370279
2373409
File diff suppressed because one or more lines are too long
+26
View File
@@ -250,9 +250,34 @@ void ip_ban_save_to_db(sqlite3* db) {
DEBUG_TRACE("IP ban table saved: %d entries written to DB", saved);
}
// Check if an IP is in the idle_ban_whitelist config (comma-separated list)
static int ip_is_whitelisted(const char* ip) {
const char* whitelist = get_config_value("idle_ban_whitelist");
if (!whitelist || whitelist[0] == '\0') return 0;
// Make a mutable copy to tokenize
char buf[1024];
strncpy(buf, whitelist, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';
char* token = strtok(buf, ",");
while (token) {
// Trim leading/trailing spaces
while (*token == ' ') token++;
char* end = token + strlen(token) - 1;
while (end > token && *end == ' ') { *end = '\0'; end--; }
if (strcmp(token, ip) == 0) return 1;
token = strtok(NULL, ",");
}
return 0;
}
int ip_ban_is_banned(const char* ip) {
if (!ip || !g_initialized) return 0;
// Whitelisted IPs are never banned
if (ip_is_whitelisted(ip)) return 0;
pthread_mutex_lock(&g_ban_mutex);
int idx = find_slot(ip);
if (idx < 0 || g_ban_table[idx].state == IP_BAN_EMPTY) {
@@ -359,6 +384,7 @@ void ip_ban_record_failure(const char* ip) {
void ip_ban_record_idle_failure(const char* ip) {
if (!ip || !g_initialized) return;
if (!get_config_bool("idle_ban_enabled", 1)) return;
if (ip_is_whitelisted(ip)) return; // Never record idle failures for whitelisted IPs
int threshold = get_config_int("idle_ban_threshold", 1);
int window_sec = get_config_int("idle_ban_window_sec", 30);
+2 -2
View File
@@ -13,8 +13,8 @@
// Using CRELAY_ prefix to avoid conflicts with nostr_core_lib VERSION macros
#define CRELAY_VERSION_MAJOR 1
#define CRELAY_VERSION_MINOR 2
#define CRELAY_VERSION_PATCH 37
#define CRELAY_VERSION "v1.2.37"
#define CRELAY_VERSION_PATCH 38
#define CRELAY_VERSION "v1.2.38"
// Relay metadata (authoritative source for NIP-11 information)
#define RELAY_NAME "C-Relay"