Eklediğiniz badnickleri, sunucuya girişte (kullanici henüz kanala girmeden) işleme sokar ve badnickleri yalnizca belirlenen cinsel kanallara sokar. Bunun dişinda hiç bir kanala sokmaz.
Badnicklere bununla ilgili bir bilgi yazisi gönderilerek, /NickDegis komutu ile diğer kanallara girebileceği söylenir.
Badnick, /NickDegis komutunu kullaninca (otomatikmen) cinsellik kanallarindan cikartilip, (partall) nicki değiştirilerek (otomatikmen) belirlenen global kanallara sokulur..
/NickDegis komutu ile otomatik verilecek nickguess;
snprintf(guestnick, NICKLEN, "misafirb%d", getrandom32());
misafirb ‘yi istediğiniz şekilde değiştirebilirsiniz. Misafirb olarak belirlenmesinin amaci, badnickten dönme bir nick olduğunun anlaşilmasidir.
Kişinin alacaği nick misafirb32329329 gibi nickler olacaktir.
#include "config.h" #include "struct.h" #include "common.h" #include "sys.h" #include "numeric.h" #include "msg.h" #include "channel.h" #include <time.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef _WIN32 #include <io.h> #endif #include <fcntl.h> #include "h.h" #ifdef _WIN32 #include "version.h" #endif #define MSG_BADNICK "BADNICK" #define TOK_BADNICK "BN" #define MSG_nickdegis "nickdegis" #define TOK_nickdegis "ND" static Hook *Connick; static int m_badnick(aClient *, aChannel *); static int m_nojoin(aClient *, aChannel *); DLLFUNC int m_nickdegis(aClient *sptr, char *parv[]); aChannel *chptr; char *xparv[3], chbuf[CHANNELLEN + 16], buf[2048]="0 "; //Log kanali #define kontrol "#botkontrol" //Mesaj gonderen nick #define Mesajci "toXic.NET" //Mesaj gonderim sekli. #define gonderimsekli "NOTICE" //Alinacak kanallar char *kanal = "#***,#cinsellik"; char *i[3], channels[512]; //Global Kanallar char *kanals = "#toXic,#Sohbet"; char *tox[3], channels[512]; //bilgi #define aciklama1 "Kullanmis oldugunuz nick sakincalidir." #define aciklama2 "Bu Nedenle, Cinsellik Kanallarina aktariliyorsunuz." #define aciklama3 "Baska kanallara girmek icin, 2/Nick Yeninick2 Komutu ile degistirebilirsiniz." ModuleHeader MOD_HEADER(m_badnickname) = { "m_badnick", "Badnick koruma (toXic)", "badnickJoin Modulu v2 (toXic", "3.2-b8-1", NULL }; DLLFUNC int MOD_INIT(m_badnickname)(ModuleInfo *modinfo) { Connick = HookAddEx(modinfo->handle, HOOKTYPE_LOCAL_CONNECT, m_badnick); HookAddEx(modinfo->handle, HOOKTYPE_PRE_LOCAL_JOIN, m_nojoin); add_Command(MSG_nickdegis, TOK_nickdegis, m_nickdegis, 1); return MOD_SUCCESS; } DLLFUNC int MOD_LOAD(m_badnickname)(int module_load) { return MOD_SUCCESS; } DLLFUNC int MOD_UNLOAD(m_badnickname)(int module_unload) { return MOD_SUCCESS; } static char *badlistesi[] = { "Badnick1", "Badnick2", "badnick3", "badnick4", NULL }; static int bad_listesi(char *nick) { char **blist; for (blist=badlistesi; *blist; *blist++) { if (strstr(nick, *blist)) return 1; } return 0; } static int m_badnick(aClient *sptr, aChannel *chptr) { if (bad_listesi(sptr->name)) { if ((chptr = find_channel(kontrol, NullChn)) != NullChn) sendto_channel_butone(&me, &me, chptr, ":Badnick PRIVMSG %s : Badnick Girisi %s kanallara aktarildi.", kontrol, sptr->name); sendto_one(sptr, ":%s %s %s %s" , Mesajci, gonderimsekli, sptr->name, aciklama1); sendto_one(sptr, ":%s %s %s %s" , Mesajci, gonderimsekli, sptr->name, aciklama2); sendto_one(sptr, ":%s %s %s %s" , Mesajci, gonderimsekli, sptr->name, aciklama3); strlcpy(channels, kanal, sizeof(channels)); i[0] = sptr->name; i[1] = channels; i[2] = NULL; do_cmd(sptr, sptr, "JOIN", 2, i); return 0; } } static int m_nojoin(aClient *sptr, aChannel *chptr) { aClient *acptr; if (bad_listesi(sptr->name)) { if (stricmp(chptr->chname,"#Cinsellik")) { if (stricmp(chptr->chname,"#***")) { sendto_one(sptr, ":%s %s %s Kontrol ediliyorsunuz..", Mesajci, gonderimsekli, sptr->name); sendto_one(sptr, ":%s %s %s Baska kanallara giremezsiniz. ", Mesajci, gonderimsekli, sptr->name); sendto_one(sptr, ":%s %s %s Eger girmek istiyorsaniz lutfen nickinizi degistiriniz.", Mesajci, gonderimsekli, sptr->name); sendto_one(sptr, ":%s %s %s Aksi takdirde, 2/NickDegis2 komutunu kullanarak 2otomatikmen2 nickinizi degistirebilirsiniz.", Mesajci, gonderimsekli, sptr->name); sendto_one(sptr, ":%s %s %s Bu komutu kullandiktan sonra otomatikmen 2 kanallara aktarililacaksiniz.", Mesajci, gonderimsekli, sptr->name); return HOOK_DENY; } } } } DLLFUNC int m_nickdegis(aClient *sptr, char *parv[]) { if (bad_listesi(sptr->name)) { //sendto_channel_butone(&me, &me, chptr, ":Badnick PRIVMSG %s :2%s2 Kullanicisi nickini degisip kanallara aktarildi.", kontrol); sendto_one(sptr, ":%s %s %s Nickiniz degistiriliyor.", Mesajci, gonderimsekli, sptr->name); char guestnick[NICKLEN]; char *ibo[3]; snprintf(guestnick, NICKLEN, "misafirb%d", getrandom32()); ibo[0] = sptr->name; ibo[1] = guestnick; ibo[2] = NULL; do_cmd(sptr, sptr, "NICK", 2, ibo); sendto_one(sptr, ":%s %s %s Nickiniz 2%s2 olarak degistirilmistir.", Mesajci, gonderimsekli, sptr->name, sptr->name); aClient *cptr; if( !MyConnect(sptr) ) { sendto_serv_butone(cptr, ":%s ND %s", sptr->name, parv[1], parv[2]); return 0; } xparv[0] = sptr->name; xparv[1] = buf; xparv[2] = NULL; int toxic; toxic = do_cmd(sptr, sptr, "JOIN", 2, xparv); strlcpy(channels, kanals, sizeof(channels)); tox[0] = sptr->name; tox[1] = channels; tox[2] = NULL; do_cmd(sptr, sptr, "JOIN", 2, tox); } else { sendto_one(sptr, ":%s %s %s Bu komutu yalnizca cinsel kullanicilar kullanabilir.", Mesajci, gonderimsekli, sptr->name); } }