1 /* +------------------------------------+
\r * | Inspire Internet Relay Chat Daemon |
\r * +------------------------------------+
\r *
\r * InspIRCd: (C) 2002-2007 InspIRCd Development Team
\r * See: http://www.inspircd.org/wiki/index.php/Credits
\r *
\r * This program is free but copyrighted software; see
\r * the file COPYING for details.
\r *
\r * ---------------------------------------------------
\r */
\r\r#include "inspircd.h"
\r#include "users.h"
\r#include "channels.h"
\r#include "modules.h"
\r#include "xline.h"
\r\r/* $ModDesc: Sends a numeric on connect which cripples a common type of trojan/spambot */
\r\rclass ModuleAntiBear : public Module
\r{
\r private:
\r\r public:
\r ModuleAntiBear(InspIRCd* Me) : Module(Me)
\r {
\r \r }
\r \r virtual ~ModuleAntiBear()
\r {
\r }
\r \r virtual Version GetVersion()
\r {
\r return Version(1,1,0,0,VF_VENDOR,API_VERSION);
\r }
\r\r void Implements(char* List)
\r {
\r List[I_OnUserRegister] = List[I_OnPreCommand] = 1;
\r }
\r\r virtual int OnPreCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, bool validated, const std::string &original_line)
\r {
\r if (command == "NOTICE" && !validated && pcnt > 1 && user->GetExt("antibear_timewait"))
\r {
\r if (!strncmp(parameters[1], "\1TIME Mon May 01 18:54:20 2006", 30))
\r {
\r if (ServerInstance->XLines->add_zline(86400, ServerInstance->Config->ServerName, "Unless you're stuck in a time warp, you appear to be a bear bot!", user->MakeHostIP()))
\r {
\r ServerInstance->XLines->apply_lines(APPLY_ZLINES);
\r FOREACH_MOD(I_OnAddGLine,OnAddZLine(86400, NULL, "Unless you're stuck in a time warp, you appear to be a bear bot!", user->MakeHostIP()));
\r return 1;
\r }
\r }
\r \r user->Shrink("antibear_timewait");
\r // Block the command, so the user doesn't receive a no such nick notice
\r return 1;
\r }
\r \r return 0;
\r }
\r\r virtual int OnUserRegister(userrec* user)
\r {
\r user->WriteServ("439 %s :This server has anti-spambot mechanisms enabled.", user->nick);
\r user->WriteServ("931 %s :Malicious bots, spammers, and other automated systems of dubious origin are NOT welcome here.", user->nick);
\r user->WriteServ("PRIVMSG %s :\1TIME\1", user->nick);
\r user->Extend("antibear_timewait");
\r return 0;
\r }
\r};
\r\rMODULE_INIT(ModuleAntiBear)
\r