X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/116d100f2d50e8224a4923917b1d8a31842edc28..35305a49c0973c0e29e4a607c2b507a2d8face43:/src/nickserv.c diff --git a/src/nickserv.c b/src/nickserv.c index f1e6d6c..eb077f5 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -27,7 +27,7 @@ #include "sendmail.h" #include "timeq.h" -#include +#include #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");