X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/46f0c5186306d7780b956b0f6bae1d9dfc8cbb1c..08e35f665f35828dfcaee21b6f3ebda0660729ee:/src/newconf.c diff --git a/src/newconf.c b/src/newconf.c index b849033..ebe7437 100644 --- a/src/newconf.c +++ b/src/newconf.c @@ -571,6 +571,10 @@ 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); yy_tmpoper->privset = yy_oper->privset; #ifdef HAVE_LIBCRYPTO @@ -700,6 +704,12 @@ conf_set_oper_snomask(void *data) yy_oper->snomask = parse_snobuf_to_mask(0, (const char *) data); } +static void +conf_set_oper_vhost(void *data) +{ + yy_oper->vhost = rb_strdup((char *) data); +} + static int conf_begin_class(struct TopConf *tc) { @@ -2066,6 +2076,7 @@ static struct ConfEntry conf_operator_table[] = { "umodes", CF_STRING | CF_FLIST, conf_set_oper_umodes, 0, NULL }, { "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 }, { "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 }, @@ -2141,6 +2152,7 @@ static struct ConfEntry conf_general_table[] = { "default_operstring", CF_QSTRING, NULL, REALLEN, &ConfigFileEntry.default_operstring }, { "default_adminstring",CF_QSTRING, NULL, REALLEN, &ConfigFileEntry.default_adminstring }, + { "default_operhost", CF_QSTRING, NULL, REALLEN, &ConfigFileEntry.default_operhost }, { "servicestring", CF_QSTRING, NULL, REALLEN, &ConfigFileEntry.servicestring }, { "egdpool_path", CF_QSTRING, NULL, MAXPATHLEN, &ConfigFileEntry.egdpool_path }, { "kline_reason", CF_QSTRING, NULL, REALLEN, &ConfigFileEntry.kline_reason }, @@ -2207,6 +2219,7 @@ static struct ConfEntry conf_general_table[] = static struct ConfEntry conf_channel_table[] = { { "autochanmodes", CF_QSTRING, NULL, 0, &ConfigChannel.autochanmodes }, + { "exemptchanops", CF_QSTRING, NULL, 0, &ConfigChannel.exemptchanops }, { "default_split_user_count", CF_INT, NULL, 0, &ConfigChannel.default_split_user_count }, { "default_split_server_count", CF_INT, NULL, 0, &ConfigChannel.default_split_server_count }, { "burst_topicwho", CF_YESNO, NULL, 0, &ConfigChannel.burst_topicwho }, @@ -2227,8 +2240,16 @@ static struct ConfEntry conf_channel_table[] = { "use_invex", CF_YESNO, NULL, 0, &ConfigChannel.use_invex }, { "use_knock", CF_YESNO, NULL, 0, &ConfigChannel.use_knock }, { "use_forward", CF_YESNO, NULL, 0, &ConfigChannel.use_forward }, + { "use_local_channels", CF_YESNO, NULL, 0, &ConfigChannel.use_local_channels }, { "resv_forcepart", CF_YESNO, NULL, 0, &ConfigChannel.resv_forcepart }, { "kick_no_rejoin_time", CF_INT, NULL, 0, &ConfigChannel.kick_no_rejoin_time }, + { "exempt_cmode_c", CF_YESNO, NULL, 0, &ConfigChannel.exempt_cmode_c }, + { "exempt_cmode_C", CF_YESNO, NULL, 0, &ConfigChannel.exempt_cmode_C }, + { "exempt_cmode_D", CF_YESNO, NULL, 0, &ConfigChannel.exempt_cmode_D }, + { "exempt_cmode_T", CF_YESNO, NULL, 0, &ConfigChannel.exempt_cmode_T }, + { "exempt_cmode_N", CF_YESNO, NULL, 0, &ConfigChannel.exempt_cmode_N }, + { "exempt_cmode_G", CF_YESNO, NULL, 0, &ConfigChannel.exempt_cmode_G }, + { "exempt_cmode_K", CF_YESNO, NULL, 0, &ConfigChannel.exempt_cmode_K }, { "\0", 0, NULL, 0, NULL } };