]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/s_conf.c
Store the creation time of klines and dlines as a time_t instead of as text.
[irc/rqf/shadowircd.git] / src / s_conf.c
index 66d407cef8ba768d5aa33d5e3ac59316b76af9c2..ae83d7aa8c7df7f869292d60e990d03df7b8f009 100644 (file)
@@ -30,6 +30,7 @@
 #include "s_newconf.h"
 #include "newconf.h"
 #include "s_serv.h"
+#include "s_user.h"
 #include "s_stats.h"
 #include "channel.h"
 #include "class.h"
@@ -305,6 +306,8 @@ verify_access(struct Client *client_p, const char *username)
 {
        struct ConfItem *aconf;
        char non_ident[USERLEN + 1];
+       char reasonbuf[BUFSIZE];
+       char *reason;
 
        if(IsGotId(client_p))
        {
@@ -375,9 +378,18 @@ verify_access(struct Client *client_p, const char *username)
        {
                if(ConfigFileEntry.kline_with_reason)
                {
+                       if(aconf->created)
+                       {
+                               snprintf(reasonbuf, sizeof reasonbuf, "%s (%s)",
+                                               aconf->passwd,
+                                               smalldate(aconf->created));
+                               reason = reasonbuf;
+                       }
+                       else
+                               reason = aconf->passwd;
                        sendto_one(client_p,
                                        form_str(ERR_YOUREBANNEDCREEP),
-                                       me.name, client_p->name, aconf->passwd);
+                                       me.name, client_p->name, reason);
                }
                add_reject(client_p, aconf->user, aconf->host);
                return (BANNED_CLIENT);
@@ -680,6 +692,8 @@ set_default_conf(void)
 
        ConfigFileEntry.default_operstring = rb_strdup("is an IRC operator");
        ConfigFileEntry.default_adminstring = rb_strdup("is a Server Administrator");
+       ConfigFileEntry.default_operhost = rb_strdup("");
+       ConfigFileEntry.static_quit = rb_strdup("");
        ConfigFileEntry.servicestring = rb_strdup("is a Network Service");
 
        ConfigFileEntry.default_umodes = UMODE_INVISIBLE;       
@@ -693,6 +707,7 @@ set_default_conf(void)
        ConfigFileEntry.nick_delay = 900;       /* 15 minutes */
        ConfigFileEntry.target_change = YES;
        ConfigFileEntry.anti_spam_exit_message_time = 0;
+       ConfigFileEntry.use_part_messages = YES;
        ConfigFileEntry.ts_warn_delta = TS_WARN_DELTA_DEFAULT;
        ConfigFileEntry.ts_max_delta = TS_MAX_DELTA_DEFAULT;
        ConfigFileEntry.client_exit = YES;
@@ -716,6 +731,7 @@ set_default_conf(void)
        ConfigFileEntry.pace_wait_simple = 1;
        ConfigFileEntry.short_motd = NO;
        ConfigFileEntry.no_oper_flood = NO;
+       ConfigFileEntry.true_no_oper_flood = NO;
        ConfigFileEntry.fname_userlog = NULL;
        ConfigFileEntry.fname_fuserlog = NULL;
        ConfigFileEntry.fname_operlog = NULL;
@@ -749,7 +765,7 @@ set_default_conf(void)
        ConfigChannel.autochanmodes = rb_strdup("nt");
        ConfigChannel.exemptchanops = rb_strdup("");
        ConfigChannel.use_halfop = YES;
-       ConfigChannel.use_owner = YES;
+       ConfigChannel.use_admin = YES;
        ConfigChannel.use_except = YES;
        ConfigChannel.use_invex = YES;
        ConfigChannel.use_knock = YES;
@@ -797,6 +813,7 @@ set_default_conf(void)
        ConfigFileEntry.reject_duration = 120;
        ConfigFileEntry.throttle_count = 4;
        ConfigFileEntry.throttle_duration = 60;
+       ConfigFileEntry.expire_override_time = 300;
 
        ServerInfo.default_max_clients = MAXCONNECTIONS;
 
@@ -876,6 +893,12 @@ validate_conf(void)
                splitchecking = 0;
        }
 
+       if(!valid_hostname(ConfigFileEntry.default_operhost))
+       {
+               conf_report_error("Warning -- invalid default_operhost specified, ignoring.");
+               ConfigFileEntry.default_operhost = rb_strdup("");
+       }
+
        /* Parse the exemptchanops option and set the internal variables
         * that we will use. */
        char * ech;
@@ -1118,11 +1141,19 @@ get_printable_kline(struct Client *source_p, struct ConfItem *aconf,
                    char **user, char **oper_reason)
 {
        static char null[] = "<NULL>";
+       static char reasonbuf[BUFSIZE];
 
        *host = EmptyString(aconf->host) ? null : aconf->host;
-       *reason = EmptyString(aconf->passwd) ? null : aconf->passwd;
        *user = EmptyString(aconf->user) ? null : aconf->user;
 
+       *reason = EmptyString(aconf->passwd) ? null : aconf->passwd;
+       if(aconf->created)
+       {
+               rb_snprintf(reasonbuf, sizeof reasonbuf, "%s (%s)",
+                               *reason, smalldate(aconf->created));
+               *reason = reasonbuf;
+       }
+
        if(EmptyString(aconf->spasswd) || !IsOper(source_p))
                *oper_reason = NULL;
        else