diff options
author | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-07-21 20:28:48 +0000 |
---|---|---|
committer | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-07-21 20:28:48 +0000 |
commit | 2a2d42ec80e63ed382908402207651b4eb9951e3 (patch) | |
tree | 9ae952033dbf0b07d66a66ed8a88892139a16ceb | |
parent | 9aca21408d1f5ef2219788bbd1c2533cb624fa01 (diff) |
BUILD : 1.7.4 (270) BUGS : NOTES : Adding +j mlock support for bahamut just before my vacation
git-svn-id: svn://svn.anope.org/anope/trunk@270 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@174 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | include/extern.h | 4 | ||||
-rw-r--r-- | include/services.h | 10 | ||||
-rw-r--r-- | src/channels.c | 33 | ||||
-rw-r--r-- | src/chanserv.c | 29 | ||||
-rw-r--r-- | version.log | 6 |
6 files changed, 81 insertions, 2 deletions
@@ -1,6 +1,7 @@ Anope Version S V N ------------------- Provided by Anope Dev. <dev@anope.org> - 2004 +07/21 A Support for bahamut +j in mlock. [ #00] 07/17 A Switched to autoconf for configure script. [ #00] 07/05 A Warning when LocalAddress conflicts with RemoteServer. [#118] 06/18 A Added proper Bahamut1.8 support. [ #55] diff --git a/include/extern.h b/include/extern.h index fe02b446b..ddbadef45 100644 --- a/include/extern.h +++ b/include/extern.h @@ -143,6 +143,10 @@ E void stick_all(ChannelInfo * ci); E char *cs_get_flood(ChannelInfo * ci); E void cs_set_flood(ChannelInfo * ci, char *value); #endif +#ifdef HAS_JOINFLOOD +E char *cs_get_joinflood(ChannelInfo * ci); +E void cs_set_joinflood(ChannelInfo * ci, char *value); +#endif E char *cs_get_key(ChannelInfo * ci); E void cs_set_key(ChannelInfo * ci, char *value); E char *cs_get_limit(ChannelInfo * ci); diff --git a/include/services.h b/include/services.h index 42dc83dfa..7d6b5490d 100644 --- a/include/services.h +++ b/include/services.h @@ -192,7 +192,8 @@ typedef struct channel_ Channel; #if defined(IRC_BAHAMUT) && !defined(IRC_ULTIMATE3) && !defined(IRC_VIAGRA) && !defined(IRC_RAGE2) # define HAS_NICKIP # define HAS_EXCEPT -# define HAS_SVSHOLD +# define HAS_SVSHOLD +# define HAS_JOINFLOOD # define NICKSERV_MODE "+o" # define CHANSERV_MODE "+o" # define MEMOSERV_MODE "+o" @@ -730,6 +731,9 @@ struct chaninfo_ { #ifdef HAS_LMODE char *mlock_redirect; /* NULL if no +L */ #endif +#ifdef HAS_JOINFLOOD + char *mlock_joinflood; /* NULL if no +j */ +#endif char *entry_message; /* Notice sent on entering channel */ @@ -1254,6 +1258,9 @@ struct channel_ { #ifdef HAS_FMODE char *flood; /* +f; NULL if none */ #endif +#ifdef HAS_JOINFLOOD + char *joinflood; /* +j; NULL if none */ +#endif int32 bancount, bansize; char **bans; @@ -1299,6 +1306,7 @@ struct channel_ { #define CMODE_c 0x00000400 /* Colors can't be used */ #define CMODE_M 0x00000800 /* Non-regged nicks can't send messages */ #define CMODE_O 0x00008000 /* Only opers can join */ +#define CMODE_j 0x02000000 /* Join flood protection */ #endif /* This mode is for IRC_HYBRID servers only. */ diff --git a/src/channels.c b/src/channels.c index 9fff738b4..2e83ca083 100644 --- a/src/channels.c +++ b/src/channels.c @@ -33,6 +33,9 @@ static void del_exception(Channel * chan, char *mask); #ifdef HAS_FMODE static char *get_flood(Channel * chan); #endif +#ifdef HAS_JOINFLOOD +static char *get_joinflood(Channel * chan); +#endif static char *get_key(Channel * chan); static char *get_limit(Channel * chan); #ifdef HAS_LMODE @@ -42,6 +45,9 @@ static Channel *join_user_update(User * user, Channel * chan, char *name); #ifdef HAS_FMODE static void set_flood(Channel * chan, char *value); #endif +#ifdef HAS_JOINFLOOD +static void set_joinflood(Channel * chan, char *value); +#endif static void set_key(Channel * chan, char *value); static void set_limit(Channel * chan, char *value); #ifdef HAS_LMODE @@ -167,7 +173,11 @@ CBMode cbmodes[128] = { { 0 }, /* g */ { 0 }, /* h */ { CMODE_i, 0, NULL, NULL }, +#ifdef HAS_JOINFLOOD + { CMODE_j, CBM_MINUS_NO_ARG, set_joinflood, cs_set_joinflood }, +#else { 0 }, /* j */ +#endif { CMODE_k, 0, set_key, cs_set_key }, { CMODE_l, CBM_MINUS_NO_ARG, set_limit, cs_set_limit }, { CMODE_m, 0, NULL, NULL }, @@ -221,6 +231,9 @@ CBModeInfo cbmodeinfos[] = { { 'f', CMODE_f, 0, get_flood, cs_get_flood }, #endif { 'i', CMODE_i, 0, NULL, NULL }, +#ifdef HAS_JOINFLOOD + { 'j', CMODE_j, CBM_MINUS_NO_ARG, get_joinflood, cs_get_joinflood }, +#endif { 'k', CMODE_k, 0, get_key, cs_get_key }, { 'l', CMODE_l, CBM_MINUS_NO_ARG, get_limit, cs_get_limit }, { 'm', CMODE_m, 0, NULL, NULL }, @@ -1491,6 +1504,13 @@ static char *get_flood(Channel * chan) /*************************************************************************/ +static char *get_joinflood(Channel * chan) +{ + return chan->joinflood; +} + +/*************************************************************************/ + static char *get_key(Channel * chan) { return chan->key; @@ -1564,6 +1584,19 @@ static void set_flood(Channel * chan, char *value) /*************************************************************************/ +static void set_joinflood(Channel * chan, char *value) +{ + if (chan->joinflood) + free(chan->joinflood); + chan->joinflood = value ? sstrdup(value) : NULL; + + if (debug) + alog("debug: Joinflood setting of channel %s set to %s", chan->name, + chan->joinflood ? chan->joinflood : "no joinflood settings"); +} + +/*************************************************************************/ + static void set_key(Channel * chan, char *value) { if (chan->key) diff --git a/src/chanserv.c b/src/chanserv.c index 06236c547..dc6015676 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -2403,6 +2403,13 @@ char *cs_get_flood(ChannelInfo * ci) /*************************************************************************/ +char *cs_get_joinflood(ChannelInfo * ci) +{ + return ci->mlock_joinflood; +} + +/*************************************************************************/ + char *cs_get_key(ChannelInfo * ci) { return ci->mlock_key; @@ -2459,6 +2466,28 @@ void cs_set_flood(ChannelInfo * ci, char *value) /*************************************************************************/ +#ifdef HAS_JOINFLOOD +void cs_set_joinflood(ChannelInfo * ci, char *value) +{ + char *end; + + if (ci->mlock_joinflood) + free(ci->mlock_joinflood); + + if ((*value != ':') && (strtoul(value, &end, 10) > 0) && (*end == ':') + && (*(++end) != '\0') && (strtoul(end, &end, 10) > 0) + && (*end == '\0')) { + /* Above if looks ugly, but should work (tm) */ + ci->mlock_joinflood = sstrdup(value); + } else { + ci->mlock_on &= ~CMODE_j; + ci->mlock_joinflood = NULL; + } +} +#endif + +/*************************************************************************/ + void cs_set_key(ChannelInfo * ci, char *value) { if (ci->mlock_key) diff --git a/version.log b/version.log index 1f960335b..f43c78c33 100644 --- a/version.log +++ b/version.log @@ -8,10 +8,14 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="4" -VERSION_BUILD="269" +VERSION_BUILD="270" # $Log$ # +# BUILD : 1.7.4 (270) +# BUGS : +# NOTES : Adding +j mlock support for bahamut just before my vacation +# # BUILD : 1.7.4 (269) # BUGS : N/A # NOTES : dont use -funsigned-chars as the md5 encryption stuff (while it will still encrypt, probably in a way that is more normal md5) it wont be compatiable with the old md5 encryption, so for now, we will never use it, and itll be left to the OSs to just pick if chars are signed or unsigned.... |