Kendi sunucumda aralara karekterler eklenerek yapılan saldırıları önlemenin yöntemini yine ircforumlarında paylaşılan bir modüle ile çözdüm.. Modül orjinalde helper ve operleri muaf tuttuğu için bunu dahada genişleterek +z modunu alan kullanıcılar ve kayıtlı rumuzları ekledim.. Genel olarak sunucuya bu tarz saldırı yapan nickler kayıtsız olduğu için kayıtlı kullanıcıların zarar görmesini engellemek için onları muaf tuttum.. Böylece sunucu üzerinde kayıtlı durumda olan oyun botları
vb hiçbir sistem bu modülden etkilenmiyor.Umarım birçok arkadaşımızın işini görür.
case '$':
case '*':
case '~':
case '/':
case '{':
case '}':
case '`':
case '|':
case '<':
case '>':
case '^':
case '+':
case ';':
case '£':
case '%':
case '_':
bölümünden yasaklanmasını istemediğiniz karekterleri silebilirsiniz veya yeni yasaklı karekterler ekleyebilirsiniz..
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
#define Module "m_illegal"
#define Aciklama "illegal Karakter Korumasi By EceLMeriC"
#define Unversion "3.2-b8-1"
static Hook *KullaniciOzeli, *KanalGeneli;
static char *kullanici_ozeli(aClient *, aClient *, aClient *, char *, int);
static char *kanal_geneli(aClient *, aChannel *, aClient *, char *, int);
ModuleHeader MOD_HEADER(m_illegal)
= {
Module,
Aciklama,
Aciklama,
Unversion,
NULL
};
DLLFUNC int MOD_INIT(m_illegal)(ModuleInfo *modinfo)
{
KullaniciOzeli = HookAddPCharEx(modinfo->handle, HOOKTYPE_USERMSG, kullanici_ozeli);
KanalGeneli = HookAddPCharEx(modinfo->handle, HOOKTYPE_CHANMSG, kanal_geneli);
return MOD_SUCCESS;
}
DLLFUNC int MOD_LOAD(m_illegal)(int module_load)
{
return MOD_SUCCESS;
}
DLLFUNC int MOD_UNLOAD(m_illegal)(int module_unload)
{
return MOD_SUCCESS;
}
static char *illegal_karakter(char *eco)
{
char *list;
for (list = eco; *list; *list++)
switch(*list) {
case '$':
case '*':
case '~':
case '/':
case '{':
case '}':
case '`':
case '|':
case '<':
case '>':
case '^':
case '+':
case ';':
case '£':
case '%':
case '_':
return eco;
}
}
static char *kullanici_ozeli(aClient *sptr, aClient *cptr, aClient *ilgl, char *eco, int notice)
{
if (IsOper(sptr) || IsHelpOp(sptr) || IsARegNick(sptr) || IsULine(sptr) || IsServer(sptr))
return eco;
if (illegal_karakter(eco)) {
sendto_one(sptr, ":%s NOTICE %s :Kullanici Ozeli, illagal Karakter Kullanimina Kapalidir.", me.name, sptr->name);
return 0;
}
return eco;
}
static char *kanal_geneli(aClient *sptr, aChannel *chptr, aClient *ilgl, char *eco, int notice)
{
if (IsOper(sptr) || IsHelpOp(sptr) || IsARegNick(sptr) || IsULine(sptr) || IsServer(sptr))
return eco;
if (illegal_karakter(eco)) {
sendto_one(sptr, ":%s NOTICE %s :Kanal Geneli, illagal Karakter Kullanimina Kapalidir.", me.name, sptr->name);
return 0;
}
return eco;
}
TEST olarak IRc.Muhabbet.Com.TR Sunucusunu Kullanabilirsiniz..
Not: Modülün kodlanması ile ilgim yoktur.. Sadece IsARegNick(sptr) || IsULine(sptr) || IsServer(sptr)) satırını ben ekledim
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.