summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-10-31 19:31:51 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-10-31 19:31:51 +0000
commit21f9acdb6c5c35b26d926f75845135f16c3c54e9 (patch)
tree0e8c863ccce13c2951622cb2d34262eb3027521c
parent31eaefa6a6244bc1226bacf9b3d9e527f49f035f (diff)
Add factories for other types
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8439 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--include/xline.h40
-rw-r--r--src/xline.cpp12
2 files changed, 51 insertions, 1 deletions
diff --git a/include/xline.h b/include/xline.h
index edde8d91a..ff33da7d2 100644
--- a/include/xline.h
+++ b/include/xline.h
@@ -373,6 +373,9 @@ class InspIRCd;
class GLineFactory;
class ELineFactory;
+class QLineFactory;
+class ZLineFactory;
+class KLineFactory;
/** XLineManager is a class used to manage glines, klines, elines, zlines and qlines.
*/
@@ -397,6 +400,9 @@ class CoreExport XLineManager
GLineFactory* GFact;
ELineFactory* EFact;
+ KLineFactory* KFact;
+ QLineFactory* QFact;
+ ZLineFactory* ZFact;
public:
@@ -573,6 +579,38 @@ class CoreExport ELineFactory : public XLineFactory
}
};
+class CoreExport KLineFactory : public XLineFactory
+{
+ public:
+ KLineFactory(InspIRCd* Instance) : XLineFactory(Instance, 'K') { }
-#endif
+ XLine* Generate(time_t set_time, long duration, const char* source, const char* reason, const char* xline_specific_mask)
+ {
+ IdentHostPair ih = ServerInstance->XLines->IdentSplit(xline_specific_mask);
+ return new KLine(ServerInstance, set_time, duration, source, reason, ih.first.c_str(), ih.second.c_str());
+ }
+};
+class CoreExport QLineFactory : public XLineFactory
+{
+ public:
+ QLineFactory(InspIRCd* Instance) : XLineFactory(Instance, 'Q') { }
+
+ XLine* Generate(time_t set_time, long duration, const char* source, const char* reason, const char* xline_specific_mask)
+ {
+ return new QLine(ServerInstance, set_time, duration, source, reason, xline_specific_mask);
+ }
+};
+
+class CoreExport ZLineFactory : public XLineFactory
+{
+ public:
+ ZLineFactory(InspIRCd* Instance) : XLineFactory(Instance, 'Z') { }
+
+ XLine* Generate(time_t set_time, long duration, const char* source, const char* reason, const char* xline_specific_mask)
+ {
+ return new ZLine(ServerInstance, set_time, duration, source, reason, xline_specific_mask);
+ }
+};
+
+#endif
diff --git a/src/xline.cpp b/src/xline.cpp
index a853eb35f..1f2782c4d 100644
--- a/src/xline.cpp
+++ b/src/xline.cpp
@@ -424,18 +424,30 @@ XLineManager::XLineManager(InspIRCd* Instance) : ServerInstance(Instance)
{
GFact = new GLineFactory(Instance);
EFact = new ELineFactory(Instance);
+ KFact = new KLineFactory(Instance);
+ QFact = new QLineFactory(Instance);
+ ZFact = new ZLineFactory(Instance);
RegisterFactory(GFact);
RegisterFactory(EFact);
+ RegisterFactory(KFact);
+ RegisterFactory(QFact);
+ RegisterFactory(ZFact);
}
XLineManager::~XLineManager()
{
UnregisterFactory(GFact);
UnregisterFactory(EFact);
+ UnregisterFactory(KFact);
+ UnregisterFactory(QFact);
+ UnregisterFactory(ZFact);
delete GFact;
delete EFact;
+ delete KFact;
+ delete QFact;
+ delete ZFact;
}
void XLine::Apply(User* u)