* ---------------------------------------------------
*/
-#include <stdio.h>
-#include <string>
+#include "inspircd.h"
#include "users.h"
#include "channels.h"
#include "modules.h"
-#include "inspircd.h"
#include "m_filter.h"
/* $ModDesc: An advanced spam filtering module */
public:
ModuleFilter(InspIRCd* Me)
- : FilterBase::FilterBase(Me, "m_filter.so")
+ : FilterBase(Me, "m_filter.so")
{
OnRehash(NULL,"");
}
virtual FilterResult* FilterMatch(const std::string &text)
{
- std::string text2 = text+" ";
for (filter_t::iterator index = filters.begin(); index != filters.end(); index++)
{
- if ((ServerInstance->MatchText(text2,index->first)) || (ServerInstance->MatchText(text,index->first)))
+ if (ServerInstance->MatchText(text,index->first))
{
- return index->second;
+ FilterResult* fr = index->second;
+ if (index != filters.begin())
+ {
+ std::string pat = index->first;
+ filters.erase(index);
+ filters.insert(filters.begin(), std::make_pair(pat,fr));
+ }
+ return fr;
}
}
return NULL;
};
-extern "C" void * init_module( void )
+extern "C" DllExport void * init_module( void )
{
return new ModuleFilterFactory;
}