]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/nickserv.c
changing how libtre is dealt with
[irc/evilnet/x3.git] / src / nickserv.c
index f1e6d6c01ee203e43e5eea96da5bcc6606cb35b9..eb077f590e61a8ae494f44c64869cd5059922681 100644 (file)
@@ -27,7 +27,7 @@
 #include "sendmail.h"
 #include "timeq.h"
 
-#include <regex.h>
+#include <tre/regex.h>
 
 #define NICKSERV_CONF_NAME "services/nickserv"
 
@@ -2963,26 +2963,28 @@ static OPTION_FUNC(opt_title)
         }
 
         title = argv[1];
-        if (strchr(title, '.')) {
-            reply("NSMSG_TITLE_INVALID");
-            return 0;
+        if(!strcmp(title, "*")) {
+            free(hi->fakehost);
+            hi->fakehost = NULL;
         }
-        /* Alphanumeric titles only. */
-        for(sptr = title; *sptr; sptr++) {
-            if(!isalnum(*sptr) && *sptr != '-') {
+        else {
+            if (strchr(title, '.')) {
                 reply("NSMSG_TITLE_INVALID");
                 return 0;
             }
-        }
-        if ((strlen(user->handle_info->handle) + strlen(title) +
-             strlen(nickserv_conf.titlehost_suffix) + 2) > HOSTLEN) {
-            reply("NSMSG_TITLE_TRUNCATED");
-            return 0;
-        }
-        free(hi->fakehost);
-        if (!strcmp(title, "*")) {
-            hi->fakehost = NULL;
-        } else {
+            /* Alphanumeric titles only. */
+            for(sptr = title; *sptr; sptr++) {
+                if(!isalnum(*sptr) && *sptr != '-') {
+                    reply("NSMSG_TITLE_INVALID");
+                    return 0;
+                }
+            }
+            if ((strlen(user->handle_info->handle) + strlen(title) +
+                 strlen(nickserv_conf.titlehost_suffix) + 2) > HOSTLEN) {
+                reply("NSMSG_TITLE_TRUNCATED");
+                return 0;
+            }
+            free(hi->fakehost);
             hi->fakehost = malloc(strlen(title)+2);
             hi->fakehost[0] = '.';
             strcpy(hi->fakehost+1, title);
@@ -2990,8 +2992,24 @@ static OPTION_FUNC(opt_title)
         apply_fakehost(hi);
     } else if (hi->fakehost && (hi->fakehost[0] == '.'))
         title = hi->fakehost + 1;
-    else
-        title = NULL;
+    else {
+        /* If theres no title set then the default title will therefore
+           be the first part of hidden_host in x3.conf.example, so for
+           consistency with opt_fakehost we will print this here */
+        char *hs, *hidden_suffix, *rest;
+
+        hs = conf_get_data("server/hidden_host", RECDB_QSTRING);
+        hidden_suffix = strdup(hs);
+
+        /* Yes we do this twice */
+        rest = strrchr(hidden_suffix, '.');
+        *rest++ = '\0';
+        rest = strrchr(hidden_suffix, '.');
+        *rest++ = '\0';
+
+        title = hidden_suffix;
+    }
+
     if (!title)
         none = user_find_message(user, "MSG_NONE");
     send_message(user, nickserv, "NSMSG_SET_TITLE", title ? title : none);
@@ -3094,11 +3112,9 @@ static OPTION_FUNC(opt_fakehost)
         }
         apply_fakehost(hi);
         fake = hi->fakehost;
-    } else {
-        /* no arg or no access, how did we even GET here? */
-        reply("MSG_SETTING_PRIVILEGED", argv[0]);
-        return 0;
-    }
+    } else
+        fake = generate_fakehost(hi);
+
     /* Tell them we set the host */
     if (!fake)
         fake = user_find_message(user, "MSG_NONE");