+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
+ * E-mail:
+ * <brain@chatspike.net>
+ * <Craig@chatspike.net>
+ *
+ * Written by Craig Edwards, Craig McLure, and others.
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+using namespace std;
+
#include "users.h"
#include "channels.h"
#include "modules.h"
class ModuleAntiBottler : public Module
{
- private:
-
- Server *Srv;
public:
- ModuleAntiBottler()
+ ModuleAntiBottler(InspIRCd* Me)
+ : Module::Module(Me)
{
- Srv = new Server;
+
}
+
+ void Implements(char* List)
+ {
+ List[I_OnServerRaw] = 1;
+ }
+
virtual ~ModuleAntiBottler()
{
- delete Srv;
}
virtual Version GetVersion()
{
- return Version(1,0,0,0);
+ return Version(1,1,0,1,VF_VENDOR,API_VERSION);
}
-
- virtual void OnServerRaw(std::string &raw, bool inbound)
+ virtual void OnServerRaw(std::string &raw, bool inbound, userrec* user)
{
if (inbound)
{
char data[MAXBUF];
- strncpy(data,raw.c_str(),MAXBUF);
+ strlcpy(data,raw.c_str(),MAXBUF);
bool not_bottler = false;
if (!strncmp(data,"user ",5))
{
- for (int j = 0; j < strlen(data); j++)
+ for (char* j = data; *j; j++)
{
- if (data[j] = ':')
+ if (*j == ':')
break;
- if (data[j] = '"')
+ if (*j == '"')
{
not_bottler = true;
}
}
- char *user = strtok(data," ");
+ // Bug Fix (#14) -- FCS
+
+ if (!(data) || !(*data))
+ return;
+
+ strtok(data," ");
char *ident = strtok(NULL," ");
char *local = strtok(NULL," ");
char *remote = strtok(NULL," :");
char *gecos = strtok(NULL,"\r\n");
- for (int j = 0; j < strlen(remote); j++)
+
+ if (!ident || !local || !remote || !gecos)
+ return;
+
+ for (char* j = remote; *j; j++)
{
- if (((remote[j] < '0') || (remote[j] > '9')) && (remote[j] != '.'))
+ if (((*j < '0') || (*j > '9')) && (*j != '.'))
{
not_bottler = true;
}
{
}
- virtual Module * CreateModule()
+ virtual Module * CreateModule(InspIRCd* Me)
{
- return new ModuleAntiBottler;
+ return new ModuleAntiBottler(Me);
}
};