]> jfr.im git - solanum.git/blobdiff - ircd/client.c
whowas.c: store account name in whowas (#323)
[solanum.git] / ircd / client.c
index b333f44edd436f29a14087c676bc4cb18298512b..f9336b3dcf5d1bd6a7d72cd3c61b7304f3d1b50c 100644 (file)
@@ -1,11 +1,11 @@
 /*
- *  charybdis: an advanced ircd.
+ *  Solanum: a slightly advanced ircd
  *  client.c: Controls clients.
  *
  *  Copyright (C) 1990 Jarkko Oikarinen and University of Oulu, Co Center
  *  Copyright (C) 1996-2002 Hybrid Development Team
  *  Copyright (C) 2002-2005 ircd-ratbox development team
- *  Copyright (C) 2007 William Pitcock
+ *  Copyright (C) 2007 Ariadne Conill <ariadne@dereferenced.org>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -307,11 +307,6 @@ free_local_client(struct Client *client_p)
 
        rb_free(client_p->localClient->cipher_string);
 
-       if (IsCapable(client_p, CAP_ZIP))
-               ssld_decrement_clicount(client_p->localClient->z_ctl);
-
-       rb_free(client_p->localClient->zipstats);
-
        if (client_p->localClient->ws_ctl != NULL)
                wsockd_decrement_clicount(client_p->localClient->ws_ctl);
 
@@ -399,7 +394,7 @@ check_pings_list(rb_dlink_list * list)
                        {
                                if(IsServer(client_p))
                                {
-                                       sendto_realops_snomask(SNO_GENERAL, L_ALL,
+                                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                                             "No response from %s, closing link",
                                                             client_p->name);
                                        ilog(L_SERVER,
@@ -466,7 +461,7 @@ check_unknowns_list(rb_dlink_list * list)
                {
                        if(IsAnyServer(client_p))
                        {
-                               sendto_realops_snomask(SNO_GENERAL, is_remote_connect(client_p) ? L_NETWIDE : L_ALL,
+                               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                                     "No response from %s, closing link",
                                                     client_p->name);
                                ilog(L_SERVER,
@@ -548,16 +543,16 @@ check_klines(void)
                {
                        if(IsExemptKline(client_p))
                        {
-                               sendto_realops_snomask(SNO_GENERAL, L_ALL,
+                               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                                     "KLINE over-ruled for %s, client is kline_exempt [%s@%s]",
                                                     get_client_name(client_p, HIDE_IP),
                                                     aconf->user, aconf->host);
                                continue;
                        }
 
-                       sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                            "KLINE active for %s",
-                                            get_client_name(client_p, HIDE_IP));
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
+                                            "Disconnecting K-Lined user %s (%s@%s)",
+                                            get_client_name(client_p, HIDE_IP), aconf->user, aconf->host);
 
                        notify_banned_client(client_p, aconf, K_LINED);
                        continue;
@@ -605,7 +600,7 @@ check_one_kline(struct ConfItem *kline)
                case HM_IPV6:
                        if (IsConfDoSpoofIp(client_p->localClient->att_conf) &&
                                        IsConfKlineSpoof(client_p->localClient->att_conf))
-                               continue;
+                               break;
                        if (client_p->localClient->ip.ss_family == AF_INET6 && sockaddr.ss_family == AF_INET &&
                                        rb_ipv4_from_ipv6((struct sockaddr_in6 *)&client_p->localClient->ip, &ip4)
                                                && comp_with_mask_sock((struct sockaddr *)&ip4, (struct sockaddr *)&sockaddr, bits))
@@ -620,7 +615,7 @@ check_one_kline(struct ConfItem *kline)
                                matched = 1;
                        if (IsConfDoSpoofIp(client_p->localClient->att_conf) &&
                                        IsConfKlineSpoof(client_p->localClient->att_conf))
-                               continue;
+                               break;
                        if (match(kline->host, client_p->sockhost))
                                matched = 1;
                        break;
@@ -638,9 +633,9 @@ check_one_kline(struct ConfItem *kline)
                        continue;
                }
 
-               sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                        "KLINE active for %s",
-                                        get_client_name(client_p, HIDE_IP));
+               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
+                                        "Disconnecting K-Lined user %s (%s@%s)",
+                                        get_client_name(client_p, HIDE_IP), kline->user, kline->host);
 
                notify_banned_client(client_p, kline, K_LINED);
        }
@@ -673,9 +668,9 @@ check_dlines(void)
                        if(aconf->status & CONF_EXEMPTDLINE)
                                continue;
 
-                       sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                            "DLINE active for %s",
-                                            get_client_name(client_p, HIDE_IP));
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
+                                            "Disconnecting D-Lined user %s (%s)",
+                                            get_client_name(client_p, HIDE_IP), aconf->host);
 
                        notify_banned_client(client_p, aconf, D_LINED);
                        continue;
@@ -722,15 +717,16 @@ check_xlines(void)
                {
                        if(IsExemptKline(client_p))
                        {
-                               sendto_realops_snomask(SNO_GENERAL, L_ALL,
+                               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                                     "XLINE over-ruled for %s, client is kline_exempt [%s]",
                                                     get_client_name(client_p, HIDE_IP),
                                                     aconf->host);
                                continue;
                        }
 
-                       sendto_realops_snomask(SNO_GENERAL, L_ALL, "XLINE active for %s",
-                                            get_client_name(client_p, HIDE_IP));
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
+                                               "Disconnecting X-Lined user %s (%s)",
+                                               get_client_name(client_p, HIDE_IP), aconf->host);
 
                        (void) exit_client(client_p, client_p, &me, "Bad user info");
                        continue;
@@ -772,11 +768,11 @@ resv_nick_fnc(const char *mask, const char *reason, int temp_time)
                        nick = client_p->id;
 
                        /* Tell opers. */
-                       sendto_realops_snomask(SNO_GENERAL, L_ALL,
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                "RESV forced nick change for %s!%s@%s to %s; nick matched [%s] (%s)",
                                client_p->name, client_p->username, client_p->host, nick, mask, reason);
 
-                       sendto_realops_snomask(SNO_NCHANGE, L_ALL,
+                       sendto_realops_snomask(SNO_NCHANGE, L_NETWIDE,
                                "Nick change: From %s to %s [%s@%s]",
                                client_p->name, nick, client_p->username, client_p->host);
 
@@ -1147,7 +1143,7 @@ free_exited_clients(void *unused)
                                                target_p->name, (unsigned int) target_p->status,
                                                (unsigned long long)target_p->flags,  target_p->handler);
                                        sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                               "Please report this to the charybdis developers!");
+                                               "Please report this to the solanum developers!");
                                        found++;
                                }
                        }
@@ -1291,7 +1287,7 @@ exit_aborted_clients(void *unused)
                                        abt->client->name, (unsigned int) abt->client->status,
                                        (unsigned long long)abt->client->flags, abt->client->handler);
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                       "Please report this to the charybdis developers!");
+                                       "Please report this to the solanum developers!");
                                continue;
                        }
                }
@@ -1301,7 +1297,7 @@ exit_aborted_clients(void *unused)
                rb_dlinkDelete(ptr, &abort_list);
 
                if(IsAnyServer(abt->client))
-                       sendto_realops_snomask(SNO_GENERAL, L_ALL,
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                             "Closing link to %s: %s",
                                              abt->client->name, abt->notice);
 
@@ -1833,11 +1829,11 @@ show_ip(struct Client *source_p, struct Client *target_p)
                 * to local opers.
                 */
                if(!ConfigFileEntry.hide_spoof_ips &&
-                  (source_p == NULL || MyOper(source_p)))
+                  (source_p == NULL || HasPrivilege(source_p, "auspex:hostname")))
                        return 1;
                return 0;
        }
-       else if(IsDynSpoof(target_p) && (source_p != NULL && !IsOper(source_p)))
+       else if(IsDynSpoof(target_p) && (source_p != NULL && !HasPrivilege(source_p, "auspex:hostname")))
                return 0;
        else
                return 1;
@@ -2135,7 +2131,7 @@ error_exit_client(struct Client *client_p, int error)
        {
                if(error == 0)
                {
-                       sendto_realops_snomask(SNO_GENERAL, is_remote_connect(client_p) && !IsServer(client_p) ? L_NETWIDE : L_ALL,
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                             "Server %s closed the connection",
                                             client_p->name);
 
@@ -2144,7 +2140,7 @@ error_exit_client(struct Client *client_p, int error)
                }
                else
                {
-                       sendto_realops_snomask(SNO_GENERAL, is_remote_connect(client_p) && !IsServer(client_p) ? L_NETWIDE : L_ALL,
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                        "Lost connection to %s: %s",
                                        client_p->name, strerror(current_error));
                        ilog(L_SERVER, "Lost connection to %s: %s",