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 ----
|