summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-09-11 22:47:36 -0400
committerAdam <Adam@anope.org>2010-09-11 22:47:36 -0400
commite30370af107e4ae46c5287c7cfa01b679bcc25b3 (patch)
tree6953bbe0110abd2cfe1baa0158fda5d74d477a57 /modules
parent89c5b203c331ab7c2986c93fd77fcc39c04d1d07 (diff)
Allow identifying to other accounts using /nickserv id account pass
Diffstat (limited to 'modules')
-rw-r--r--modules/core/ns_group.cpp1
-rw-r--r--modules/core/ns_identify.cpp19
-rw-r--r--modules/core/ns_resetpass.cpp1
-rw-r--r--modules/protocol/bahamut.cpp1
-rw-r--r--modules/protocol/inspircd11.cpp2
-rw-r--r--modules/protocol/inspircd12.cpp8
-rw-r--r--modules/protocol/inspircd20.cpp8
-rw-r--r--modules/protocol/unreal32.cpp1
8 files changed, 13 insertions, 28 deletions
diff --git a/modules/core/ns_group.cpp b/modules/core/ns_group.cpp
index 6bb187908..7c0802e37 100644
--- a/modules/core/ns_group.cpp
+++ b/modules/core/ns_group.cpp
@@ -118,6 +118,7 @@ class CommandNSGroup : public Command
u->Login(na->nc);
FOREACH_MOD(I_OnNickGroup, OnNickGroup(u, target));
ircdproto->SetAutoIdentificationToken(u);
+ u->SetMode(NickServ, UMODE_REGISTERED);
Log(LOG_COMMAND, u, this) << "makes " << u->nick << " join group of " << target->nick << " (" << target->nc->display << ") (email: " << (!target->nc->email.empty() ? target->nc->email : "none") << ")";
notice_lang(Config->s_NickServ, u, NICK_GROUP_JOINED, target->nick.c_str());
diff --git a/modules/core/ns_identify.cpp b/modules/core/ns_identify.cpp
index e87d13d22..943847355 100644
--- a/modules/core/ns_identify.cpp
+++ b/modules/core/ns_identify.cpp
@@ -16,21 +16,21 @@
class CommandNSIdentify : public Command
{
public:
- CommandNSIdentify(const Anope::string &cname) : Command(cname, 1, 1)
+ CommandNSIdentify(const Anope::string &cname) : Command(cname, 1, 2)
{
this->SetFlag(CFLAG_ALLOW_UNREGISTERED);
}
CommandReturn Execute(User *u, const std::vector<Anope::string> &params)
{
- Anope::string pass = params[0];
- NickAlias *na;
- NickRequest *nr;
- int res;
+ Anope::string nick = params.size() == 2 ? params[0] : u->nick;
+ Anope::string pass = params[params.size() - 1];
- if (!(na = findnick(u->nick)))
+ NickAlias *na = findnick(nick), *this_na = findnick(u->nick);
+ if (!na)
{
- if ((nr = findrequestnick(u->nick)))
+ NickRequest *nr = findrequestnick(nick);
+ if (nr)
notice_lang(Config->s_NickServ, u, NICK_IS_PREREG);
else
notice_lang(Config->s_NickServ, u, NICK_NOT_REGISTERED);
@@ -47,7 +47,7 @@ class CommandNSIdentify : public Command
notice_lang(Config->s_NickServ, u, NICK_ALREADY_IDENTIFIED);
else
{
- res = enc_check_password(pass, na->nc->pass);
+ int res = enc_check_password(pass, na->nc->pass);
if (!res)
{
Log(LOG_COMMAND, u, this) << "and failed to identify";
@@ -69,6 +69,9 @@ class CommandNSIdentify : public Command
ircdproto->SendAccountLogin(u, u->Account());
ircdproto->SetAutoIdentificationToken(u);
+ if (this_na && this_na->nc == na->nc)
+ u->SetMode(NickServ, UMODE_REGISTERED);
+
u->UpdateHost();
FOREACH_MOD(I_OnNickIdentify, OnNickIdentify(u));
diff --git a/modules/core/ns_resetpass.cpp b/modules/core/ns_resetpass.cpp
index a0efa373c..63c58d5ed 100644
--- a/modules/core/ns_resetpass.cpp
+++ b/modules/core/ns_resetpass.cpp
@@ -110,6 +110,7 @@ class NSResetPass : public Module
u->Login(na->nc);
ircdproto->SendAccountLogin(u, u->Account());
ircdproto->SetAutoIdentificationToken(u);
+ u->SetMode(NickServ, UMODE_REGISTERED);
FOREACH_MOD(I_OnNickIdentify, OnNickIdentify(u));
Log(LOG_COMMAND, u, &commandnsresetpass) << "confirmed RESETPASS to forcefully identify to " << na->nick;
diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp
index 8e54de704..65924c97f 100644
--- a/modules/protocol/bahamut.cpp
+++ b/modules/protocol/bahamut.cpp
@@ -291,7 +291,6 @@ class BahamutIRCdProto : public IRCDProto
if (!u->Account())
return;
- u->SetMode(NickServ, UMODE_REGISTERED);
ircdproto->SendMode(NickServ, u, "+d %d", u->timestamp);
}
diff --git a/modules/protocol/inspircd11.cpp b/modules/protocol/inspircd11.cpp
index 4b92a694c..557fe7389 100644
--- a/modules/protocol/inspircd11.cpp
+++ b/modules/protocol/inspircd11.cpp
@@ -296,8 +296,6 @@ class InspIRCdProto : public IRCDProto
u->Account()->Shrink("authenticationtoken");
u->Account()->Extend("authenticationtoken", new ExtensibleItemRegular<Anope::string>(svidbuf));
-
- u->SetMode(NickServ, UMODE_REGISTERED);
}
} ircd_proto;
diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp
index ffc696d94..9532e7669 100644
--- a/modules/protocol/inspircd12.cpp
+++ b/modules/protocol/inspircd12.cpp
@@ -308,14 +308,6 @@ class InspIRCdProto : public IRCDProto
return true;
}
-
- void SetAutoIdentificationToken(User *u)
- {
- if (!u->Account())
- return;
-
- u->SetMode(NickServ, UMODE_REGISTERED);
- }
} ircd_proto;
int anope_event_ftopic(const Anope::string &source, int ac, const char **av)
diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp
index 51784d071..47413da23 100644
--- a/modules/protocol/inspircd20.cpp
+++ b/modules/protocol/inspircd20.cpp
@@ -306,14 +306,6 @@ class InspIRCdProto : public IRCDProto
return true;
}
-
- void SetAutoIdentificationToken(User *u)
- {
- if (!u->Account())
- return;
-
- u->SetMode(NickServ, UMODE_REGISTERED);
- }
} ircd_proto;
int anope_event_ftopic(const Anope::string &source, int ac, const char **av)
diff --git a/modules/protocol/unreal32.cpp b/modules/protocol/unreal32.cpp
index 249da63b5..0b5b56b08 100644
--- a/modules/protocol/unreal32.cpp
+++ b/modules/protocol/unreal32.cpp
@@ -387,7 +387,6 @@ class UnrealIRCdProto : public IRCDProto
if (!u->Account())
return;
- u->SetMode(NickServ, UMODE_REGISTERED);
ircdproto->SendMode(NickServ, u, "+d %d", u->timestamp);
}