IRCForumu - IRC ve mIRC Kullanıcılarının Buluştuğu Forum Sitesi ircforumu




Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 28 Mayıs 2017, 02:57   #1
Çevrimiçi
 
immortaL - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: 07 Mayıs 2016
Üye No: 38
Şehir: Bolu
WebSite: IRCForumu.Net
IRC:
İlgi Alanım: vBulletin
Mesaj Sayısı: 1,284
Aldığı Beğeni: 472
Beğendikleri: 686
@immortaL
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:   Kodu kopyalamak için üzerine çift tıklayın!
#define MSG_ADWORDS "ADWORDS" #define TOK_ADWORDS "WO"


altına,

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#define MSG_SPAMLOKU "SPAMLOGOKU" #define TOK_SPAMLOKU "SLOKU" #define MSG_SPAMLSIL "SPAMLOGSIL" #define TOK_SPAMLSIL "SLSIL"

ekleyin.

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CmdAdwords = AddCommand(modinfo->handle, MSG_ADWORDS, TOK_ADWORDS, m_adwords);


altına,

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CmdAdwords = AddCommand(modinfo->handle, MSG_SPAMLOKU, TOK_SPAMLOKU, spamlogoku); CmdAdwords = AddCommand(modinfo->handle, MSG_SPAMLSIL, TOK_SPAMLSIL, spamlogsil)


ekleyin.

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/* * adword_checkmsg * =============== * * The badword checking stuff was copied from src/badwords.c, * I modified it a lot. */


altına,


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
for (name = strtoken(&p, tmp, ","); name; name = strtoken(&p, NULL, ",")) if ((chptr = find_channel(name, NullChn)) != NullChn) SendNotice_channel;



altına,


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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.
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:   Kodu kopyalamak için üzerine çift tıklayın!
#define MSG_ADWORDS "ADWORDS" #define TOK_ADWORDS "WO"


altına,

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#define MSG_SPAMLOKU "SPAMLOGOKU" #define TOK_SPAMLOKU "SLOKU" #define MSG_SPAMLSIL "SPAMLOGSIL" #define TOK_SPAMLSIL "SLSIL"

ekleyin.

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CmdAdwords = AddCommand(modinfo->handle, MSG_ADWORDS, TOK_ADWORDS, m_adwords);


altına,

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CmdAdwords = AddCommand(modinfo->handle, MSG_SPAMLOKU, TOK_SPAMLOKU, spamlogoku); CmdAdwords = AddCommand(modinfo->handle, MSG_SPAMLSIL, TOK_SPAMLSIL, spamlogsil)


ekleyin.

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/* * adword_checkmsg * =============== * * The badword checking stuff was copied from src/badwords.c, * I modified it a lot. */


altına,


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
for (name = strtoken(&p, tmp, ","); name; name = strtoken(&p, NULL, ",")) if ((chptr = find_channel(name, NullChn)) != NullChn) SendNotice_channel;



altına,


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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.
__________________
  Alıntı ile Cevapla

IRCForumu.Net - Reklam Alanı
ircforumu

Cevapla

Etiketler
adwords, adwords modülüne, bir, eklenti, küçük, modülüne
IRCForumu.Net - Sponsor Bağlantılar
ircforumu


Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık