summaryrefslogtreecommitdiff
path: root/src/modules/demos/catserv
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/demos/catserv')
-rw-r--r--src/modules/demos/catserv/Makefile9
-rw-r--r--src/modules/demos/catserv/README4
-rw-r--r--src/modules/demos/catserv/catserv_extern.h11
-rw-r--r--src/modules/demos/catserv/catserv_messages.c14
-rw-r--r--src/modules/demos/catserv/catserv_messages.h10
-rw-r--r--src/modules/demos/catserv/ircd_catserv.c112
-rw-r--r--src/modules/demos/catserv/makefile.win324
-rw-r--r--src/modules/demos/catserv/meow.c9
-rw-r--r--src/modules/demos/catserv/meow.h9
-rw-r--r--src/modules/demos/catserv/purr.c8
-rw-r--r--src/modules/demos/catserv/purr.h9
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
+