IRCALEM.Com Genel Forum, IRC Forumu IF - Genel IRCd (Sunucu, Servis, Botlar, Korumalar) UnrealIRCd Unreal3.2.x - Modülleri Unreal Nick değiştirmeyi süreli kısıtlama modülü
irc

Unreal Nick değiştirmeyi süreli kısıtlama modülü
Aytac
Unreal Nick değiştirmeyi süreli kısıtlama modülü
0
507
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Etiketler
kısıtlama modülü süreli değiştirmeyi unreal nick

Bu konuyu görüntüleyen kullanıcı(lar):1 Ziyaretçi
Şuan Offine!
Şuan Offine!
Aytac Administrator
********
Proje Sorumlusu

  • Üyelik tarihi    04.02.2020
  • Konum  78 Karabük
  • Konular351
  • Mesajlar364
  • Verilen beğeni8 in 5 posts
  • Alınan beğeni6
  • Rep puanı 6

Modulun amacı, sunucuya ilk bağlantıyı yaptığımız zaman belirli bir süre ile nickin değiştirilmesini kısıtlamaktır.

Alıntı: ** 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;
}
“İnsanların en hayırlısı, insanlara faydalı olandır”. H.Ş.


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  #Karantina Girişli Joindelay Modülü Aytac 6 1,279 03.04.2021, 12:36
Son Mesaj: iSyan
  Quarantine modülü Aytac 0 409 12.04.2020, 16:25
Son Mesaj: Aytac
  NICK - IDENTD aynı ise değiştirmek Aytac 0 465 12.04.2020, 16:18
Son Mesaj: Aytac
  Belirtilen Komutları Loglama Modülü Aytac 0 522 12.04.2020, 16:00
Son Mesaj: Aytac
  Kanal, özel, nick değişimleri vb işlemleri loglama Aytac 0 500 12.04.2020, 15:57
Son Mesaj: Aytac

Foruma Git: