From e787d3a226677e049a058de53406af31b25f1f61 Mon Sep 17 00:00:00 2001 From: "B.Greenham" Date: Wed, 3 Mar 2010 00:52:13 -0500 Subject: [PATCH] Add conf options for swhois and operstring, though they don't do anything yet. --- doc/example.conf | 11 +++++++++++ doc/reference.conf | 11 +++++++++++ include/s_newconf.h | 2 ++ src/newconf.c | 26 ++++++++++++++++++++++++++ 4 files changed, 50 insertions(+) diff --git a/doc/example.conf b/doc/example.conf index 325afc1..b533f72 100755 --- a/doc/example.conf +++ b/doc/example.conf @@ -278,6 +278,17 @@ operator "god" { */ vhost = "is.an.oper"; + /* swhois: defines an additional line that will be displayed + * whenever someone does /whois on the oper in question. + */ + swhois = "is wearing pants." + + /* operstring: defines a custom operstring for this oper, + * which will be shown in whois instead of default_operstring + * or default_adminstring. + */ + operstring = "is a lazy IRC Operator" + /* flags: misc options for the operator. You may prefix an option * with ~ to disable it, e.g. ~encrypted. * diff --git a/doc/reference.conf b/doc/reference.conf index 87912d1..94f07fe 100755 --- a/doc/reference.conf +++ b/doc/reference.conf @@ -491,6 +491,17 @@ operator "god" { */ vhost = "is.an.oper"; + /* swhois: defines an additional line that will be displayed + * whenever someone does /whois on the oper in question. + */ + swhois = "is wearing pants." + + /* operstring: defines a custom operstring for this oper, + * which will be shown in whois instead of default_operstring + * or default_adminstring. + */ + operstring = "is a lazy IRC Operator" + /* flags: misc options for the operator. You may prefix an option * with ~ to disable it, e.g. ~encrypted. * diff --git a/include/s_newconf.h b/include/s_newconf.h index 847826e..1ad3dbf 100644 --- a/include/s_newconf.h +++ b/include/s_newconf.h @@ -120,6 +120,8 @@ struct oper_conf unsigned int snomask; char *vhost; + char *swhois; + char *operstring; struct PrivilegeSet *privset; diff --git a/src/newconf.c b/src/newconf.c index 93a48f6..233a05e 100644 --- a/src/newconf.c +++ b/src/newconf.c @@ -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 },