]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/s_conf.c
Fix some part of IPv6 dline checking.
[irc/rqf/shadowircd.git] / src / s_conf.c
index 856a4e2cc6107a02ac166535ff291e1e4148303a..f27c6aba9facf67adb35c88b1b867212ee688db5 100644 (file)
@@ -35,8 +35,7 @@
 #include "client.h"
 #include "common.h"
 #include "hash.h"
-#include "irc_string.h"
-#include "sprintf_irc.h"
+#include "match.h"
 #include "ircd.h"
 #include "listener.h"
 #include "hostmask.h"
@@ -51,7 +50,7 @@
 
 struct config_server_hide ConfigServerHide;
 
-extern int yyparse();          /* defined in y.tab.c */
+extern int yyparse(void);              /* defined in y.tab.c */
 extern char linebuf[];
 
 #ifndef INADDR_NONE
@@ -309,7 +308,8 @@ verify_access(struct Client *client_p, const char *username)
                aconf = find_address_conf(client_p->host, client_p->sockhost, 
                                        client_p->username, client_p->username,
                                        (struct sockaddr *) &client_p->localClient->ip,
-                                       client_p->localClient->ip.ss_family);
+                                       client_p->localClient->ip.ss_family,
+                                       client_p->localClient->auth_user);
        }
        else
        {
@@ -318,7 +318,8 @@ verify_access(struct Client *client_p, const char *username)
                aconf = find_address_conf(client_p->host, client_p->sockhost,
                                        non_ident, client_p->username,
                                        (struct sockaddr *) &client_p->localClient->ip,
-                                       client_p->localClient->ip.ss_family);
+                                       client_p->localClient->ip.ss_family,
+                                       client_p->localClient->auth_user);
        }
 
        if(aconf == NULL)
@@ -899,35 +900,6 @@ validate_conf(void)
        }
 }
 
-/*
- * lookup_confhost - start DNS lookups of all hostnames in the conf
- * line and convert an IP addresses in a.b.c.d number for to IP#s.
- *
- */
-
-/*
- * conf_connect_allowed
- *
- * inputs      - pointer to inaddr
- *             - int type ipv4 or ipv6
- * output      - ban info or NULL
- * side effects        - none
- */
-struct ConfItem *
-conf_connect_allowed(struct sockaddr *addr, int aftype)
-{
-       struct ConfItem *aconf = find_dline(addr, aftype);
-
-       /* DLINE exempt also gets you out of static limits/pacing... */
-       if(aconf && (aconf->status & CONF_EXEMPTDLINE))
-               return NULL;
-
-       if(aconf != NULL)
-               return aconf;
-
-       return NULL;
-}
-
 /* add_temp_kline()
  *
  * inputs        - pointer to struct ConfItem
@@ -960,7 +932,7 @@ add_temp_kline(struct ConfItem *aconf)
        }
 
        aconf->flags |= CONF_FLAGS_TEMPORARY;
-       add_conf_by_address(aconf->host, CONF_KILL, aconf->user, aconf);
+       add_conf_by_address(aconf->host, CONF_KILL, aconf->user, NULL, aconf);
 }
 
 /* add_temp_dline()
@@ -994,7 +966,7 @@ add_temp_dline(struct ConfItem *aconf)
        }
 
        aconf->flags |= CONF_FLAGS_TEMPORARY;
-       add_conf_by_address(aconf->host, CONF_DLINE, aconf->user, aconf);
+       add_conf_by_address(aconf->host, CONF_DLINE, aconf->user, NULL, aconf);
 }
 
 /* expire_tkline()
@@ -1504,10 +1476,28 @@ conf_add_d_conf(struct ConfItem *aconf)
        }
        else
        {
-               add_conf_by_address(aconf->host, CONF_DLINE, NULL, aconf);
+               add_conf_by_address(aconf->host, CONF_DLINE, NULL, NULL, aconf);
        }
 }
 
+static char *
+strip_tabs(char *dest, const char *src, size_t len)
+{
+       char *d = dest;
+
+       if(dest == NULL || src == NULL)
+               return NULL;
+
+       rb_strlcpy(dest, src, len);
+
+       while(*d)
+       {
+               if(*d == '\t')
+                       *d = ' ';
+               d++;
+       }
+       return dest;
+}
 
 /*
  * yyerror
@@ -1521,7 +1511,7 @@ yyerror(const char *msg)
 {
        char newlinebuf[BUFSIZE];
 
-       strip_tabs(newlinebuf, (const unsigned char *) linebuf, strlen(linebuf));
+       strip_tabs(newlinebuf, linebuf, strlen(linebuf));
 
        sendto_realops_snomask(SNO_GENERAL, L_ALL, "\"%s\", line %d: %s at '%s'",
                             conffilebuf, lineno + 1, msg, newlinebuf);