From 741843ee077fabb1daa8638838ee9edccebdae56 Mon Sep 17 00:00:00 2001 From: pk910 Date: Thu, 15 Dec 2011 18:59:09 +0100 Subject: [PATCH] added possibility to use register without channel parameter --- src/mod-watchdog.c | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/mod-watchdog.c b/src/mod-watchdog.c index 690ed0d..9548610 100644 --- a/src/mod-watchdog.c +++ b/src/mod-watchdog.c @@ -285,20 +285,42 @@ static MODCMD_FUNC(cmd_listbad) static MODCMD_FUNC(cmd_register) { dict_iterator_t it; + struct modeNode *mn; - if((argc < 2) || !IsChannelName(argv[1])) + if(channel) { - reply("MSG_NOT_CHANNEL_NAME"); - return 0; - } - if(opserv_bad_channel(argv[1])) - { - reply("CSMSG_ILLEGAL_CHANNEL", argv[1]); - return 0; + if(channel->bad_channel) + { + reply("CSMSG_ILLEGAL_CHANNEL", channel->name); + return 0; + } + + if(!IsHelping(user) + && (!(mn = GetUserMode(channel, user)) || !(mn->modes & MODE_CHANOP))) + { + reply("CSMSG_MUST_BE_OPPED", channel->name); + return 0; + } + } + else + { + + if((argc < 2) || !IsChannelName(argv[1])) + { + reply("MSG_NOT_CHANNEL_NAME"); + return 0; + } - channel = AddChannel(argv[1], now, NULL, NULL); + if(opserv_bad_channel(argv[1])) + { + reply("CSMSG_ILLEGAL_CHANNEL", argv[1]); + return 0; + } + + channel = AddChannel(argv[1], now, NULL, NULL); + } for (it = dict_first(chanlist); it; it = iter_next(it)) { struct watchdog_channel *chan = iter_data(it); @@ -615,7 +637,7 @@ watchdog_init(void) modcmd_register(watchdog_module, "delbad", cmd_delbad, 2, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); modcmd_register(watchdog_module, "setbad", cmd_setbad, 2, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); modcmd_register(watchdog_module, "listbad", cmd_listbad, 1, MODCMD_REQUIRE_AUTHED, "flags", "+oper", NULL); - modcmd_register(watchdog_module, "register", cmd_register, 2, MODCMD_REQUIRE_AUTHED, "flags", "+helping", NULL); + modcmd_register(watchdog_module, "register", cmd_register, 1, MODCMD_REQUIRE_AUTHED, "flags", "+acceptchan,+helping", NULL); modcmd_register(watchdog_module, "unregister", cmd_unregister, 1, MODCMD_REQUIRE_AUTHED | MODCMD_REQUIRE_CHANNEL, "flags", "+helping", NULL); message_register_table(msgtab); -- 2.20.1