diff options
Diffstat (limited to 'src/modules/demos/catserv')
-rw-r--r-- | src/modules/demos/catserv/Makefile | 9 | ||||
-rw-r--r-- | src/modules/demos/catserv/README | 4 | ||||
-rw-r--r-- | src/modules/demos/catserv/catserv_extern.h | 11 | ||||
-rw-r--r-- | src/modules/demos/catserv/catserv_messages.c | 14 | ||||
-rw-r--r-- | src/modules/demos/catserv/catserv_messages.h | 10 | ||||
-rw-r--r-- | src/modules/demos/catserv/ircd_catserv.c | 112 | ||||
-rw-r--r-- | src/modules/demos/catserv/makefile.win32 | 4 | ||||
-rw-r--r-- | src/modules/demos/catserv/meow.c | 9 | ||||
-rw-r--r-- | src/modules/demos/catserv/meow.h | 9 | ||||
-rw-r--r-- | src/modules/demos/catserv/purr.c | 8 | ||||
-rw-r--r-- | src/modules/demos/catserv/purr.h | 9 |
11 files changed, 199 insertions, 0 deletions
diff --git a/src/modules/demos/catserv/Makefile b/src/modules/demos/catserv/Makefile new file mode 100644 index 000000000..5b2f4efa3 --- /dev/null +++ b/src/modules/demos/catserv/Makefile @@ -0,0 +1,9 @@ +SRCS= ircd_catserv.c \ + catserv_messages.c \ + meow.c \ + purr.c + +TARGET=ircd_catserv + +include ../Makefile.sub + diff --git a/src/modules/demos/catserv/README b/src/modules/demos/catserv/README new file mode 100644 index 000000000..c3d3f7084 --- /dev/null +++ b/src/modules/demos/catserv/README @@ -0,0 +1,4 @@ +This is an EXAMPLE module, it serves no real purpose. + +This module was broken down into multiple files to demonstrate how multiple files can be used. + diff --git a/src/modules/demos/catserv/catserv_extern.h b/src/modules/demos/catserv/catserv_extern.h new file mode 100644 index 000000000..02c21addb --- /dev/null +++ b/src/modules/demos/catserv/catserv_extern.h @@ -0,0 +1,11 @@ +#ifndef CATSERV_DEFS_H +#define CATSERV_DEFS_H + +#ifdef _WIN32 +extern __declspec(dllexport) char *s_CatServ; +#else +E char *s_CatServ; +#endif + +#endif + diff --git a/src/modules/demos/catserv/catserv_messages.c b/src/modules/demos/catserv/catserv_messages.c new file mode 100644 index 000000000..e11235b4e --- /dev/null +++ b/src/modules/demos/catserv/catserv_messages.c @@ -0,0 +1,14 @@ +#include "catserv_messages.h" +#include "module.h" +#include "meow.h" +#include "purr.h" + +void addMessageList(void) +{ + Command *c; + c = createCommand("meow", do_meow, NULL, -1, -1, -1, -1, -1); + moduleAddCommand(Catserv_cmdTable, c, MOD_UNIQUE); + c = createCommand("purr", do_purr, NULL, -1, -1, -1, -1, -1); + moduleAddCommand(Catserv_cmdTable, c, MOD_UNIQUE); +} + diff --git a/src/modules/demos/catserv/catserv_messages.h b/src/modules/demos/catserv/catserv_messages.h new file mode 100644 index 000000000..bb3f82dd0 --- /dev/null +++ b/src/modules/demos/catserv/catserv_messages.h @@ -0,0 +1,10 @@ +#ifndef CATSERV_MESSAGES_H +#define CATSERV_MESSAGES_H + +#include "module.h" + +CommandHash *Catserv_cmdTable[MAX_CMD_HASH]; +void addMessageList(void); + +#endif + diff --git a/src/modules/demos/catserv/ircd_catserv.c b/src/modules/demos/catserv/ircd_catserv.c new file mode 100644 index 000000000..ae34d6161 --- /dev/null +++ b/src/modules/demos/catserv/ircd_catserv.c @@ -0,0 +1,112 @@ +/** + * Simple module to load up a client called CatServ and process commands for it + * This module is an example, and has no useful purpose! + * + * Please visit http://modules.anope.org for useful modules! + * + **/ + +#include "module.h" +#include "catserv_messages.h" + +#define AUTHOR "Anope" +#define VERSION "$Id$" + +int my_privmsg(char *source, int ac, char **av); + +void addClient(char *nick, char *realname); +void delClient(void); +void catserv(User * u, char *buf); + +char *s_CatServ = "CatServ"; + +int AnopeInit(int argc, char **argv) +{ + Message *msg = NULL; + int status; +#ifdef IRC_UNREAL32 + if (UseTokens) { + msg = createMessage("!", my_privmsg); + } else { + msg = createMessage("PRIVMSG", my_privmsg); + } +#else + msg = createMessage("PRIVMSG", my_privmsg); +#endif + status = moduleAddMessage(msg, MOD_HEAD); + if (status == MOD_ERR_OK) { + addClient(s_CatServ, "meow!"); + addMessageList(); + } + moduleAddAuthor(AUTHOR); + moduleAddVersion(VERSION); + alog("ircd_catserv.so: loaded, message status [%d]", status); + return MOD_CONT; +} + +void AnopeFini(void) +{ + delClient(); +} + +int my_privmsg(char *source, int ac, char **av) +{ + User *u; + char *s; + + /* First, some basic checks */ + if (ac != 2) + return MOD_CONT; /* bleh */ + if (!(u = finduser(source))) { + return MOD_CONT; + } /* non-user source */ + if (*av[0] == '#') { + return MOD_CONT; + } + /* Channel message */ + /* we should prolly honour the ignore list here, but i cba for this... */ + s = strchr(av[0], '@'); + if (s) { + *s++ = 0; + if (stricmp(s, ServerName) != 0) + return MOD_CONT; + } + if ((stricmp(av[0], s_CatServ)) == 0) { /* its for US! */ + catserv(u, av[1]); + return MOD_STOP; + } else { /* ok it isnt us, let the old code have it */ + return MOD_CONT; + } +} + +void addClient(char *nick, char *realname) +{ + anope_cmd_bot_nick(nick, "catserv", "meow.meow.land", realname, "+"); +} + +void delClient(void) +{ + anope_cmd_quit(s_CatServ, "QUIT :Module Unloaded!"); +} + +/*****************************************************************************/ +/* Main CatServ routine. */ +void catserv(User * u, char *buf) +{ + char *cmd, *s; + + cmd = strtok(buf, " "); + + if (!cmd) { + return; + } else if (stricmp(cmd, "\1PING") == 0) { + if (!(s = strtok(NULL, ""))) + s = "\1"; + notice(s_CatServ, u->nick, "\1PING %s", s); + } else if (skeleton) { + notice_lang(s_CatServ, u, SERVICE_OFFLINE, s_CatServ); + } else { + mod_run_cmd(s_CatServ, u, Catserv_cmdTable, cmd); + } +} + diff --git a/src/modules/demos/catserv/makefile.win32 b/src/modules/demos/catserv/makefile.win32 new file mode 100644 index 000000000..638704440 --- /dev/null +++ b/src/modules/demos/catserv/makefile.win32 @@ -0,0 +1,4 @@ +SRCS=ircd_catserv.c purr.c catserv_messages.c meow.c +TARGET=ircd_catserv.dll + +include ..\Makefile.sub.win32 diff --git a/src/modules/demos/catserv/meow.c b/src/modules/demos/catserv/meow.c new file mode 100644 index 000000000..9279eec0b --- /dev/null +++ b/src/modules/demos/catserv/meow.c @@ -0,0 +1,9 @@ +#include "meow.h" + +#include "catserv_extern.h" + +int do_meow(User * u) { + notice(s_CatServ, u->nick, "MEOW!"); + return MOD_STOP; +} + diff --git a/src/modules/demos/catserv/meow.h b/src/modules/demos/catserv/meow.h new file mode 100644 index 000000000..0f28673a0 --- /dev/null +++ b/src/modules/demos/catserv/meow.h @@ -0,0 +1,9 @@ +#ifndef CATSERV_MEOW_H +#define CATSERV_MEOW_H + +#include "module.h" + +int do_meow(User * u); + +#endif + diff --git a/src/modules/demos/catserv/purr.c b/src/modules/demos/catserv/purr.c new file mode 100644 index 000000000..5a39dc26e --- /dev/null +++ b/src/modules/demos/catserv/purr.c @@ -0,0 +1,8 @@ +#include "purr.h" +#include "catserv_extern.h" + +int do_purr(User * u) +{ + notice(s_CatServ, u->nick, "PURR!"); + return MOD_STOP; +} diff --git a/src/modules/demos/catserv/purr.h b/src/modules/demos/catserv/purr.h new file mode 100644 index 000000000..a92e421f6 --- /dev/null +++ b/src/modules/demos/catserv/purr.h @@ -0,0 +1,9 @@ +#ifndef CATSERV_PURR_H +#define CATSERV_PURR_H + +#include "module.h" + +int do_purr(User * u); + +#endif + |