![]() |
|
|||||||
| Kayıt Ol | S.S.S. | Üye Listesi | Banlı Üyeler | Banlı Kullanıcılar | Arama | Bugünün Mesajları | Forumları Okundu Olarak İşaretle |
![]() |
|
|
|
LinkBack | Seçenekler | Stil |
|
|
#1 (permalink) |
![]()
Giriş Tarihi: 03-18-10
Yer: Cehennem.. Mesajlar: 565 IRC: Web: www.mircmirc.com İlgi Alanı: İtibar Gücü: 40 Rep Puanı : 762 Rep Derecesi : ![]() ![]() ![]() ![]() ![]() ![]() |
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 :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:
#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;
}
__________________
sus. sakın konuşma çünkü konuşursan sana inanırım yalan olduğunu bilirim ama yinede sana inanırım onun için sus konuşma yaşanan onca şeyden sonra beni sevdiğini bile söylesen yalan olduğunu adım gibi bilirim ama yinede inanırım çünkü ben ben seni öylesine değil ölesiye sevdim... |
|
|
|
![]() |
| Etiketler |
| koruması, norepeatc, tekrar |
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| Seçenekler | |
| Stil | |
|
|
| Lisans | Bağlantılar | İstatistik | ||
|
IRCGundem.Com, vBulletin® altyapısını kullanarak tasarlanan ve kullanıcılarına başta IRC olmak üzere, çeşitli alanlarda bilgi edinme olanağı sunan bir IRCForum sitesidir. Copyright © 2000 - 2010, Jelsoft Enterprises Ltd. IRCGundem.Com © @ 2010 Forumumuzdaki materyallerin, farklı sitelerde kaynak gösterilmeden yayımlanması suçtur. Arama motorları üzerinde hizmet verdiğimiz kelimeler; irc, irc forum, ircforumlari, irc forumları, mirc, ircfrm ve web site tanıtımları kelimeleridir. Site başlığımızsa; IRC, IRC Forum, IRC Forumu ve IRC Forumları sözcükleriyle oluşturulmuştur. |
Dış bağlantı yoluyla desteklenen IRC forum sitesi: irc |