Simdi söyle bir açıklama yapayım
isteğim irc.site.com giren kisi özelere yazamasın
web.site.com giren kisi herkeze yaza bilsin. özel
bazı kodlar paylaşımı yapmılmış burada 1 kodu denedim services cevap vermiyordu sifre girilmiyordu
2 ci bir kod denedim onda hup yazinca ana server kapaniyor.
özelde flood saldırı oluyor. karantina odasına giren botlar odalara giremiyor ama özelere mesaj gönderiyor
kayitsiz nick yazmasın gibi bir kod ekledim olmadı çünkü hup server kullanıyorum unreal kapaniyor veya services cevap vermiyor ekledigim eklentilerde..
Örnek vermek istiyorum. : özel mesaj yazmayı engeleme gibi kodlar ekliyorum hup yazinca unrel kapaniyor
Altaki bu modül özel mesajı yazmayı engemek için düzenlesek işe yarar mı ?
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 ACIKLAMA "Kayıtsız rumuzlar için kanalda konuşma engelleme. by Entrance"
static char *m_mesajengeli(aClient *cptr, aClient *sptr, aChannel *chptr, char *text, int notice);
static int kanal_is_ok(aClient *, aChannel *, char *, int, int);
#define FLAG_MODE 'Y'
Cmode_t EXTCMODE_NOCHANMSG= 0L;
Cmode *NOCHANMSGMODE = NULL;
ModuleHeader MOD_HEADER(m_mesajengeli) = {
"m_mesajengeli.c",
ACIKLAMA,
ACIKLAMA,
"3.2-b8-1",
NULL
};
DLLFUNC int MOD_INIT(m_mesajengeli)(ModuleInfo *modinfo) {
CmodeInfo req;
memset(&req, 0, sizeof(req));
req.paracount = 0;
req.is_ok = kanal_is_ok;
req.flag = FLAG_MODE;
NOCHANMSGMODE = CmodeAdd(modinfo->handle, req, &EXTCMODE_NOCHANMSG);
if (!NOCHANMSGMODE) {
MOD_UNLOAD(m_mesajengeli)(0);
return MOD_FAILED;
}
HookAddPCharEx(modinfo->handle, HOOKTYPE_CHANMSG, m_mesajengeli);
return MOD_SUCCESS;
}
DLLFUNC int MOD_LOAD(m_mesajengeli)(int module_load) {
return MOD_SUCCESS;
}
DLLFUNC int MOD_UNLOAD(m_mesajengeli)(int module_unload) {
return MOD_SUCCESS;
}
static int kanal_is_ok(aClient *sptr, aChannel *chptr, char *para, int type, int what) {
if ((type == EXCHK_ACCESS) || (type == EXCHK_ACCESS_ERR)) {
if (IsPerson(sptr) && !IsULine(sptr)) {
if (!IsOper(sptr) && !IsARegNick(sptr)) {
if (type == EXCHK_ACCESS_ERR)
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, sptr->name);
return EX_ALWAYS_DENY;
}
}
return EX_ALLOW;
}
return 0;
}
static char *m_mesajengeli(aClient *cptr, aClient *sptr, aChannel *kanal, char *mesaj, int notice)
{
if (kanal != NULL && !IsARegNick(sptr) && !IsOper(sptr) && (kanal->mode.extmode & EXTCMODE_NOCHANMSG)) {
sendnotice(sptr, "[\2%s\2] kanalına mesaj göndermek için, lütfen nickinizi kaydedin. Kanal modu: (\2+Y\2)", kanal->chname);
return NULL;
} else
return mesaj;
}