IRCForumu.Net - Türkiye'nin IRC ve mIRC Kullanıcılarının Buluştuğu Forum

IRCForumu.Net - Türkiye'nin IRC ve mIRC Kullanıcılarının Buluştuğu Forum (https://www.ircforumu.net/)
-   Unreal - Parça Kodlar (https://www.ircforumu.net/unreal-parca-kodlar/)
-   -   Adwords Modülüne Küçük Bir Eklenti (https://www.ircforumu.net/unreal-parca-kodlar/5702-adwords-modulune-kucuk-bir-eklenti.html)

immortaL 28 Mayıs 2017 02:57

Adwords Modülüne Küçük Bir Eklenti
 
Merhabalar.

Adwords modülünü hepiniz bilmektesiniz. Conf dosyasından yasaklanan kelimelerin sunucuda kullanımını engeller ve kullanılanları da belirtilen kanala yansıtır. Yapacağımız editle o an sunucuda olmasanız dahi siz yokken olan spamları görebileceksiniz.

Sadece adwords.c modülümüzde işlem yapıyoruz.


Kod:

#define MSG_ADWORDS                "ADWORDS"
#define TOK_ADWORDS                "WO"


altına,

Kod:

#define MSG_SPAMLOKU                "SPAMLOGOKU"
#define TOK_SPAMLOKU                "SLOKU"
#define MSG_SPAMLSIL                "SPAMLOGSIL"
#define TOK_SPAMLSIL                "SLSIL"

ekleyin.

-

Kod:

CmdAdwords        = AddCommand(modinfo->handle, MSG_ADWORDS, TOK_ADWORDS, m_adwords);

altına,

Kod:

CmdAdwords        = AddCommand(modinfo->handle, MSG_SPAMLOKU, TOK_SPAMLOKU, spamlogoku);
        CmdAdwords        = AddCommand(modinfo->handle, MSG_SPAMLSIL, TOK_SPAMLSIL, spamlogsil)


ekleyin.

-

Kod:

/*
 * adword_checkmsg
 * ===============
 *
 * The badword checking stuff was copied from src/badwords.c,
 * I modified it a lot.
 */


altına,


Kod:

static char *FullDate(TS time_in) {
        struct tm *tp = localtime(&time_in);
        if (!tp)
                return NULL;
        memset(&mybuf, 0, sizeof mybuf);
        strftime(mybuf, sizeof mybuf, "%d-%m-%Y - %H:%M:%S", tp);
        return mybuf;
 }


ekleyin.

-

Kod:

for (name = strtoken(&p, tmp, ","); name; name = strtoken(&p, NULL, ","))
                                            if ((chptr = find_channel(name, NullChn)) != NullChn)
                                                SendNotice_channel;



altına,


Kod:

FILE *spamlog;
                        spamlog = fopen("spamlog.db","a+");
                        if (spamlog != NULL) {
                        fprintf(spamlog, "[%s] [ SPAM ] Yapan: %s - Yapilan: %s - Mesaj: %s\n",
                        FullDate(from->lasttime), from->name, to ? to : "", str);
                        fclose(spamlog);
                        }


ekleyin.

-


Kod:

static void adwords_event_kill(char *name)
{
        aClient *cptr;

        if ((cptr = find_person(name, NULL)))
                exit_client(cptr, cptr, &me,
                        myconf.kill_reason ? myconf.kill_reason : DEF_KILL_REASON);
}


altına,


Kod:

int spamlogoku(aClient *sptr){

        if (!IsNetAdmin(sptr))
        {
                sendnotice(sptr,"*** \2%s\2, bu komutu kullanmaya yetkiniz yoktur.", sptr->name);
                return 0;
        }

#define spmoku "spamlog.db"
       
FILE *p;
char buf[BUFSIZE];

p = fopen(spmoku, "r");
sendnotice(sptr,"*** --- Loglanan Spam Listesi ---");
if (p) {
while (fgets(buf, sizeof(buf), p)) {
buf[strlen(buf)-1] = 0;
sendnotice(sptr,"*** %s", buf);
}
fclose(p);
sendnotice(sptr,"*** --- Loglanan Spam Listesi Sonu ---");
} else {
sendnotice(sptr,"*** Henuz bir spam kaydi yok.");
}
}

int spamlogsil(aClient *sptr){


        if (!IsNetAdmin(sptr))
        {
                sendnotice(sptr,"*** \2%s\2, bu komutu kullanmaya yetkiniz yoktur.", sptr->name);
                return 0;
        }
      system("rm -rf spamlog.db");
          sendnotice(sptr,"*** --- Spam Log dosyasi silindi.");
      return 0;
}



ekleyin.

Son olarak da make custommodule MODULEFILE=modulismi şeklinde modülü derleyip rehash çekiyoruz.

Kısaca mantığı anlatayım. Komut erişimlerini NetworkAdmin'e verdim.
Belirtilen kanala yansıyan spamlar, spamlog.db adında bir dosyaya kaydedilir.
/spamlogoku komutuyla da listeye kaydedilen spamları, gün-ay-yıl + saat-dakika-saniye : yapan-yapılan-yaptığımesaj şeklinde size gösterir.

Liste bir zaman sonra bayağı şişeceği için /spamlogsil komutunu yaptım. Bu komutla da listeyi, yani spamlog.db dosyasını sıfırlayabilirsiniz.

İyi forumlar.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 09:57.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.6.0
Copyright ©2005 - 2023 IRCForumu.Net - Tüm Hakları Saklıdır.