diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-04 12:55:51 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-04-04 12:55:51 +0000 |
commit | e728d9abdfd0ea41ac249273842924fe6bce6d4d (patch) | |
tree | c24c933e77c9dd6ad7614a4f8d1395a0bd2072fc /src/modules/extra | |
parent | b07868e77c0527642ed72bce84bf5895bf921e87 (diff) |
Match on nick change option for RLine, document m_rline & this option.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9300 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/extra')
-rw-r--r-- | src/modules/extra/m_rline.cpp | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/modules/extra/m_rline.cpp b/src/modules/extra/m_rline.cpp index 88e40811b..15bd60bc0 100644 --- a/src/modules/extra/m_rline.cpp +++ b/src/modules/extra/m_rline.cpp @@ -6,7 +6,7 @@ * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see - * the file COPYING for details. + * the file COPYING for details. * * --------------------------------------------------- */ @@ -196,9 +196,13 @@ class ModuleRLine : public Module private: CommandRLine *r; RLineFactory *f; + bool MatchOnNickChange; + public: ModuleRLine(InspIRCd* Me) : Module(Me) { + OnRehash(NULL, ""); + // Create a new command r = new CommandRLine(ServerInstance); ServerInstance->AddCommand(r); @@ -206,8 +210,8 @@ class ModuleRLine : public Module f = new RLineFactory(ServerInstance); ServerInstance->XLines->RegisterFactory(f); - Implementation eventlist[] = { I_OnUserConnect }; - ServerInstance->Modules->Attach(eventlist, this, 1); + Implementation eventlist[] = { I_OnUserConnect, I_OnRehash, I_OnUserPostNick }; + ServerInstance->Modules->Attach(eventlist, this, 3); } @@ -232,6 +236,31 @@ class ModuleRLine : public Module rl->Apply(user); } } + + virtual void OnRehash(User *user, const std::string ¶meter) + { + ConfigReader Conf(ServerInstance); + + MatchOnNickChange = Conf.ReadFlag("rline", "matchonnickchange", 1); + } + + virtual int OnUserPostNick(User *user, const std::string &oldnick) + { + if (!IS_LOCAL(user)) + return 0; + + if (!MatchOnNickChange) + return 0; + + XLine *r = ServerInstance->XLines->MatchesLine("R", user); + + if (r) + { + // Bang! :D + r->Apply(user); + } + } + }; MODULE_INIT(ModuleRLine) |