#define KEY_BLOCK_GLINE_DURATION "block_gline_duration"
#define KEY_ISSUER "issuer"
#define KEY_ISSUED "issued"
+#define KEY_ADMIN_LEVEL "admin_level"
#define IDENT_FORMAT "%s [%s@%s/%s]"
#define IDENT_DATA(user) user->nick, user->ident, user->hostname, inet_ntoa(user->ip)
{ "OSMSG_USER_SEARCH_RESULTS", "The following users were found:" },
{ "OSMSG_USER_SEARCH_HEADER", "Nick User@Host (Account)" },
{ "OSMSG_USER_SEARCH_BAR", "-------------------------------------------" },
- { "OSMSG_USER_SEARCH_COUNT", "------------ Found %4u matches -----------" },
+ { "OSMSG_USER_SEARCH_COUNT", "There were %4u matches" },
+ { "OSMSG_USER_SEARCH_COUNT_BAR", "------------ Found %4u matches -----------" },
{ "OSMSG_CHANNEL_SEARCH_RESULTS", "The following channels were found:" },
{ "OSMSG_GLINE_SEARCH_RESULTS", "The following glines were found:" },
{ "OSMSG_LOG_SEARCH_RESULTS", "The following log entries were found:" },
unsigned long purge_lock_delay;
unsigned long join_flood_moderate;
unsigned long join_flood_moderate_threshold;
+ unsigned long admin_level;
} opserv_conf;
struct trusted_host {
opserv_bad_channel(const char *name)
{
unsigned int found;
+ int present;
- dict_find(opserv_exempt_channels, name, &found);
- if (found)
+ dict_find(opserv_exempt_channels, name, &present);
+ if (present)
return 0;
if (gline_find(name))
alert->discrim->reason = strdup(name);
alert->reaction = reaction;
dict_insert(opserv_user_alerts, name_dup, alert);
- if (alert->discrim->channel)
+ /* Stick the alert into the appropriate additional alert dict(s).
+ * For channel alerts, we only use channels and min_channels;
+ * max_channels would have to be checked on /part, which we do not
+ * yet do, and which seems of questionable value.
+ */
+ if (alert->discrim->channel || alert->discrim->min_channels)
dict_insert(opserv_channel_alerts, name_dup, alert);
- else if (alert->discrim->mask_nick)
+ if (alert->discrim->mask_nick)
dict_insert(opserv_nick_based_alerts, name_dup, alert);
return alert;
}
if (action == trace_print_func)
{
- reply("OSMSG_USER_SEARCH_RESULTS");
+ reply("OSMSG_USER_SEARCH_RESULTS");
reply("OSMSG_USER_SEARCH_BAR");
reply("OSMSG_USER_SEARCH_HEADER");
reply("OSMSG_USER_SEARCH_BAR");
dict_foreach(das.dict, opserv_show_hostinfo, &das);
if (matches)
- reply("OSMSG_USER_SEARCH_COUNT", matches);
+ {
+ if(action == trace_print_func)
+ reply("OSMSG_USER_SEARCH_COUNT_BAR", matches);
+ else
+ reply("OSMSG_USER_SEARCH_COUNT", matches);
+ }
else
- reply("MSG_NO_MATCHES");
+ reply("MSG_NO_MATCHES");
if (das.discrim->channel)
UnlockChannel(das.discrim->channel);
} else {
opserv_conf.staff_auth_channel = NULL;
}
+
+ str = database_get_data(conf_node, KEY_ADMIN_LEVEL, RECDB_QSTRING);
+ opserv_conf.admin_level = str ? strtoul(str, NULL, 0): 800;
+
str = database_get_data(conf_node, KEY_UNTRUSTED_MAX, RECDB_QSTRING);
opserv_conf.untrusted_max = str ? strtoul(str, NULL, 0) : 5;
str = database_get_data(conf_node, KEY_PURGE_LOCK_DELAY, RECDB_QSTRING);
dict_foreach(child, set_policer_param, pp);
}
+/* lame way to export opserv_conf value to nickserv.c ... */
+unsigned int
+opserv_conf_admin_level()
+{
+ return(opserv_conf.admin_level);
+}
+
static void
opserv_db_init(void) {
/* set up opserv_trusted_hosts dict */