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

 Kayıt ol  Topluluk
Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 09 Mayıs 2008, 20:33   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
tekrar koruması norepeat.c




Merhaba değerli arkadaşlar. elimde sunucuda tekrar koruması sağlayan bir modul var. bu modulu aldım inceledim bazı dezavantajları var

kodlamadan anlayan arkadaslarımdan bazı ricalarım olacak yapılabilirse sevinirim. bu modul daha önce verildi mi bilmiyorum forumda arattırdım bulamadım. umarım işinize yarar arkadaslar. Moduldeki aksaklıklardan biri. gülücük işaretini
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
:d i de tekrardan sayması ve engellemesidir. ayrıca tekrar icin sabit bir süre konmuşmu anlamadım ikinci tekrarı engelledigini biliyorum denedim. ben bu modul için bir set blogu oluştararak şu kadar zaman icin de şu kadar tekrar yapılırsa bir sonraki tekrar icin şukarda süre beklet gibi bir seçenek yaratmanın iyi olacağını dusunuyorum. böylece sunucularda flood engellenmiş olacak en azından tekrar bazında. yardımlarınızı bekliyorum tşkler.



Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#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 STRIPBADWORDS #include "badwords.h" #endif #ifdef _WIN32 #include "version.h" #endif // Channel Mode Flag. Change Z to whatever you want but MUST be one character. #define FLAG_NOREPEAT 'Z' #define IsNoRepeat(x) ((x)->mode.extmode & MODE_NOREPEAT) Cmode_t MODE_NOREPEAT = 0L; Cmode *ModeNoRepeat; static char *cb_chanmsg(aClient *, aClient *, aChannel *, char *, int); static Hook *HookChanMsg; typedef struct _norepeat norepeat; struct _norepeat { norepeat *prev,*next; aClient *cptr; aChannel *chptr; char msg[BUFSIZE]; }; norepeat *norepeat_last; norepeat *new_norepeat(void); void remove_norepeat(norepeat *); norepeat *find_norepeat(aClient *,aChannel *); ModuleHeader MOD_HEADER(NoRepeat) = { "NoRepeat", "v0.1", "+Z No repeat by penna", "3.2-b8-1", NULL }; DLLFUNC int MOD_INIT(NoRepeat)(ModuleInfo *modinfo) { CmodeInfo ModeNR; #ifndef STATIC_LINKING ModuleSetOptions(modinfo->handle, MOD_OPT_PERM); #endif memset(&ModeNoRepeat, 0, sizeof ModeNoRepeat); ModeNR.paracount = 0; ModeNR.is_ok = extcmode_default_requirechop; ModeNR.flag = FLAG_NOREPEAT; ModeNoRepeat = CmodeAdd(modinfo->handle, ModeNR, &MODE_NOREPEAT); #ifndef STATIC_LINKING if (ModuleGetError(modinfo->handle) != MODERR_NOERROR || !ModeNoRepeat) { config_error("Error adding channel mode +%c when loading module %s: %s", ModeNR.flag,MOD_HEADER(NoRepeat).name,ModuleGetErrorStr(modinfo->handle)); } #else if (!ModeNoRepeat) { config_error("Error adding channel mode +%c when loading module %s:", ModeNR.flag,MOD_HEADER(NoRepeat).name); } #endif HookChanMsg = HookAddPCharEx(modinfo->handle,HOOKTYPE_CHANMSG,cb_chanmsg); return MOD_SUCCESS; } DLLFUNC int MOD_LOAD(NoRepeat)(int module_load) { return MOD_SUCCESS; } DLLFUNC int MOD_UNLOAD(NoRepeat)(int module_unload) { if (ModeNoRepeat) CmodeDel(ModeNoRepeat); HookDel(HookChanMsg); return MOD_SUCCESS; } DLLFUNC char *cb_chanmsg(aClient *cptr, aClient *sptr, aChannel *chptr, char *text, int notice) { static char retbuf[4096]; norepeat *nr; if (!IsNoRepeat(chptr) || !MyClient(sptr)) return text; nr = find_norepeat(cptr,chptr); if (nr == NULL) { nr = new_norepeat(); nr->cptr = cptr; nr->chptr = chptr; } if (!strcmp(nr->msg,text)) return NULL; strcpy(nr->msg,text); return text; } norepeat *new_norepeat(void) { norepeat *nr; nr = (norepeat *)malloc(sizeof(norepeat)); memset(nr,0, sizeof(norepeat)); nr->next = norepeat_last; norepeat_last = nr; if (nr->next) nr->next->prev = nr; return nr; } void remove_norepeat(norepeat *nr) { if (nr->prev) nr->prev->next = nr->next; else { norepeat_last = nr->next; if (norepeat_last) norepeat_last->prev = NULL; } if (nr->next) nr->next->prev = nr->prev; free(nr); nr = NULL; } norepeat *find_norepeat(aClient *cptr,aChannel *chptr) { norepeat *nr; for (nr = norepeat_last;nr;nr = nr->next) { if ((nr->cptr == cptr) && (nr->chptr == chptr)) return nr; } return NULL; }


 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Alt 26 Mayıs 2008, 23:26   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Yanıt: tekrar koruması norepeat.c




+Z modumu bu?

 
Alıntı ile Cevapla

Cevapla

Etiketler
korumasi, koruması, norepeatc, tekrar


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

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 Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Tekrar koruması Darnasus mIRC Scripting Sorunları 2 15 Kasım 2013 09:56
Tekrar Koruması moonman mIRC Scripting Sorunları 7 28 Haziran 2013 13:17
Tekrar Koruması moonman mIRC Scripting Sorunları 1 18 Şubat 2012 22:16
Tekrar koruması Cyptm mIRC Scripting Sorunları 1 25 Nisan 2008 16:21