diff options
-rw-r--r-- | modules/nickserv/cert.cpp | 15 | ||||
-rw-r--r-- | modules/sasl.cpp | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/modules/nickserv/cert.cpp b/modules/nickserv/cert.cpp index 3cf25732f..c7bd2a207 100644 --- a/modules/nickserv/cert.cpp +++ b/modules/nickserv/cert.cpp @@ -345,6 +345,13 @@ class NSCert : public Module if (!nc || nc->HasFieldS("NS_SUSPENDED")) return; + unsigned int maxlogins = Config->GetModule("ns_identify")->Get<unsigned int>("maxlogins"); + if (maxlogins && nc->users.size() >= maxlogins) + { + u->SendMessage(NickServ, _("Account \002{0}\002 has already reached the maximum number of simultaneous logins ({1})."), nc->GetDisplay(), maxlogins); + return; + } + NickServ::Nick *na = NickServ::FindNick(u->nick); if (na && na->GetAccount() == nc) u->Identify(na); @@ -363,6 +370,14 @@ class NSCert : public Module if (cs.Matches(u, na->GetAccount())) { ServiceBot *NickServ = Config->GetClient("NickServ"); + + unsigned int maxlogins = Config->GetModule("ns_identify")->Get<unsigned int>("maxlogins"); + if (maxlogins && na->GetAccount()->users.size() >= maxlogins) + { + u->SendMessage(NickServ, _("Account \002{0}\002 has already reached the maximum number of simultaneous logins ({1})."), na->GetAccount()->GetDisplay(), maxlogins); + return EVENT_CONTINUE; + } + u->Identify(na); u->SendMessage(NickServ, _("SSL certificate fingerprint accepted, you are now identified.")); Log(NickServ) << u->GetMask() << " automatically identified for account " << na->GetAccount()->GetDisplay() << " via SSL certificate fingerprint"; diff --git a/modules/sasl.cpp b/modules/sasl.cpp index a5edbaf32..459c1ff18 100644 --- a/modules/sasl.cpp +++ b/modules/sasl.cpp @@ -278,6 +278,10 @@ void IdentifyRequestListener::OnSuccess(NickServ::IdentifyRequest *req) if (!na || na->GetAccount()->HasFieldS("NS_SUSPENDED")) return OnFail(req); + unsigned int maxlogins = Config->GetModule("ns_identify")->Get<unsigned int>("maxlogins"); + if (maxlogins && na->GetAccount()->users.size() >= maxlogins) + return OnFail(req); + Session *s = service->GetSession(uid); if (s) { |