/* *INDENT-OFF* */
static struct mode_table umode_table[] = {
{"callerid", UMODE_CALLERID },
+ {"softcallerid", UMODE_SCALLERID },
{"deaf", UMODE_DEAF },
{"invisible", UMODE_INVISIBLE },
{"locops", UMODE_LOCOPS },
{"noctcp", UMODE_NOCTCP },
{"noinvite", UMODE_NOINVITE },
{"bot", UMODE_BOT },
+ {"override", UMODE_OVERRIDE },
{NULL, 0}
};
{ "unresv", SHARED_UNRESV },
{ "locops", SHARED_LOCOPS },
{ "rehash", SHARED_REHASH },
+ { "die", SHARED_DIE },
{ "all", SHARED_ALL },
{ "none", 0 },
{NULL, 0}
yy_tmpoper->flags = yy_oper->flags;
yy_tmpoper->umodes = yy_oper->umodes;
yy_tmpoper->snomask = yy_oper->snomask;
+
+ if(!EmptyString(yy_oper->vhost))
+ {
+ if(valid_hostname(yy_oper->vhost))
+ yy_tmpoper->vhost = rb_strdup(yy_oper->vhost);
+ else if(!EmptyString(yy_oper->vhost))
+ conf_report_error("Ignoring vhost setting for oper %s -- invalid hostmask.", yy_oper->name);
+ }
+
+ if(!EmptyString(yy_oper->swhois))
+ {
+ 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(!EmptyString(yy_oper->operstring))
+ {
+ 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
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 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)
{
if((p = strchr(args->v.string, '@')) == NULL)
{
- conf_report_error("Ignoring shard::oper -- oper is not a user@host");
+ conf_report_error("Ignoring shared::oper -- oper is not a user@host");
return;
}
{ "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 },
+ { "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 },
{ "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 },
+ { "static_quit", CF_QSTRING, NULL, REALLEN, &ConfigFileEntry.static_quit },
{ "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 },
{ "identify_command", CF_QSTRING, NULL, REALLEN, &ConfigFileEntry.identifycommand },
{ "anti_spam_exit_message_time", CF_TIME, NULL, 0, &ConfigFileEntry.anti_spam_exit_message_time },
+ { "use_part_messages", CF_YESNO, NULL, 0, &ConfigFileEntry.use_part_messages },
{ "disable_fake_channels", CF_YESNO, NULL, 0, &ConfigFileEntry.disable_fake_channels },
{ "min_nonwildcard_simple", CF_INT, NULL, 0, &ConfigFileEntry.min_nonwildcard_simple },
{ "non_redundant_klines", CF_YESNO, NULL, 0, &ConfigFileEntry.non_redundant_klines },
{ "min_nonwildcard", CF_INT, NULL, 0, &ConfigFileEntry.min_nonwildcard },
{ "nick_delay", CF_TIME, NULL, 0, &ConfigFileEntry.nick_delay },
{ "no_oper_flood", CF_YESNO, NULL, 0, &ConfigFileEntry.no_oper_flood },
+ { "true_no_oper_flood", CF_YESNO, NULL, 0, &ConfigFileEntry.true_no_oper_flood },
{ "operspy_admin_only", CF_YESNO, NULL, 0, &ConfigFileEntry.operspy_admin_only },
{ "operspy_dont_care_user_info", CF_YESNO, NULL, 0, &ConfigFileEntry.operspy_dont_care_user_info },
{ "secret_channels_in_whois", CF_YESNO, NULL, 0, &ConfigFileEntry.secret_channels_in_whois },
{ "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 }
};
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 },
{ "only_ascii_channels", CF_YESNO, NULL, 0, &ConfigChannel.only_ascii_channels },
{ "cycle_host_change", CF_YESNO, NULL, 0, &ConfigChannel.cycle_host_change },
{ "host_in_topic", CF_YESNO, NULL, 0, &ConfigChannel.host_in_topic },
+ { "use_halfop", CF_YESNO, NULL, 0, &ConfigChannel.use_halfop },
+ { "use_admin", CF_YESNO, NULL, 0, &ConfigChannel.use_admin },
{ "use_except", CF_YESNO, NULL, 0, &ConfigChannel.use_except },
{ "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_TIME, 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 }
};