Fix ban and unban functions on bad ufw states, and fix response on ufw_ban
This commit is contained in:
parent
4d212938a5
commit
8d1b58d51a
@ -66,25 +66,33 @@ bool marcelb::ipban::update_db() {
|
|||||||
|
|
||||||
bool marcelb::ipban::ban(const string& ip) {
|
bool marcelb::ipban::ban(const string& ip) {
|
||||||
bool status = !is_in_white_list(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 (status) {
|
||||||
if (is_banned(ip)) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
status = ufw_ban(ip);
|
|
||||||
io.lock();
|
io.lock();
|
||||||
banned.push_back({ip, time(NULL)});
|
banned.push_back({ip, time(NULL)});
|
||||||
status &= update_db();
|
status = update_db();
|
||||||
io.unlock();
|
io.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool marcelb::ipban::unban(vector<_ban>::iterator ban_itr) {
|
bool marcelb::ipban::unban(vector<_ban>::iterator ban_itr) {
|
||||||
bool status = ufw_unban(ban_itr->ip);
|
bool status = ufw_unban(ban_itr->ip);
|
||||||
io.lock();
|
if (status) {
|
||||||
banned.erase(ban_itr);
|
io.lock();
|
||||||
status &= update_db();
|
banned.erase(ban_itr);
|
||||||
io.unlock();
|
status = update_db();
|
||||||
|
io.unlock();
|
||||||
|
}
|
||||||
return status;
|
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";
|
string ufw_cmd = "sudo ufw insert 1 deny from " + ip + " to any";
|
||||||
try {
|
try {
|
||||||
string execute_res = exec(ufw_cmd);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
} catch (const string except) {
|
} catch (const string except) {
|
||||||
|
@ -37,9 +37,9 @@ int main() {
|
|||||||
|
|
||||||
|
|
||||||
cout << myban.ban("192.168.2.74") << endl;
|
cout << myban.ban("192.168.2.74") << endl;
|
||||||
// sleep(2);
|
sleep(5);
|
||||||
// cout << myban.ban("192.168.2.75") << endl;
|
cout << myban.ban("192.168.2.74") << endl;
|
||||||
// // sleep(200);
|
sleep(200);
|
||||||
// myban.fail("192.168.2.74");
|
// myban.fail("192.168.2.74");
|
||||||
// sleep(5);
|
// sleep(5);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user