mirror of
https://github.com/anope/anope.git
synced 2026-06-12 19:14:47 +02:00
Add ns_identify:maxlogins to limit the max number of concurrent logins per account
This commit is contained in:
@@ -381,7 +381,15 @@ command { service = "NickServ"; name = "UNGROUP"; command = "nickserv/ungroup";
|
||||
*
|
||||
* Used for identifying to accounts.
|
||||
*/
|
||||
module { name = "ns_identify" }
|
||||
module
|
||||
{
|
||||
name = "ns_identify"
|
||||
|
||||
/*
|
||||
* If set, limits the number of concurrent users that can be logged in as a given account at once.
|
||||
*/
|
||||
maxlogins = 10
|
||||
}
|
||||
command { service = "NickServ"; name = "ID"; command = "nickserv/identify"; hide = true; }
|
||||
command { service = "NickServ"; name = "IDENTIFY"; command = "nickserv/identify"; }
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
Anope Version 2.0.3-git
|
||||
-------------------
|
||||
Add ns_identify:maxlogins to limit the max number of concurrent logins per account
|
||||
|
||||
Anope Version 2.0.2
|
||||
-------------------
|
||||
Add an operserv/oper/modify privilege, required to use oper add and oper del
|
||||
|
||||
@@ -77,16 +77,27 @@ class CommandNSIdentify : public Command
|
||||
|
||||
NickAlias *na = NickAlias::Find(nick);
|
||||
if (na && na->nc->HasExt("NS_SUSPENDED"))
|
||||
source.Reply(NICK_X_SUSPENDED, na->nick.c_str());
|
||||
else if (u->Account() && na && u->Account() == na->nc)
|
||||
source.Reply(_("You are already identified."));
|
||||
else
|
||||
{
|
||||
NSIdentifyRequest *req = new NSIdentifyRequest(owner, source, this, na ? na->nc->display : nick, pass);
|
||||
FOREACH_MOD(OnCheckAuthentication, (u, req));
|
||||
req->Dispatch();
|
||||
source.Reply(NICK_X_SUSPENDED, na->nick.c_str());
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
||||
if (u->Account() && na && u->Account() == na->nc)
|
||||
{
|
||||
source.Reply(_("You are already identified."));
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned int maxlogins = Config->GetModule(this->owner)->Get<unsigned int>("maxlogins");
|
||||
if (na && maxlogins && na->nc->users.size() >= maxlogins)
|
||||
{
|
||||
source.Reply(_("Account \2%s\2 has exceeeded the maximum number of simultaneous logins (%u)."), na->nc->display.c_str(), maxlogins);
|
||||
return;
|
||||
}
|
||||
|
||||
NSIdentifyRequest *req = new NSIdentifyRequest(owner, source, this, na ? na->nc->display : nick, pass);
|
||||
FOREACH_MOD(OnCheckAuthentication, (u, req));
|
||||
req->Dispatch();
|
||||
}
|
||||
|
||||
bool OnHelp(CommandSource &source, const Anope::string &subcommand) anope_override
|
||||
|
||||
Reference in New Issue
Block a user