IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   Parca Kodlar (https://www.ircforumlari.net/parca-kodlar/)
-   -   adwords.c Modülüne Küçük Bir Eklenti (https://www.ircforumlari.net/parca-kodlar/771435-adwordsc-modulune-kucuk-bir-eklenti.html)

Emrehan 11 Nisan 2017 14:22

adwords.c 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.

fLayer 11 Nisan 2017 14:37

Cevap: adwords.c Modülüne Küçük Bir Eklenti
 
Alıntı:

Emrehan Nickli Üyeden Alıntı (Mesaj 1041852704)
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.

eline saglık

DarkLove 11 Nisan 2017 23:30

Cevap: adwords.c Modülüne Küçük Bir Eklenti
 
Tebrik ederim Kardesim Eline Emegine Saglık

bilo0202 13 Kasım 2017 00:12

Cevap: adwords.c Modülüne Küçük Bir Eklenti
 
eline saglik


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

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net