]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add a factory to produce shuns, don't autoapply to userlist, etc.
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Mon, 7 Apr 2008 22:34:46 +0000 (22:34 +0000)
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Mon, 7 Apr 2008 22:34:46 +0000 (22:34 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9410 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_shun.cpp

index f580c56462e568d1954b146706b32acaf825f28a..509ed3ae1be528aa12497531f1d90fd0e2cd2794 100644 (file)
@@ -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<Shun> 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);