[srvx-commits] CVS: services/src nickserv.c,1.268,1.269
Brought to you by:
entrope
|
From: Entrope <en...@us...> - 2003-12-15 04:06:59
|
Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv31466/src
Modified Files:
nickserv.c
Log Message:
Implement versions of patches #830842 and #859061
Index: nickserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/nickserv.c,v
retrieving revision 1.268
retrieving revision 1.269
diff -C2 -r1.268 -r1.269
*** nickserv.c 9 Dec 2003 02:07:37 -0000 1.268
--- nickserv.c 15 Dec 2003 04:06:56 -0000 1.269
***************
*** 213,216 ****
--- 213,217 ----
#define NSMSG_DB_UNREADABLE "Unable to read database file %s; check the log for more information."
#define NSMSG_DB_MERGED "$N merged DB from %s (in "FMT_TIME_T".%03lu seconds)."
+ #define NSMSG_HANDLE_CHANGED_G "$b%s$b renamed account $b%s$b to $b%s$b."
#define NSMSG_HANDLE_CHANGED "$b%s$b's account name has been changed to $b%s$b."
#define NSMSG_BAD_HANDLE "Account $b%s$b not registered because it is in use by a network service, is too long, or contains invalid characters."
***************
*** 1390,1394 ****
{
struct handle_info *hi;
! char *old_handle;
unsigned int nn;
--- 1391,1395 ----
{
struct handle_info *hi;
! char msgbuf[MAXLEN], *old_handle;
unsigned int nn;
***************
*** 1410,1420 ****
for (nn=0; nn<rf_list_used; nn++)
rf_list[nn](hi, old_handle);
free(old_handle);
-
- if (argv[1][0] == '*') {
- nickserv_notice(user, NSMSG_HANDLE_CHANGED, argv[1]+1, argv[2]);
- } else {
- nickserv_notice(user, NSMSG_HANDLE_CHANGED, argv[1], argv[2]);
- }
return 1;
}
--- 1411,1417 ----
for (nn=0; nn<rf_list_used; nn++)
rf_list[nn](hi, old_handle);
+ snprintf(msgbuf, sizeof(msgbuf), NSMSG_HANDLE_CHANGED_G, user->handle_info->handle, old_handle, hi->handle);
+ nickserv_notice(user, NSMSG_HANDLE_CHANGED, old_handle, hi->handle);
free(old_handle);
return 1;
}
***************
*** 2915,2933 ****
}
void
nickserv_show_oper_accounts(struct userNode *user, struct svccmd *cmd)
{
! struct handle_info *hi;
dict_iterator_t it;
! unsigned int count;
! for (it = dict_first(nickserv_handle_dict), count = 0; it; it = iter_next(it)) {
! hi = iter_data(it);
! if (hi->opserv_level > 0) {
! reply("%s %d", hi->handle, hi->opserv_level);
! ++count;
! }
! }
! reply(MSG_MATCH_COUNT, count);
}
--- 2912,2960 ----
}
+ static int
+ nickserv_sort_accounts_by_access(const void *a, const void *b)
+ {
+ const struct handle_info *hi_a = *(const struct handle_info**)a;
+ const struct handle_info *hi_b = *(const struct handle_info**)b;
+ if (hi_a->opserv_level != hi_b->opserv_level)
+ return hi_b->opserv_level - hi_a->opserv_level;
+ return irccasecmp(hi_a->handle, hi_b->handle);
+ }
+
void
nickserv_show_oper_accounts(struct userNode *user, struct svccmd *cmd)
{
! struct handle_info_list hil;
! struct helpfile_table tbl;
! unsigned int ii;
dict_iterator_t it;
! const char **ary;
! memset(&hil, 0, sizeof(hil));
! for (it = dict_first(nickserv_handle_dict); it; it = iter_next(it)) {
! struct handle_info *hi = iter_data(it);
! if (hi->opserv_level)
! handle_info_list_append(&hil, hi);
! }
! qsort(hil.list, hil.used, sizeof(hil.list[0]), nickserv_sort_accounts_by_access);
! tbl.length = hil.used + 1;
! tbl.width = 2;
! tbl.flags = TABLE_NO_FREE;
! tbl.contents = malloc(tbl.length * sizeof(tbl.contents[0]));
! tbl.contents[0] = ary = malloc(tbl.width * sizeof(ary[0]));
! ary[0] = "Account";
! ary[1] = "Level";
! for (ii = 0; ii < hil.used; ) {
! ary = malloc(tbl.width * sizeof(ary[0]));
! ary[0] = hil.list[ii]->handle;
! ary[1] = strtab(hil.list[ii]->opserv_level);
! tbl.contents[++ii] = ary;
! }
! table_send(cmd->parent->bot, user->nick, 0, NULL, tbl);
! reply(MSG_MATCH_COUNT, hil.used);
! for (ii = 0; ii < hil.used; )
! free(tbl.contents[++ii]);
! free(tbl.contents);
! free(hil.list);
}
***************
*** 3514,3525 ****
}
if (nickserv_conf.email_enabled) {
! /* Change weights for authcookie and resetpass to reduce their use to annoy users. */
! modcmd_register(nickserv_module, "AUTHCOOKIE", cmd_authcookie, 2, 0, "weight", "10.0", NULL);
! modcmd_register(nickserv_module, "RESETPASS", cmd_resetpass, 3, 0, "flags", "+qualified", "weight", "10.0", NULL);
nickserv_define_func("COOKIE", cmd_cookie, -1, 0, 1);
nickserv_define_func("DELCOOKIE", cmd_delcookie, -1, 1, 0);
dict_insert(nickserv_opt_dict, "EMAIL", opt_email);
}
! modcmd_register(nickserv_module, "GHOST", cmd_ghost, 2, MODCMD_REQUIRE_AUTHED, "weight", "5.0", NULL);
/* miscellaneous commands */
nickserv_define_func("STATUS", cmd_status, -1, 0, 0);
--- 3541,3551 ----
}
if (nickserv_conf.email_enabled) {
! nickserv_define_func("AUTHCOOKIE", cmd_authcookie, -1, 0, 0);
! nickserv_define_func("RESETPASS", cmd_resetpass, -1, 0, 1);
nickserv_define_func("COOKIE", cmd_cookie, -1, 0, 1);
nickserv_define_func("DELCOOKIE", cmd_delcookie, -1, 1, 0);
dict_insert(nickserv_opt_dict, "EMAIL", opt_email);
}
! nickserv_define_func("GHOST", cmd_ghost, -1, 1, 0);
/* miscellaneous commands */
nickserv_define_func("STATUS", cmd_status, -1, 0, 0);
|