* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
+ * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
* E-mail:
* <brain@chatspike.net>
* <Craig@chatspike.net>
class ModuleAntiBottler : public Module
{
- private:
-
- Server *Srv;
public:
- ModuleAntiBottler(Server* Me)
+ ModuleAntiBottler(InspIRCd* Me)
: Module::Module(Me)
{
- Srv = Me;
+
}
+
+ void Implements(char* List)
+ {
+ List[I_OnServerRaw] = 1;
+ }
+
virtual ~ModuleAntiBottler()
{
return Version(1,0,0,1,VF_VENDOR);
}
-
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 (unsigned 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;
}
}
// Bug Fix (#14) -- FCS
- if (!strlen(data)) return;
+
+ if (!(data) || !(*data))
+ return;
+
strtok(data," ");
- if (!strlen(data)) return;
char *ident = strtok(NULL," ");
- if (!strlen(data)) return;
char *local = strtok(NULL," ");
- if (!strlen(data)) return;
char *remote = strtok(NULL," :");
- if (!strlen(data)) return;
char *gecos = strtok(NULL,"\r\n");
- for (unsigned 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(Server* Me)
+ virtual Module * CreateModule(InspIRCd* Me)
{
return new ModuleAntiBottler(Me);
}