remove failed attempts after success

This commit is contained in:
Benedikt Galbavy 2023-11-19 23:20:58 +01:00
parent 61c41aefeb
commit 2c7b64233d
3 changed files with 9 additions and 2 deletions

View File

@ -14,7 +14,7 @@ ip_ban::~ip_ban()
{
if (this->file.empty())
return;
json jsonfile = this->ban_list;
std::ofstream ofs(this->file, std::ofstream::out | std::ofstream::trunc);
@ -33,7 +33,6 @@ void ip_ban::loadFile(fs::path file)
void ip_ban::failedAttempt(std::string username, std::string ip)
{
printf("%s\n", username.c_str());
std::unique_lock<std::shared_mutex> lock(this->m_ban);
std::map<std::string, std::pair<std::map<std::string, ushort>, time_t>>::iterator it = this->ban_list.insert({ip, {{}, 0}}).first;
@ -45,6 +44,12 @@ void ip_ban::failedAttempt(std::string username, std::string ip)
}
}
void ip_ban::success(std::string ip)
{
std::unique_lock<std::shared_mutex> lock(this->m_ban);
this->ban_list.erase(ip);
}
bool ip_ban::checkBanned(std::string ip)
{
std::shared_lock<std::shared_mutex> lock(this->m_ban);

View File

@ -32,6 +32,7 @@ public:
void loadFile(fs::path file);
void failedAttempt(std::string username, std::string ip);
void success(std::string ip);
bool checkBanned(std::string ip);
protected:

View File

@ -452,6 +452,7 @@ std::string cmdLOGIN(std::vector<std::string>& received, std::string& loggedInUs
}
loggedInUsername = received.at(1);
ip_ban::getInstance().success(ip);
ldap_unbind_ext_s(ldapHandle, NULL, NULL);
return "OK\n";