#include "sendmail.h"
#include "timeq.h"
-#include <regex.h>
+#include <tre/regex.h>
#define NICKSERV_CONF_NAME "services/nickserv"
}
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);
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);
}
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");