From df4ec820bc0881507e3c2d8dfd9d28b6cd07eaa8 Mon Sep 17 00:00:00 2001 From: Adam Loghry Date: Mon, 1 Mar 2004 09:54:10 +0000 Subject: [PATCH] no error on inexistent commands done publicly, announcements setting display fix, two opserv chaninfo fixes, OSMSG_FLOOD_MODERATE now works when sent to channels, and hostmask lastquit searches git-archimport-id: srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-18 --- src/modcmd.c | 3 ++- src/nickserv.c | 10 +++++++++- src/nickserv.help | 2 ++ src/opserv.c | 6 +++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/modcmd.c b/src/modcmd.c index 24776ff..1cb8399 100644 --- a/src/modcmd.c +++ b/src/modcmd.c @@ -642,7 +642,8 @@ svccmd_invoke_argv(struct userNode *user, struct service *service, struct chanNo } cmd = dict_find(service->commands, argv[cmd_arg], NULL); if (!cmd) { - send_message(user, service->bot, "MSG_COMMAND_UNKNOWN", argv[cmd_arg]); + if (!channel) + send_message(user, service->bot, "MSG_COMMAND_UNKNOWN", argv[cmd_arg]); return 0; } flags = cmd->effective_flags; diff --git a/src/nickserv.c b/src/nickserv.c index 5a61bfd..47aae0f 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -2747,7 +2747,7 @@ struct nickserv_discrim { unsigned long flags_on, flags_off; time_t min_registered, max_registered; time_t lastseen; - enum { SUBSET, EXACT, SUPERSET } hostmask_type; + enum { SUBSET, EXACT, SUPERSET, LASTQUIT } hostmask_type; const char *nickmask; const char *hostmask; const char *handlemask; @@ -2830,6 +2830,12 @@ nickserv_discrim_create(struct userNode *user, unsigned int argc, char *argv[]) goto fail; } discrim->hostmask_type = SUPERSET; + } else if (!irccasecmp(argv[i], "lastquit") || !irccasecmp(argv[i], "lastauth")) { + if (i == argc - 1) { + send_message(user, nickserv, "MSG_MISSING_PARAMS", argv[i]); + goto fail; + } + discrim->hostmask_type = LASTQUIT; } else { i--; discrim->hostmask_type = SUPERSET; @@ -2905,6 +2911,8 @@ nickserv_discrim_match(struct nickserv_discrim *discrim, struct handle_info *hi) && !irccasecmp(discrim->hostmask, mask)) break; else if ((discrim->hostmask_type == SUPERSET) && (match_ircglobs(mask, discrim->hostmask))) break; + else if ((discrim->hostmask_type == LASTQUIT) + && (match_ircglobs(discrim->hostmask, hi->last_quit_host))) break; } if (i==hi->masks->used) return 0; } diff --git a/src/nickserv.help b/src/nickserv.help index 039a8b7..7a08b33 100644 --- a/src/nickserv.help +++ b/src/nickserv.help @@ -466,6 +466,7 @@ " HOSTMASK SUPERSET - Account matches if someone with this hostmask can auth to the account", " HOSTMASK EXACT - Account matches if this exact hostmask is in list", " HOSTMASK SUBSET - Account matches if this mask \"covers\" one in their userlist", + " HOSTMASK LASTQUIT - Account matches if this mask \"covers\" user was last seen using", " HOSTMASK - A glob that must match a hostmask for the account (equivalent to HOSTMASK SUPERSET)", " ACCESS - An $O access constraint (=nnn or >nnn)", "$uSee Also:$u search, search action" @@ -483,6 +484,7 @@ " HOSTMASK SUPERSET - Account matches if someone with this hostmask can auth to the account", " HOSTMASK EXACT - Account matches if this exact hostmask is in list", " HOSTMASK SUBSET - Account matches if this mask \"covers\" one in their userlist", + " HOSTMASK LASTQUIT - Account matches if this mask \"covers\" user was last seen using", " HOSTMASK - A glob that must match a hostmask for the account (equivalent to HOSTMASK SUPERSET)", " ACCESS - An $O access constraint (=nnn or >nnn)", "$uSee Also:$u search, search action" diff --git a/src/opserv.c b/src/opserv.c index ba6d7e7..80db462 100644 --- a/src/opserv.c +++ b/src/opserv.c @@ -240,7 +240,7 @@ static const struct message_entry msgtab[] = { { "OSMSG_CHANINFO_TOPIC_UNKNOWN", "Topic: (none / not gathered)" }, { "OSMSG_CHANINFO_BAN_COUNT", "Bans (%d):" }, { "OSMSG_CHANINFO_BAN", "%%s by %%s (%a %b %d %H:%M:%S %Y)" }, - { "OSMSG_CHANINFO_MANY_USERS", "%d users (\"/msg $s %s %s users\" for the list)" }, + { "OSMSG_CHANINFO_MANY_USERS", "%d users (\"/msg $S %s %s users\" for the list)" }, { "OSMSG_CHANINFO_USER_COUNT", "Users (%d):" }, { "OSMSG_CSEARCH_CHANNEL_INFO", "%s [%d users] %s %s" }, { NULL, NULL } @@ -442,7 +442,7 @@ static MODCMD_FUNC(cmd_chaninfo) for (n = 0; n < channel->banlist.used; n++) { ban = channel->banlist.list[n]; strftime(buffer, sizeof(buffer), fmt, localtime(&ban->set)); - reply(buffer, ban->ban, ban->who); + send_message_type(4, user, cmd->parent->bot, buffer, ban->ban, ban->who); } } if ((argc < 2) && (channel->members.used >= 50)) { @@ -1875,7 +1875,7 @@ opserv_join_check(struct modeNode *mNode) change.modes_set |= MODE_MODERATED; if (change.modes_set || change.argc) mod_chanmode_announce(opserv, channel, &change); - send_target_message(0, channel->name, opserv, "OSMSG_FLOOD_MODERATE"); + send_channel_notice(channel, opserv, user_find_message(user, "OSMSG_FLOOD_MODERATE")); opserv_alert("Warning: Possible join flood in %s (currently %d users; channel moderated).", channel->name, channel->members.used); } else { opserv_alert("Warning: Possible join flood in %s (currently %d users).", channel->name, channel->members.used); -- 2.20.1