summaryrefslogtreecommitdiff
path: root/src/core/bs_bot.c
diff options
context:
space:
mode:
authorRobin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>2008-11-03 23:35:06 +0000
committerRobin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864>2008-11-03 23:35:06 +0000
commitc6e4c00e7a70f3976769e470f207159d4d019ea9 (patch)
tree111ef0d90c44de9874a0074a54b24c2fb7d7c136 /src/core/bs_bot.c
parentbcff05ae3a9890d2fd93a9118e40c9d3c9bfd54d (diff)
Disallow deletion of core services.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1532 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core/bs_bot.c')
-rw-r--r--src/core/bs_bot.c51
1 files changed, 31 insertions, 20 deletions
diff --git a/src/core/bs_bot.c b/src/core/bs_bot.c
index 0a69cc971..24f808faa 100644
--- a/src/core/bs_bot.c
+++ b/src/core/bs_bot.c
@@ -310,26 +310,37 @@ int do_bot(User * u)
send_event(EVENT_BOT_CHANGE, 1, bi->nick);
}
} else if (!stricmp(cmd, "DEL")) {
- char *nick = strtok(NULL, " ");
-
- if (!nick)
- syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX);
- else if (readonly)
- notice_lang(s_BotServ, u, BOT_BOT_READONLY);
- else if (!(bi = findbot(nick)))
- notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
- else {
- send_event(EVENT_BOT_DEL, 1, bi->nick);
- ircdproto->SendQuit(bi,
- "Quit: Help! I'm being deleted by %s!",
- u->nick);
- if (ircd->sqline) {
- ircdproto->SendSQLineDel(bi->nick);
- }
- delete bi;
-
- notice_lang(s_BotServ, u, BOT_BOT_DELETED, nick);
- }
+ char *nick = strtok(NULL, " ");
+
+ if (!nick)
+ {
+ syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX);
+ return MOD_CONT;
+ }
+
+ if (readonly)
+ {
+ notice_lang(s_BotServ, u, BOT_BOT_READONLY);
+ return MOD_CONT;
+ }
+
+ if (!(bi = findbot(nick)))
+ {
+ notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick);
+ return MOD_CONT;
+ }
+
+ if (nickIsServices(nick, 0))
+ {
+ notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST);
+ return MOD_CONT;
+ }
+
+ send_event(EVENT_BOT_DEL, 1, bi->nick);
+ ircdproto->SendQuit(bi, "Quit: Help! I'm being deleted by %s!", u->nick);
+ ircdproto->SendSQLineDel(bi->nick);
+ delete bi;
+ notice_lang(s_BotServ, u, BOT_BOT_DELETED, nick);
} else
syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX);