From 8d1b58d51ae10f13043c8956133f57af65ecc6bd Mon Sep 17 00:00:00 2001 From: mbandic Date: Wed, 14 Feb 2024 10:55:59 +0000 Subject: [PATCH] Fix ban and unban functions on bad ufw states, and fix response on ufw_ban --- src/ipban.cpp | 28 ++++++++++++++++++---------- test/test | Bin 281368 -> 281368 bytes test/test.cpp | 6 +++--- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/ipban.cpp b/src/ipban.cpp index 98ce2a8..c1c40f1 100644 --- a/src/ipban.cpp +++ b/src/ipban.cpp @@ -66,25 +66,33 @@ bool marcelb::ipban::update_db() { bool marcelb::ipban::ban(const string& ip) { bool status = !is_in_white_list(ip); + if (!status) { + return status; + } + if (is_banned(ip)) { + return status; + } + + status = ufw_ban(ip); + if (status) { - if (is_banned(ip)) { - return status; - } - status = ufw_ban(ip); io.lock(); banned.push_back({ip, time(NULL)}); - status &= update_db(); + status = update_db(); io.unlock(); } + return status; } bool marcelb::ipban::unban(vector<_ban>::iterator ban_itr) { bool status = ufw_unban(ban_itr->ip); - io.lock(); - banned.erase(ban_itr); - status &= update_db(); - io.unlock(); + if (status) { + io.lock(); + banned.erase(ban_itr); + status = update_db(); + io.unlock(); + } return status; } @@ -102,7 +110,7 @@ bool marcelb::ipban::ufw_ban(const string& ip) { string ufw_cmd = "sudo ufw insert 1 deny from " + ip + " to any"; try { string execute_res = exec(ufw_cmd); - if (execute_res == "Rule added\n") { + if (execute_res == "Rule added\n" || execute_res == "Rule inserted\n") { return true; } } catch (const string except) { diff --git a/test/test b/test/test index d36ba6b7129ccd0ec2470259bf6a82504c31c013..021bc3c8fe72d8996ba0bdc14a9fe562d62a9146 100755 GIT binary patch delta 47141 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 diff --git a/test/test.cpp b/test/test.cpp index 5de67b7..6974709 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -37,9 +37,9 @@ int main() { cout << myban.ban("192.168.2.74") << endl; - // sleep(2); - // cout << myban.ban("192.168.2.75") << endl; - // // sleep(200); + sleep(5); + cout << myban.ban("192.168.2.74") << endl; + sleep(200); // myban.fail("192.168.2.74"); // sleep(5);