]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/mod-track.c
improve stats routing command
[irc/evilnet/x3.git] / src / mod-track.c
index 0c771f90dd68b954db0ebd384620f30dfbae8b88..838a81619f70d79b06902d891702da3f5f8a8133 100644 (file)
@@ -3,7 +3,7 @@
  *
  * This file is part of x3.
  *
- * srvx is free software; you can redistribute it and/or modify
+ * x3 is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
@@ -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);