Sunucunuz üzerinde noaction modülü ile AME ve ME komutlarını kısıtlamanız mümkün olacaktır. Şu anda ilgili modülde sadece operlerin kullanılmasına izin verilmiş, bu komutları isterseniz rumuzu şifreli olan kullanıcılara kullandırtabilirsiniz isterseniz de oper üstü yetkililer içinde değiştirebilirsiniz.
Örnek Rumuzu kayıtlı kullanıcılar için,
!IsAnOper(sptr) satırını !IsARegNick(sptr) şeklinde değiştirirseniz sunucuda sadece kayıtlı olan kişiler kullanabilir.
Örnek Services Admin için,
!IsAnOper(sptr) satırını IsSAdmin(sptr) olarak değiştirmeniz gerekmektedir.
Örnek Network Admin için,
!IsAnOper(sptr) satırını !IsNetAdmin(sptr) şeklinde değiştirmeniz halinde ilgili komutları sadece network adminlerin kullanmasını sağlamış olursunuz.
Böylece kullanılan koşulların azda olsa, ne işe yaradığınıda öğrenmiş oldunuz diye düşünüyorum.
m_action.c modülü;
Kod :
/**************************************************
* Channel message that disables CTCP *
* ACTION's (/me's or /ame's) on channels. *
* Diablo [email protected] *
* Version 1.0 *
**************************************************/
#include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "proto.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
static char *noaction_msg = NULL;
ModuleInfo NoActionModInfo;
static Hook *CheckChanMsg = NULL, *HookConfRun = NULL, *HookConfTest = NULL;
DLLFUNC char *m_noaction(aClient *, aClient *, aChannel *, char *, int);
ModuleHeader Mod_Header
= {
"m_noaction v1.0",
"Channel message that disables CTCP ACTION's",
"Diablo",
"3.2-b8-1",
NULL
};
DLLFUNC int Mod_Test(ModuleInfo *modinfo)
{
return MOD_SUCCESS;
}
DLLFUNC int Mod_Init(ModuleInfo *modinfo)
{
noaction_msg = strdup("Sending of actions has been disabled.");
CheckChanMsg = HookAddPCharEx(NoActionModInfo.handle, HOOKTYPE_CHANMSG, m_noaction);
return MOD_SUCCESS;
}
DLLFUNC int Mod_Load(int module_load)
{
return MOD_SUCCESS;
}
DLLFUNC int Mod_Unload(int module_unload)
{
return MOD_SUCCESS;
}
DLLFUNC char *m_noaction(aClient *cptr, aClient *sptr, aChannel *chptr, char *text, int notice)
{
if (!IsAnOper(sptr) && !IsULine(sptr) && !IsServer(sptr) && *text == 1 && !myncmp(text+1, "ACTION ", 7))
{
sendto_one(sptr, ":%s NOTICE %s :%s %s", me.name, sptr->name, chptr->chname, noaction_msg);
return NULL;
} else
return text;
}
“İnsanların en hayırlısı, insanlara faydalı olandır”. H.Ş.