157 lines
3.7 KiB
C
157 lines
3.7 KiB
C
/*
|
|
* Copyright (c) 2005 William Pitcock, et al.
|
|
* Rights to this code are as documented in doc/LICENSE.
|
|
*
|
|
* ping spammer thingy
|
|
*
|
|
*/
|
|
|
|
#include "atheme-compat.h"
|
|
|
|
DECLARE_MODULE_V1
|
|
(
|
|
"contrib/os_pingspam", false, _modinit, _moddeinit,
|
|
PACKAGE_STRING,
|
|
"Atheme Development Group <http://www.atheme.org>"
|
|
);
|
|
|
|
char *notices[] =
|
|
{
|
|
"Scanning for proxies.",
|
|
"Killing off bottlers.",
|
|
"LOL ok so like we are teh SKANZ0RZING j00 becuz well like OMG deze bots r h3r3 an liek they are FL00DING!!#@! ignore plz",
|
|
"gaben",
|
|
"Please ignore this notice.",
|
|
"Scanning for warez.",
|
|
"All your pr0n are belong to us!",
|
|
"Move over! This is the police!",
|
|
"This notice brought to you by Burma-Shave.",
|
|
"They're coming...",
|
|
":)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(::)(:",
|
|
"lolz!",
|
|
"<Hikaru> your a pagan",
|
|
"* Ads needs to shower soon",
|
|
"<Hik`Coding> Don't make me get Yakuza on you",
|
|
"beu fails it",
|
|
"BAN KAI~!$"
|
|
};
|
|
|
|
char *phrases[] =
|
|
{
|
|
"",
|
|
" please-ignore",
|
|
" proxy scan",
|
|
" ignore me",
|
|
" <3 neostats",
|
|
};
|
|
|
|
void pingspam(user_t *u);
|
|
static void user_add_hook(hook_user_nick_t *data);
|
|
static void os_cmd_pingspam(sourceinfo_t *si, int parc, char *parv[]);
|
|
static void os_cmd_autopingspam(sourceinfo_t *si, int parc, char *parv[]);
|
|
|
|
command_t os_pingspam = { "PINGSPAM", "Spam a user with pings from every service, plus some bonus notices.", PRIV_OMODE, 1, os_cmd_pingspam, { .path = "contrib/pingspam" } };
|
|
command_t os_autopingspam = { "AUTOPINGSPAM", "Spam connecting users with pings from every service, plus some bonus notices (setting).", PRIV_ADMIN, 1, os_cmd_autopingspam, { .path = "contrib/autopingspam" } };
|
|
|
|
int spamming;
|
|
|
|
void _modinit(module_t *m)
|
|
{
|
|
spamming = 0;
|
|
|
|
service_named_bind_command("operserv", &os_pingspam);
|
|
service_named_bind_command("operserv", &os_autopingspam);
|
|
|
|
hook_add_event("user_add");
|
|
hook_add_user_add(user_add_hook);
|
|
}
|
|
|
|
void _moddeinit(module_unload_intent_t intent)
|
|
{
|
|
service_named_unbind_command("operserv", &os_pingspam);
|
|
service_named_unbind_command("operserv", &os_autopingspam);
|
|
hook_del_user_add(user_add_hook);
|
|
}
|
|
|
|
static void user_add_hook(hook_user_nick_t *data)
|
|
{
|
|
user_t *u;
|
|
|
|
u = data->u;
|
|
if (u == NULL)
|
|
return;
|
|
if (is_internal_client(u))
|
|
return;
|
|
if (spamming)
|
|
pingspam(u);
|
|
}
|
|
|
|
static void os_cmd_pingspam(sourceinfo_t *si, int parc, char *parv[])
|
|
{
|
|
char *target = parv[0];
|
|
user_t *u;
|
|
|
|
if(!target)
|
|
{
|
|
command_fail(si, fault_badparams, "Usage: \2PINGSPAM\2 <target>");
|
|
return;
|
|
}
|
|
|
|
if(!(u = user_find_named(target)))
|
|
{
|
|
command_fail(si, fault_nosuch_target, "\2%s\2 is not on the network", target);
|
|
return;
|
|
}
|
|
|
|
pingspam(u);
|
|
command_success_nodata(si, "\2%s\2 has been pwned.", target);
|
|
logcommand(si, CMDLOG_ADMIN, "PINGSPAM: \2%s\2", target);
|
|
}
|
|
|
|
static void os_cmd_autopingspam(sourceinfo_t *si, int parc, char *parv[])
|
|
{
|
|
char *mode = parv[0];
|
|
|
|
if(!mode)
|
|
{
|
|
command_success_nodata(si, "Auto-pingspam is currently \2%s\2", spamming ? "ON" : "OFF");
|
|
return;
|
|
}
|
|
|
|
if(strcasecmp(mode, "on") == 0 || atoi(mode))
|
|
{
|
|
spamming = 1;
|
|
command_success_nodata(si, "Auto-pingspam is now \2ON\2");
|
|
}else{
|
|
spamming = 0;
|
|
command_success_nodata(si, "Auto-pingspam is now \2OFF\2");
|
|
}
|
|
}
|
|
|
|
void pingspam(user_t *u)
|
|
{
|
|
user_t *sptr;
|
|
mowgli_node_t *n;
|
|
int i;
|
|
service_t *svs;
|
|
|
|
if((svs = service_find("global")) != NULL)
|
|
for(i = 0;i < 6;i++)
|
|
notice(svs->me->nick, u->nick, "%s", notices[rand() % sizeof(notices) / sizeof(char*)]);
|
|
|
|
MOWGLI_ITER_FOREACH(n, me.me->userlist.head)
|
|
{
|
|
sptr = n->data;
|
|
msg(sptr->nick, u->nick, "\001PING %ld%s\001",
|
|
time(NULL),
|
|
phrases[rand() % sizeof(phrases) / sizeof(char*)]
|
|
);
|
|
}
|
|
}
|
|
|
|
/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs
|
|
* vim:ts=8
|
|
* vim:sw=8
|
|
* vim:noexpandtab
|
|
*/
|