diff options
| author | Adam <Adam@anope.org> | 2013-01-02 13:59:33 -0500 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2013-01-02 13:59:33 -0500 |
| commit | 827469600e8cf98fea7aec09ceaa77a097300b72 (patch) | |
| tree | 6c957be4e9f2a0c8c6eddf2537b8553f1f6ffdbb /modules/pseudoclients | |
| parent | bf718e869892bf418051d0140d7628c69d4ee3c9 (diff) | |
Move nickserv validate stuff to an event in nickserv.cpp
Diffstat (limited to 'modules/pseudoclients')
| -rw-r--r-- | modules/pseudoclients/nickserv.cpp | 38 | ||||
| -rw-r--r-- | modules/pseudoclients/nickserv.h | 1 |
2 files changed, 32 insertions, 7 deletions
diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index dd7efcabc..9e15667f5 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -129,6 +129,14 @@ class MyNickServService : public NickServService } } + + void Login(User *user, NickAlias *na) anope_override + { + const NickAlias *u_na = NickAlias::Find(user->nick); + user->Login(na->nc); + if (u_na && *u_na->nc == *na->nc && !Config->NoNicknameOwnership && na->nc->HasFlag(NI_UNCONFIRMED) == false) + user->SetMode(NickServ, UMODE_REGISTERED); + } }; class ExpireCallback : public CallBack @@ -190,7 +198,7 @@ class NickServCore : public Module throw ModuleException("No bot named " + Config->NickServ); Implementation i[] = { I_OnBotDelete, I_OnDelNick, I_OnDelCore, I_OnChangeCoreDisplay, I_OnNickIdentify, I_OnNickGroup, - I_OnNickUpdate, I_OnUserNickChange, I_OnPreHelp, I_OnPostHelp, I_OnUserConnect }; + I_OnNickUpdate, I_OnUserConnect, I_OnServerSync, I_OnUserNickChange, I_OnPreHelp, I_OnPostHelp }; ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); } @@ -295,6 +303,28 @@ class NickServCore : public Module } } + void OnUserConnect(Reference<User> &u, bool &exempt) anope_override + { + if (!u || !u->server->IsSynced()) + return; + + const NickAlias *na = NickAlias::Find(u->nick); + if (!Config->NoNicknameOwnership && !Config->NSUnregisteredNotice.empty() && !na) + u->SendMessage(NickServ, Config->NSUnregisteredNotice); + else if (na) + this->mynickserv.Validate(u); + } + + void OnServerSync(Server *s) anope_override + { + for (user_map::const_iterator it = UserListByNick.begin(); it != UserListByNick.end(); ++it) + { + User *u = it->second; + if (u->server == s && !u->IsIdentified()) + NickServService->Validate(u); + } + } + void OnUserNickChange(User *u, const Anope::string &oldnick) anope_override { const NickAlias *na = NickAlias::Find(u->nick); @@ -357,12 +387,6 @@ class NickServCore : public Module "will result in, at minimum, loss of the abused\n" "nickname(s)."), Config->NickServ.c_str()); } - - void OnUserConnect(Reference<User> &u, bool &exempt) anope_override - { - if (!Config->NoNicknameOwnership && !Config->NSUnregisteredNotice.empty() && u && !NickAlias::Find(u->nick)) - u->SendMessage(NickServ, Config->NSUnregisteredNotice); - } }; MODULE_INIT(NickServCore) diff --git a/modules/pseudoclients/nickserv.h b/modules/pseudoclients/nickserv.h index 702922379..1037522ce 100644 --- a/modules/pseudoclients/nickserv.h +++ b/modules/pseudoclients/nickserv.h @@ -7,6 +7,7 @@ class NickServService : public Service NickServService(Module *m) : Service(m, "NickServService", "NickServ") { } virtual void Validate(User *u) = 0; + virtual void Login(User *u, NickAlias *na) = 0; }; static ServiceReference<NickServService> NickServService("NickServService", "NickServ"); |
