Unreal Nick değiştirmeyi süreli kısıtlama modülü

Aytac

nicktag
Yönetici
Developer
Katılım
4 Şub 2020
Mesajlar
379
Tepkime puanı
50
Puanları
28
Konum
ircland
Web sitesi
www.ircalem.net
Modulun amacı, sunucuya ilk bağlantıyı yaptığımız zaman belirli bir süre ile nickin değiştirilmesini kısıtlamaktır.

** Nick değiştirmek için lütfen 20 saniye bekleyin.

Süre dolduktan sonra nickinizi değiştirebiliyorsunuz.

unrealircd.conf set bloğuna nickdelay 20; satırını ekliyoruz. Süreyi saniye cinsinden istediğiniz gibi değiştirebilirsiniz. Modulu ekte paylaşıyorum.

NOT: Modul; Gottem rumuzlu yabancı bir programcının kodladığı modullerde ki kaynak kodlar kullanılarak düzenlenmiştir.
(Unreal3.2.10.6 da test edilmiştir.)

m_nickdelay.c modülü;

Kod:
/* Gottem'in kodladığı modullerde ki parça kodlardan esinlenerek editlenmiştir. */
/* Düzenleme > dEathLeSs */

#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"
#include "proto.h"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif

static Cmdoverride *m_nickdelay_override = NULL;
static ModuleInfo *m_nickdelay_modinfo = NULL;
#define MYCONF "nickdelay"
#define ACIKLAMA "Sunucu girişinde nick değiştirmeyi süreli kısıtlama"
#define MODULE "m_nickdelay"

DLLFUNC int m_nickdelay(Cmdoverride *anoverride, aClient *cptr, aClient *sptr, int parc, char *parv[]);
DLLFUNC int nickdelay_configtest(ConfigFile *cf, ConfigEntry *ce, int type, int *errs);
DLLFUNC int nickdelay_configrun(ConfigFile *cf, ConfigEntry *ce, int type);
int nickdelay_rehash(void);
int muhDelay = 10;

ModuleHeader MOD_HEADER(m_nickdelay)
  = {
	MODULE,
	ACIKLAMA, 
	ACIKLAMA, 
	"3.2-b8-1",
	NULL
    };

DLLFUNC int MOD_TEST(m_nickdelay)(ModuleInfo *modinfo) {
	
	HookAddEx(modinfo->handle, HOOKTYPE_CONFIGTEST, nickdelay_configtest);
	return MOD_SUCCESS;
}


DLLFUNC int MOD_INIT(m_nickdelay)(ModuleInfo *modinfo)
{
	m_nickdelay_modinfo = modinfo;
	HookAddEx(modinfo->handle, HOOKTYPE_REHASH, nickdelay_rehash);
	HookAddEx(modinfo->handle, HOOKTYPE_CONFIGRUN, nickdelay_configrun);
	return MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(m_nickdelay)(int module_load)
{
	m_nickdelay_override = CmdoverrideAdd(m_nickdelay_modinfo->handle, "NICK", m_nickdelay);
	if (!m_nickdelay_override)
	{
		sendto_realops("m_nickdelay: Override Eklenemedi: %s", ModuleGetErrorStr(m_nickdelay_modinfo->handle));
		return MOD_FAILED;
	}
	return MOD_SUCCESS;
}

DLLFUNC int MOD_UNLOAD(m_nickdelay)(int module_unload)
{
	CmdoverrideDel(m_nickdelay_override);
	return MOD_SUCCESS;
}

DLLFUNC int m_nickdelay(Cmdoverride *anoverride, aClient *cptr, aClient *sptr, int parc, char *parv[])
{
	if (MyClient(sptr) && !IsOper(sptr) && !IsULine(sptr)  && (TStime() - sptr->firsttime < muhDelay))

	{
		sendnotice(sptr, "*** Nick değiştirmek için lütfen \2%d\2 saniye bekleyin.", muhDelay);
		return 0;
	}

	return CallCmdoverride(m_nickdelay_override, cptr, sptr, parc, parv);
}

DLLFUNC int nickdelay_configtest(ConfigFile *cf, ConfigEntry *ce, int type, int *errs) {
	int errors = 0;
	int i; 
	
	if(type != CONFIG_SET)
		return 0; 

	if(!ce || !ce->ce_varname)
		return 0;

	if(strcmp(ce->ce_varname, MYCONF))
		return 0;

	if(!ce->ce_vardata || !strlen(ce->ce_vardata)) {
		config_error("%s:%i: no argument given for set::%s (should be an integer of >= 10)", ce->ce_fileptr->cf_filename, ce->ce_varlinenum, MYCONF); // Rep0t error
		errors++; 
		*errs = errors;
		return -1;
	}

	for(i = 0; ce->ce_vardata[i]; i++) {
		if(!isdigit(ce->ce_vardata[i])) {
			config_error("%s:%i: set::%s must be an integer of >= 10", ce->ce_fileptr->cf_filename, ce->ce_varlinenum, MYCONF);
			errors++; 
			break;
		}
	}
	if(!errors && atoi(ce->ce_vardata) < 10) {
		config_error("%s:%i: set::%s must be an integer of >= 10", ce->ce_fileptr->cf_filename, ce->ce_varlinenum, MYCONF);
		errors++; 
	}

	*errs = errors;
	return errors ? -1 : 1; 
}


DLLFUNC int nickdelay_configrun(ConfigFile *cf, ConfigEntry *ce, int type) {

	if(type != CONFIG_SET)
		return 0; 

	if(!ce || !ce->ce_varname || !ce->ce_vardata)
		return 0;

	if(strcmp(ce->ce_varname, MYCONF))
		return 0;

	muhDelay = atoi(ce->ce_vardata);
	return 1;
}

int nickdelay_rehash(void) {
	muhDelay = 60;
	return HOOK_CONTINUE;
}
 
Üst