srvx-commits Mailing List for srvx IRC Services (Page 6)
Brought to you by:
entrope
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(80) |
Sep
(51) |
Oct
(94) |
Nov
(132) |
Dec
(85) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(163) |
Feb
(96) |
Mar
(70) |
Apr
(182) |
May
(173) |
Jun
(73) |
Jul
(101) |
Aug
(101) |
Sep
(71) |
Oct
(76) |
Nov
(58) |
Dec
(60) |
2003 |
Jan
(61) |
Feb
(14) |
Mar
(3) |
Apr
|
May
(7) |
Jun
(22) |
Jul
(81) |
Aug
(41) |
Sep
(34) |
Oct
(41) |
Nov
(16) |
Dec
(28) |
2004 |
Jan
(7) |
Feb
|
Mar
(3) |
Apr
(15) |
May
(11) |
Jun
(1) |
Jul
(4) |
Aug
(1) |
Sep
(4) |
Oct
(1) |
Nov
(1) |
Dec
(1) |
2005 |
Jan
(13) |
Feb
(6) |
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2009 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2010 |
Jan
(2) |
Feb
(3) |
Mar
(4) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
(3) |
Oct
(2) |
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2025 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Entrope <en...@us...> - 2003-12-31 15:59:57
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv10744/src Modified Files: mod-memoserv.c Log Message: actually mark memos as read (and record status in database) Index: mod-memoserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/mod-memoserv.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** mod-memoserv.c 2 Dec 2003 19:47:14 -0000 1.9 --- mod-memoserv.c 31 Dec 2003 15:59:54 -0000 1.10 *************** *** 57,60 **** --- 57,61 ---- #define KEY_FROM "from" #define KEY_MESSAGE "msg" + #define KEY_READ "read" #define MSMSG_CANNOT_SEND "You cannot send to account $b%s$b." *************** *** 294,297 **** --- 295,299 ---- reply(MSMSG_MEMO_HEAD, memoid, memo->sender->handle->handle, posted); reply(MSMSG_MEMO_BODY, memo->message); + memo->is_read = 1; return 1; } *************** *** 456,459 **** --- 458,462 ---- struct handle_info *sender, *recipient; struct record_data *hir; + struct memo *memo; dict_iterator_t it; time_t sent; *************** *** 493,497 **** } ! add_memo(sent, memoserv_get_account(recipient), memoserv_get_account(sender), str); } return 0; --- 496,502 ---- } ! memo = add_memo(sent, memoserv_get_account(recipient), memoserv_get_account(sender), str); ! if ((str = database_get_data(hir->d.object, KEY_READ, RECDB_QSTRING))) ! memo->is_read = 1; } return 0; *************** *** 516,519 **** --- 521,526 ---- saxdb_write_string(ctx, KEY_FROM, memo->sender->handle->handle); saxdb_write_string(ctx, KEY_MESSAGE, memo->message); + if (memo->is_read) + saxdb_write_int(ctx, KEY_READ, 1); saxdb_end_record(ctx); } |
From: Entrope <en...@us...> - 2003-12-23 19:49:20
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv9249/src Modified Files: nickserv.c Log Message: fix typo in previous commit Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.272 retrieving revision 1.273 diff -C2 -r1.272 -r1.273 *** nickserv.c 23 Dec 2003 13:59:36 -0000 1.272 --- nickserv.c 23 Dec 2003 19:49:16 -0000 1.273 *************** *** 2388,2392 **** NICKSERV_MIN_PARMS(2); if (!(ni = get_nick_info(argv[1]))) { ! nickserv_notice(user, MSG_NICK_NOT_REGISTERED, argv[1]); return 0; } --- 2388,2392 ---- NICKSERV_MIN_PARMS(2); if (!(ni = get_nick_info(argv[1]))) { ! nickserv_notice(user, NSMSG_NICK_NOT_REGISTERED, argv[1]); return 0; } |
From: Entrope <en...@us...> - 2003-12-23 13:59:39
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv6241/src Modified Files: nickserv.c Log Message: Clarify error message for OUNREGNICK when nick isn't registered Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.271 retrieving revision 1.272 diff -C2 -r1.271 -r1.272 *** nickserv.c 15 Dec 2003 13:54:51 -0000 1.271 --- nickserv.c 23 Dec 2003 13:59:36 -0000 1.272 *************** *** 2388,2392 **** NICKSERV_MIN_PARMS(2); if (!(ni = get_nick_info(argv[1]))) { ! nickserv_notice(user, MSG_NICK_UNKNOWN, argv[1]); return 0; } --- 2388,2392 ---- NICKSERV_MIN_PARMS(2); if (!(ni = get_nick_info(argv[1]))) { ! nickserv_notice(user, MSG_NICK_NOT_REGISTERED, argv[1]); return 0; } |
From: Entrope <en...@us...> - 2003-12-23 13:59:22
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv6179/src Modified Files: chanserv.c Log Message: Fill in the part message before using it (duh) Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.401 retrieving revision 1.402 diff -C2 -r1.401 -r1.402 *** chanserv.c 17 Dec 2003 04:21:52 -0000 1.401 --- chanserv.c 23 Dec 2003 13:59:16 -0000 1.402 *************** *** 1456,1462 **** if(channel->notes) dict_delete(channel->notes); if(!IsSuspended(channel)) DelChannelUser(chanserv, channel->channel, msgbuf, 0); - sprintf(msgbuf, "%s %s", channel->channel->name, reason); global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, msgbuf); UnlockChannel(channel->channel); --- 1456,1462 ---- if(channel->notes) dict_delete(channel->notes); + sprintf(msgbuf, "%s %s", channel->channel->name, reason); if(!IsSuspended(channel)) DelChannelUser(chanserv, channel->channel, msgbuf, 0); global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, msgbuf); UnlockChannel(channel->channel); |
From: Entrope <en...@us...> - 2003-12-17 04:21:55
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv21773/src Modified Files: proto-p10.c nickserv.h modcmd.h modcmd.c helpserv.c hash.h chanserv.c Log Message: define and use IsStaff() macro define and use "never_csuspend" flag for commands that may never be used on suspended channels remove command rate limiting, since it did not seem to be worth the pain it incurred Index: proto-p10.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto-p10.c,v retrieving revision 1.83 retrieving revision 1.84 diff -C2 -r1.83 -r1.84 *** proto-p10.c 9 Dec 2003 16:09:43 -0000 1.83 --- proto-p10.c 17 Dec 2003 04:21:52 -0000 1.84 *************** *** 1844,1849 **** uNode->uplink->max_clients = uNode->uplink->clients; } - uNode->command_policer.last_req = now; - uNode->command_policer.params = IsOper(uNode) ? oper_policer_params : luser_policer_params; uNode->num_local = base64toint(numeric+strlen(uNode->uplink->numeric), 3) & uNode->uplink->num_mask; uNode->uplink->users[uNode->num_local] = uNode; --- 1844,1847 ---- *************** *** 1913,1917 **** void mod_usermode(struct userNode *user, const char *mode_change) { - extern struct policer_params *oper_policer_params, *luser_policer_params; static void call_oper_funcs(struct userNode *user); int add = 1; --- 1911,1914 ---- *************** *** 1932,1940 **** if (add) { userList_append(&curr_opers, user); - user->command_policer.params = oper_policer_params; call_oper_funcs(user); } else { userList_remove(&curr_opers, user); - user->command_policer.params = luser_policer_params; } break; --- 1929,1935 ---- Index: nickserv.h =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.h,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -r1.50 -r1.51 *** nickserv.h 15 Dec 2003 04:01:15 -0000 1.50 --- nickserv.h 17 Dec 2003 04:21:52 -0000 1.51 *************** *** 57,60 **** --- 57,61 ---- #define IsHelper(user) (IsSupportHelper(user) || IsNetworkHelper(user)) #define IsHelping(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, HELPING)) + #define IsStaff(user) (IsOper(user) || IsSupportHelper(user) || IsNetworkHelper(user)) enum cookie_type { Index: modcmd.h =================================================================== RCS file: /cvsroot/srvx/services/src/modcmd.h,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -r1.22 -r1.23 *** modcmd.h 18 Oct 2003 15:52:21 -0000 1.22 --- modcmd.h 17 Dec 2003 04:21:52 -0000 1.23 *************** *** 53,56 **** --- 53,57 ---- #define MODCMD_LOG_HOSTMASK 0x040 #define MODCMD_IGNORE_CSUSPEND 0x080 + #define MODCMD_NEVER_CSUSPEND 0x100 /* Requirement (access control) flags */ #define MODCMD_REQUIRE_AUTHED 0x001000 *************** *** 109,113 **** struct string_list alias; /* if it's a complicated binding, what is the expansion? */ unsigned int uses; /* how many times was this command used? */ - float weight; /* how much should it count against the command policer? */ unsigned int flags; unsigned long req_account_flags; --- 110,113 ---- *************** *** 164,171 **** int svccmd_send_help_2(struct userNode *user, struct service *service, const char *topic); /* Check whether a user may invoke a command or not. If they can, ! * return non-zero (if debit is non-zero, also debit the command's ! * weight against the user's command policer). If they cannot (and ! * noisy is non-zero), tell them why not and return 0. ! * */ int svccmd_can_invoke(struct userNode *user, struct userNode *bot, struct svccmd *cmd, struct chanNode *channel, int flags); --- 164,169 ---- int svccmd_send_help_2(struct userNode *user, struct service *service, const char *topic); /* Check whether a user may invoke a command or not. If they can, ! * return non-zero. If they cannot (and noisy is non-zero), tell them ! * why not and return 0. */ int svccmd_can_invoke(struct userNode *user, struct userNode *bot, struct svccmd *cmd, struct chanNode *channel, int flags); Index: modcmd.c =================================================================== RCS file: /cvsroot/srvx/services/src/modcmd.c,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -r1.74 -r1.75 *** modcmd.c 9 Dec 2003 02:46:56 -0000 1.74 --- modcmd.c 17 Dec 2003 04:21:52 -0000 1.75 *************** *** 31,35 **** #define MCMSG_LEVEL_TOO_HIGH "You cannot set the access requirements to %s (that is too high)." #define MCMSG_UNKNOWN_COMMAND "Unknown command name %s (as template for %s in service %s)." - #define MCMSG_BAD_WEIGHT "Invalid command weight %s." #define MCMSG_BAD_OPTION "Unknown option %s." #define MCMSG_MUST_QUALIFY "You $bMUST$b \"/msg %s@$s %s\" (not just /msg %s)." --- 31,34 ---- *************** *** 92,95 **** --- 91,95 ---- #define MCMSG_HELPFILE_SEQUENCE "Help priority %d: %s" #define MCMSG_HELPFILE_SEQUENCE_SET "Set helpfile priority sequence for %s." + #define MCMSG_BAD_SERVICE_NICK "$b%s$b is an invalid nickname." #define MCMSG_ALREADY_SERVICE "$b%s$b is already a service." #define MCMSG_NEW_SERVICE "Added new service bot $b%s$b." *************** *** 139,142 **** --- 139,143 ---- { "nolog", MODCMD_NO_LOG }, { "networkhelper", MODCMD_REQUIRE_NETWORK_HELPER }, + { "never_csuspend", MODCMD_NEVER_CSUSPEND }, { "oper", MODCMD_REQUIRE_OPER }, { "qualified", MODCMD_REQUIRE_QUALIFIED }, *************** *** 278,284 **** dest->req_account_flags |= src->req_account_flags; dest->deny_account_flags |= src->deny_account_flags; - if (src->weight > dest->weight) { - dest->weight = src->weight; - } if (src->min_opserv_level > dest->min_opserv_level) { dest->min_opserv_level = src->min_opserv_level; --- 279,282 ---- *************** *** 368,385 **** } else if (!irccasecmp(param, "account_flags")) { return nickserv_modify_handle_flags(user, bot, value, &cmd->req_account_flags, &cmd->deny_account_flags); - } else if (!irccasecmp(param, "weight")) { - double new_weight; - char *end; - new_weight = strtod(value, &end); - if ((end == value) || (new_weight < 0)) { - if (user) { - send_message(user, bot, MCMSG_BAD_WEIGHT, value); - } else { - log_module(MAIN_LOG, LOG_ERROR, "Invalid command weight %s (for command %s).", value, cmd->name); - } - return 0; - } - cmd->weight = new_weight; - return 1; } else { if (user) { --- 366,369 ---- *************** *** 406,410 **** newcmd->defaults = calloc(1, sizeof(*newcmd->defaults)); newcmd->defaults->name = strdup(newcmd->name); - newcmd->defaults->weight = 1.0; newcmd->defaults->command = newcmd; dict_insert(module->commands, newcmd->name, newcmd); --- 390,393 ---- *************** *** 480,484 **** } else if (IsSuspended(channel->channel_info) && !(flags & MODCMD_IGNORE_CSUSPEND)) { /* allow security-override users to always ignore channel suspensions, but flag it as a staff command */ ! if (!user->handle_info || !HANDLE_FLAGGED(user->handle_info, HELPING)) { if (options & SVCCMD_NOISY) send_message(user, bot, MCMSG_CHAN_SUSPENDED, channel->name, channel->channel_info->suspended->reason); --- 463,469 ---- } else if (IsSuspended(channel->channel_info) && !(flags & MODCMD_IGNORE_CSUSPEND)) { /* allow security-override users to always ignore channel suspensions, but flag it as a staff command */ ! if (!user->handle_info ! || !HANDLE_FLAGGED(user->handle_info, HELPING) ! || (flags & MODCMD_NEVER_CSUSPEND)) { if (options & SVCCMD_NOISY) send_message(user, bot, MCMSG_CHAN_SUSPENDED, channel->name, channel->channel_info->suspended->reason); *************** *** 566,574 **** } } - if ((options & SVCCMD_DEBIT) && !policer_conforms(&user->command_policer, now, cmd->weight)) { - if (options & SVCCMD_NOISY) - send_message(user, bot, MSG_COMMAND_FLOOD); - return 0; - } /* If it's an override, return a special value. */ --- 551,554 ---- *************** *** 741,746 **** channel = NULL; } - perms = svccmd_can_invoke(user, service->bot, cmd, channel, options); - if (!perms) return 0; if (argc < cmd->command->min_argc) { send_message(user, service->bot, MSG_MISSING_PARAMS, cmd->name); --- 721,724 ---- *************** *** 751,765 **** return 0; } cmd->uses++; ! if (perms & ACTION_NOCHANNEL) channel = NULL; ! if (channel) safestrncpy(channel_name, channel->name, sizeof(channel_name)); ! else channel_name[0] = 0; ! if (!cmd->command->func(user, channel, argc, argv, cmd)) return 0; if (!(flags & MODCMD_NO_LOG)) { enum log_severity slvl; ! if (perms & ACTION_STAFF) slvl = LOG_STAFF; ! else if (perms & ACTION_OVERRIDE) slvl = LOG_OVERRIDE; ! else slvl = LOG_COMMAND; /* Unsplit argv after running the function to get the benefit * of any mangling/hiding done by the commands. */ --- 729,753 ---- return 0; } + perms = svccmd_can_invoke(user, service->bot, cmd, channel, options); + if (!perms) + return 0; cmd->uses++; ! if (perms & ACTION_NOCHANNEL) ! channel = NULL; ! if (channel) ! safestrncpy(channel_name, channel->name, sizeof(channel_name)); ! else ! channel_name[0] = 0; ! if (!cmd->command->func(user, channel, argc, argv, cmd)) ! return 0; if (!(flags & MODCMD_NO_LOG)) { enum log_severity slvl; ! if (perms & ACTION_STAFF) ! slvl = LOG_STAFF; ! else if (perms & ACTION_OVERRIDE) ! slvl = LOG_OVERRIDE; ! else ! slvl = LOG_COMMAND; /* Unsplit argv after running the function to get the benefit * of any mangling/hiding done by the commands. */ *************** *** 1349,1353 **** static MODCMD_FUNC(cmd_god) { - extern struct policer_params *luser_policer_params, *god_policer_params; int helping; --- 1337,1340 ---- *************** *** 1376,1384 **** HANDLE_SET_FLAG(user->handle_info, HELPING); send_message(user, cmd->parent->bot, MSMSG_NOW_HELPING); - if (!IsOper(user)) user->command_policer.params = god_policer_params; } else { HANDLE_CLEAR_FLAG(user->handle_info, HELPING); send_message(user, cmd->parent->bot, MSMSG_NOW_NOT_HELPING); - if (!IsOper(user)) user->command_policer.params = luser_policer_params; } --- 1363,1369 ---- *************** *** 1640,1643 **** --- 1625,1632 ---- nick = argv[1]; + if (!is_valid_nick(nick)) { + reply(MCMSG_BAD_SERVICE_NICK, nick); + return 0; + } desc = unsplit_string(argv+2, argc-2, NULL); bot = GetUserH(nick); Index: helpserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/helpserv.c,v retrieving revision 1.87 retrieving revision 1.88 diff -C2 -r1.87 -r1.88 *** helpserv.c 10 Dec 2003 17:37:23 -0000 1.87 --- helpserv.c 17 Dec 2003 04:21:52 -0000 1.88 *************** *** 969,977 **** hs = dict_find(helpserv_bots_dict, target->nick, NULL); - if (!policer_conforms(&user->command_policer, now, 1)) { - helpserv_notice(user, MSG_COMMAND_FLOOD); - return; - } - /* See if we should listen to their message as a command (helper) * or a help request (user) */ --- 969,972 ---- Index: hash.h =================================================================== RCS file: /cvsroot/srvx/services/src/hash.h,v retrieving revision 1.107 retrieving revision 1.108 diff -C2 -r1.107 -r1.108 *** hash.h 5 Aug 2003 02:22:29 -0000 1.107 --- hash.h 17 Dec 2003 04:21:52 -0000 1.108 *************** *** 115,120 **** struct userNode *next_authed; struct policer auth_policer; - /* from modcmd */ - struct policer command_policer; }; --- 115,118 ---- Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.400 retrieving revision 1.401 diff -C2 -r1.400 -r1.401 *** chanserv.c 15 Dec 2003 18:38:58 -0000 1.400 --- chanserv.c 17 Dec 2003 04:21:52 -0000 1.401 *************** *** 4107,4111 **** chanserv_notice(user, CSMSG_CHANNEL_REGISTERED, buffer); ! privileged = IsOper(user) || IsHelper(user); if((uData && uData->access >= ulCoowner) || privileged) { --- 4107,4111 ---- chanserv_notice(user, CSMSG_CHANNEL_REGISTERED, buffer); ! privileged = IsStaff(user); if((uData && uData->access >= ulCoowner) || privileged) { *************** *** 7255,7259 **** DEFINE_COMMAND(unbanme, 1, MODCMD_REQUIRE_CHANUSER, "template", "op", NULL); DEFINE_COMMAND(open, 1, MODCMD_REQUIRE_CHANUSER, "template", "op", NULL); ! DEFINE_COMMAND(topic, 1, MODCMD_REQUIRE_REGCHAN, "template", "op", NULL); DEFINE_COMMAND(mode, 1, MODCMD_REQUIRE_REGCHAN, "template", "op", NULL); DEFINE_COMMAND(inviteme, 1, MODCMD_REQUIRE_CHANNEL, "access", "peon", NULL); --- 7255,7259 ---- DEFINE_COMMAND(unbanme, 1, MODCMD_REQUIRE_CHANUSER, "template", "op", NULL); DEFINE_COMMAND(open, 1, MODCMD_REQUIRE_CHANUSER, "template", "op", NULL); ! DEFINE_COMMAND(topic, 1, MODCMD_REQUIRE_REGCHAN, "template", "op", "flags", "+never_csuspend", NULL); DEFINE_COMMAND(mode, 1, MODCMD_REQUIRE_REGCHAN, "template", "op", NULL); DEFINE_COMMAND(inviteme, 1, MODCMD_REQUIRE_CHANNEL, "access", "peon", NULL); |
From: Entrope <en...@us...> - 2003-12-17 04:21:22
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv21714/src Modified Files: mod-snoop.c Log Message: disable mod-snoop while shutting down Index: mod-snoop.c =================================================================== RCS file: /cvsroot/srvx/services/src/mod-snoop.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -r1.19 -r1.20 *** mod-snoop.c 15 Nov 2003 04:00:55 -0000 1.19 --- mod-snoop.c 17 Dec 2003 04:21:19 -0000 1.20 *************** *** 145,148 **** --- 145,149 ---- void snoop_cleanup(void) { + snoop_cfg.enabled = 0; unreg_del_user_func(snoop_del_user); } |
From: Entrope <en...@us...> - 2003-12-17 00:43:50
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv14725/src Modified Files: helpfile.c Log Message: fix line wrap bug in line wrap bug fix Index: helpfile.c =================================================================== RCS file: /cvsroot/srvx/services/src/helpfile.c,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -r1.67 -r1.68 *** helpfile.c 14 Dec 2003 22:33:54 -0000 1.67 --- helpfile.c 17 Dec 2003 00:43:47 -0000 1.68 *************** *** 233,246 **** if (input.list[new_ipos] == ' ') break; if (new_ipos == newline_ipos) { /* Single word was too big to fit on one line; skip * forward to its end and print it as a whole. */ ! while ((input.list[new_ipos] != ' ') && (input.list[new_ipos] != '\n') && (input.list[new_ipos] != '$')) line[pos++] = input.list[new_ipos++]; - } else { - pos -= ipos - new_ipos; } ipos = new_ipos; --- 233,246 ---- if (input.list[new_ipos] == ' ') break; + pos -= ipos - new_ipos; if (new_ipos == newline_ipos) { /* Single word was too big to fit on one line; skip * forward to its end and print it as a whole. */ ! while (input.list[new_ipos] ! && (input.list[new_ipos] != ' ') && (input.list[new_ipos] != '\n') && (input.list[new_ipos] != '$')) line[pos++] = input.list[new_ipos++]; } ipos = new_ipos; |
From: Entrope <en...@us...> - 2003-12-15 18:39:02
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv26008/src Modified Files: chanserv.c Log Message: fix a read-after-free when unregistering a channel Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.399 retrieving revision 1.400 diff -C2 -r1.399 -r1.400 *** chanserv.c 13 Dec 2003 16:55:51 -0000 1.399 --- chanserv.c 15 Dec 2003 18:38:58 -0000 1.400 *************** *** 1444,1469 **** free(suspended->suspender); free(suspended->reason); ! if(suspended->expires) timeq_del(suspended->expires, chanserv_expire_suspension, suspended, 0); free(suspended); } if(cNode) - { cNode->channel_info = NULL; - } } - channel->channel->channel_info = NULL; - UnlockChannel(channel->channel); ! if(channel->notes) dict_delete(channel->notes); ! sprintf(msgbuf, "%s %s", channel->channel->name, reason); if(!IsSuspended(channel)) - { DelChannelUser(chanserv, channel->channel, msgbuf, 0); ! } global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, msgbuf); free(channel); - registered_channels--; } --- 1444,1465 ---- free(suspended->suspender); free(suspended->reason); ! if(suspended->expires) ! timeq_del(suspended->expires, chanserv_expire_suspension, suspended, 0); free(suspended); } if(cNode) cNode->channel_info = NULL; } channel->channel->channel_info = NULL; ! if(channel->notes) ! dict_delete(channel->notes); if(!IsSuspended(channel)) DelChannelUser(chanserv, channel->channel, msgbuf, 0); ! sprintf(msgbuf, "%s %s", channel->channel->name, reason); global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, msgbuf); + UnlockChannel(channel->channel); free(channel); registered_channels--; } |
From: Entrope <en...@us...> - 2003-12-15 13:54:54
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv29326/src Modified Files: nickserv.c Log Message: remove $b from account rename global (thanks, madCoder) Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.270 retrieving revision 1.271 diff -C2 -r1.270 -r1.271 *** nickserv.c 15 Dec 2003 04:11:39 -0000 1.270 --- nickserv.c 15 Dec 2003 13:54:51 -0000 1.271 *************** *** 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." --- 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 "%s renamed account %s to %s." #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." |
From: Entrope <en...@us...> - 2003-12-15 04:11:42
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv32143/src Modified Files: nickserv.c Log Message: oops, actually send out the global message for an account rename Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.269 retrieving revision 1.270 diff -C2 -r1.269 -r1.270 *** nickserv.c 15 Dec 2003 04:06:56 -0000 1.269 --- nickserv.c 15 Dec 2003 04:11:39 -0000 1.270 *************** *** 1413,1416 **** --- 1413,1417 ---- 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); + global_message(MESSAGE_RECIPIENT_STAFF, msgbuf); free(old_handle); return 1; |
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); |
From: Entrope <en...@us...> - 2003-12-15 04:01:21
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv30592/src Modified Files: nickserv.h Log Message: reorder struct handle_info for better element packing Index: nickserv.h =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.h,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -r1.49 -r1.50 *** nickserv.h 20 Nov 2003 13:19:09 -0000 1.49 --- nickserv.h 15 Dec 2003 04:01:15 -0000 1.50 *************** *** 74,81 **** struct handle_info { ! #ifdef WITH_PROTOCOL_BAHAMUT ! unsigned long int id; ! #endif ! struct nick_info *nicks; /* linked list of owned nicks */ struct string_list *masks; struct userNode *users; --- 74,78 ---- struct handle_info { ! struct nick_info *nicks; struct string_list *masks; struct userNode *users; *************** *** 85,93 **** char *epithet; char *infoline; - unsigned long flags; - time_t registered, lastseen; char *handle; ! char passwd[MD5_CRYPT_LENGTH+1]; ! char last_quit_host[USERLEN+HOSTLEN+2]; unsigned short opserv_level; unsigned short screen_width; --- 82,92 ---- char *epithet; char *infoline; char *handle; ! #ifdef WITH_PROTOCOL_BAHAMUT ! unsigned long id; ! #endif ! time_t registered; ! time_t lastseen; ! unsigned short flags; unsigned short opserv_level; unsigned short screen_width; *************** *** 96,99 **** --- 95,100 ---- unsigned char announcements; unsigned char maxlogins; + char passwd[MD5_CRYPT_LENGTH+1]; + char last_quit_host[USERLEN+HOSTLEN+2]; }; |
From: Entrope <en...@us...> - 2003-12-14 22:33:57
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv7092/src Modified Files: helpfile.c Log Message: fix a line continuation bug Index: helpfile.c =================================================================== RCS file: /cvsroot/srvx/services/src/helpfile.c,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -r1.66 -r1.67 *** helpfile.c 18 Oct 2003 15:52:21 -0000 1.66 --- helpfile.c 14 Dec 2003 22:33:54 -0000 1.67 *************** *** 157,160 **** --- 157,161 ---- static struct string_buffer input; unsigned int size, ipos, pos, length, chars_sent, use_color; + unsigned int expand_pos, expand_ipos, newline_ipos; char line[MAX_LINE_SIZE]; *************** *** 204,209 **** * that requires a very big intermediate buffer. */ ! ipos = 0; ! pos = 0; chars_sent = 0; while (input.list[ipos]) { --- 205,210 ---- * that requires a very big intermediate buffer. */ ! expand_ipos = newline_ipos = ipos = 0; ! expand_pos = pos = 0; chars_sent = 0; while (input.list[ipos]) { *************** *** 215,219 **** } ! if (!input.list[ipos]) goto send_line; if (input.list[ipos] == '\n') { ipos++; --- 216,221 ---- } ! if (!input.list[ipos]) ! goto send_line; if (input.list[ipos] == '\n') { ipos++; *************** *** 221,249 **** } if (pos == size) { ! char *terminal; ! line[size - 1] = 0; ! terminal = strrchr(line, ' '); ! if (terminal) { ! unsigned int backup = pos - (terminal - line); ! /* min_backup is where we started -- after the last $-expression */ ! if (ipos < backup) { ! backup = ipos; ! terminal = line + pos - backup; ! } ! *terminal = 0; ! ipos -= backup; ! pos -= backup; ! } else { ! /* Send the entire word, even though it's bigger than ! * the requested maximum size. But stop at line size. */ ! pos--; ! for (ch = input.list[--ipos]; ! ch && (ch != ' ') && (pos < MAX_LINE_SIZE); ! ch = input.list[++ipos]) { ! line[pos++] = ch; ! } } ! while (input.list[ipos] == ' ') ipos++; goto send_line; } --- 223,250 ---- } if (pos == size) { ! unsigned int new_ipos; ! /* Scan backwards for a space in the input, until we hit ! * either the last newline or the last variable expansion. ! * Print the line up to that point, and start from there. ! */ ! for (new_ipos = ipos; ! (new_ipos > expand_ipos) && (new_ipos > newline_ipos); ! --new_ipos) ! if (input.list[new_ipos] == ' ') ! break; ! if (new_ipos == newline_ipos) { ! /* Single word was too big to fit on one line; skip ! * forward to its end and print it as a whole. */ ! while ((input.list[new_ipos] != ' ') ! && (input.list[new_ipos] != '\n') ! && (input.list[new_ipos] != '$')) ! line[pos++] = input.list[new_ipos++]; ! } else { ! pos -= ipos - new_ipos; } ! ipos = new_ipos; ! while (input.list[ipos] == ' ') ! ipos++; goto send_line; } *************** *** 293,297 **** value = handle ? handle->handle : "Account"; break; ! #define SEND_LINE() do { line[pos] = 0; if (pos > 0) irc_send(src, dest, line); chars_sent += pos; pos = 0; } while (0) /* Custom expansion handled by helpfile-specific function. */ case '{': --- 294,298 ---- value = handle ? handle->handle : "Account"; break; ! #define SEND_LINE() do { line[pos] = 0; if (pos > 0) irc_send(src, dest, line); chars_sent += pos; pos = 0; newline_ipos = ipos; } while (0) /* Custom expansion handled by helpfile-specific function. */ case '{': *************** *** 345,349 **** /* copy over spaces, until (possible) end of line */ while (*value == ' ') { ! if (pos < size-1) line[pos++] = *value; value++; } --- 346,351 ---- /* copy over spaces, until (possible) end of line */ while (*value == ' ') { ! if (pos < size-1) ! line[pos++] = *value; value++; } *************** *** 359,363 **** value += length; /* skip any trailing spaces */ ! while (*value == ' ') value++; } } --- 361,366 ---- value += length; /* skip any trailing spaces */ ! while (*value == ' ') ! value++; } } *************** *** 370,377 **** length = strlen(value); memcpy(line + pos, value, length); ! if (free_value) free(free_value); pos += length; ! if ((pos < size-1) && input.list[ipos]) continue; send_line: SEND_LINE(); #undef SEND_LINE --- 373,387 ---- length = strlen(value); memcpy(line + pos, value, length); ! if (free_value) ! free(free_value); pos += length; ! if ((pos < size-1) && input.list[ipos]) { ! expand_pos = pos; ! expand_ipos = ipos; ! continue; ! } send_line: + expand_pos = pos; + expand_ipos = ipos; SEND_LINE(); #undef SEND_LINE |
From: Entrope <en...@us...> - 2003-12-14 10:53:37
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv2808/src Modified Files: chanserv.c Log Message: fix inverted logic when saving channels last-visited timestamp Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.398 retrieving revision 1.399 diff -C2 -r1.398 -r1.399 *** chanserv.c 9 Dec 2003 13:57:12 -0000 1.398 --- chanserv.c 13 Dec 2003 16:55:51 -0000 1.399 *************** *** 77,84 **** #define KEY_DNR_REASON "reason" - /* Command data */ - #define KEY_WEIGHT "weight" - #define KEY_FLAGS "flags" - /* Channel data */ #define KEY_REGISTERED "registered" --- 77,80 ---- *************** *** 7078,7082 **** } ! saxdb_write_int(ctx, KEY_VISITED, high_present ? channel->visited : now); saxdb_end_record(ctx); } --- 7074,7078 ---- } ! saxdb_write_int(ctx, KEY_VISITED, high_present ? now : channel->visited); saxdb_end_record(ctx); } |
From: Entrope <en...@us...> - 2003-12-10 17:37:26
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv24373/src Modified Files: helpserv.c Log Message: fix dereference of free()'d memory when using non-OpServ unregister Index: helpserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/helpserv.c,v retrieving revision 1.86 retrieving revision 1.87 diff -C2 -r1.86 -r1.87 *** helpserv.c 15 Nov 2003 03:35:26 -0000 1.86 --- helpserv.c 10 Dec 2003 17:37:23 -0000 1.87 *************** *** 2530,2533 **** --- 2530,2534 ---- return 0; } + log_audit(HS_LOG, LOG_COMMAND, user, hs->helpserv, hs->helpchan->name, 0, "unregister CONFIRM"); } *************** *** 2550,2554 **** snprintf(reason, MAXLEN, "HelpServ %s (%s) unregistered by %s.", botname, channame, user->nick); global_message(MESSAGE_RECIPIENT_OPERS, reason); ! return 1; } --- 2551,2555 ---- snprintf(reason, MAXLEN, "HelpServ %s (%s) unregistered by %s.", botname, channame, user->nick); global_message(MESSAGE_RECIPIENT_OPERS, reason); ! return from_opserv; } |
From: Entrope <en...@us...> - 2003-12-09 16:09:46
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv23381/src Modified Files: proto-p10.c Log Message: eliminate warning when handling JOIN 0 Index: proto-p10.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto-p10.c,v retrieving revision 1.82 retrieving revision 1.83 diff -C2 -r1.82 -r1.83 *** proto-p10.c 2 Dec 2003 19:50:22 -0000 1.82 --- proto-p10.c 9 Dec 2003 16:09:43 -0000 1.83 *************** *** 881,897 **** * bad-word channel checking. */ ! struct chanNode *cn = AddChannel(name, cd->when, NULL, NULL); ! struct modeNode *mn = AddChannelUser(cd->user, cn); ! if (mn && (cn->members.used == 1)) ! mn->modes = MODE_CHANOP; ! } ! ! static void ! join_0_helper(char *name, void *data) ! { ! struct create_desc *cd = data; ! if (!strcmp(name, "0")) while (cd->user->channels.used > 0) DelChannelUser(cd->user, cd->user->channels.list[0]->channel, 0, 0); } --- 881,895 ---- * bad-word channel checking. */ ! struct chanNode *cn; ! struct modeNode *mn; ! if (!strcmp(name, "0")) { while (cd->user->channels.used > 0) DelChannelUser(cd->user, cd->user->channels.list[0]->channel, 0, 0); + return; + } + cn = AddChannel(name, cd->when, NULL, NULL); + mn = AddChannelUser(cd->user, cn); + if (mn && (cn->members.used == 1)) + mn->modes = MODE_CHANOP; } *************** *** 921,925 **** else cd.when = atoi(argv[2]); ! parse_foreach(argv[1], join_helper, create_helper, NULL, join_0_helper, &cd); return 1; } --- 919,923 ---- else cd.when = atoi(argv[2]); ! parse_foreach(argv[1], join_helper, create_helper, NULL, NULL, &cd); return 1; } *************** *** 1576,1580 **** old = *j; *j = 0; ! if (IsChannelName(target_list)) { struct chanNode *chan = GetChannel(target_list); if (chan) { --- 1574,1579 ---- old = *j; *j = 0; ! if (IsChannelName(target_list) ! || (target_list[0] == '0' && target_list[1] == '\0')) { struct chanNode *chan = GetChannel(target_list); if (chan) { |
From: Entrope <en...@us...> - 2003-12-09 13:57:16
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv29611/src Modified Files: chanserv.c Log Message: fix handle_part for support helpers Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.397 retrieving revision 1.398 diff -C2 -r1.397 -r1.398 *** chanserv.c 9 Dec 2003 03:01:56 -0000 1.397 --- chanserv.c 9 Dec 2003 13:57:12 -0000 1.398 *************** *** 6255,6264 **** } ! if(IsSupportHelper(user)) { ! unsigned int ii; for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) ! if(channel == chanserv_conf.support_channels.list[ii]) break; if(ii == chanserv_conf.support_channels.used) HANDLE_CLEAR_FLAG(user->handle_info, HELPING); --- 6255,6271 ---- } ! if(IsHelping(user) && IsSupportHelper(user)) { ! unsigned int ii, jj; for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) ! { ! for(jj = 0; jj < user->channels.used; ++jj) ! { ! if(user->channels.list[jj]->channel == chanserv_conf.support_channels.list[ii]) ! break; ! } ! if(jj < user->channels.used) break; + } if(ii == chanserv_conf.support_channels.used) HANDLE_CLEAR_FLAG(user->handle_info, HELPING); *************** *** 7154,7159 **** static void chanserv_db_cleanup(void) { unreg_part_func(handle_part); ! while(channelList) unregister_channel(channelList, "terminating."); dict_delete(handle_dnrs); dict_delete(plain_dnrs); --- 7161,7171 ---- static void chanserv_db_cleanup(void) { + unsigned int ii; unreg_part_func(handle_part); ! while(channelList) ! unregister_channel(channelList, "terminating."); ! for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) ! UnlockChannel(chanserv_conf.support_channels.list[ii]); ! free(chanserv_conf.support_channels.list); dict_delete(handle_dnrs); dict_delete(plain_dnrs); |
From: Entrope <en...@us...> - 2003-12-09 03:36:21
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv3174/src Modified Files: proto-bahamut.c Log Message: implement some missing functionality for Bahamut (fixes two bug tracker items) Index: proto-bahamut.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto-bahamut.c,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -r1.44 -r1.45 *** proto-bahamut.c 5 Aug 2003 02:22:29 -0000 1.44 --- proto-bahamut.c 9 Dec 2003 03:36:18 -0000 1.45 *************** *** 400,403 **** --- 400,404 ---- irc_kick(struct userNode *who, struct userNode *target, struct chanNode *from, const char *msg) { putsock(":%s KICK %s %s :%s", who->nick, from->name, target->nick, msg); + ChannelUserKicked(who, target, from); } *************** *** 898,901 **** --- 899,938 ---- } + static CMD_FUNC(cmd_num_topic) + { + static struct chanNode *cn; + + if (!argv[0]) + return 0; /* huh? */ + if (argv[2]) { + cn = GetChannel(argv[2]); + if (!cn) { + log_module(MAIN_LOG, LOG_ERROR, "Unable to find channel %s in topic reply", argv[2]); + return 0; + } + } else + return 0; + + switch (atoi(argv[0])) { + case 331: + cn->topic_time = 0; + break; /* no topic */ + case 332: + if (argc < 4) + return 0; + safestrncpy(cn->topic, unsplit_string(argv+3, argc-3, NULL), sizeof(cn->topic)); + break; + case 333: + if (argc < 5) + return 0; + safestrncpy(cn->topic_nick, argv[3], sizeof(cn->topic_nick)); + cn->topic_time = atoi(argv[4]); + break; + default: + return 0; /* should never happen */ + } + return 1; + } + static CMD_FUNC(cmd_quit) { *************** *** 912,916 **** static CMD_FUNC(cmd_squit) { ! return 0; /* TODO: cmd_squit() */ } --- 949,967 ---- static CMD_FUNC(cmd_squit) { ! struct server *server; ! if (argc < 3) ! return 0; ! if (!(server = GetServerH(argv[1]))) ! return 0; ! if (server == self->uplink) { ! /* Force a reconnect to the currently selected server. */ ! cManager.uplink->tries = 0; ! log_module(MAIN_LOG, LOG_INFO, "Squitting from uplink: %s", argv[3]); ! close_socket(); ! return 1; ! } ! ! DelServer(server, 0, argv[3]); ! return 1; } *************** *** 971,974 **** --- 1022,1026 ---- dict_insert(irc_func_dict, "KICK", cmd_kick); dict_insert(irc_func_dict, "KILL", cmd_kill); + dict_insert(irc_func_dict, "LUSERSLOCK", cmd_dummy); dict_insert(irc_func_dict, "MODE", cmd_mode); dict_insert(irc_func_dict, "NICK", cmd_nick); *************** *** 989,992 **** --- 1041,1048 ---- dict_insert(irc_func_dict, "VERSION", cmd_version); dict_insert(irc_func_dict, "WHOIS", cmd_whois); + dict_insert(irc_func_dict, "331", cmd_num_topic); + dict_insert(irc_func_dict, "332", cmd_num_topic); + dict_insert(irc_func_dict, "333", cmd_num_topic); + dict_insert(irc_func_dict, "413", cmd_num_topic); userList_init(&dead_users); |
From: Entrope <en...@us...> - 2003-12-09 03:02:01
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv30919/src Modified Files: chanserv.c Log Message: when writing out a channel with high-ranking users present, set "visited" to "now" (should fix #846449) Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.396 retrieving revision 1.397 diff -C2 -r1.396 -r1.397 *** chanserv.c 9 Dec 2003 02:07:37 -0000 1.396 --- chanserv.c 9 Dec 2003 03:01:56 -0000 1.397 *************** *** 6972,6989 **** } ! static void chanserv_write_users(struct saxdb_context *ctx, struct userData *uData) { saxdb_start_record(ctx, KEY_USERS, 1); for(; uData; uData = uData->next) { saxdb_start_record(ctx, uData->handle->handle, 0); saxdb_write_int(ctx, KEY_LEVEL, levelMap[uData->access]); saxdb_write_int(ctx, KEY_SEEN, uData->seen); ! if(uData->flags) saxdb_write_int(ctx, KEY_FLAGS, uData->flags); ! if(uData->info) saxdb_write_string(ctx, KEY_INFO, uData->info); saxdb_end_record(ctx); } saxdb_end_record(ctx); } --- 6972,6995 ---- } ! static int chanserv_write_users(struct saxdb_context *ctx, struct userData *uData) { + int high_present = 0; saxdb_start_record(ctx, KEY_USERS, 1); for(; uData; uData = uData->next) { + if((uData->access >= ulMaster) && uData->present) + high_present = 1; saxdb_start_record(ctx, uData->handle->handle, 0); saxdb_write_int(ctx, KEY_LEVEL, levelMap[uData->access]); saxdb_write_int(ctx, KEY_SEEN, uData->seen); ! if(uData->flags) ! saxdb_write_int(ctx, KEY_FLAGS, uData->flags); ! if(uData->info) ! saxdb_write_string(ctx, KEY_INFO, uData->info); saxdb_end_record(ctx); } saxdb_end_record(ctx); + return high_present; } *************** *** 7023,7031 **** { char buf[MAXLEN]; saxdb_start_record(ctx, channel->channel->name, 1); saxdb_write_int(ctx, KEY_REGISTERED, channel->registered); - saxdb_write_int(ctx, KEY_VISITED, channel->visited); saxdb_write_int(ctx, KEY_MAX, channel->max); if(channel->topic[0]) saxdb_write_string(ctx, KEY_TOPIC, channel->topic); --- 7029,7037 ---- { char buf[MAXLEN]; + int high_present; saxdb_start_record(ctx, channel->channel->name, 1); saxdb_write_int(ctx, KEY_REGISTERED, channel->registered); saxdb_write_int(ctx, KEY_MAX, channel->max); if(channel->topic[0]) saxdb_write_string(ctx, KEY_TOPIC, channel->topic); *************** *** 7046,7050 **** } ! chanserv_write_users(ctx, channel->users); chanserv_write_bans(ctx, channel->bans); --- 7052,7056 ---- } ! high_present = chanserv_write_users(ctx, channel->users); chanserv_write_bans(ctx, channel->bans); *************** *** 7064,7067 **** --- 7070,7075 ---- saxdb_end_record(ctx); } + + saxdb_write_int(ctx, KEY_VISITED, high_present ? channel->visited : now); saxdb_end_record(ctx); } |
From: Entrope <en...@us...> - 2003-12-09 02:48:59
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv29247/src Modified Files: dict-splay.c sockcheck.c Log Message: improve formatting of code (for profiling/debugging purposes) Index: dict-splay.c =================================================================== RCS file: /cvsroot/srvx/services/src/dict-splay.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** dict-splay.c 7 Jul 2003 16:29:33 -0000 1.12 --- dict-splay.c 9 Dec 2003 02:48:56 -0000 1.13 *************** *** 128,133 **** dict_dispose_node(struct dict_node *node, free_f free_keys, free_f free_data) { ! if (free_keys && node->key) free_keys((void*)node->key); ! if (free_data && node->data) free_data(node->data); free(node); } --- 128,135 ---- dict_dispose_node(struct dict_node *node, free_f free_keys, free_f free_data) { ! if (free_keys && node->key) ! free_keys((void*)node->key); ! if (free_data && node->data) ! free_data(node->data); free(node); } *************** *** 142,146 **** { struct dict_node *new_node; ! if (!key) return; new_node = malloc(sizeof(struct dict_node)); new_node->key = key; --- 144,149 ---- { struct dict_node *new_node; ! if (!key) ! return; new_node = malloc(sizeof(struct dict_node)); new_node->key = key; *************** *** 206,212 **** struct dict_node *new_root; ! if (!dict->root) return 0; dict->root = dict_splay(dict->root, key); ! if (irccasecmp(key, dict->root->key)) return 0; if (!dict->root->l) { --- 209,217 ---- struct dict_node *new_root; ! if (!dict->root) ! return 0; dict->root = dict_splay(dict->root, key); ! if (irccasecmp(key, dict->root->key)) ! return 0; if (!dict->root->l) { *************** *** 241,250 **** int was_found; if (!dict || !dict->root || !key) { ! if (found) *found = 0; return NULL; } dict->root = dict_splay(dict->root, key); was_found = !irccasecmp(key, dict->root->key); ! if (found) *found = was_found; return was_found ? dict->root->data : NULL; } --- 246,257 ---- int was_found; if (!dict || !dict->root || !key) { ! if (found) ! *found = 0; return NULL; } dict->root = dict_splay(dict->root, key); was_found = !irccasecmp(key, dict->root->key); ! if (found) ! *found = was_found; return was_found ? dict->root->data : NULL; } *************** *** 257,261 **** { dict_iterator_t it, next; ! if (!dict) return; for (it=dict_first(dict); it; it=next) { next = iter_next(it); --- 264,269 ---- { dict_iterator_t it, next; ! if (!dict) ! return; for (it=dict_first(dict); it; it=next) { next = iter_next(it); Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.93 retrieving revision 1.94 diff -C2 -r1.93 -r1.94 *** sockcheck.c 5 Oct 2003 03:15:29 -0000 1.93 --- sockcheck.c 9 Dec 2003 02:48:56 -0000 1.94 *************** *** 688,692 **** char *ipstr=inet_ntoa(addr); ! if (disable_sockcheck) return; sci = dict_find(checked_ip_dict, ipstr, NULL); if (sci) { --- 688,693 ---- char *ipstr=inet_ntoa(addr); ! if (disable_sockcheck) ! return; sci = dict_find(checked_ip_dict, ipstr, NULL); if (sci) { *************** *** 1060,1063 **** --- 1061,1065 ---- if (disable_sockcheck) { reply("Proxy scanning is $bdisabled$b."); + return 0; } if (argc > 1) { *************** *** 1104,1108 **** sockcheck_read_tests(); timeq_del(0, sockcheck_clean_cache, 0, TIMEQ_IGNORE_WHEN|TIMEQ_IGNORE_DATA); ! if (disable_sockcheck) return; client_list = calloc(sockcheck_conf.max_clients, sizeof(client_list[0])); timeq_add(now+sockcheck_conf.max_cache_age, sockcheck_clean_cache, 0); --- 1106,1111 ---- sockcheck_read_tests(); timeq_del(0, sockcheck_clean_cache, 0, TIMEQ_IGNORE_WHEN|TIMEQ_IGNORE_DATA); ! if (disable_sockcheck) ! return; client_list = calloc(sockcheck_conf.max_clients, sizeof(client_list[0])); timeq_add(now+sockcheck_conf.max_cache_age, sockcheck_clean_cache, 0); |
From: Entrope <en...@us...> - 2003-12-09 02:47:01
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv28936/src Modified Files: modcmd.c proto-common.c proto.h Log Message: fix "service trigger" behavior when changing triggers tweak formatting of other code Index: modcmd.c =================================================================== RCS file: /cvsroot/srvx/services/src/modcmd.c,v retrieving revision 1.73 retrieving revision 1.74 diff -C2 -r1.73 -r1.74 *** modcmd.c 15 Nov 2003 04:09:18 -0000 1.73 --- modcmd.c 9 Dec 2003 02:46:56 -0000 1.74 *************** *** 95,99 **** --- 95,101 ---- #define MCMSG_NEW_SERVICE "Added new service bot $b%s$b." #define MCMSG_SERVICE_RENAMED "Service renamed to $b%s$b." + #define MCMSG_NO_TRIGGER "$b%s$b does not have an in-channel trigger." #define MCMSG_REMOVED_TRIGGER "Removed trigger from $b%s$b." + #define MCMSG_DUPLICATE_TRIGGER "$b%s$b already uses trigger $b%c$b." #define MCMSG_CURRENT_TRIGGER "Trigger for $b%s$b is $b%c$b." #define MCMSG_NEW_TRIGGER "Changed trigger for $b%s$b to $b%c$b." *************** *** 169,173 **** svccmd = data; if (svccmd->alias.used) { ! for (nn=0; nn<svccmd->alias.used; ++nn) free(svccmd->alias.list[nn]); free(svccmd->alias.list); } --- 171,176 ---- svccmd = data; if (svccmd->alias.used) { ! for (nn=0; nn<svccmd->alias.used; ++nn) ! free(svccmd->alias.list[nn]); free(svccmd->alias.list); } *************** *** 420,424 **** svccmd_copy_rules(newcmd->defaults, svccmd); } else { ! log_module(MAIN_LOG, LOG_ERROR, "Unable to resolve template name %s for command %s in module %s.", value, newcmd->name, newcmd->parent->name); } add_pending_template(newcmd->defaults, value); --- 423,427 ---- svccmd_copy_rules(newcmd->defaults, svccmd); } else { ! log_module(MAIN_LOG, LOG_ERROR, "Unable to resolve template name %s for %s.%s.", value, newcmd->parent->name, newcmd->name); } add_pending_template(newcmd->defaults, value); *************** *** 859,863 **** dict_insert(services, service->bot->nick, service); reg_privmsg_func(bot, modcmd_privmsg); ! if (trigger) reg_chanmsg_func(trigger, bot, modcmd_chanmsg); return service; } --- 862,867 ---- dict_insert(services, service->bot->nick, service); reg_privmsg_func(bot, modcmd_privmsg); ! if (trigger) ! reg_chanmsg_func(trigger, bot, modcmd_chanmsg); return service; } *************** *** 1205,1213 **** static MODCMD_FUNC(cmd_command) { ! struct svccmd *svccmd, *other; const char *cmd_name; unsigned int flags, shown_flags, nn, pos; char buf[MAXLEN]; ! assert(argc >= 2); cmd_name = unsplit_string(argv+1, argc-1, NULL); --- 1209,1217 ---- static MODCMD_FUNC(cmd_command) { ! struct svccmd *svccmd; const char *cmd_name; unsigned int flags, shown_flags, nn, pos; char buf[MAXLEN]; ! assert(argc >= 2); cmd_name = unsplit_string(argv+1, argc-1, NULL); *************** *** 1216,1227 **** return 0; } ! if (svccmd->parent ! && (other = dict_find(svccmd->parent->commands, svccmd->command->name, NULL)) ! && !other->alias.used ! && (other->command == svccmd->command)) { ! pos = snprintf(buf, sizeof(buf), "%s", other->name); ! } else { ! pos = snprintf(buf, sizeof(buf), "*%s.%s", svccmd->command->parent->name, svccmd->command->name); ! } if (svccmd->alias.used) { buf[pos++] = ' '; --- 1220,1224 ---- return 0; } ! pos = snprintf(buf, sizeof(buf), "%s.%s", svccmd->command->parent->name, svccmd->command->name); if (svccmd->alias.used) { buf[pos++] = ' '; *************** *** 1668,1671 **** --- 1665,1669 ---- static MODCMD_FUNC(cmd_service_trigger) { + struct userNode *bogon; struct service *service; *************** *** 1675,1689 **** } if (argc < 3) { - reply(MCMSG_CURRENT_TRIGGER, service->bot->nick, service->trigger); - } else { if (service->trigger) ! reg_chanmsg_func(service->trigger, NULL, NULL); ! if (!irccasecmp(argv[2], "none") || !irccasecmp(argv[2], "remove")) { ! reply(MCMSG_REMOVED_TRIGGER, service->bot->nick); ! } else { ! service->trigger = argv[2][0]; ! reg_chanmsg_func(service->trigger, service->bot, modcmd_chanmsg); ! reply(MCMSG_NEW_TRIGGER, service->bot->nick, service->trigger); ! } } return 1; --- 1673,1694 ---- } if (argc < 3) { if (service->trigger) ! reply(MCMSG_CURRENT_TRIGGER, service->bot->nick, service->trigger); ! else ! reply(MCMSG_NO_TRIGGER, service->bot->nick); ! return 1; ! } ! if (service->trigger) ! reg_chanmsg_func(service->trigger, NULL, NULL); ! if (!irccasecmp(argv[2], "none") || !irccasecmp(argv[2], "remove")) { ! service->trigger = 0; ! reply(MCMSG_REMOVED_TRIGGER, service->bot->nick); ! } else if ((bogon = get_chanmsg_bot(argv[2][0]))) { ! reply(MCMSG_DUPLICATE_TRIGGER, bogon->nick, argv[2][0]); ! return 1; ! } else { ! service->trigger = argv[2][0]; ! reg_chanmsg_func(service->trigger, service->bot, modcmd_chanmsg); ! reply(MCMSG_NEW_TRIGGER, service->bot->nick, service->trigger); } return 1; *************** *** 1695,1703 **** name = argv[1]; ! if (argc > 2) { reason = unsplit_string(argv+2, argc-2, NULL); ! } else { reason = "Removing bot"; - } if (!(service = service_find(name))) { reply(MCMSG_UNKNOWN_SERVICE, name); --- 1700,1707 ---- name = argv[1]; ! if (argc > 2) reason = unsplit_string(argv+2, argc-2, NULL); ! else reason = "Removing bot"; if (!(service = service_find(name))) { reply(MCMSG_UNKNOWN_SERVICE, name); *************** *** 1722,1726 **** dict_delete(services); dict_delete(modules); ! if (suf_list) free(suf_list); } --- 1726,1731 ---- dict_delete(services); dict_delete(modules); ! if (suf_list) ! free(suf_list); } *************** *** 1734,1744 **** sprintf(buf, "%s.%s", cmd->command->parent->name, cmd->command->name); saxdb_write_string(ctx, "command", buf); ! if (cmd->alias.used) saxdb_write_string_list(ctx, "aliased", &cmd->alias); ! if (cmd->min_opserv_level != template->min_opserv_level) { saxdb_write_int(ctx, "oper_access", cmd->min_opserv_level); ! } ! if (cmd->min_channel_access != template->min_channel_access) { saxdb_write_string(ctx, "channel_access", user_level_from_level(cmd->min_channel_access)); - } if (cmd->flags != template->flags) { if (cmd->flags) { --- 1739,1748 ---- sprintf(buf, "%s.%s", cmd->command->parent->name, cmd->command->name); saxdb_write_string(ctx, "command", buf); ! if (cmd->alias.used) ! saxdb_write_string_list(ctx, "aliased", &cmd->alias); ! if (cmd->min_opserv_level != template->min_opserv_level) saxdb_write_int(ctx, "oper_access", cmd->min_opserv_level); ! if (cmd->min_channel_access != template->min_channel_access) saxdb_write_string(ctx, "channel_access", user_level_from_level(cmd->min_channel_access)); if (cmd->flags != template->flags) { if (cmd->flags) { *************** *** 1763,1775 **** if (cmd->req_account_flags) { buf[pos++] = '+'; ! for (nn=0; nn<32; nn++) { ! if (cmd->req_account_flags & (1 << nn)) buf[pos++] = handle_flags[nn]; ! } } if (cmd->deny_account_flags) { buf[pos++] = '-'; ! for (nn=0; nn<32; nn++) { ! if (cmd->deny_account_flags & (1 << nn)) buf[pos++] = handle_flags[nn]; ! } } buf[pos] = 0; --- 1767,1779 ---- if (cmd->req_account_flags) { buf[pos++] = '+'; ! for (nn=0; nn<32; nn++) ! if (cmd->req_account_flags & (1 << nn)) ! buf[pos++] = handle_flags[nn]; } if (cmd->deny_account_flags) { buf[pos++] = '-'; ! for (nn=0; nn<32; nn++) ! if (cmd->deny_account_flags & (1 << nn)) ! buf[pos++] = handle_flags[nn]; } buf[pos] = 0; *************** *** 1947,1953 **** svccmd->alias.used = svccmd->alias.size = slist->used; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<slist->used; ++nn) { svccmd->alias.list[nn] = strdup(slist->list[nn]); - } } modcmd_set_effective_flags(svccmd); --- 1951,1956 ---- svccmd->alias.used = svccmd->alias.size = slist->used; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<slist->used; ++nn) svccmd->alias.list[nn] = strdup(slist->list[nn]); } modcmd_set_effective_flags(svccmd); *************** *** 1965,1969 **** while (1) { arg = va_arg(args, char*); ! if (!arg) break; argv[argc++] = arg; } --- 1968,1973 ---- while (1) { arg = va_arg(args, char*); ! if (!arg) ! break; argv[argc++] = arg; } *************** *** 1979,1983 **** svccmd->alias.used = svccmd->alias.size = argc; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<argc; nn++) svccmd->alias.list[nn] = strdup(argv[nn]); } svccmd_insert(service, strdup(alias), svccmd, template->command); --- 1983,1988 ---- svccmd->alias.used = svccmd->alias.size = argc; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<argc; nn++) ! svccmd->alias.list[nn] = strdup(argv[nn]); } svccmd_insert(service, strdup(alias), svccmd, template->command); Index: proto-common.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto-common.c,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -r1.34 -r1.35 *** proto-common.c 18 Aug 2003 19:36:47 -0000 1.34 --- proto-common.c 9 Dec 2003 02:46:57 -0000 1.35 *************** *** 488,491 **** --- 488,497 ---- } + struct userNode * + get_chanmsg_bot(unsigned char prefix) + { + return chanmsg_funcs[prefix].service; + } + static mode_change_func_t *mcf_list; static unsigned int mcf_size = 0, mcf_used = 0; Index: proto.h =================================================================== RCS file: /cvsroot/srvx/services/src/proto.h,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -r1.75 -r1.76 *** proto.h 12 Jul 2003 02:59:50 -0000 1.75 --- proto.h 9 Dec 2003 02:46:57 -0000 1.76 *************** *** 96,99 **** --- 96,100 ---- typedef void (*chanmsg_func_t) (struct userNode *user, struct chanNode *chan, char *text, struct userNode *bot); void reg_chanmsg_func(unsigned char prefix, struct userNode *service, chanmsg_func_t handler); + struct userNode *get_chanmsg_bot(unsigned char prefix); typedef void (*privmsg_func_t) (struct userNode *user, struct userNode *target, char *text, int server_qualified); |
From: Entrope <en...@us...> - 2003-12-09 02:26:12
|
Update of /cvsroot/srvx/services/patches In directory sc8-pr-cvs1:/tmp/cvs-serv25240/patches Added Files: ns_reclaim-flag102403.patch ns_tried2reg102403.patch Log Message: two new patches, courtesy of ProGamePlayer (PGPN)'s adam --- NEW FILE --- diff -urN services-dist/src/nickserv.c services/src/nickserv.c --- services-dist/src/nickserv.c Fri Oct 24 20:05:25 2003 +++ services/src/nickserv.c Fri Oct 24 21:08:01 2003 @@ -1977,7 +1977,7 @@ unsigned int i; char *set_display[] = { "INFO", "WIDTH", "TABLEWIDTH", "COLOR", "PRIVMSG", "STYLE", - "EMAIL", "ANNOUNCEMENTS", "MAXLOGINS" + "EMAIL", "ANNOUNCEMENTS", "MAXLOGINS", "RECLAIM" }; nickserv_notice(user, NSMSG_SETTING_LIST); @@ -2094,6 +2094,27 @@ return 1; } +static OPTION_FUNC(opt_reclaim) +{ + /* if nickserv's nick ownership functions are disabled, we don't want this. I wanted to send an error + * message to the user, but there appears to be no quick & easy method of doing so, so we'll hide instead -akl */ + if (nickserv_conf.disable_nicks) return 1; + + if (argc > 1) { + if (enabled_string(argv[1])) { + HANDLE_SET_FLAG(hi, NICKRECLAIM); + } else if (disabled_string(argv[1])) { + HANDLE_CLEAR_FLAG(hi, NICKRECLAIM); + } else { + nickserv_notice(user, MSG_INVALID_BINARY, argv[1]); + return 0; + } + } + + nickserv_notice (user, NSMSG_STR_SETTING, "RECLAIM:", HANDLE_FLAGGED(hi, NICKRECLAIM) ? "On - Your nicks are protected." : "Off."); + return 1; +} + static OPTION_FUNC(opt_privmsg) { if (argc > 1) { @@ -3305,6 +3326,9 @@ assert(user); assert(ni); + + if (!HANDLE_FLAGGED(ni->owner, NICKRECLAIM)) return; + switch (action) { case RECLAIM_NONE: /* do nothing */ @@ -3341,6 +3365,7 @@ irc_regnick(user); return 0; } + if (ni && !HANDLE_FLAGGED(ni->owner, NICKRECLAIM)) return 0; if (nickserv_conf.warn_nick_owned) { send_message(user, nickserv, NSMSG_RECLAIM_WARN, ni->nick, ni->owner->handle); } @@ -3534,6 +3559,7 @@ dict_insert(nickserv_opt_dict, "EPITHET", opt_epithet); dict_insert(nickserv_opt_dict, "ANNOUNCEMENTS", opt_announcements); dict_insert(nickserv_opt_dict, "MAXLOGINS", opt_maxlogins); + dict_insert(nickserv_opt_dict, "RECLAIM", opt_reclaim); nickserv_handle_dict = dict_new(); dict_set_free_keys(nickserv_handle_dict, free); diff -urN services-dist/src/nickserv.h services/src/nickserv.h --- services-dist/src/nickserv.h Fri Oct 24 20:05:25 2003 +++ services/src/nickserv.h Fri Oct 24 20:29:40 2003 @@ -37,8 +37,9 @@ #define HI_FLAG_FROZEN 0x00000040 #define HI_FLAG_NODELETE 0x00000080 #define HI_FLAG_NETWORK_HELPER 0x00000100 +#define HI_FLAG_NICKRECLAIM 0x00000200 /* Flag characters for the above. First char is LSB, etc. */ -#define HANDLE_FLAGS "SphgscfnH" +#define HANDLE_FLAGS "SphgscfnHR" /* HI_STYLE_* go into handle_info.userlist_style */ #define HI_STYLE_DEF 'd' --- NEW FILE --- diff -urN services-dist/src/hash.h services/src/hash.h --- services-dist/src/hash.h Fri Oct 24 20:05:25 2003 +++ services/src/hash.h Fri Oct 24 21:35:44 2003 @@ -56,6 +56,7 @@ #define FLAGS_STAMPED 0x1000 /* for users who have been stamped */ #define FLAGS_HIDDEN_HOST 0x2000 /* user's host is masked by their account */ #define FLAGS_REGNICK 0x4000 /* user owns their current nick */ +#define FLAGS_TRIED2REG 0x8000 /* user has used /msg NickServ@.. register already once this session */ #define IsOper(x) ((x)->modes & FLAGS_OPER) #define IsService(x) ((x)->modes & FLAGS_SERVICE) @@ -71,6 +72,7 @@ #define IsStamped(x) ((x)->modes & FLAGS_STAMPED) #define IsHiddenHost(x) ((x)->modes & FLAGS_HIDDEN_HOST) #define IsReggedNick(x) ((x)->modes & FLAGS_REGNICK) +#define HasTried2Reg(x) ((x)->modes & FLAGS_TRIED2REG) #define IsLocal(x) ((x)->uplink == self) #define NICKLEN 30 diff -urN services-dist/src/nickserv.c services/src/nickserv.c --- services-dist/src/nickserv.c Fri Oct 24 20:05:25 2003 +++ services/src/nickserv.c Fri Oct 24 21:36:24 2003 @@ -141,6 +141,7 @@ #define NSMSG_BAD_MAX_LOGINS "MaxLogins must be at most %d." #define NSMSG_MAX_LOGINS "Your account already has its limit of %d user(s) logged in." #define NSMSG_SETTEE_LOGGED_IN "%s is already logged in, so you cannot do that." +#define NSMSG_TRIED2REG "You have already attempted to use $bREGISTER$b once this session, you will have to reconnect to use it again." #define NSMSG_STAMPED_REGISTER "You have already authenticated to an account once this session; you may not register a new account." #define NSMSG_STAMPED_AUTH "You have already authenticated to an account once this session; you may not authenticate to another." @@ -1063,6 +1064,14 @@ return 0; } + if (HasTried2Reg(user)) { + /* On networks with email enabled, it is possible to use this cmd repeatedly, making + * potential damage to services very, very easy. This only allows a user to try once + * per session -akl */ + nickserv_notice(user, NSMSG_TRIED2REG); + return 0; + } + NICKSERV_MIN_PARMS((unsigned)3 + nickserv_conf.email_required); if (!is_valid_handle(argv[1])) { @@ -1136,6 +1145,8 @@ /* If they need to do email verification, tell them. */ if (no_auth) nickserv_make_cookie(user, hi, ACTIVATION, hi->passwd); + + user->modes |= FLAGS_TRIED2REG; return 1; } diff -urN services-dist/src/opserv.c services/src/opserv.c --- services-dist/src/opserv.c Fri Oct 24 20:05:25 2003 +++ services/src/opserv.c Fri Oct 24 21:33:03 2003 @@ -1195,6 +1195,7 @@ if (IsDeaf(target)) buffer[bpos++] = 'd'; if (IsHiddenHost(target)) buffer[bpos++] = 'x'; if (IsGagged(target)) buffer_cat(" (gagged)"); + if (HasTried2Reg(target)) buffer_cat(" (registered an account)"); buffer[bpos] = 0; if (bpos > 11) opserv_notice(user, buffer); } |
From: Entrope <en...@us...> - 2003-12-09 02:07:41
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv22415/src Modified Files: chanserv.c chanserv.h nickserv.c Log Message: allow more than one "support" channel for ChanServ Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.395 retrieving revision 1.396 diff -C2 -r1.395 -r1.396 *** chanserv.c 1 Dec 2003 22:15:21 -0000 1.395 --- chanserv.c 9 Dec 2003 02:07:37 -0000 1.396 *************** *** 428,432 **** static struct { ! struct chanNode *support_channel; unsigned long db_backup_frequency; --- 428,432 ---- static struct { ! struct channelList support_channels; unsigned long db_backup_frequency; *************** *** 4616,4623 **** } ! struct chanNode * ! chanserv_support_channel(void) { ! return chanserv_conf.support_channel; } --- 4616,4623 ---- } ! struct channelList * ! chanserv_support_channels(void) { ! return &chanserv_conf.support_channels; } *************** *** 6069,6075 **** handle = user->handle_info; ! if((channel == chanserv_conf.support_channel) && IsHelper(user)) { ! HANDLE_SET_FLAG(user->handle_info, HELPING); } --- 6069,6083 ---- handle = user->handle_info; ! if(IsHelper(user) && !IsHelping(user)) { ! unsigned int ii; ! for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) ! { ! if(channel == chanserv_conf.support_channels.list[ii]) ! { ! HANDLE_SET_FLAG(user->handle_info, HELPING); ! break; ! } ! } } *************** *** 6207,6214 **** } ! if(chanserv_conf.support_channel && IsSupportHelper(user) ! && GetUserMode(chanserv_conf.support_channel, user)) { ! HANDLE_SET_FLAG(user->handle_info, HELPING); } } --- 6215,6228 ---- } ! if(IsSupportHelper(user)) { ! for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) ! { ! if(GetUserMode(chanserv_conf.support_channels.list[ii], user)) ! { ! HANDLE_SET_FLAG(user->handle_info, HELPING); ! break; ! } ! } } } *************** *** 6241,6247 **** } ! if((channel == chanserv_conf.support_channel) && IsSupportHelper(user)) { ! HANDLE_CLEAR_FLAG(user->handle_info, HELPING); } } --- 6255,6266 ---- } ! if(IsSupportHelper(user)) { ! unsigned int ii; ! for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) ! if(channel == chanserv_conf.support_channels.list[ii]) ! break; ! if(ii == chanserv_conf.support_channels.used) ! HANDLE_CLEAR_FLAG(user->handle_info, HELPING); } } *************** *** 6442,6445 **** --- 6461,6466 ---- const char *str; struct string_list *strlist; + struct chanNode *chan; + unsigned int ii; if(!(conf_node = conf_get_data(CHANSERV_CONF_NAME, RECDB_OBJECT))) *************** *** 6448,6463 **** return; } ! str = database_get_data(conf_node, KEY_SUPPORT_CHANNEL, RECDB_QSTRING); ! if(str) ! { ! const char *str2 = database_get_data(conf_node, KEY_SUPPORT_CHANNEL_MODES, RECDB_QSTRING); ! if(!str2) str2 = "+nt"; ! chanserv_conf.support_channel = AddChannel(str, now, str2, NULL); ! AddChannelUser(chanserv, chanserv_conf.support_channel); ! AddChannelOp(1, &chanserv, chanserv_conf.support_channel, chanserv, 0); ! } ! else ! { ! chanserv_conf.support_channel = NULL; } str = database_get_data(conf_node, KEY_DB_BACKUP_FREQ, RECDB_QSTRING); --- 6469,6496 ---- return; } ! for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) ! UnlockChannel(chanserv_conf.support_channels.list[ii]); ! chanserv_conf.support_channels.used = 0; ! if((strlist = database_get_data(conf_node, KEY_SUPPORT_CHANNEL, RECDB_STRING_LIST))) ! { ! for(ii = 0; ii < strlist->used; ++ii) ! { ! const char *str2 = database_get_data(conf_node, KEY_SUPPORT_CHANNEL_MODES, RECDB_QSTRING); ! if(!str2) ! str2 = "+nt"; ! chan = AddChannel(strlist->list[ii], now, str2, NULL); ! LockChannel(chan); ! channelList_append(&chanserv_conf.support_channels, chan); ! } ! } ! else if((str = database_get_data(conf_node, KEY_SUPPORT_CHANNEL, RECDB_QSTRING))) ! { ! const char *str2; ! str2 = database_get_data(conf_node, KEY_SUPPORT_CHANNEL_MODES, RECDB_QSTRING); ! if(!str2) ! str2 = "+nt"; ! chan = AddChannel(str, now, str2, NULL); ! LockChannel(chan); ! channelList_append(&chanserv_conf.support_channels, chan); } str = database_get_data(conf_node, KEY_DB_BACKUP_FREQ, RECDB_QSTRING); Index: chanserv.h =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.h,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -r1.50 -r1.51 *** chanserv.h 8 Oct 2003 03:04:46 -0000 1.50 --- chanserv.h 9 Dec 2003 02:07:37 -0000 1.51 *************** *** 181,185 **** void init_chanserv(const char *nick); void del_channel_user(struct userData *user, int do_gc); ! struct chanNode *chanserv_support_channel(void); enum userLevel user_level_from_name(const char *name); const char *user_level_from_level(enum userLevel level); --- 181,185 ---- void init_chanserv(const char *nick); void del_channel_user(struct userData *user, int do_gc); ! struct channelList *chanserv_support_channels(void); enum userLevel user_level_from_name(const char *name); const char *user_level_from_level(enum userLevel level); Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.267 retrieving revision 1.268 diff -C2 -r1.267 -r1.268 *** nickserv.c 4 Dec 2003 22:33:40 -0000 1.267 --- nickserv.c 9 Dec 2003 02:07:37 -0000 1.268 *************** *** 1954,1963 **** * currently in #support. */ if (HANDLE_FLAGGED(hi, HELPING) && (after == HI_FLAG_SUPPORT_HELPER)) { ! struct chanNode *schannel; ! schannel = chanserv_support_channel(); ! for (uNode = hi->users; uNode; uNode = uNode->next_authed) ! if (GetUserMode(schannel, uNode)) break; ! if (!uNode) HANDLE_CLEAR_FLAG(hi, HELPING); } --- 1954,1969 ---- * currently in #support. */ if (HANDLE_FLAGGED(hi, HELPING) && (after == HI_FLAG_SUPPORT_HELPER)) { ! struct channelList *schannels; ! unsigned int ii; ! schannels = chanserv_support_channels(); ! for (uNode = hi->users; uNode; uNode = uNode->next_authed) { ! for (ii = 0; ii < schannels->used; ++ii) ! if (GetUserMode(schannels->list[ii], uNode)) ! break; ! if (ii < schannels->used) break; ! } ! if (!uNode) ! HANDLE_CLEAR_FLAG(hi, HELPING); } |
From: Entrope <en...@us...> - 2003-12-09 02:07:40
|
Update of /cvsroot/srvx/services In directory sc8-pr-cvs1:/tmp/cvs-serv22415 Modified Files: srvx.conf.example Log Message: allow more than one "support" channel for ChanServ Index: srvx.conf.example =================================================================== RCS file: /cvsroot/srvx/services/srvx.conf.example,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -r1.42 -r1.43 *** srvx.conf.example 5 Oct 2003 03:13:30 -0000 1.42 --- srvx.conf.example 9 Dec 2003 02:07:36 -0000 1.43 *************** *** 202,207 **** "Absolutely!", "Could be, could be."); ! // channel that support helpers must be in to be helping ! "support_channel" "#support"; // maximum number of channels owned by one account before FORCE is required "max_owned" "5"; --- 202,208 ---- "Absolutely!", "Could be, could be."); ! // channel(s) that support helpers must be in to be helping ! // if this is a list, any one by itself will do ! "support_channel" ("#support", "#registration"); // maximum number of channels owned by one account before FORCE is required "max_owned" "5"; |
From: Entrope <en...@us...> - 2003-12-04 22:33:43
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv30450/src Modified Files: nickserv.c Log Message: check account name and nick length in more situations Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.266 retrieving revision 1.267 diff -C2 -r1.266 -r1.267 *** nickserv.c 7 Nov 2003 02:44:54 -0000 1.266 --- nickserv.c 4 Dec 2003 22:33:40 -0000 1.267 *************** *** 98,102 **** #define NSMSG_UNKNOWN "<unknown>" #define NSMSG_HANDLE_EXISTS "Account $b%s$b is already registered." - #define NSMSG_HANDLE_TOO_LONG "Account name too long." #define NSMSG_PASSWORD_SHORT "Your password must be at least %lu characters long." #define NSMSG_PASSWORD_ACCOUNT "Your password may not be the same as your account name." --- 98,101 ---- *************** *** 179,183 **** #define NSMSG_MUST_AUTH "You must be authenticated first." #define NSMSG_TOO_MANY_NICKS "You have already registered the maximum permitted number of nicks." - #define NSMSG_NICK_TOO_LONG "Nick too long." #define NSMSG_NICK_EXISTS "Nick $b%s$b already registered." #define NSMSG_NICK_IN_USE "Nick $b%s$b is already in use." --- 178,181 ---- *************** *** 216,221 **** #define NSMSG_DB_MERGED "$N merged DB from %s (in "FMT_TIME_T".%03lu seconds)." #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, or contains invalid characters." ! #define NSMSG_BAD_NICK "Nickname $b%s$b not registered because it is in use by a network service, or contains invalid characters." #define NSMSG_BAD_EMAIL_ADDR "Please use a well-formed email address." #define NSMSG_FAIL_RENAME "Account $b%s$b not renamed to $b%s$b because it is in use by a network services, or contains invalid characters." --- 214,219 ---- #define NSMSG_DB_MERGED "$N merged DB from %s (in "FMT_TIME_T".%03lu seconds)." #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." ! #define NSMSG_BAD_NICK "Nickname $b%s$b not registered because it is in use by a network service, is too long, or contains invalid characters." #define NSMSG_BAD_EMAIL_ADDR "Please use a well-formed email address." #define NSMSG_FAIL_RENAME "Account $b%s$b not renamed to $b%s$b because it is in use by a network services, or contains invalid characters." *************** *** 575,578 **** --- 573,579 ---- if (user && IsLocal(user)) return 0; + /* check against maximum length */ + if (strlen(handle) > NICKSERV_HANDLE_LEN) + return 0; /* for consistency, only allow account names that could be nicks */ if (!is_valid_nick(handle)) *************** *** 601,604 **** --- 602,608 ---- if (!is_valid_handle(nick)) return 0; + /* check length */ + if (strlen(nick) > NICKLEN) + return 0; /* test either regex or as valid handle */ if (nickserv_conf.valid_nick_regex_set) { *************** *** 888,896 **** if ((hi = dict_find(nickserv_handle_dict, handle, NULL))) { nickserv_notice(user, NSMSG_HANDLE_EXISTS, handle); - return 0; - } - - if (strlen(handle) > NICKSERV_HANDLE_LEN) { - nickserv_notice(user, NSMSG_HANDLE_TOO_LONG); return 0; } --- 892,895 ---- |