summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/modules.h8
-rw-r--r--src/core/ss_main.c23
-rw-r--r--src/servers.c3
3 files changed, 20 insertions, 14 deletions
diff --git a/include/modules.h b/include/modules.h
index 15cdfc39c..f0da30255 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -505,6 +505,11 @@ class CoreExport Module
*/
virtual void OnUserConnect(User *u) { }
+ /** Called when a new server connects to the network.
+ * @param sname The server name that is connecting
+ */
+ virtual void OnServerConnect(const std::string &sname) { }
+
/** Called when anope saves databases.
* NOTE: This event is deprecated pending new database handling.
* XXX.
@@ -523,7 +528,8 @@ class CoreExport Module
enum Implementation
{
I_BEGIN,
- I_OnUserKicked, I_OnReload, I_OnBotAssign, I_OnBotUnAssign, I_OnSaveDatabase, I_OnUserConnect, I_OnBackupDatabase,
+ I_OnUserKicked, I_OnReload, I_OnBotAssign, I_OnBotUnAssign, I_OnUserConnect, I_OnServerConnect,
+ I_OnSaveDatabase, I_OnBackupDatabase,
I_END
};
diff --git a/src/core/ss_main.c b/src/core/ss_main.c
index a0a855dd8..c92ce5211 100644
--- a/src/core/ss_main.c
+++ b/src/core/ss_main.c
@@ -47,12 +47,12 @@ class SSMain : public Module
if (servsock == -1)
{
-// EvtHook *hook = createEventHook(EVENT_SERVER_CONNECT, statserv_create);
-// this->AddEventHook(hook);
+ ModuleManager::Attach(I_OnServerConnect, this);
}
else
statserv_create(0, NULL);
}
+
~SSMain()
{
CommandHash *current;
@@ -71,18 +71,17 @@ class SSMain : public Module
delete statserv;
}
}
-};
-int statserv_create(int argc, char **argv)
-{
- statserv = findbot("StatServ");
- if (!statserv)
+ void OnServerConnect(const std::string &sname)
{
- statserv = new BotInfo("StatServ", ServiceUser, ServiceHost, "Stats Service");
- ircdproto->SendClientIntroduction("StatServ", ServiceUser, ServiceHost, "Stats Service", ircd->pseudoclient_mode, statserv->uid.c_str());
+ statserv = findbot("StatServ");
+ if (!statserv)
+ {
+ statserv = new BotInfo("StatServ", ServiceUser, ServiceHost, "Stats Service");
+ ircdproto->SendClientIntroduction("StatServ", ServiceUser, ServiceHost, "Stats Service", ircd->pseudoclient_mode, statserv->uid.c_str());
+ }
+ statserv->cmdTable = cmdTable;
}
- statserv->cmdTable = cmdTable;
- return MOD_CONT;
-}
+};
MODULE_INIT("ss_main", SSMain)
diff --git a/src/servers.c b/src/servers.c
index b6f16eaa7..e66c5be98 100644
--- a/src/servers.c
+++ b/src/servers.c
@@ -13,6 +13,7 @@
*/
#include "services.h"
+#include "modules.h"
Server *servlist = NULL;
Server *me_server = NULL; /* This are we */
@@ -402,7 +403,7 @@ void do_server(const char *source, const char *servername, const char *hops,
throw CoreException("Recieved a server from a nonexistant uplink?");
new_server(s, servername, descript, 0, numeric);
- send_event(EVENT_SERVER_CONNECT, 1, servername);
+ FOREACH_MOD(I_OnServerConnect, OnServerConnect(servername));
}
/*************************************************************************/