[srvx-commits] CVS: services/src opserv.c,1.235.2.1,1.235.2.2
Brought to you by:
entrope
|
From: Zoot <zo...@us...> - 2002-07-12 19:21:16
|
Update of /cvsroot/srvx/services/src
In directory usw-pr-cvs1:/tmp/cvs-serv18578/src
Modified Files:
Tag: rel-1_1-branch
opserv.c
Log Message:
Implement channel flooding countermeasures.
Index: opserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/opserv.c,v
retrieving revision 1.235.2.1
retrieving revision 1.235.2.2
diff -C2 -r1.235.2.1 -r1.235.2.2
*** opserv.c 12 Jul 2002 17:06:38 -0000 1.235.2.1
--- opserv.c 12 Jul 2002 19:21:12 -0000 1.235.2.2
***************
*** 72,75 ****
--- 72,76 ----
#define KEY_UNTRUSTED_MAX "untrusted_max"
#define KEY_PURGE_LOCK_DELAY "purge_lock_delay"
+ #define KEY_JOIN_FLOOD_MODERATE "join_flood_moderate"
#define KEY_NICK "nick"
#define KEY_TRIGGER "trigger"
***************
*** 209,212 ****
--- 210,214 ----
#define OSMSG_JOIN_FLOOD "Warning: Possible join flood in %s (currently %d users)."
#define OSMSG_NEW_USER_FLOOD "Warning: Possible new-user flood."
+ #define OSMSG_FLOOD_MODERATE "This channel has been temporarily moderated as a result of a join flood attack in this channel; network staff have been notified."
#define OSMSG_CLONE_WARNING "WARNING: You have connected the maximum permitted number of clients from one IP address (clones). If you connect any more, your host will be temporarily banned from the network."
#define OSMSG_TOO_MANY_CLONES "Excessive connections from a single host."
***************
*** 349,352 ****
--- 351,355 ----
unsigned long block_gline_duration;
unsigned long purge_lock_delay;
+ unsigned long join_flood_moderate;
unsigned char trigger_char;
} opserv_conf;
***************
*** 2310,2313 ****
--- 2313,2325 ----
channel->join_flooded = 1;
opserv_alert(OSMSG_JOIN_FLOOD, channel->name, channel->members.used);
+ if(opserv_conf.join_flood_moderate)
+ {
+ AddChannelUser(opserv, channel);
+ AddChannelOp(1, &opserv, channel, opserv, 1);
+ channel->modes |= MODE_MODERATED;
+ irc_mode(opserv, channel, "+m");
+
+ send_channel_notice(channel, opserv, OSMSG_FLOOD_MODERATE);
+ }
}
log(OS_LOG, LOG_INFO, "Join to %s during flood: "IDENT_FORMAT"\n", channel->name, IDENT_DATA(user));
***************
*** 4491,4494 ****
--- 4503,4508 ----
str = database_get_data(conf_node, KEY_PURGE_LOCK_DELAY, RECDB_QSTRING);
opserv_conf.purge_lock_delay = str ? strtoul(str, NULL, 0) : 60;
+ str = database_get_data(conf_node, KEY_JOIN_FLOOD_MODERATE, RECDB_QSTRING);
+ opserv_conf.join_flood_moderate = str ? strtoul(str, NULL, 0) : 1;
str = database_get_data(conf_node, KEY_NICK, RECDB_QSTRING);
if (str) NickChange(opserv, str, 0);
|