]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/nickserv.c
fix redundant "none" message in llist
[irc/evilnet/x3.git] / src / nickserv.c
index 3cb699223c56e7bfa7f88db6e790a7d54cd92afa..de36d247cc10770d6c6f2d0586a96593d452b5ad 100644 (file)
@@ -889,11 +889,28 @@ reg_handle_rename_func(handle_rename_func_t func)
 static char *
 generate_fakehost(struct handle_info *handle)
 {
+    struct userNode *target;
     extern const char *hidden_host_suffix;
     static char buffer[HOSTLEN+1];
+    char *data;
+    int style = 1;
 
     if (!handle->fakehost) {
-        snprintf(buffer, sizeof(buffer), "%s.%s", handle->handle, hidden_host_suffix);
+        data = conf_get_data("server/hidden_host_type", RECDB_QSTRING);
+        if (data)
+            style = atoi(data);
+
+        if (style == 1)
+            snprintf(buffer, sizeof(buffer), "%s.%s", handle->handle, hidden_host_suffix);
+        else if (style == 2) {
+            /* Due to the way fakehost is coded theres no way i can
+               get the exact user, so for now ill just take the first
+               authed user. */
+            for (target = handle->users; target; target = target->next_authed)
+               break;
+
+            snprintf(buffer, sizeof(buffer), "%s", target->crypthost);
+        }
         return buffer;
     } else if (handle->fakehost[0] == '.') {
         /* A leading dot indicates the stored value is actually a title. */
@@ -2151,6 +2168,32 @@ static NICKSERV_FUNC(cmd_odelcookie)
         return 0;
     }
 
+    switch (hi->cookie->type) {
+    case ACTIVATION:
+        safestrncpy(hi->passwd, hi->cookie->data, sizeof(hi->passwd));
+        if (nickserv_conf.sync_log)
+          SyncLog("ACCOUNTACC %s", hi->handle);
+        break;
+    case PASSWORD_CHANGE:
+        safestrncpy(hi->passwd, hi->cookie->data, sizeof(hi->passwd));
+        if (nickserv_conf.sync_log)
+          SyncLog("PASSCHANGE %s %s", hi->handle, hi->passwd);
+        break;
+    case EMAIL_CHANGE:
+        if (!hi->email_addr && nickserv_conf.sync_log) {
+          if (nickserv_conf.sync_log)
+            SyncLog("REGISTER %s %s %s %s", hi->handle, hi->passwd, hi->cookie->data, user->info);
+        }
+        nickserv_set_email_addr(hi, hi->cookie->data);
+        if (nickserv_conf.sync_log)
+          SyncLog("EMAILCHANGE %s %s", hi->handle, hi->cookie->data);
+        break;
+    default:
+        reply("NSMSG_BAD_COOKIE_TYPE", hi->cookie->type);
+        log_module(NS_LOG, LOG_ERROR, "Bad cookie type %d for account %s.", hi->cookie->type, hi->handle);
+        break;
+    }
+
     nickserv_eat_cookie(hi->cookie);
     reply("NSMSG_ATE_FOREIGN_COOKIE", hi->handle);