diff options
Diffstat (limited to 'src/nickserv.cpp')
-rw-r--r-- | src/nickserv.cpp | 87 |
1 files changed, 3 insertions, 84 deletions
diff --git a/src/nickserv.cpp b/src/nickserv.cpp index fde535e7c..011ee685e 100644 --- a/src/nickserv.cpp +++ b/src/nickserv.cpp @@ -10,95 +10,14 @@ */ #include "services.h" +#include "account.h" #include "modules.h" +#include "users.h" +#include "protocol.h" nickalias_map NickAliasList; nickcore_map NickCoreList; -typedef std::map<Anope::string, NickServCollide *> nickservcollides_map; -typedef std::map<Anope::string, NickServHeld *> nickservheld_map; -typedef std::map<Anope::string, NickServRelease *> nickservreleases_map; - -static nickservcollides_map NickServCollides; -static nickservheld_map NickServHelds; -static nickservreleases_map NickServReleases; - -NickServCollide::NickServCollide(User *user, time_t delay) : Timer(delay), u(user), nick(u->nick) -{ - /* Erase the current collide and use the new one */ - nickservcollides_map::iterator nit = NickServCollides.find(user->nick); - if (nit != NickServCollides.end()) - delete nit->second; - - NickServCollides.insert(std::make_pair(nick, this)); -} - -NickServCollide::~NickServCollide() -{ - NickServCollides.erase(this->nick); -} - -void NickServCollide::Tick(time_t ctime) -{ - if (!u) - return; - /* If they identified or don't exist anymore, don't kill them. */ - NickAlias *na = findnick(u->nick); - if (!na || u->Account() == na->nc || u->my_signon > this->GetSetTime()) - return; - - u->Collide(na); -} - -NickServHeld::NickServHeld(NickAlias *n, long l) : Timer(l), na(n), nick(na->nick) -{ - nickservheld_map::iterator nit = NickServHelds.find(na->nick); - if (nit != NickServHelds.end()) - delete nit->second; - - NickServHelds[na->nick] = this; -} - -NickServHeld::~NickServHeld() -{ - NickServHelds.erase(this->nick); -} - -void NickServHeld::Tick(time_t) -{ - if (na) - na->UnsetFlag(NS_HELD); -} - -NickServRelease::NickServRelease(NickAlias *na, time_t delay) : User(na->nick, Config->NSEnforcerUser, Config->NSEnforcerHost, ts6_uid_retrieve()), Timer(delay), nick(na->nick) -{ - this->realname = "Services Enforcer"; - this->server = Me; - - /* Erase the current release timer and use the new one */ - nickservreleases_map::iterator nit = NickServReleases.find(this->nick); - if (nit != NickServReleases.end()) - delete nit->second; - - NickServReleases.insert(std::make_pair(this->nick, this)); - - ircdproto->SendClientIntroduction(this); -} - -NickServRelease::~NickServRelease() -{ - NickServReleases.erase(this->nick); - - ircdproto->SendQuit(this, ""); -} - -void NickServRelease::Tick(time_t) -{ - /* Do not do anything here, - * The timer manager will delete this timer which will do the necessary cleanup - */ -} - NickAlias *findnick(const Anope::string &nick) { FOREACH_MOD(I_OnFindNick, OnFindNick(nick)); |