IRCALEM.Com Genel Forum, IRC Forumu IF - Genel IRCd (Sunucu, Servis, Botlar, Korumalar) UnrealIRCd Unreal3.2.x - Modülleri AME ve AMSG komutlarını engelleme
irc

AME ve AMSG komutlarını engelleme
Aytac
AME ve AMSG komutlarını engelleme
0
479
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Etiketler
ame amsg komutlarını engelleme ve

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

Modül adı: noamsg.c

 Amacı: AME ve AMSG komutlarını sunucunuz üzerinden yasaklamak için, ekteki modülü temin edebilirsiniz. İlgili modülün orjinal hâli bu link'te mevcuttur.

Orjinal link'teki modül, 4 versiyonları için açıklama kısmında da belirtilen kişi tarafından geliştirilmiştir. Ben de modülün 3.2.x versiyonlarında çalışması için gerekli bölümleri modüle ilave ettim. Umarım faydalı olur,

Kod :
/* noamsg.c: Disables AME and AMSG network-wide, opers and ulines are exempted.
* Written by: Daniel Tan (DBoyz) <[email protected]>
* Idea is taken from InspIRCd's m_blockamsg.cpp
*/


#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

#define DelOverride(cmd, ovr) if (ovr && CommandExists(cmd)) { CmdoverrideDel(ovr); ovr = NULL; }
#define ircfree(x) if (x) MyFree(x); x = NULL
static ModuleInfo *MyModInfo = NULL;
Cmdoverride *OvrP = NULL;

static int override_noamsg(Cmdoverride *, aClient *, aClient *, int, char *[]);

ModuleHeader MOD_HEADER(noamsg)
= {
    "noamsg",
    "v0.1",
    "Disables AMSG and AME command (DBoyz - (3.2.x Entrance))",
    "3.2-b8-1",
    NULL
};

DLLFUNC int MOD_INIT(noamsg)(ModuleInfo *modinfo)

{
    ircd_log(LOG_ERROR, "debug: mod_init called from noamsg");

    sendto_realops("loading noamsg");

    MyModInfo = modinfo;

    return MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(noamsg)(int module_load)
{
    OvrP = CmdoverrideAdd(MyModInfo->handle, "PRIVMSG", override_noamsg);

    if (ModuleGetError(MyModInfo->handle) != MODERR_NOERROR || !OvrP)
    {
        config_error("Error replacing command PRIVMSG when loading module %s: %s",
            MOD_HEADER(noamsg).name, ModuleGetErrorStr(MyModInfo->handle));

        ircfree(OvrP);

        return MOD_FAILED;
    }

    return MOD_SUCCESS;
}

DLLFUNC int MOD_UNLOAD(noamsg)(int module_unload)
{
    ircd_log(LOG_ERROR, "debug: mod_unload called from noamsg");
    sendto_realops("unloading noamsg");

    DelOverride("PRIVMSG", OvrP);

    ircfree(OvrP);

    return MOD_SUCCESS;
}

static int override_noamsg(Cmdoverride *ovr, aClient *cptr, aClient *sptr, int parc, char *parv[])
{
    char output_target[1024], temp_target[1024];
    memset(output_target, 0, strlen(output_target));
    memset(temp_target, 0, strlen(temp_target));
    char *nick = NULL, *p = NULL;
    unsigned short count_channel = 0;
        aChannel *chptr;

    if (IsHandshake(sptr))
        return 0;

    if (IsOper(sptr) || IsULine(sptr))
        return CallCmdoverride(OvrP, cptr, sptr, parc, parv);

    if (parc < 2 || *parv[1] == '\0')
    {
        sendto_one(sptr, err_str(ERR_NORECIPIENT),
            me.name, sptr->name, "PRIVMSG");
        return -1;
    }

    if (parc < 3 || *parv[2] == '\0')
    {
        sendto_one(sptr, err_str(ERR_NOTEXTTOSEND), me.name, sptr->name);
        return -1;
    }

    if (MyConnect(sptr))
        parv[1] = (char *)canonize(parv[1]);

    for (p = NULL, nick = strtoken(&p, parv[1], ","); nick; nick = strtoken(&p, NULL, ","))
    {
        if (strchr(nick, '#'))
        {
            if (++count_channel > 1)
            {
                temp_target[0] = '\0';
                continue;
            }
            else
            {
                strncat(temp_target, nick, sizeof(temp_target)-strlen(temp_target)-1);
                strncat(temp_target, ",", sizeof(temp_target)-strlen(temp_target)-1);
            }
        }
        else
        {
            strncat(output_target, nick, sizeof(output_target)-strlen(output_target)-1);
            strncat(output_target, ",", sizeof(output_target)-strlen(output_target)-1);
        }
    }

    strncat(output_target,temp_target, sizeof(output_target)-strlen(output_target)-1);

    if (*(output_target + strlen(output_target) - 1) == ',')
        *(output_target + strlen(output_target) - 1) = '\0';

    if (count_channel > 1)
    {
        sendto_one(sptr, ":%s 404 %s %s :%s",me.name, sptr->name, "*","AMSG and AME has been disabled");
    }

    parv[1] = output_target;

    if (*parv[1] == '\0')
    {
        return -1;
    }

    ircfree(nick);
    ircfree(p);

    return CallCmdoverride(OvrP, cptr, sptr, parc, parv);
}
“İnsanların en hayırlısı, insanlara faydalı olandır”. H.Ş.


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Unreal3.2.x Ame/me komutlarını kısıtlamak Aytac 0 467 01.04.2020, 00:23
Son Mesaj: Aytac

Foruma Git: