]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/proto-p10.c
oops. fixing debug message
[irc/evilnet/x3.git] / src / proto-p10.c
index f0a89babdb0c030d4815246234940b8a42ad300c..608db6be4e36796a0c48b534a67e37c819ef14dc 100644 (file)
@@ -380,6 +380,32 @@ GetUserN(const char *numeric) /* using numeric */
     return un;
 }
 
+extern struct userNode *opserv;
+static void
+check_ctcp(struct userNode *user, struct userNode *bot, char *text, UNUSED_ARG(int server_qualified))
+{
+    char *cmd;
+    /* if its a version reply, do an alert check (only alerts with version=something) */
+    if(bot == opserv) {
+        if(text[0] == '\001') {
+            text++;
+            cmd = mysep(&text, " ");
+            if(!irccasecmp(cmd, "VERSION")) {
+                char *version = mysep(&text, "\n");
+                if(!version)
+                    version = "";
+                /* opserv_debug("Opserv got CTCP VERSION Notice from %s: %s", user->nick, version); */
+                /* TODO: setup a ctcp_funcs thing to handle this and other CTCPS properly */
+                user->version_reply = strdup(version);
+                /* TODO: put this in the db */
+                if(match_ircglob(version, "WebTV;*"))
+                    user->no_notice = true; /* webbies cant see notices */
+            }
+        }
+    }
+}
+
+
 static void
 privmsg_user_helper(struct userNode *un, void *data)
 {
@@ -391,6 +417,7 @@ privmsg_user_helper(struct userNode *un, void *data)
         }
     } else {
         if ((num < num_notice_funcs) && notice_funcs[num]) {
+            check_ctcp(pd->user, un, pd->text, pd->is_qualified);
             notice_funcs[num](pd->user, un, pd->text, pd->is_qualified);
         }
     }
@@ -681,6 +708,7 @@ irc_privmsg(struct userNode *from, const char *to, const char *message)
     putsock("%s " P10_PRIVMSG " %s :%s", from->numeric, to, message);
 }
 
+void
 irc_privmsg_user(struct userNode *from, struct userNode *to, const char *message)
 {
     putsock("%s " P10_PRIVMSG " %s :%s", from->numeric, to->numeric, message);
@@ -974,6 +1002,12 @@ irc_svsjoin(struct userNode *from, struct userNode *who, struct chanNode *to)
     putsock("%s " P10_SVSJOIN " %s %s "FMT_TIME_T, from->uplink->numeric, who->numeric, to->name, now);
 }
 
+void
+irc_svspart(struct userNode *from, struct userNode *who, struct chanNode *to)
+{
+    putsock("%s " P10_SVSPART " %s %s", from->uplink->numeric, who->numeric, to->name);
+}
+
 void
 irc_kick(struct userNode *who, struct userNode *target, struct chanNode *channel, const char *msg)
 {
@@ -1200,7 +1234,8 @@ static CMD_FUNC(cmd_eob)
         /* now that we know who our uplink is,
          * we can center the routing map and activate auto-routing.
          */
-        activate_routing(NULL, NULL, NULL);
+        //activate_routing(NULL, NULL, NULL);
+        routing_init();
     }
     sender->self_burst = 0;
     recalc_bursts(sender);
@@ -2359,6 +2394,7 @@ init_parse(void)
     userList_init(&dead_users);
     reg_del_channel_func(remove_unbursted_channel);
     reg_exit_func(parse_cleanup);
+    // reg_notice_func(opserv, check_ctcp);
 }
 
 int