IRCForumu.ORG

IRCForumu.ORG (https://www.ircforumu.org/)
-   Genel IRCD (Sunucu, Servis, Botlar, Korumalar) (https://www.ircforumu.org/genel-ircd-sunucu-servis-botlar-korumalar/)
-   -   IRC Server , bilgi.c Modulu Biraz renklendirildi. (https://www.ircforumu.org/genel-ircd-sunucu-servis-botlar-korumalar/672-irc-server-bilgi-c-modulu-biraz-renklendirildi.html)

No_FeaR 20 Haziran 2021 20:47

IRC Server , bilgi.c Modulu Biraz renklendirildi.
 
Bende uzun zamandır bulunan, bir modul idi. Ve bir çok kişide hala mevcut.
Sadece bir kaç yerini renklendirirdim. Eskiye nazaran daha göz dolduruyor.
Kullanmak isteyen olur diye paylaşıyorum.. (;

Kod:

12%s Nick'i (%s@%s) %s 'Den Ayrildi Part Mesaji4 (%s)


Kod:

0,2Sunucuya Giris Yapildi


Kod:

12Kanalinda By %s Topick Degistirdi. Yeni Topick:4 %s


[I]
Kod:

/* Sunucu ve Kanallara Giriş Çıkışları Mode Topic
Değişikliklerini Size Bir Monitor Kanalda
Veren Operleri Bilgilendiren Güzel Bir Modules
No_FeaR ([email protected]) Tarafından Sadece Renklendirilmiştir.
IRCd Günümüzde Yenilikler İşteyen Şeyler İstiyor Malesef.
Bende bilgi.c Modulunu Biraz Renklendireyim Dedim.
Genelde #Log Kanalıdır, IRC Sunucusunun Takip Kanalı,
Ben #IRCTakip Yapmıştım. Siz Kendiniz Değiştirirsiniz.
Lütfen Asagidaki Vereceğim Codeleri unrealircd.conf
Dosyaniza Ekleyiniz..
chansno
{
    // msgtype privmsg;

    channel "#IRCTakip" {
        joins; parts; kicks; mode-changes; topics;
    };

    channel "#IRCTakip" {
        nickchanges; connects; disconnects; server-connects; squits;
    };
};

*/
#include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "channel.h"
#include
#include
#include
#include
#include
#ifdef _WIN32
#include
#endif
#include
#include "h.h"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif

typedef struct _conf_operflag OperFlag;
typedef struct _chansnoflag ChanSnoFlag;

struct _conf_operflag
{
    long        flag;
    char        *name;
};

struct _chansnoflag
{
    ChanSnoFlag    *prev, *next;
    char        *channel;
    long        flags;
};

extern ConfigEntry    *config_find_entry(ConfigEntry *, char *);
extern OperFlag        *config_binary_flags_search(OperFlag *table, char *cmd, int size);

#define MSG_CHANSNO    "CHANSNO"
#define TOK_CHANSNO    "CR"
#define MyMod        ModChanSno->handle
#define CHSNO_TABLESIZE    sizeof(_ChanSnoFlags)/sizeof(_ChanSnoFlags[0])
#define MaxSize        (sizeof(msgbuf) - strlen(msgbuf) - 1)

#define ircstrdup(x,y)  if (x) MyFree(x); if (!y) x = NULL; else x = strdup(y)
#define IsParam(x)    (parc > (x) && !BadPtr(parv[(x)]))
#define IsNotParam(x)    (parc <= (x) || BadPtr(parv[(x)]))
#define DelHook(x)    if (x) HookDel(x); x = NULL
#define DelCommand(x)    if (x) CommandDel(x); x = NULL

/* Messages types */

#define MT_PRIVMSG        0x00
#define MT_NOTICE        0x01
#define MsgType            (msgtype == MT_PRIVMSG ? "PRIVMSG" : "NOTICE")

/* Channel server notice masks */

#define CHSNO_CONNECT        0x0001
#define CHSNO_DISCONNECT    0x0002
#define CHSNO_NICKCHANGE    0x0004
#define CHSNO_JOIN        0x0008
#define CHSNO_PART        0x0010
#define CHSNO_KICK        0x0020
#define CHSNO_CHANMODE        0x0040
#define CHSNO_SCONNECT        0x0080
#define CHSNO_SQUIT        0x0100
#define CHSNO_TOPIC        0x0200

/* This MUST be alphabetized */
OperFlag _ChanSnoFlags[] =
{
    { CHSNO_CONNECT,    "connects"        },
    { CHSNO_DISCONNECT,    "disconnects"        },
    { CHSNO_JOIN,        "joins"            },
    { CHSNO_KICK,        "kicks"            },
    { CHSNO_CHANMODE,    "mode-changes"        },
    { CHSNO_NICKCHANGE,    "nickchanges"        },
    { CHSNO_PART,        "parts"            },
    { CHSNO_SCONNECT,    "server-connects"    },
    { CHSNO_SQUIT,        "squits"        },
    { CHSNO_TOPIC,        "topics"        }
};

static Command        *AddCommand(char *msg, char *token, int (*func)());
DLLFUNC int        m_chansno(aClient *cptr, aClient *sptr, int parc, char *parv[]);
DLLFUNC int        test_chansno(ConfigFile *, ConfigEntry *, int, int *);
DLLFUNC int        conf_chansno(ConfigFile *, ConfigEntry *, int);
DLLFUNC int        rehash_chansno();

DLLFUNC int        cb_mode(aClient *, aClient *, aChannel *, char *, char *, TS, int);
DLLFUNC int        cb_connect(aClient *);
DLLFUNC int        cb_quit(aClient *, char *);
DLLFUNC int        cb_join(aClient *, aClient *, aChannel *, char *[]);
DLLFUNC int        cb_kick(aClient *, aClient *, aClient *, aChannel *, char *);
DLLFUNC int        cb_nickchange(aClient *, char *);
DLLFUNC int        cb_part(aClient *, aClient *, aChannel *, char *);
DLLFUNC int        cb_server_connect(aClient *);
DLLFUNC int        cb_server_quit(aClient *);
DLLFUNC int        cb_topic();

ModuleInfo        *ModChanSno = NULL;
Command            *CmdChanSno = NULL;
ChanSnoFlag        *ConfChanSno;
Hook            *HookConfTest, *HookConfRun, *HookConfRehash;
Hook            *HookMode, *HookConnect, *HookQuit, *HookJoin;
Hook            *HookKick, *HookNickChange, *HookPart, *HookServerConnect;
Hook            *HookServerQuit, *HookTopic;
static char        msgbuf[BUFSIZE+1];
u_int            msgtype = MT_PRIVMSG;

ModuleHeader MOD_HEADER(chansno)
  = {
    "Www.RakipShell.Com",
    "$Id: bilgi.c,v Edited By No_FeaR Www.1FilmSaati.Com",
    "Sunucuya Giriş Cıkışları Kanal Giriş Çıkış Mode ve topic Değişikliklerini Haber Veren Bir Modules",
    "3.2-b8-1",
    NULL
    };

static Command *AddCommand(char *msg, char *token, int (*func)())
{
    Command *cmd;

    if (CommandExists(msg))
        {
        config_error("Command %s already exists", msg);
        return NULL;
        }
        if (CommandExists(token))
    {
        config_error("Token %s already exists", token);
        return NULL;
        }

    cmd = CommandAdd(MyMod, msg, token, func, MAXPARA, 0);

#ifndef _WIN32
    if (ModuleGetError(MyMod) != MODERR_NOERROR || !cmd)
#else
    if (!cmd)
#endif
    {
#ifndef _WIN32
        config_error("Error adding command %s: %s", msg,
            ModuleGetErrorStr(MyMod));
#else
        config_error("Error adding command %s", msg);
#endif
        return NULL; /* just to be sure */
    }

    return cmd;
}

// =================================================================
// Functions related to loading/unloading configuration
// =================================================================

static void InitConf()
{
    ConfChanSno    = NULL;
    msgtype        = MT_PRIVMSG;
}

static void FreeConf()
{
    ChanSnoFlag    *c;
    ListStruct    *next;

    for (c = ConfChanSno; c; c = (ChanSnoFlag *) next)
    {
        next = (ListStruct *) c->next;
        DelListItem(c, ConfChanSno);
        MyFree(c->channel);
        MyFree(c);
    }
}

// =================================================================
// Module functions
// =================================================================

DLLFUNC int MOD_TEST(chansno)(ModuleInfo *modinfo)
{
    ModChanSno    = modinfo;
    HookConfTest    = HookAddEx(MyMod, HOOKTYPE_CONFIGTEST, test_chansno);

    return MOD_SUCCESS;
}

DLLFUNC int MOD_INIT(chansno)(ModuleInfo *modinfo)
{
    ModChanSno    = modinfo;

    InitConf();

    CmdChanSno    = AddCommand(MSG_CHANSNO, TOK_CHANSNO, m_chansno);
    HookConfRun    = HookAddEx(MyMod, HOOKTYPE_CONFIGRUN, conf_chansno);
    HookConfRehash    = HookAddEx(MyMod, HOOKTYPE_REHASH, rehash_chansno);

    if (!CmdChanSno)
        return MOD_FAILED;

    return MOD_SUCCESS;
}

DLLFUNC int MOD_LOAD(userauth)(int module_load)
{
    HookMode = HookAddEx(MyMod, HOOKTYPE_LOCAL_CHANMODE, cb_mode);
    HookConnect = HookAddEx(MyMod, HOOKTYPE_LOCAL_CONNECT, cb_connect);
    HookQuit = HookAddEx(MyMod, HOOKTYPE_LOCAL_QUIT, cb_quit);
    HookJoin = HookAddEx(MyMod, HOOKTYPE_LOCAL_JOIN, cb_join);
    HookKick = HookAddEx(MyMod, HOOKTYPE_LOCAL_KICK, cb_kick);
    HookNickChange = HookAddEx(MyMod, HOOKTYPE_LOCAL_NICKCHANGE, cb_nickchange);
    HookPart = HookAddEx(MyMod, HOOKTYPE_LOCAL_PART, cb_part);
    HookServerConnect = HookAddEx(MyMod, HOOKTYPE_SERVER_CONNECT, cb_server_connect);
    HookServerQuit = HookAddEx(MyMod, HOOKTYPE_SERVER_QUIT, cb_server_quit);
    HookTopic = HookAddEx(MyMod, HOOKTYPE_LOCAL_TOPIC, cb_topic);

    return MOD_SUCCESS;
}

DLLFUNC int MOD_UNLOAD(m_chansno)(int module_unload)
{
    DelHook(HookTopic);
    DelHook(HookServerQuit);
    DelHook(HookServerConnect);
    DelHook(HookPart);
    DelHook(HookNickChange);
    DelHook(HookKick);
    DelHook(HookJoin);
    DelHook(HookQuit);
    DelHook(HookConnect);
    DelHook(HookMode);

    DelHook(HookConfRehash);
    DelHook(HookConfRun);
    DelHook(HookConfTest);
    DelCommand(CmdChanSno);

    FreeConf();
    return MOD_SUCCESS;
}

// =================================================================
// Config file interfacing
// =================================================================

DLLFUNC int rehash_chansno()
{
    FreeConf();
    InitConf();

    return 1;
}

DLLFUNC int test_chansno(ConfigFile *cf, ConfigEntry *ce, int type, int *errs)
{
    ConfigEntry    *cep, *cepp;
    int        errors = 0;

    if (type != CONFIG_MAIN)
        return 0;

    if (!strcmp(ce->ce_varname, "chansno"))
    {
        for (cep = ce->ce_entries; cep; cep = cep->ce_next)
        {
            if (!cep->ce_varname)
            {
                config_error("%s:%i: blank chansno item",
                    cep->ce_fileptr->cf_filename,
                    cep->ce_varlinenum);
                errors++;
                continue;
            }
            if (!cep->ce_vardata)
            {
                config_error("%s:%i: chansno::%s item without value",
                    cep->ce_fileptr->cf_filename,
                    cep->ce_varlinenum, cep->ce_varname);
                errors++;
                continue;
            }
            if (!strcmp(cep->ce_varname, "channel"))
            {
                if (!cep->ce_entries)
                {
                    config_error("%s:%i: chansno::channel without contents",
                        cep->ce_fileptr->cf_filename, cep->ce_varlinenum);
                    errors++;
                    continue;
                }
                for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
                {
                    if (!cepp->ce_varname)
                    {
                        config_error("%s:%i: chansno::channel item without variable name",
                            cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum);
                        errors++;
                        continue;
                    }
                    if (!config_binary_flags_search(_ChanSnoFlags, cepp->ce_varname, CHSNO_TABLESIZE))
                    {
                        config_error("%s:%i: unknown chansno::channel flag '%s'",
                            cepp->ce_fileptr->cf_filename, cepp->ce_varlinenum,
                            cepp->ce_varname);
                        errors++;
                    }
                }
            }
            else if (!strcmp(cep->ce_varname, "msgtype"))
            {
                if (!strcmp(cep->ce_vardata, "privmsg"))
                    ;
                else if (!strcmp(cep->ce_vardata, "notice"))
                    ;
                else
                {
                    config_error("%s:%i: unknown chansno::msgtype '%s'",
                        cep->ce_fileptr->cf_filename, cep->ce_varlinenum,
                        cep->ce_varname);
                    errors++;
                }
            }
            else
            {
                config_error("%s:%i: unknown directive chansno::%s",
                    cep->ce_fileptr->cf_filename, cep->ce_varlinenum, cep->ce_varname);
                errors++;
            }
        }
        *errs = errors;
        return errors ? -1 : 1;
    }
    else
        return 0;
}

DLLFUNC int conf_chansno(ConfigFile *cf, ConfigEntry *ce, int type)
{
    ConfigEntry    *cep, *cepp;
    OperFlag    *ofp;
    ChanSnoFlag    *ca;

    if (type != CONFIG_MAIN)
        return 0;

    if (!strcmp(ce->ce_varname, "chansno"))
    {
        for (cep = ce->ce_entries; cep; cep = cep->ce_next)
        {
            if (!strcmp(cep->ce_varname, "channel"))
            {
                ca = MyMallocEx(sizeof(ChanSnoFlag));
                ircstrdup(ca->channel, cep->ce_vardata);

                for (cepp = cep->ce_entries; cepp; cepp = cepp->ce_next)
                {
                    if ((ofp = config_binary_flags_search(_ChanSnoFlags, cepp->ce_varname, CHSNO_TABLESIZE)))
                        ca->flags |= ofp->flag;
                }

                AddListItem(ca, ConfChanSno);
            }
            else if (!strcmp(cep->ce_varname, "msgtype"))
            {
                if (!strcmp(cep->ce_vardata, "privmsg"))
                    msgtype = MT_PRIVMSG;
                else if (!strcmp(cep->ce_vardata, "notice"))
                    msgtype = MT_NOTICE;
            }
        }

        return 1;
    }

    return 0;
}

// ===============================================================
// Functions used by m_chansno
// ===============================================================

static char *get_flag_names(long flags)
{
    u_int    i, found = 0;

    memset(&msgbuf, 0, sizeof msgbuf);

    for (i = 0; i < CHSNO_TABLESIZE; i++)
            if (flags & _ChanSnoFlags[i].flag)
        {
            if (found)
                strncat(msgbuf, ", ", MaxSize);
            else
                found = 1;

            strncat(msgbuf, _ChanSnoFlags.name, MaxSize);
        }

    if (!strlen(msgbuf))
        strcpy(msgbuf, "");

    return msgbuf;
}

static void stats_chansno_channels(aClient *sptr)
{
    ChanSnoFlag    *c;
   
    for (c = ConfChanSno; c; c = c->next)
        sendto_one(sptr,  "2:%s %i %s :Kanal %s: %s",
            me.name, RPL_TEXT, sptr->name,
            c->channel, get_flag_names(c->flags));

    sendto_one(sptr, rpl_str(RPL_ENDOFSTATS), me.name, sptr->name, 'S');
}

static void stats_chansno_config(aClient *sptr)
{
    ChanSnoFlag    *c;
   
    sendto_one(sptr, ":%s %i %s :msgtype: %s",
        me.name, RPL_TEXT, sptr->name, MsgType);
    sendto_one(sptr, rpl_str(RPL_ENDOFSTATS), me.name, sptr->name, 'S');
}

// ===============================================================
// m_chansno
//      parv[0]: sender prefix
//      parv[1]: option
//      parv[2]: server name (optional)
// ===============================================================

DLLFUNC int m_chansno(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
    if (!IsPerson(sptr))
        return -1;

    if (!IsAnOper(sptr))
    {
        sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
        return -1;
    }

    if (!IsParam(1))
    {
        sendto_one(sptr, ":%s NOTICE %s :Usage:",
            me.name, sptr->name);
        sendto_one(sptr, ":%s NOTICE %s :    /chansno



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 13:39.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.