allowauth_func_list[allowauth_func_used++] = func;
}
+static int cmd_authlog_func(struct userNode *user, struct svccmd *cmd, struct handle_info *hi);
+
static MODCMD_FUNC(cmd_authlog)
{
- struct handle_info *hi = user->handle_info;
+ return cmd_authlog_func(user, cmd, user->handle_info);
+}
+
+static MODCMD_FUNC(cmd_oauthlog) {
+ struct handle_info *hi;
+
+ NICKSERV_MIN_PARMS(1);
+
+ if (!(hi = get_victim_oper(user, argv[1])))
+ return 0;
+
+ return cmd_authlog_func(user, cmd, hi);
+}
+
+static int cmd_authlog_func(struct userNode *user, struct svccmd *cmd, struct handle_info *hi) {
struct helpfile_table tbl;
struct authlogEntry *authlog;
int i = 0;
tbl.contents[i][1] = ptr;
if(authlog->logout_time)
str = intervalString(intervalBuf, now - authlog->logout_time, hi);
- else
- str = (authlog->user ? "Never" : "Unknown");
+ else if(!authlog->user)
+ str = "Unknown";
+ else {
+ sprintf(intervalBuf, "Never (%s)", authlog->user->nick);
+ str = intervalBuf;
+ }
ptr = malloc(strlen(str)+1);
strcpy(ptr, str);
tbl.contents[i][2] = ptr;
str = database_get_data(rd->d.object, KEY_AUTHLOG_QUIT_REASON, RECDB_QSTRING);
authlog->quit_reason = str ? strdup(str) : NULL;
+ authlog->user = NULL;
+
authlog->next = NULL;
//append it to the end of the list...
next = pending->next;
if(user->handle_info == pending->handle_info) {
pending->authlog->user = user;
+ free((char*) pending->authlog->hostmask);
+ pending->authlog->hostmask = generate_hostmask(user, GENMASK_USENICK|GENMASK_STRICT_IDENT|GENMASK_NO_HIDING|GENMASK_STRICT_HOST);
if(prev)
prev->next = next;
else
nickserv_define_func("MERGEDB", cmd_mergedb, 999, 1, 0);
nickserv_define_func("CHECKPASS", cmd_checkpass, 601, 1, 0);
nickserv_define_func("CHECKEMAIL", cmd_checkemail, 0, 1, 0);
- nickserv_define_func("AUTHLOG", cmd_authlog, 0, 1, 0);
+ nickserv_define_func("AUTHLOG", cmd_authlog, -1, 1, 0);
+ nickserv_define_func("OAUTHLOG", cmd_oauthlog, 0, 1, 0);
/* other options */
dict_insert(nickserv_opt_dict, "INFO", opt_info);
dict_insert(nickserv_opt_dict, "WIDTH", opt_width);