X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/d0f04f713ca0b689f745842fcc9e61d24610f11a..63c95a478af1b51ad021abef19f630de189f0229:/src/mod-track.c diff --git a/src/mod-track.c b/src/mod-track.c index 55908db..838a816 100644 --- a/src/mod-track.c +++ b/src/mod-track.c @@ -122,6 +122,8 @@ static int check_track_user(struct userNode *user) { int found; + if(!user) + return 0; dict_find(track_db, (const char *)user->nick, &found); return found; } @@ -219,7 +221,7 @@ track_part(struct modeNode *mn, const char *reason) { static void track_kick(struct userNode *kicker, struct userNode *victim, struct chanNode *chan) { if (!track_cfg.enabled) return; - if (check_track_kick(track_cfg) && (check_track_user(kicker) || check_track_user(victim))) + if (check_track_kick(track_cfg) && ((check_track_user(kicker) || check_track_user(victim)))) { UPDATE_TIMESTAMP(); TRACK("$bKICK$b %s from %s by %s", victim->nick, chan->name, (kicker ? kicker->nick : "some server")); @@ -291,7 +293,7 @@ track_channel_mode(struct userNode *who, struct chanNode *channel, char **modes, if(who) { if (who->uplink->burst && !track_cfg.show_bursts) return; - if (!check_track_chanmode(track_cfg) && !check_track_user(who)) return; + if (!check_track_chanmode(track_cfg) || !check_track_user(who)) return; } else return; @@ -407,7 +409,7 @@ track_channel_mode(struct userNode *who, struct chanNode *channel, char **modes, static void check_track_state(struct userNode *user) { - send_message_type(4, user, track_cfg.bot, "TRACK snomask is:%s%s%s%s%s%s%s%s%s", + send_message_type(4, user, track_cfg.bot, "TRACK is tracking: %s%s%s%s%s%s%s%s%s", check_track_nick(track_cfg) ? " nick":"", check_track_join(track_cfg) ? " join":"", check_track_part(track_cfg) ? " part":"", check_track_kick(track_cfg) ? " kick":"", check_track_new(track_cfg) ? " new":"", check_track_del(track_cfg) ? " del":"", @@ -423,6 +425,7 @@ MODCMD_FUNC(cmd_track) if(argc == 1) { + svccmd_send_help_brief(user, track_cfg.bot, cmd); check_track_state(user); return 0; } @@ -440,20 +443,23 @@ MODCMD_FUNC(cmd_track) if(add == 2) { - if ((!strcasecmp(&data[i], "all"))) + if ((!strcasecmp(data, "all"))) { set_track_all(track_cfg); check_track_state(user); TRACK("$bALERT$b TRACK fully enabled by %s", user->nick); } - else if (!strcasecmp(&data[i], "none")) + else if (!strcasecmp(data, "none")) { clear_track_all(track_cfg); check_track_state(user); TRACK("$bALERT$b TRACK disabled by %s", user->nick); } else - TRACK("Unrecognised parameter: %s", data); + { + send_message_type(4, user, track_cfg.bot, "Unrecognised parameter: %s", data); + svccmd_send_help_brief(user, track_cfg.bot, cmd); + } return 0; } @@ -587,7 +593,10 @@ MODCMD_FUNC(cmd_deltrack) send_message_type(4, user, track_cfg.bot, "This nick isn't monitored."); } else + { send_message_type(4, user, track_cfg.bot, "No nick or invalid nick specified."); + svccmd_send_help_brief(user, track_cfg.bot, cmd); + } return 0; } @@ -601,9 +610,13 @@ MODCMD_FUNC(cmd_addtrack) UPDATE_TIMESTAMP(); TRACK("$bALERT$b Manually enabled monitoring of %s!%s@%s on %s requested by %s", un->nick, un->ident, un->hostname, un->uplink->name, user->nick); + send_message_type(4, user, track_cfg.bot, "Now tracking %s!%s@%s on %s", un->nick,un->ident,un->hostname, un->uplink->name); } else + { send_message_type(4, user, track_cfg.bot, "No nick or invalid nick specified."); + svccmd_send_help_brief(user, track_cfg.bot, cmd); + } return 0; } @@ -639,7 +652,9 @@ track_conf_read(void) { str = database_get_data(node, "channel", RECDB_QSTRING); if (!str) return; - track_cfg.channel = AddChannel(str, now, "+sntim", NULL, NULL); + // XXX - dont do addchannel if the channel is being shared with + // another module: + track_cfg.channel = AddChannel(str, now, "+sntOm", NULL, NULL); if (!track_cfg.channel) return; str = database_get_data(node, "show_bursts", RECDB_QSTRING);