* Remove rule to generate the unused EXTRA_MODULES preprocessor macro.
* Properly adjust ChanServ seen time when a user leaves or is kicked
from a channel.
* Read languages from disk before initializing the core services,
since they must all be available when loading accounts.
* Fix a typo in the log BNF documentation, and add =SEVLIT support for
consistency.
* Add missing "invalid" to NSMSG_INVALID_ANNOUNCE string.
git-archimport-id: srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-29
done
IFS="$OIFS"
MODULE_OBJS="$MODULE_OBJS $EXTRA_MODULE_OBJS"
done
IFS="$OIFS"
MODULE_OBJS="$MODULE_OBJS $EXTRA_MODULE_OBJS"
- AC_DEFINE(EXTRA_MODULES, 1, [Define if there are extra modules to be initialized.])
AC_MSG_RESULT($module_list)
],
[
AC_MSG_RESULT($module_list)
],
[
}
if((uData = GetTrueChannelAccess(cData, user->handle_info)))
}
if((uData = GetTrueChannelAccess(cData, user->handle_info)))
scan_user_presence(uData, user);
scan_user_presence(uData, user);
if(IsHelping(user) && IsSupportHelper(user))
{
if(IsHelping(user) && IsSupportHelper(user))
{
static void
handle_kick(struct userNode *kicker, struct userNode *victim, struct chanNode *channel)
{
static void
handle_kick(struct userNode *kicker, struct userNode *victim, struct chanNode *channel)
{
+ struct userData *uData;
+
if(!channel->channel_info || !kicker || IsService(kicker)
|| (kicker == victim) || IsSuspended(channel->channel_info)
|| (kicker->handle_info && kicker->handle_info == victim->handle_info))
if(!channel->channel_info || !kicker || IsService(kicker)
|| (kicker == victim) || IsSuspended(channel->channel_info)
|| (kicker->handle_info && kicker->handle_info == victim->handle_info))
const char *reason = user_find_message(kicker, "CSMSG_USER_PROTECTED");
KickChannelUser(kicker, channel, chanserv, reason);
}
const char *reason = user_find_message(kicker, "CSMSG_USER_PROTECTED");
KickChannelUser(kicker, channel, chanserv, reason);
}
+
+ if((uData = GetTrueChannelAccess(channel->channel_info, victim->handle_info)))
+ uData->seen = now;
/* Open the directory stream; if we can't, fail. */
snprintf(filename, sizeof(filename), "languages/%s", name);
/* Open the directory stream; if we can't, fail. */
snprintf(filename, sizeof(filename), "languages/%s", name);
- if (!(dir = opendir(filename))) {
-
+ if (!(dir = opendir(filename)))
if (!(lang = dict_find(languages, name, NULL)))
lang = language_alloc(name);
if (!(lang = dict_find(languages, name, NULL)))
lang = language_alloc(name);
-void helpfile_finalize(void)
+void helpfile_init(void)
{
message_register_table(msgtab);
language_read_all();
{
message_register_table(msgtab);
language_read_all();
const char *language_find_message(struct language *lang, const char *msgid);
#define handle_find_message(HANDLE, MSGID) language_find_message((HANDLE) ? (HANDLE)->language : lang_C, (MSGID))
#define user_find_message(USER, MSGID) language_find_message((USER)->handle_info ? (USER)->handle_info->language : lang_C, (MSGID))
const char *language_find_message(struct language *lang, const char *msgid);
#define handle_find_message(HANDLE, MSGID) language_find_message((HANDLE) ? (HANDLE)->language : lang_C, (MSGID))
#define user_find_message(USER, MSGID) language_find_message((USER)->handle_info ? (USER)->handle_info->language : lang_C, (MSGID))
-void helpfile_finalize(void);
+void helpfile_init(void);
struct helpfile *open_helpfile(const char *fname, expand_func_t expand);
void close_helpfile(struct helpfile *hf);
struct helpfile *open_helpfile(const char *fname, expand_func_t expand);
void close_helpfile(struct helpfile *hf);
* KEY := LOGSET '.' SEVSET
* LOGSET := LOGLIT | LOGLIT ',' LOGSET
* LOGLIT := a registered log type
* KEY := LOGSET '.' SEVSET
* LOGSET := LOGLIT | LOGLIT ',' LOGSET
* LOGLIT := a registered log type
- * SEVSET := '*' | SEVLIT | '<' SEVLIT | '<=' SEVLIT | '>' SEVLIT | '>=' SEVLIT | SEVLIG ',' SEVSET
+ * SEVSET := '*' | SEVLIT | '=' SEVLIT | '<' SEVLIT | '<=' SEVLIT | '>' SEVLIT | '>=' SEVLIT | SEVLIT ',' SEVSET
* SEVLIT := one of log_severity_names
* A KEY contains the Cartesian product of the logs in its LOGSET
* and the severities in its SEVSET.
* SEVLIT := one of log_severity_names
* A KEY contains the Cartesian product of the logs in its LOGSET
* and the severities in its SEVSET.
+ if (buffer[0] == '=')
+ buffer++;
bound = find_severity(buffer);
targets[bound] = 1;
}
bound = find_severity(buffer);
targets[bound] = 1;
}
for (ii = 0; ii < slist->used; ++ii) {
type = log_register_type(slist->list[ii], NULL);
for (sev = 0; sev < LOG_NUM_SEVERITIES; ++sev) {
for (ii = 0; ii < slist->used; ++ii) {
type = log_register_type(slist->list[ii], NULL);
for (sev = 0; sev < LOG_NUM_SEVERITIES; ++sev) {
- if (!sevset[sev]) continue;
+ if (!sevset[sev])
+ continue;
logList_join(&type->logs[sev], &logList);
}
}
logList_join(&type->logs[sev], &logList);
}
}
saxdb_init();
gline_init();
sendmail_init();
saxdb_init();
gline_init();
sendmail_init();
conf_globals(); /* initializes the core services */
conf_rlimits();
modules_init();
message_register_table(msgtab);
modcmd_finalize();
conf_globals(); /* initializes the core services */
conf_rlimits();
modules_init();
message_register_table(msgtab);
modcmd_finalize();
saxdb_finalize();
modules_finalize();
saxdb_finalize();
modules_finalize();
{ "NSMSG_CLONE_AUTH", "Warning: %s (%s@%s) authed to your account." },
{ "NSMSG_SETTING_LIST", "$b$N account settings:$b" },
{ "NSMSG_INVALID_OPTION", "$b%s$b is an invalid account setting." },
{ "NSMSG_CLONE_AUTH", "Warning: %s (%s@%s) authed to your account." },
{ "NSMSG_SETTING_LIST", "$b$N account settings:$b" },
{ "NSMSG_INVALID_OPTION", "$b%s$b is an invalid account setting." },
- { "NSMSG_INVALID_ANNOUNCE", "$b%s$b is an announcements value." },
+ { "NSMSG_INVALID_ANNOUNCE", "$b%s$b is an invalid announcements value." },
{ "NSMSG_SET_INFO", "$bINFO: $b%s" },
{ "NSMSG_SET_WIDTH", "$bWIDTH: $b%d" },
{ "NSMSG_SET_TABLEWIDTH", "$bTABLEWIDTH: $b%d" },
{ "NSMSG_SET_INFO", "$bINFO: $b%s" },
{ "NSMSG_SET_WIDTH", "$bWIDTH: $b%d" },
{ "NSMSG_SET_TABLEWIDTH", "$bTABLEWIDTH: $b%d" },
send_message(user, nickserv, "NSMSG_LANGUAGE_NOT_FOUND", argv[1], lang->name);
hi->language = lang;
}
send_message(user, nickserv, "NSMSG_LANGUAGE_NOT_FOUND", argv[1], lang->name);
hi->language = lang;
}
- lang = hi->language ? hi->language : lang_C;
- send_message(user, nickserv, "NSMSG_SET_LANGUAGE", lang->name);
+ send_message(user, nickserv, "NSMSG_SET_LANGUAGE", hi->language->name);
}
if (hi->opserv_level)
saxdb_write_int(ctx, KEY_OPSERV_LEVEL, hi->opserv_level);
}
if (hi->opserv_level)
saxdb_write_int(ctx, KEY_OPSERV_LEVEL, hi->opserv_level);
- if (hi->language && (hi->language != lang_C))
+ if (hi->language != lang_C)
saxdb_write_string(ctx, KEY_LANGUAGE, hi->language->name);
saxdb_write_string(ctx, KEY_PASSWD, hi->passwd);
saxdb_write_int(ctx, KEY_REGISTER_ON, hi->registered);
saxdb_write_string(ctx, KEY_LANGUAGE, hi->language->name);
saxdb_write_string(ctx, KEY_PASSWD, hi->passwd);
saxdb_write_int(ctx, KEY_REGISTER_ON, hi->registered);
str = database_get_data(obj, KEY_OPSERV_LEVEL, RECDB_QSTRING);
hi->opserv_level = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(obj, KEY_INFO, RECDB_QSTRING);
str = database_get_data(obj, KEY_OPSERV_LEVEL, RECDB_QSTRING);
hi->opserv_level = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(obj, KEY_INFO, RECDB_QSTRING);
- if (str) hi->infoline = strdup(str);
+ if (str)
+ hi->infoline = strdup(str);
str = database_get_data(obj, KEY_REGISTER_ON, RECDB_QSTRING);
hi->registered = str ? (time_t)strtoul(str, NULL, 0) : now;
str = database_get_data(obj, KEY_LAST_SEEN, RECDB_QSTRING);
str = database_get_data(obj, KEY_REGISTER_ON, RECDB_QSTRING);
hi->registered = str ? (time_t)strtoul(str, NULL, 0) : now;
str = database_get_data(obj, KEY_LAST_SEEN, RECDB_QSTRING);
str = database_get_data(obj, KEY_TABLE_WIDTH, RECDB_QSTRING);
hi->table_width = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(obj, KEY_LAST_QUIT_HOST, RECDB_QSTRING);
str = database_get_data(obj, KEY_TABLE_WIDTH, RECDB_QSTRING);
hi->table_width = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(obj, KEY_LAST_QUIT_HOST, RECDB_QSTRING);
- if (!str) str = database_get_data(obj, KEY_LAST_AUTHED_HOST, RECDB_QSTRING);
- if (str) safestrncpy(hi->last_quit_host, str, sizeof(hi->last_quit_host));
+ if (!str)
+ str = database_get_data(obj, KEY_LAST_AUTHED_HOST, RECDB_QSTRING);
+ if (str)
+ safestrncpy(hi->last_quit_host, str, sizeof(hi->last_quit_host));
str = database_get_data(obj, KEY_EMAIL_ADDR, RECDB_QSTRING);
str = database_get_data(obj, KEY_EMAIL_ADDR, RECDB_QSTRING);
- if (str) nickserv_set_email_addr(hi, str);
+ if (str)
+ nickserv_set_email_addr(hi, str);
str = database_get_data(obj, KEY_EPITHET, RECDB_QSTRING);
str = database_get_data(obj, KEY_EPITHET, RECDB_QSTRING);
- if (str) hi->epithet = strdup(str);
+ if (str)
+ hi->epithet = strdup(str);
subdb = database_get_data(obj, KEY_COOKIE, RECDB_OBJECT);
if (subdb) {
const char *data, *type, *expires, *cookie_str;
subdb = database_get_data(obj, KEY_COOKIE, RECDB_OBJECT);
if (subdb) {
const char *data, *type, *expires, *cookie_str;
return;
}
str = database_get_data(conf_node, KEY_VALID_HANDLE_REGEX, RECDB_QSTRING);
return;
}
str = database_get_data(conf_node, KEY_VALID_HANDLE_REGEX, RECDB_QSTRING);
- if (!str) str = database_get_data(conf_node, KEY_VALID_ACCOUNT_REGEX, RECDB_QSTRING);
+ if (!str)
+ str = database_get_data(conf_node, KEY_VALID_ACCOUNT_REGEX, RECDB_QSTRING);
if (nickserv_conf.valid_handle_regex_set) regfree(&nickserv_conf.valid_handle_regex);
if (str) {
int err = regcomp(&nickserv_conf.valid_handle_regex, str, REG_EXTENDED|REG_ICASE|REG_NOSUB);
if (nickserv_conf.valid_handle_regex_set) regfree(&nickserv_conf.valid_handle_regex);
if (str) {
int err = regcomp(&nickserv_conf.valid_handle_regex, str, REG_EXTENDED|REG_ICASE|REG_NOSUB);
nickserv_conf.valid_nick_regex_set = 0;
}
str = database_get_data(conf_node, KEY_NICKS_PER_HANDLE, RECDB_QSTRING);
nickserv_conf.valid_nick_regex_set = 0;
}
str = database_get_data(conf_node, KEY_NICKS_PER_HANDLE, RECDB_QSTRING);
- if (!str) str = database_get_data(conf_node, KEY_NICKS_PER_ACCOUNT, RECDB_QSTRING);
+ if (!str)
+ str = database_get_data(conf_node, KEY_NICKS_PER_ACCOUNT, RECDB_QSTRING);
nickserv_conf.nicks_per_handle = str ? strtoul(str, NULL, 0) : 4;
str = database_get_data(conf_node, KEY_DISABLE_NICKS, RECDB_QSTRING);
nickserv_conf.disable_nicks = str ? strtoul(str, NULL, 0) : 0;
nickserv_conf.nicks_per_handle = str ? strtoul(str, NULL, 0) : 4;
str = database_get_data(conf_node, KEY_DISABLE_NICKS, RECDB_QSTRING);
nickserv_conf.disable_nicks = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(conf_node, KEY_SET_EPITHET_LEVEL, RECDB_QSTRING);
nickserv_conf.set_epithet_level = str ? strtoul(str, NULL, 0) : 1;
str = database_get_data(conf_node, KEY_HANDLE_EXPIRE_FREQ, RECDB_QSTRING);
str = database_get_data(conf_node, KEY_SET_EPITHET_LEVEL, RECDB_QSTRING);
nickserv_conf.set_epithet_level = str ? strtoul(str, NULL, 0) : 1;
str = database_get_data(conf_node, KEY_HANDLE_EXPIRE_FREQ, RECDB_QSTRING);
- if (!str) str = database_get_data(conf_node, KEY_ACCOUNT_EXPIRE_FREQ, RECDB_QSTRING);
+ if (!str)
+ str = database_get_data(conf_node, KEY_ACCOUNT_EXPIRE_FREQ, RECDB_QSTRING);
nickserv_conf.handle_expire_frequency = str ? ParseInterval(str) : 86400;
str = database_get_data(conf_node, KEY_HANDLE_EXPIRE_DELAY, RECDB_QSTRING);
nickserv_conf.handle_expire_frequency = str ? ParseInterval(str) : 86400;
str = database_get_data(conf_node, KEY_HANDLE_EXPIRE_DELAY, RECDB_QSTRING);
- if (!str) str = database_get_data(conf_node, KEY_ACCOUNT_EXPIRE_DELAY, RECDB_QSTRING);
+ if (!str)
+ str = database_get_data(conf_node, KEY_ACCOUNT_EXPIRE_DELAY, RECDB_QSTRING);
nickserv_conf.handle_expire_delay = str ? ParseInterval(str) : 86400*30;
str = database_get_data(conf_node, KEY_NOCHAN_HANDLE_EXPIRE_DELAY, RECDB_QSTRING);
nickserv_conf.handle_expire_delay = str ? ParseInterval(str) : 86400*30;
str = database_get_data(conf_node, KEY_NOCHAN_HANDLE_EXPIRE_DELAY, RECDB_QSTRING);
- if (!str) str = database_get_data(conf_node, KEY_NOCHAN_ACCOUNT_EXPIRE_DELAY, RECDB_QSTRING);
+ if (!str)
+ str = database_get_data(conf_node, KEY_NOCHAN_ACCOUNT_EXPIRE_DELAY, RECDB_QSTRING);
nickserv_conf.nochan_handle_expire_delay = str ? ParseInterval(str) : 86400*15;
str = database_get_data(conf_node, "warn_clone_auth", RECDB_QSTRING);
nickserv_conf.warn_clone_auth = str ? !disabled_string(str) : 1;
nickserv_conf.nochan_handle_expire_delay = str ? ParseInterval(str) : 86400*15;
str = database_get_data(conf_node, "warn_clone_auth", RECDB_QSTRING);
nickserv_conf.warn_clone_auth = str ? !disabled_string(str) : 1;