mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-12 17:14:46 +02:00
Remove modules/mdex which is an example that shouldn't be used/built
(with UnrealIRCd anyway) [skip ci]
This commit is contained in:
@@ -294,7 +294,6 @@ DLL_FILES=\
|
||||
src/modules/lusers.dll \
|
||||
src/modules/map.dll \
|
||||
src/modules/md.dll \
|
||||
src/modules/mdex.dll \
|
||||
src/modules/message.dll \
|
||||
src/modules/message-ids.dll \
|
||||
src/modules/message-tags.dll \
|
||||
@@ -940,9 +939,6 @@ src/modules/map.dll: src/modules/map.c $(INCLUDES)
|
||||
src/modules/md.dll: src/modules/md.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/md.c /Fesrc/modules/ /Fosrc/modules/ /Fdsrc/modules/md.pdb $(MODLFLAGS)
|
||||
|
||||
src/modules/mdex.dll: src/modules/mdex.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/mdex.c /Fesrc/modules/ /Fosrc/modules/ /Fdsrc/modules/mdex.pdb $(MODLFLAGS)
|
||||
|
||||
src/modules/message.dll: src/modules/message.c $(INCLUDES)
|
||||
$(CC) $(MODCFLAGS) src/modules/message.c /Fesrc/modules/ /Fosrc/modules/ /Fdsrc/modules/message.pdb $(MODLFLAGS)
|
||||
|
||||
|
||||
@@ -1,317 +0,0 @@
|
||||
/*
|
||||
* Example module for ModData usage
|
||||
* NEVER LOAD THIS ON A LIVE SERVER!!
|
||||
*
|
||||
* (C) Copyright 2014 Bram Matthys and the UnrealIRCd team
|
||||
* License: GPLv2
|
||||
*/
|
||||
|
||||
#include "unrealircd.h"
|
||||
|
||||
CMD_FUNC(cmd_mdex);
|
||||
|
||||
ModuleHeader MOD_HEADER
|
||||
= {
|
||||
"mdex",
|
||||
"5.0",
|
||||
"Command /MDEX",
|
||||
"UnrealIRCd Team",
|
||||
"unrealircd-6",
|
||||
};
|
||||
|
||||
ModDataInfo *mdex_cli = NULL, *mdex_chan = NULL, *mdex_member = NULL, *mdex_membership = NULL;
|
||||
void mdex_free(ModData *m);
|
||||
char *mdex_serialize(ModData *m);
|
||||
void mdex_unserialize(char *str, ModData *m);
|
||||
|
||||
MOD_INIT()
|
||||
{
|
||||
ModDataInfo mreq;
|
||||
|
||||
memset(&mreq, 0, sizeof(mreq));
|
||||
mreq.name = "mdex";
|
||||
mreq.free = mdex_free;
|
||||
mreq.serialize = mdex_serialize;
|
||||
mreq.unserialize = mdex_unserialize;
|
||||
mreq.sync = 1;
|
||||
mreq.type = MODDATATYPE_CLIENT;
|
||||
mdex_cli = ModDataAdd(modinfo->handle, mreq);
|
||||
if (!mdex_cli)
|
||||
abort();
|
||||
mreq.type = MODDATATYPE_CHANNEL;
|
||||
mdex_chan = ModDataAdd(modinfo->handle, mreq);
|
||||
if (!mdex_cli)
|
||||
abort();
|
||||
mreq.type = MODDATATYPE_MEMBER;
|
||||
mdex_member = ModDataAdd(modinfo->handle, mreq);
|
||||
if (!mdex_cli)
|
||||
abort();
|
||||
mreq.type = MODDATATYPE_MEMBERSHIP;
|
||||
mdex_membership = ModDataAdd(modinfo->handle, mreq);
|
||||
if (!mdex_cli)
|
||||
abort();
|
||||
|
||||
CommandAdd(modinfo->handle, "MDEX", cmd_mdex, MAXPARA, CMD_USER);
|
||||
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
MOD_LOAD()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
MOD_UNLOAD()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
CMD_FUNC(cmd_mdex)
|
||||
{
|
||||
char *action, *type, *objname, *varname, *value;
|
||||
ModDataInfo *md;
|
||||
|
||||
if (!IsOper(client) || (parc < 5) || BadPtr(parv[4]))
|
||||
return 0;
|
||||
|
||||
action = parv[1]; /* get / set */
|
||||
type = parv[2];
|
||||
objname = parv[3];
|
||||
#ifdef DEBUGMODE
|
||||
varname = parv[4];
|
||||
#else
|
||||
varname = "mdex";
|
||||
#endif
|
||||
value = parv[5]; /* may be NULL */
|
||||
|
||||
if (!strcmp(action, "set"))
|
||||
{
|
||||
if (!strcmp(type, "client"))
|
||||
{
|
||||
Client *target = find_client(objname, NULL);
|
||||
md = findmoddata_byname(varname, MODDATATYPE_CLIENT);
|
||||
if (!md || !md->unserialize || !md->free || !target)
|
||||
return 0;
|
||||
if (value)
|
||||
md->unserialize(value, &moddata_client(target, md));
|
||||
else
|
||||
{
|
||||
md->free(&moddata_client(target, md));
|
||||
memset(&moddata_client(target, md), 0, sizeof(ModData));
|
||||
}
|
||||
broadcast_md_client(md, target, &moddata_client(target, md));
|
||||
} else
|
||||
if (!strcmp(type, "channel"))
|
||||
{
|
||||
Channel *channel = find_channel(objname);
|
||||
md = findmoddata_byname(varname, MODDATATYPE_CHANNEL);
|
||||
if (!md || !md->unserialize || !md->free || !channel)
|
||||
return 0;
|
||||
if (value)
|
||||
md->unserialize(value, &moddata_channel(channel, md));
|
||||
else
|
||||
{
|
||||
md->free(&moddata_channel(channel, md));
|
||||
memset(&moddata_channel(channel, md), 0, sizeof(ModData));
|
||||
}
|
||||
broadcast_md_channel(md, channel, &moddata_channel(channel, md));
|
||||
} else
|
||||
if (!strcmp(type, "member"))
|
||||
{
|
||||
Client *target;
|
||||
Channel *channel;
|
||||
Member *m;
|
||||
char *p;
|
||||
|
||||
/* for member the object name is like '#channel/Syzop' */
|
||||
p = strchr(objname, ':');
|
||||
if (!p)
|
||||
return 0;
|
||||
*p++ = '\0';
|
||||
|
||||
channel = find_channel(objname);
|
||||
if (!channel)
|
||||
return 0;
|
||||
|
||||
target = find_person(p, NULL);
|
||||
if (!target)
|
||||
return 0;
|
||||
|
||||
m = find_member_link(channel->members, target);
|
||||
if (!m)
|
||||
return 0;
|
||||
|
||||
md = findmoddata_byname(varname, MODDATATYPE_MEMBER);
|
||||
if (!md || !md->unserialize || !md->free)
|
||||
return 0;
|
||||
|
||||
if (value)
|
||||
md->unserialize(value, &moddata_member(m, md));
|
||||
else
|
||||
{
|
||||
md->free(&moddata_member(m, md));
|
||||
memset(&moddata_member(m, md), 0, sizeof(ModData));
|
||||
}
|
||||
broadcast_md_member(md, channel, m, &moddata_member(m, md));
|
||||
} else
|
||||
if (!strcmp(type, "membership"))
|
||||
{
|
||||
Client *target;
|
||||
Channel *channel;
|
||||
Membership *m;
|
||||
char *p;
|
||||
|
||||
/* for membership the object name is like 'Syzop/#channel' */
|
||||
p = strchr(objname, ':');
|
||||
if (!p)
|
||||
return 0;
|
||||
*p++ = '\0';
|
||||
|
||||
target = find_person(objname, NULL);
|
||||
if (!target)
|
||||
return 0;
|
||||
|
||||
channel = find_channel(p);
|
||||
if (!channel)
|
||||
return 0;
|
||||
|
||||
m = find_membership_link(target->user->channel, channel);
|
||||
if (!m)
|
||||
return 0;
|
||||
|
||||
md = findmoddata_byname(varname, MODDATATYPE_MEMBERSHIP);
|
||||
if (!md || !md->unserialize || !md->free)
|
||||
return 0;
|
||||
|
||||
if (value)
|
||||
md->unserialize(value, &moddata_membership(m, md));
|
||||
else
|
||||
{
|
||||
md->free(&moddata_membership(m, md));
|
||||
memset(&moddata_membership(m, md), 0, sizeof(ModData));
|
||||
}
|
||||
broadcast_md_membership(md, target, m, &moddata_membership(m, md));
|
||||
}
|
||||
} else
|
||||
if (!strcmp(action, "get"))
|
||||
{
|
||||
if (!strcmp(type, "client"))
|
||||
{
|
||||
Client *target = find_client(objname, NULL);
|
||||
char *str;
|
||||
|
||||
md = findmoddata_byname(varname, MODDATATYPE_CLIENT);
|
||||
if (!md || !md->serialize || !target)
|
||||
return 0;
|
||||
str = md->serialize(&moddata_client(target, md));
|
||||
if (str)
|
||||
sendnotice(client, "Value: %s", str ? str : "<null>");
|
||||
else
|
||||
sendnotice(client, "No value set");
|
||||
} else
|
||||
if (!strcmp(type, "channel"))
|
||||
{
|
||||
Channel *channel = find_channel(objname);
|
||||
char *str;
|
||||
|
||||
md = findmoddata_byname(varname, MODDATATYPE_CHANNEL);
|
||||
if (!md || !md->serialize || !channel)
|
||||
return 0;
|
||||
str = md->serialize(&moddata_channel(channel, md));
|
||||
if (str)
|
||||
sendnotice(client, "Value: %s", str ? str : "<null>");
|
||||
else
|
||||
sendnotice(client, "No value set");
|
||||
} else
|
||||
if (!strcmp(type, "member"))
|
||||
{
|
||||
Client *target;
|
||||
Channel *channel;
|
||||
Member *m;
|
||||
char *p, *str;
|
||||
|
||||
/* for member the object name is like '#channel/Syzop' */
|
||||
p = strchr(objname, ':');
|
||||
if (!p)
|
||||
return 0;
|
||||
*p++ = '\0';
|
||||
|
||||
channel = find_channel(objname);
|
||||
if (!channel)
|
||||
return 0;
|
||||
|
||||
target = find_person(p, NULL);
|
||||
if (!target)
|
||||
return 0;
|
||||
|
||||
m = find_member_link(channel->members, target);
|
||||
if (!m)
|
||||
return 0;
|
||||
|
||||
md = findmoddata_byname(varname, MODDATATYPE_MEMBER);
|
||||
if (!md || !md->serialize)
|
||||
return 0;
|
||||
|
||||
str = md->serialize(&moddata_member(m, md));
|
||||
if (str)
|
||||
sendnotice(client, "Value: %s", str ? str : "<null>");
|
||||
else
|
||||
sendnotice(client, "No value set");
|
||||
} else
|
||||
if (!strcmp(type, "membership"))
|
||||
{
|
||||
Client *target;
|
||||
Channel *channel;
|
||||
Membership *m;
|
||||
char *p, *str;
|
||||
|
||||
/* for membership the object name is like 'Syzop/#channel' */
|
||||
p = strchr(objname, ':');
|
||||
if (!p)
|
||||
return 0;
|
||||
*p++ = '\0';
|
||||
|
||||
target = find_person(objname, NULL);
|
||||
if (!target)
|
||||
return 0;
|
||||
|
||||
channel = find_channel(p);
|
||||
if (!channel)
|
||||
return 0;
|
||||
|
||||
m = find_membership_link(target->user->channel, channel);
|
||||
if (!m)
|
||||
return 0;
|
||||
|
||||
md = findmoddata_byname(varname, MODDATATYPE_MEMBERSHIP);
|
||||
if (!md || !md->serialize)
|
||||
return 0;
|
||||
|
||||
str = md->serialize(&moddata_membership(m, md));
|
||||
if (str)
|
||||
sendnotice(client, "Value: %s", str ? str : "<null>");
|
||||
else
|
||||
sendnotice(client, "No value set");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void mdex_free(ModData *m)
|
||||
{
|
||||
safe_free(m->str);
|
||||
}
|
||||
|
||||
char *mdex_serialize(ModData *m)
|
||||
{
|
||||
if (!m->str)
|
||||
return NULL;
|
||||
return m->str;
|
||||
}
|
||||
|
||||
void mdex_unserialize(char *str, ModData *m)
|
||||
{
|
||||
safe_strdup(m->str, str);
|
||||
}
|
||||
Reference in New Issue
Block a user