]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/newconf.c
Don't discard self-oppings from remote override opers.
[irc/rqf/shadowircd.git] / src / newconf.c
index ebe7437f0b1aeaaf954bb3cb9b77fa0faa4e611a..7a07675a405f7f970518aafc643bf59f650cfafe 100644 (file)
@@ -571,10 +571,22 @@ conf_end_oper(struct TopConf *tc)
                yy_tmpoper->flags = yy_oper->flags;
                yy_tmpoper->umodes = yy_oper->umodes;
                yy_tmpoper->snomask = yy_oper->snomask;
+
                if(valid_hostname(yy_oper->vhost))
                        yy_tmpoper->vhost = rb_strdup(yy_oper->vhost);
                else
                        conf_report_error("Ignoring vhost setting for oper %s -- invalid hostmask.", yy_oper->name);
+
+               if(strlen(yy_oper->swhois) < 400)
+                       yy_tmpoper->swhois = rb_strdup(yy_oper->swhois);
+               else
+                       conf_report_error("Ignoring swhois setting for oper %s -- swhois too long.", yy_oper->name);
+
+               if(strlen(yy_oper->operstring) < 400)
+                       yy_tmpoper->operstring = rb_strdup(yy_oper->operstring);
+               else
+                       conf_report_error("Ignoring operstring setting for oper %s -- operstring too long.", yy_oper->name);
+
                yy_tmpoper->privset = yy_oper->privset;
 
 #ifdef HAVE_LIBCRYPTO
@@ -710,6 +722,18 @@ conf_set_oper_vhost(void *data)
        yy_oper->vhost = rb_strdup((char *) data);
 }
 
+static void
+conf_set_oper_swhois(void *data)
+{
+       yy_oper->swhois = rb_strdup((char *) data);
+}
+
+static void
+conf_set_oper_operstring(void *data)
+{
+       yy_oper->operstring = rb_strdup((char *) data);
+}
+
 static int
 conf_begin_class(struct TopConf *tc)
 {
@@ -2077,6 +2101,8 @@ static struct ConfEntry conf_operator_table[] =
        { "privset",    CF_QSTRING, conf_set_oper_privset,      0, NULL },
        { "snomask",    CF_QSTRING, conf_set_oper_snomask,      0, NULL },
        { "vhost",      CF_QSTRING, conf_set_oper_vhost,        0, NULL },
+       { "swhois",     CF_QSTRING, conf_set_oper_swhois,       0, NULL },
+       { "operstring", CF_QSTRING, conf_set_oper_operstring,   0, NULL },
        { "user",       CF_QSTRING, conf_set_oper_user,         0, NULL },
        { "password",   CF_QSTRING, conf_set_oper_password,     0, NULL },
        { "fingerprint",        CF_QSTRING, conf_set_oper_fingerprint,  0, NULL },
@@ -2213,6 +2239,7 @@ static struct ConfEntry conf_general_table[] =
        { "ts_warn_delta",      CF_TIME,  NULL, 0, &ConfigFileEntry.ts_warn_delta       },
        { "use_whois_actually", CF_YESNO, NULL, 0, &ConfigFileEntry.use_whois_actually  },
        { "warn_no_nline",      CF_YESNO, NULL, 0, &ConfigFileEntry.warn_no_nline       },
+       { "expire_override_time",       CF_TIME, NULL, 0, &ConfigFileEntry.expire_override_time},
        { "\0",                 0,        NULL, 0, NULL }
 };