From e9b343457de271771c181a288aaa3e34bd397850 Mon Sep 17 00:00:00 2001 From: w00t Date: Mon, 7 Apr 2008 22:34:46 +0000 Subject: Add a factory to produce shuns, don't autoapply to userlist, etc. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9410 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_shun.cpp | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/modules/m_shun.cpp b/src/modules/m_shun.cpp index f580c5646..509ed3ae1 100644 --- a/src/modules/m_shun.cpp +++ b/src/modules/m_shun.cpp @@ -56,6 +56,27 @@ public: } }; +/** An XLineFactory specialized to generate shun pointers + */ +class ShunFactory : public XLineFactory +{ + public: + ShunFactory(InspIRCd* Instance) : XLineFactory(Instance, "SHUN") { } + + /** Generate a shun + */ + XLine* Generate(time_t set_time, long duration, const char* source, const char* reason, const char* xline_specific_mask) + { + return new Shun(ServerInstance, set_time, duration, source, reason, xline_specific_mask); + } + + virtual bool AutoApplyToUserList(XLine*) + { + // No, we don't want to be applied to users automagically. + return false; + } +}; + //typedef std::vector shunlist; class cmd_shun : public Command @@ -135,14 +156,23 @@ class cmd_shun : public Command class ModuleShun : public Module { cmd_shun* mycommand; + ShunFactory *f; public: ModuleShun(InspIRCd* Me) : Module(Me) { + f = new ShunFactory(ServerInstance); + ServerInstance->XLines->RegisterFactory(f); + mycommand = new cmd_shun(ServerInstance); ServerInstance->AddCommand(mycommand); } + virtual ~ModuleShun() + { + ServerInstance->XLines->UnregisterFactory(f); + } + void Implements(char* List) { List[I_OnPreCommand] = List[I_OnStats] = 1; @@ -176,10 +206,6 @@ class ModuleShun : public Module return 0; } - virtual ~ModuleShun() - { - } - virtual Version GetVersion() { return Version(1,0,0,0,0,API_VERSION); -- cgit v1.2.3