]> jfr.im git - solanum.git/blobdiff - ircd/s_user.c
remove callerid definitions
[solanum.git] / ircd / s_user.c
index b18df182ce3b3200c3c1aac8333c4569650ec941..bda9bca82844b71d6aa2642ff2c5bc27b06d39d4 100644 (file)
@@ -81,7 +81,7 @@ int user_modes[256] = {
        0,                      /* O */
        0,                      /* P */
        UMODE_NOFORWARD,        /* Q */
-       UMODE_REGONLYMSG,       /* R */
+       0,                      /* R */
        UMODE_SERVICE,          /* S */
        0,                      /* T */
        0,                      /* U */
@@ -97,7 +97,7 @@ int user_modes[256] = {
        0,                      /* d */
        0,                      /* e */
        0,                      /* f */
-       UMODE_CALLERID,         /* g */
+       0,                      /* g */
        0,                      /* h */
        UMODE_INVISIBLE,        /* i */
        0,                      /* j */
@@ -213,25 +213,25 @@ authd_check(struct Client *client_p, struct Client *source_p)
 
        switch(source_p->preClient->auth.cause)
        {
-       case 'B':       /* Blacklists */
+       case 'B':       /* DNSBL */
                {
-                       struct BlacklistStats *stats;
-                       char *blacklist = source_p->preClient->auth.data;
+                       struct DNSBLEntryStats *stats;
+                       char *dnsbl_name = source_p->preClient->auth.data;
 
-                       if(bl_stats != NULL)
-                               if((stats = rb_dictionary_retrieve(bl_stats, blacklist)) != NULL)
+                       if(dnsbl_stats != NULL)
+                               if((stats = rb_dictionary_retrieve(dnsbl_stats, dnsbl_name)) != NULL)
                                        stats->hits++;
 
                        if(IsExemptKline(source_p) || IsConfExemptDNSBL(aconf))
                        {
                                sendto_one_notice(source_p, ":*** Your IP address %s is listed in %s, but you are exempt",
-                                               source_p->sockhost, blacklist);
+                                               source_p->sockhost, dnsbl_name);
                                break;
                        }
 
                        sendto_realops_snomask(SNO_REJ, L_NETWIDE,
                                "Listed on DNSBL %s: %s (%s@%s) [%s] [%s]",
-                               blacklist, source_p->name, source_p->username, source_p->host,
+                               dnsbl_name, source_p->name, source_p->username, source_p->host,
                                IsIPSpoof(source_p) ? "255.255.255.255" : source_p->sockhost,
                                source_p->info);
 
@@ -239,9 +239,9 @@ authd_check(struct Client *client_p, struct Client *source_p)
                                me.name, source_p->name, reason);
 
                        sendto_one_notice(source_p, ":*** Your IP address %s is listed in %s",
-                               source_p->sockhost, blacklist);
-                       add_reject(source_p, NULL, NULL);
-                       exit_client(client_p, source_p, &me, "Banned (DNS blacklist)");
+                               source_p->sockhost, dnsbl_name);
+                       add_reject(source_p, NULL, NULL, NULL, "Banned (listed in a DNSBL)");
+                       exit_client(client_p, source_p, &me, "Banned (listed in a DNSBL)");
                        reject = true;
                }
                break;
@@ -283,7 +283,7 @@ authd_check(struct Client *client_p, struct Client *source_p)
                        sendto_one_notice(source_p,
                                ":*** Your IP address %s has been detected as an open proxy (type %s, port %s)",
                                source_p->sockhost, proxy, port);
-                       add_reject(source_p, NULL, NULL);
+                       add_reject(source_p, NULL, NULL, NULL, "Banned (Open proxy)");
                        exit_client(client_p, source_p, &me, "Banned (Open proxy)");
                        reject = true;
                }
@@ -307,7 +307,7 @@ authd_check(struct Client *client_p, struct Client *source_p)
 
                sendto_one_notice(source_p, ":*** Rejected by authentication system: %s",
                        reason);
-               add_reject(source_p, NULL, NULL);
+               add_reject(source_p, NULL, NULL, NULL, "Banned (authentication system)");
                exit_client(client_p, source_p, &me, "Banned (authentication system)");
                reject = true;
                break;
@@ -348,7 +348,6 @@ int
 register_local_user(struct Client *client_p, struct Client *source_p)
 {
        struct ConfItem *aconf, *xconf;
-       struct User *user = source_p->user;
        char tmpstr2[BUFSIZE];
        char ipaddr[HOSTIPLEN];
        char myusername[USERLEN+1];
@@ -387,7 +386,9 @@ register_local_user(struct Client *client_p, struct Client *source_p)
        if(source_p->preClient->auth.cid)
                return -1;
 
-       client_p->localClient->last = rb_current_time();
+       /* Set firsttime here so that post_registration_delay works from registration,
+        * rather than initial connection.  */
+       source_p->localClient->firsttime = client_p->localClient->last = rb_current_time();
 
        /* XXX - fixme. we shouldnt have to build a users buffer twice.. */
        if(!IsGotId(source_p) && (strchr(source_p->username, '[') != NULL))
@@ -415,13 +416,13 @@ register_local_user(struct Client *client_p, struct Client *source_p)
        /* Apply nick override */
        if(*source_p->preClient->spoofnick)
        {
-               char note[NICKLEN + 10];
+               char note[NAMELEN + 10];
 
                del_from_client_hash(source_p->name, source_p);
                rb_strlcpy(source_p->name, source_p->preClient->spoofnick, NICKLEN + 1);
                add_to_client_hash(source_p->name, source_p);
 
-               snprintf(note, NICKLEN + 10, "Nick: %s", source_p->name);
+               snprintf(note, sizeof(note), "Nick: %s", source_p->name);
                rb_note(source_p->localClient->F, note);
        }
 
@@ -448,6 +449,14 @@ register_local_user(struct Client *client_p, struct Client *source_p)
                return (CLIENT_EXITED);
        }
 
+       if(IsSCTP(source_p) && !IsConfAllowSCTP(aconf))
+       {
+               ServerStats.is_ref++;
+               sendto_one_notice(source_p, ":*** Notice -- You are not allowed to use SCTP on this server");
+               exit_client(client_p, source_p, &me, "SCTP not allowed");
+               return (CLIENT_EXITED);
+       }
+
        if(!IsGotId(source_p))
        {
                const char *p;
@@ -480,7 +489,7 @@ register_local_user(struct Client *client_p, struct Client *source_p)
                }
        }
 
-       if(IsNeedSasl(aconf) && !*user->suser)
+       if(IsNeedSasl(aconf) && !*source_p->user->suser)
        {
                ServerStats.is_ref++;
                sendto_one_notice(source_p, ":*** Notice -- You need to identify via SASL to use this server");
@@ -546,7 +555,7 @@ register_local_user(struct Client *client_p, struct Client *source_p)
           (xconf = find_xline(source_p->info, 1)) != NULL)
        {
                ServerStats.is_ref++;
-               add_reject(source_p, xconf->host, NULL);
+               add_reject(source_p, xconf->host, NULL, NULL, NULL);
                exit_client(client_p, source_p, &me, "Bad user info");
                return CLIENT_EXITED;
        }
@@ -625,7 +634,7 @@ register_local_user(struct Client *client_p, struct Client *source_p)
                add_to_id_hash(source_p->id, source_p);
        }
 
-       if (IsSSL(source_p))
+       if (IsSSL(source_p) && !IsInsecure(source_p))
                source_p->umodes |= UMODE_SSLCLIENT;
 
        if (source_p->umodes & UMODE_INVISIBLE)
@@ -665,7 +674,7 @@ register_local_user(struct Client *client_p, struct Client *source_p)
 
        free_pre_client(source_p);
 
-       introduce_client(client_p, source_p, user, source_p->name, 1);
+       introduce_client(client_p, source_p, source_p->user, source_p->name, 1);
        return 0;
 }
 
@@ -918,7 +927,7 @@ report_and_set_user_flags(struct Client *source_p, struct ConfItem *aconf)
        if(IsConfExemptDNSBL(aconf))
                /* kline exempt implies this, don't send both */
                if(!IsConfExemptKline(aconf))
-                       sendto_one_notice(source_p, ":*** You are exempt from DNS blacklists");
+                       sendto_one_notice(source_p, ":*** You are exempt from DNSBL listings");
 
        /* If this user is exempt from user limits set it F lined" */
        if(IsConfExemptLimits(aconf))
@@ -1114,12 +1123,19 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char
                                        }
                                        source_p->flags &= ~OPER_FLAGS;
 
-                                       rb_free(source_p->localClient->opername);
-                                       source_p->localClient->opername = NULL;
-
                                        rb_dlinkFindDestroy(source_p, &local_oper_list);
-                                       privilegeset_unref(source_p->localClient->privset);
-                                       source_p->localClient->privset = NULL;
+                               }
+
+                               if(source_p->user->opername != NULL)
+                               {
+                                       rb_free(source_p->user->opername);
+                                       source_p->user->opername = NULL;
+                               }
+
+                               if(source_p->user->privset != NULL)
+                               {
+                                       privilegeset_unref(source_p->user->privset);
+                                       source_p->user->privset = NULL;
                                }
 
                                rb_dlinkFindDestroy(source_p, &oper_list);
@@ -1406,8 +1422,8 @@ oper_up(struct Client *source_p, struct oper_conf *oper_p)
        SetExemptKline(source_p);
 
        source_p->flags |= oper_p->flags;
-       source_p->localClient->opername = rb_strdup(oper_p->name);
-       source_p->localClient->privset = privilegeset_ref(oper_p->privset);
+       source_p->user->opername = rb_strdup(oper_p->name);
+       source_p->user->privset = privilegeset_ref(oper_p->privset);
 
        rb_dlinkAddAlloc(source_p, &local_oper_list);
        rb_dlinkAddAlloc(source_p, &oper_list);
@@ -1426,6 +1442,8 @@ oper_up(struct Client *source_p, struct oper_conf *oper_p)
        sendto_realops_snomask(SNO_GENERAL, L_ALL,
                             "%s (%s!%s@%s) is now an operator", oper_p->name, source_p->name,
                             source_p->username, source_p->host);
+       sendto_server(NULL, NULL, CAP_TS6, NOCAPS, ":%s OPER %s %s",
+                       use_id(source_p), oper_p->name, oper_p->privset->name);
        if(!(old & UMODE_INVISIBLE) && IsInvisible(source_p))
                ++Count.invisi;
        if((old & UMODE_INVISIBLE) && !IsInvisible(source_p))