Compare commits
No commits in common. "dev" and "v0.6" have entirely different histories.
@ -71,11 +71,6 @@ class ipban {
|
||||
*/
|
||||
bool unban(vector<_ban>::iterator ban_itr);
|
||||
|
||||
/**
|
||||
* The method checks if the forwarding ip address is currently banned
|
||||
*/
|
||||
bool is_banned(const string& ip);
|
||||
|
||||
/**
|
||||
* Method calls exec and adds rules to UFW firewall
|
||||
*/
|
||||
|
@ -66,51 +66,30 @@ 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) {
|
||||
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);
|
||||
if (status) {
|
||||
io.lock();
|
||||
banned.erase(ban_itr);
|
||||
status = update_db();
|
||||
status &= update_db();
|
||||
io.unlock();
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
bool marcelb::ipban::is_banned(const string& ip) {
|
||||
auto it = std::find_if(banned.begin(), banned.end(), [&](const struct _ban& an_ban){
|
||||
return an_ban.ip == ip;
|
||||
});
|
||||
if (it == banned.end()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
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" || execute_res == "Rule inserted\n") {
|
||||
if (execute_res == "Rule added\n") {
|
||||
return true;
|
||||
}
|
||||
} catch (const string except) {
|
||||
|
@ -36,10 +36,10 @@ int main() {
|
||||
// myban.add_white_list("192.168.2.74");
|
||||
|
||||
|
||||
cout << myban.ban("192.168.2.74") << endl;
|
||||
sleep(5);
|
||||
cout << myban.ban("192.168.2.74") << endl;
|
||||
sleep(200);
|
||||
// cout << myban.ban("192.168.2.74") << endl;
|
||||
// sleep(2);
|
||||
// cout << myban.ban("192.168.2.75") << endl;
|
||||
// // sleep(200);
|
||||
// myban.fail("192.168.2.74");
|
||||
// sleep(5);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user