#include "m_regex.h"
#include "xline.h"
-static Module* rxengine = 0;
-static Module* mymodule = 0; /* Needed to let RLine send request! */
+static Module* rxengine = NULL;
+static Module* mymodule = NULL; /* Needed to let RLine send request! */
/* $ModDesc: RLINE: Regexp user banning. */
-class CoreExport RLine : public XLine
+class RLine : public XLine
{
public:
throw ModuleException("Regex engine not set or loaded!");
}
- try
- {
- regex = RegexFactoryRequest(mymodule, rxengine, regexs).Create();
- }
- catch (ModuleException& ex)
- {
- ServerInstance->SNO->WriteToSnoMask('x', "Bad regex: %s", ex.GetReason());
- throw ex;
- }
+ /* This can throw on failure, but if it does we DONT catch it here, we catch it and display it
+ * where the object is created, we might not ALWAYS want it to output stuff to snomask x all the time
+ */
+ regex = RegexFactoryRequest(mymodule, rxengine, regexs).Create();
}
/** Destructor
bool Matches(User *u)
{
- std::string compare = std::string(u->nick) + "!" + u->ident + "@" + u->host + " " + u->fullname;
-
- ServerInstance->Logs->Log("m_rline",DEBUG, "Matching " + matchtext + " against string " + compare);
-
- if (regex->Matches(compare))
- {
- // Bang. :D
- return true;
- }
-
- return false;
+ std::string compare = u->nick + "!" + u->ident + "@" + u->host + " " + u->fullname;
+ return regex->Matches(compare);
}
bool Matches(const std::string &compare)
{
- if (regex->Matches(compare))
- {
- // Bang. :D
- return true;
- }
-
- return false;
+ return regex->Matches(compare);
}
void Apply(User* u)
/** An XLineFactory specialized to generate RLine* pointers
*/
-class CoreExport RLineFactory : public XLineFactory
+class RLineFactory : public XLineFactory
{
public:
- RLineFactory(InspIRCd* Instance) : XLineFactory(Instance, "R") { }
+ RLineFactory(InspIRCd* Instance) : XLineFactory(Instance, "R")
+ {
+ }
/** Generate a RLine
*/
{
return new RLine(ServerInstance, set_time, duration, source, reason, xline_specific_mask);
}
+
+ ~RLineFactory()
+ {
+ }
};
/** Handle /RLINE