]> jfr.im git - irc/evilnet/x3.git/commitdiff
setting an epithet now sets the epithet as a SWHOIS message in the ircd (nefarious...
authorsirvulcan <redacted>
Tue, 23 May 2006 07:30:54 +0000 (07:30 +0000)
committersirvulcan <redacted>
Tue, 23 May 2006 07:30:54 +0000 (07:30 +0000)
ChangeLog
src/chanserv.c
src/hosthiding.c
src/nickserv.c
src/proto-p10.c
src/proto.h

index 2538bfa14b84c661457d0f2b3370303f51f43dc2..4343ecfcbd23acef97363f611568fa3bf4dbd982 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,18 @@
 /***********************************************************************
  X3 ChangeLog
 
+2006-05-23  Neil Spierling  <sirvulcan@gmail.com>
+
+       * src/chanserv.c: Set SWHOIS's when a user auths.
+
+       * src/hosthiding.c: Fixed a segfault.
+
+       * src/nickserv.c: Epithets now use SWHOIS.
+
+       * src/proto.h: Declerations for irc_swhois.
+
+       * src/proto-p10.c: Handle SWHOIS's.
+
 2006-05-23  Neil Spierling  <sirvulcan@gmail.com>
 
        * src/hash.h: Bumped SOCKIPLEN
index ba9ab9ac6a092c6678c9473af8fec051f90fcb7f..3f9dcd1ffd6023a8063fc583bd7bf5cc75706cf7 100644 (file)
@@ -7151,6 +7151,9 @@ handle_auth(struct userNode *user, UNUSED_ARG(struct handle_info *old_handle))
             irc_silence(user, user->handle_info->ignores->list[i], 1);
         }
     }
+
+    if (user->handle_info->epithet)
+      irc_swhois(chanserv, user, user->handle_info->epithet);
 }
 
 static void
index 9c465283f89457301c3c614e98ccb08dd15a6888..943e23079fdfac14f94f5a2ba972ecf579487821 100644 (file)
@@ -260,6 +260,9 @@ make_ipv6virthost (char *curr, char *host, char *new)
   int parc = 0, parc2 = 0;
   unsigned int hash[8];
 
+  if ((strlen(host) < 3) || (strlen(curr) < 3))
+    return;
+
   strncpy (s, curr, HOSTLEN);
   strncpy (s2, host, HOSTLEN);
 
index 12e1a30d9e3f7da2e1b929d394f37ae2983b9f23..676c5c890fc97aa791e58c734cbd82c9dde55f74 100644 (file)
@@ -2861,6 +2861,8 @@ static OPTION_FUNC(opt_epithet)
 {
     if ((argc > 1) && oper_has_access(user, nickserv, nickserv_conf.set_epithet_level, 0)) {
         char *epithet;
+        struct userNode *target, *next_un;
+
         if (!override) {
             send_message(user, nickserv, "MSG_SETTING_PRIVILEGED", argv[0]);
             return 0;
@@ -2874,6 +2876,12 @@ static OPTION_FUNC(opt_epithet)
             hi->epithet = NULL;
         else
             hi->epithet = strdup(epithet);
+
+        for (target = hi->users; target; target = next_un) {
+          irc_swhois(nickserv, target, hi->epithet);
+
+          next_un = target->next_authed;
+        }
     }
 
     if (hi->epithet)
index d545a6238bf085908b367533b49fd4c4d3acb037..7d17423f9b3a734ae2fd826de0a20b260e125e03 100644 (file)
@@ -91,6 +91,7 @@
 #define CMD_SQUIT               "SQUIT"
 #define CMD_STATS               "STATS"
 #define CMD_SVSNICK             "SVSNICK"
+#define CMD_SWHOIS              "SWHOIS"
 #define CMD_TIME                "TIME"
 #define CMD_TOPIC               "TOPIC"
 #define CMD_TRACE               "TRACE"
 #define TOK_SQUIT               "SQ"
 #define TOK_STATS               "R"
 #define TOK_SVSNICK             "SN"
+#define TOK_SWHOIS              "SW"
 #define TOK_TIME                "TI"
 #define TOK_TOPIC               "T"
 #define TOK_TRACE               "TR"
 #define P10_SQUIT               TYPE(SQUIT)
 #define P10_STATS               TYPE(STATS)
 #define P10_SVSNICK             TYPE(SVSNICK)
+#define P10_SWHOIS              TYPE(SWHOIS)
 #define P10_TIME                TYPE(TIME)
 #define P10_TOPIC               TYPE(TOPIC)
 #define P10_TRACE               TYPE(TRACE)
@@ -897,6 +900,14 @@ irc_svsnick(struct userNode *from, struct userNode *target, const char *newnick)
     putsock("%s " P10_SVSNICK " %s %s "FMT_TIME_T, from->uplink->numeric, target->numeric, newnick, now);
 }
 
+void
+irc_swhois(struct userNode *from, struct userNode *target, const char *message)
+{
+    putsock("%s " P10_SWHOIS " %s %s%s", from->uplink->numeric, target->numeric, message ? ":" : "",
+                                         message ? message : "");
+
+}
+
 void
 irc_part(struct userNode *who, struct chanNode *what, const char *reason)
 {
@@ -1866,6 +1877,8 @@ init_parse(void)
     dict_insert(irc_func_dict, TOK_STATS, cmd_stats);
     dict_insert(irc_func_dict, CMD_SVSNICK, cmd_svsnick);
     dict_insert(irc_func_dict, TOK_SVSNICK, cmd_svsnick);
+    dict_insert(irc_func_dict, CMD_SWHOIS, cmd_dummy);
+    dict_insert(irc_func_dict, TOK_SWHOIS, cmd_dummy);
     dict_insert(irc_func_dict, CMD_WHOIS, cmd_whois);
     dict_insert(irc_func_dict, TOK_WHOIS, cmd_whois);
     dict_insert(irc_func_dict, CMD_GLINE, cmd_gline);
index c892d9bf7b64ddc8d46a8b112c6a260b0e6ed2e7..a4f85465ae67fd8db6af950b3004573e256bd86e 100644 (file)
@@ -151,6 +151,7 @@ void irc_kill(struct userNode *from, struct userNode *target, const char *messag
 void irc_raw(const char *what);
 void irc_stats(struct userNode *from, struct server *target, char type);
 void irc_svsnick(struct userNode *from, struct userNode *target, const char *newnick);
+void irc_swhois(struct userNode *from, struct userNode *target, const char *message);
 
 /* account maintenance */
 void irc_rename(struct userNode *user, const char *new_handle);