int badwords (Nick *nptr, User *uptr, Chan *chptr, char *parv[]) { char cmd[1024]; bzero(cmd,1024); char *badword_list[] = {"rezal"}; unsigned int i; strncpy(cmd,parv[1],1023); if (!Strcmp(nptr->nick,"target0")) { return MOD_CONTINUE; } for (i=0;i<strlen(cmd);i++) { cmd[i] = tolower(cmd[i]); if (cmd[i] == 'é' || cmd[i] == 'è') cmd[i] = 'e'; if (cmd[i] == 'à') cmd[i] = 'a'; } for (i=0;i<(sizeof(badword_list)/sizeof(char *));i++) { if (strstr(cmd,badword_list[i])) { killuser(nptr->nick,"Et paf, la souris0",me.nick); operlog("Badwords: %s said %s: KILLED",nptr->nick,badword_list[i]); return MOD_STOP; } } return MOD_CONTINUE; }
void versionscan_handler(nick* me, int type, void** args) { nick* sender; Command* cmd; char* cargv[50]; int cargc; vspattern* v; char* p; switch (type) { case LU_PRIVMSG: case LU_SECUREMSG: /* nick */ sender=args[0]; if (!strncmp("\001VERSION", args[1], 8)) { sendnoticetouser(versionscan_nick, sender, "\001VERSION QuakeNet %s v%s.\001", VS_RNDESC, VS_VERSION); return; } cargc=splitline((char*)args[1], cargv, 50, 0); cmd=findcommandintree(versionscan_commands, cargv[0], 1); if (!cmd) { sendnoticetouser(versionscan_nick, sender, "Unknown command."); return; } if ((cmd->level & VS_AUTHED) && !IsAccount(sender)) { sendnoticetouser(versionscan_nick, sender, "Sorry, you need to be authed to use this command."); return; } if ((cmd->level & VS_OPER) && !IsOper(sender)) { sendnoticetouser(versionscan_nick, sender, "Sorry, you need to be opered to use this command."); return; } if (((cmd->level & VS_STAFF) && !IsVersionscanStaff(sender)) || ((cmd->level & VS_GLINE) && !IsVersionscanGlineAccess(sender)) || ((cmd->level & VS_ADMIN) && !IsVersionscanAdmin(sender))) { sendnoticetouser(versionscan_nick, sender, "Sorry, you do not have access to this command."); return; } if (cmd->maxparams < (cargc-1)) { /* We need to do some rejoining */ rejoinline(cargv[cmd->maxparams], cargc-(cmd->maxparams)); cargc=(cmd->maxparams)+1; } (cmd->handler)((void*)sender, cargc-1, &(cargv[1])); break; case LU_PRIVNOTICE: sender=args[0]; if (strncmp("\001VERSION ", args[1], 9)) { break; } if ((p=strchr((char *)args[1] + 9, '\001'))) { *p++='\0'; } if (versionscan_mode == VS_SCAN) { if (IsOper(sender)) { break; } for (v=vspatterns; v; v=v->next) { if (match2strings(v->pattern, (char *)args[1] + 9)) { v->hitcount++; hcount++; switch (v->action) { case VS_WARN: sendnoticetouser(versionscan_nick, sender, "%s", v->data); wcount++; break; case VS_KILL: killuser(versionscan_nick, sender, "%s", v->data); kcount++; break; case VS_GLUSER: glinebynick(sender, 3600, v->data, GLINE_ALWAYS_USER, "versionscan"); gcount++; break; case VS_GLHOST: glinebynick(sender, 3600, v->data, 0, "versionscan"); gcount++; break; default: /* oh dear, something's f****d */ break; } break; } } } else if (versionscan_mode == VS_STAT) { versionscan_addstat((char *)args[1] + 9); } break; case LU_KILLED: versionscan_nick=NULL; scheduleoneshot(time(NULL)+1, &versionscan_createfakeuser, NULL); break; } }