| Commit message (Expand) | Author | Age | Files | Lines |
| * | For services who allow you to log in by account name but still allow you to•••use a different nick: when you're logged in you are now considered
registered as far as channel mode +M (only registered users may speak and
+R (only registered users may join) are concerned. Same for user mode +R
(only allow private messages from registered users).
Tech: whenever services set SVID and it's not * and does not start with a
number, then we consider this user to be 'logged in'.
Whenever a user is set +r (s)he is also considered 'logged in'.
This way it's compatible with both older and new services and doesn't
introduce security issues with older services using servicetimestamp
for nick tracking or other means.
This issue was reported by ShawnSmith (#4318).
| Bram Matthys | 2014-07-05 | 1 | -1/+1 |
| * | complete the previous patch (MLOCK).. mostly just bringing it up to date & co... | Bram Matthys | 2012-05-04 | 1 | -3/+2 |
| * | - Add support for server-enforced mode locks (MLOCK).••• This allows the IRCd to enforce MLOCKs that are set by services, which
eliminates clashes between users setting modes and services enforcing
it's mlock on channels. (#3055)
| William Pitcock | 2012-05-04 | 1 | -0/+23 |
| * | ..This is actually an update of earlier code from CVS, but now it works ok:..•••- Added support for "stacked" extbans. Put simply this allows extban combinations
such as ~q:~c:#test to only silence users on #test, for example. This feature
is enabled by default, but can be disabled during ./Config -advanced.
This feature was suggested by Shining Phoenix (#0003193), was then coded
by aquanight for U3.3, and later on backported and partially redone by Syzop.
Module coders:
In an extban ~x:~y:something where we call ~x the 1st, and ~y the 2nd extban:
Since stacked extbans only makes sense where the 1st one is an action
extended ban like ~q/~n/~j, most modules won't have to be changed, as
their extban never gets extended (just like ~c:~q: makes no sense).
However, you may still want to indicate in some cases that the extban your
module introduces also shouldn't be used as 2nd extban.
For example with a textban extban ~T it makes no sense to have ~n:~T.
The module can indicate this by setting EXTBOPT_NOSTACKCHILD in
the ExtbanInfo struct used by ExtbanAdd().
For completeness I note that action modifier extbans are indicated by
EXTBOPT_ACTMODIFIER. However, note that we currently assume all such
extbans use the extban_is_ok_nuh_extban and extban_conv_param_nuh_or_extban
functions. If you don't use these and use EXTBOPT_ACTMODIFIER, then things
will go wrong with regards to stack-counting.
Module coders should also note that stacked extbans are not available if
DISABLE_STACKED_EXTBANS is defined.
- Added extended ban ~R:<nick>, which only matches if <nick> is a registered
user (has identified to services). This is really only useful in ban
exemptions, like: +e ~R:Nick would allow Nick to go through all bans if he
has identified to NickServ. This is often safer than using +e n!u@h.
- Added Extended Invex. This is very much like extended bans, in fact it
supports some of the same flags. Syntax: +I ~character:mask
Currently supported are: ~c (channel), ~r (realname) and ~R (registered).
This can be useful when setting a channel invite only (+i) and then
setting invite exceptions such as +I ~c:#chan (or even ~c:+#chan), while
still being able to ban users.
Because action modifiers (~q/~n/~j) make no sense here, extended invex
stacking (+I ~a:~b:c) makes no sense either, and is not supported.
Suggested by DanPMK (#0002817), parts based on patch from ohnobinki.
Module coders: set EXTBOPT_INVEX in the ExtbanInfo struct used by
ExtbanAdd() to indicate that your extban may also be used in +I.
- Invex (+I) now always checks cloaked hosts as well. Just like with bans,
it checks them also when the user is not currently cloaked (eg: did -x, or
is currently using some VHOST).
- Fixed client desynch caused by (un)banning, reported by Sephiroth (#2837).
| Bram Matthys | 2010-08-14 | 1 | -79/+45 |
| * | - Fixed bug in CVS where the ban exempt (+e) handling was reversed: if a••• non-matching +e was present, one could walk through bans. Reported by
tabrisnet (#0003909). Bug was caused by chained/stacked extbans.
| Bram Matthys | 2010-05-24 | 1 | -2/+2 |
| * | - Added support for "chained" extbans. Put simply this allows extban combinat...••• such as ~q:~c:#test to only silence users on #test, for example. This feature
is enabled by default, but can be disabled during ./Config -advanced. Module
support for this feature must note the following:
- For is_ok function, the extban can either assign extban_is_ok_nuh_extban, which
will deal checking a chained extban (including checking for restricted extbans),
or it can call that function from its own is_ok routine. For the latter case,
remember to pass only the mask part of your ban format (ie, don't just pass para as
otherwise it'll just call your is_ok again).
- For conv_param function, the extban can either assign extban_conv_param_nuh_or_extban,
which will automatically call conv_param for a chained extban, or pretty up a n!u@h mask.
- For is_banned, the extban should call ban_check_mask with the mask part of the parameter.
This will automatically call is_banned for a stacked extban, or match against a n!u@h. n!u@h
is checked against the current user (ie, with the info in the globals ban_ip, etc), so things
can get weird if you call this outside a normal ban check.
Modules must keep in mind that chained extban support is not available (and neither are the three
functions above) if DISABLE_STACKED_EXTBANS is #defined (this is controled by Config). Modules will
not compile/load if they try to use them anyway.
This change should not break extban modules, and should need some more extensive testing.
- Misc fix for disabling extban chains, should've done stuff in our autoconf
stuff instead of hacking configure directly :P .
| Bram Matthys | 2009-11-29 | 1 | -1/+52 |
| * | - So called 'smart' banning is now disabled by default, this means you can••• now set a ban on *!*@*h.com and then later add one on *!*@*blah.com
without
any trouble. Previously the second one was rejected due to the former
already matching it. To change it back edit the include/config.h setting
SOCALLEDSMARTBANNING.
| Bram Matthys | 2008-02-11 | 1 | -0/+4 |
| * | - ChanMode +S/+c: reverse is now stripped/blocked as well, because it's••• similar to color, and is just as annoying (..if not worse).
| Bram Matthys | 2007-12-30 | 1 | -1/+1 |
| * | - Fixed bug in MODE #channel showing extended channel mode parameters when no...•••- Made 'MODE #channel b' and friends show bans to ircops even when not in channel.
| Bram Matthys | 2006-08-29 | 1 | -10/+14 |
| * | +extern MODVAR char modebuf[BUFSIZE], parabuf[BUFSIZE]; | Bram Matthys | 2006-05-21 | 1 | -1/+1 |
| * | - Added 'real' aliases, this are aliases that map to real commands, so you ca...••• map the command '/BLAH 5' to 'NICK idiot5'. More info in docs on alias block.
- Modulized: badwords system (src/badwords.c is now gone) and StripColors/StripControlCodes
to m_message, multiple netsynch routines to m_server, send_list to m_list, a certain mode
routine to m_svsmode, all /MSG IRC.. webtv stuff to src/modules/webtv.c which is compiled
with m_message.
This means another ~1500 lines of code are now in modules (and thus can be upgraded on
the fly), which brings the total of modulized lines at 32K.
| Bram Matthys | 2006-05-21 | 1 | -779/+0 |
| * | - Made the IRCd calculate the cloaked host only once upon connect, and store ...•••- When checking if a user is banned, we always check the cloakhost too. Previously we could
not do this if the user had a /VHOST (=a minority of the cases, but still...). In short,
this is some extra protection to combat ban evasion.
- Performance of is_banned() *slightly* improved (just 1-2 usec, but 7 usec if no bans).
- [Module coders] For extban routines, we now offer a routine extban_is_banned_helper(buf)
which can be used instead of the ban_realhost/etc static chars stuff, see
extban_modeq_is_banned for a (real-life) example of how this is used.
- [Services coders!] Added PROTOCTL CLK (requires NICKv2) which adds an extra field in the
NICK command (when a user connects) right before the infofield (gecos).
The added field contains the cloaked host, that is: the masked host if +x would have been
set. This field is ALWAYS sent, regardless of whether the user is actually +x or not.
Services can then store this field in memory, to know the host of the user if the user
is set +x (+x-t). This is a (better) alternative to PROTOCTL VHP, with no race conditions,
and avoids some other VHP problems.
VHP will stay supported though... so it's not mandatory to switch over.
| Bram Matthys | 2006-04-16 | 1 | -30/+39 |
| * | - Fixed bug in currently unused code, reported by DeadNotBuried (#0002835).•••- Modulized NAMES command (can now be upgraded on the fly, if ever needed).
- Added NAMESX support, seeing both mIRC (5.17) and XChat support this. What this does is
send all rights of all users on the channel in the NAMES reply (eg: @+Syzop if the user is +ov)
instead of only the highest one (@Syzop in previous example). We only do so if the client
explicitly requested this via a NAMESX in a PROTOCTL message (eg: 'PROTOCTL NAMESX').
Note that there is a glitch: since most clients only send the PROTOCTL NAMESX after they
see NAMESX listed in the 005 announce message this has the effect that if there are
set::auto-join channels present (where users are automatically joined to by the server) the
extended NAMES reply will not be sent for those channels, because from the IRC server' point
of view the join happened before the PROTOCTL and hence it does not know the client wanted
NAMESX at that point (the result is not catastrophic: the old-style NAMES is sent for those
channels). Anyway, for all non-autojoin channels this works great. So still worth adding IMO.
Originally suggested in #0000606.
Side note: this does not mean we dropped the idea of (also) having a challenge-response
system for good ;).
| Bram Matthys | 2006-02-26 | 1 | -129/+0 |
| * | - Made it so a set::maxbanlength and/or set::maxbans of 0 denies all bans pro...••• fixes the first-ban-can-be-as-long-as-you-want bug, both reported by Trocotronic (#2762).
| Bram Matthys | 2006-01-24 | 1 | -0/+6 |
| * | - Made set::maxbanlength also count the "to be set" ban in, otherwise you cou...••• limit by (max) NICKLEN+USERNAME+HOSTNAME+2, reported by Trocotronic (#0002762).
| Bram Matthys | 2006-01-23 | 1 | -1/+3 |
| * | - set::maxbans / set::maxbanlength were reported as duplicates when they were...••• by Jason and trystanscott (#0002753).
- Made it so bans on normal users work with +mu, reported by Nazzy (?).
| Bram Matthys | 2006-01-23 | 1 | -1/+1 |
| * | - Fixes for an amd64 crash problem, reported by Peter Laur (OpenBSD.se).•••- Redid some net synching code to make it more efficient (#2716).
- Fixed spamfilter crash problem: the action 'viruschan' is now no longer incompatible
with target 'user'. Reported by Monk (#0002570).
| Bram Matthys | 2006-01-06 | 1 | -86/+105 |
| * | - Made it so you no longer can change your nick to a banned one in a channel,...••• by vonitsanet (#0002388), partial patch provided by Nazzy.
This option can be turned off by setting set::check-target-nick-bans to 'no'.
| Bram Matthys | 2005-11-10 | 1 | -11/+22 |
| * | - Fixed bug where chanmode +f #t (per-user text kick[ban]) was also affecting...••• reported by seneces (#0002333).
- Fixed doc bug reported by Dukat (#0002374). Also fixed 2 error msgs related to
the nickchars system printing out incorrect set:: directives.
- spamfilter.conf and dccallow.conf are now also copied upon make install, reported by
TommyTheKid (#0002313).
| Bram Matthys | 2005-02-26 | 1 | -1/+5 |
| * | - Added channelmode +j (jointhrottle), syntax: /mode #chan +j X:Y, and then i...••• throttle the number of joins per-user to X in Y seconds. Idea from Angrywolf (who
wrote a module that did this before). This might need some more testing :).
It's enabled by default but can be #undef'ed in include/config.h (line 449).
| Bram Matthys | 2005-02-12 | 1 | -0/+3 |
| * | Made channel mode +c block RGB color codes. Fixed a bug with channel alias{}'... | codemastr | 2005-02-06 | 1 | -3/+9 |
| * | - Made m_template.c use CommandAdd() and CMD_FUNC()•••- Modulized a lot of commands and related subfunctions: NICK (750 lines), USER (200),
MODE (2300), WATCH (250), JOIN (600), PART (250), MOTD (100), OPERMOTD (100),
BOTMOTD (100), LUSERS (100). More will follow soon (probably including more subfunctions
related to existing commands).
| Bram Matthys | 2005-02-03 | 1 | -2605/+1 |
| * | Added invite exceptions (+I) | codemastr | 2005-01-29 | 1 | -97/+162 |
| * | Moved channel mode +G to extcmode to make room for invex | codemastr | 2005-01-23 | 1 | -7/+1 |
| * | Made it so +f notices are sent to %#chan, not @%#chan | codemastr | 2005-01-17 | 1 | -1/+1 |
| * | Rewrote some of the previous change to deal with some strange issues | codemastr | 2004-11-26 | 1 | -10/+16 |
| * | If a user is +b on a channel, and set::allow-userhost-change force-rejoin is ... | codemastr | 2004-11-25 | 1 | -0/+9 |
| * | Using /invite with no parameters now lists the channels you are invited to bu... | codemastr | 2004-11-25 | 1 | -1/+1 |
| * | Removed an excess space from the SAMODE notice when a mode without a paramete... | codemastr | 2004-11-09 | 1 | -4/+4 |
| * | Made ./Config better handle command line arguments, Removed NAZIISH_CHBAN_HAN... | codemastr | 2004-11-06 | 1 | -5/+0 |
| * | Corrected numerous -Wall warnings | codemastr | 2004-11-04 | 1 | -3/+3 |
| * | - Windows version can now hold ~4096 connections instead of ~1024•••- help.conf: clarified MKPASSWD documentation, reported by hypnetric (#0001926).
- Some modeskip handling for future versions
| Bram Matthys | 2004-10-13 | 1 | -7/+10 |
| * | - Module coders: Added HOOKTYPE_REMOTE_JOIN, HOOKTYPE_REMOTE_PART, HOOKTYPE_R...••• work just the same as the HOOKTYPE_LOCAL_* variants).
- Module coders: HOOKTYPE_REMOTE_CONNECT is now also called during net-merge. You can use
IsSynched(sptr->srvptr) to find out if it's called due to a net merge (0) or a connect (1).
- Added spamfiler 'user' (u) target. This regex is checked against nick!user@host:realname
when a user connects. This makes it easy to ban drones with simple patterns.
For example: '/spamfilter add u gzline 86400 Drone[0-9]+!.+@.+:Drone[0-9]'
would kill any drones that have both a nick and realname with 'Drone' followed by digits.
| Bram Matthys | 2004-10-06 | 1 | -0/+4 |
| * | - Fixed a bug regarding chanmode +mu where the <IRC> messages were not proper...••• to all servers. Reported by Aenox (#0002079).
| Bram Matthys | 2004-09-18 | 1 | -2/+1 |
| * | ... | codemastr | 2004-09-04 | 1 | -1/+0 |
| * | Fixed a few compile warnings, made +b apply to IPs correctly | codemastr | 2004-09-03 | 1 | -1/+2 |
| * | Made the new numerics use nicknames | codemastr | 2004-06-25 | 1 | -3/+9 |
| * | - Made IPv6 bans work the way they should again, reported by al5001 (#0001876). | Bram Matthys | 2004-06-25 | 1 | -1/+1 |
| * | Converted a bunch of notices to numerics | codemastr | 2004-06-23 | 1 | -104/+47 |
| * | Added ELIST support | codemastr | 2004-06-21 | 1 | -32/+31 |
| * | - Made extbans desynchs a bit more friendly: if a bantype is unknown for the ...••• it will just accept it if it's from a remote server, and also ops/etc will be allowed
to REMOVE any unknown extbans (but not add new unknown ones).
- Added extended ban type ~n (nickchange ban), if a user matches this (s)he can not
change nicks (eg: +b ~n:*!*@*.aol.com) unless (s)he has voice or higher.
This can be useful as an overall measure for some +m chans (+b ~n:!*@*) or against
specific 'good' people that are just nickflooding due to a wrongly configured script.
- Added set::restrict-extendedbans by which you can disallow normal users to use
any extendedbans ("*") or disallow only certain ones (eg: "qc").
- Made the negative TS message a bit more annoying if time is off more than 10 seconds.
| Bram Matthys | 2004-06-12 | 1 | -5/+30 |
| * | - Added set::spamfilter::virus-help-channel-deny. This allows you to block any••• normal joins to the virus-help-channel. This way you could prevent users into
accidental (or tricked) joining of the virus-help-channel and becomming infected.
This feature is disabled by default. Requested by bleepy (#0001811).
| Bram Matthys | 2004-05-18 | 1 | -1/+23 |
| * | - Changed the way MSG/NOTICE <prefix>#chan works:••• - It now goes to <prefix> and higher, so '/notice +#chan hi!' goes to +vhoaq
- You need at least voice in order to be able to msg/notice +#chan, %#chan or @#chan
- You need at least ops in order to be able to msg/notice &#chan or ~#chan
- Any multi-prefix targets will be converted automatically (eg: ~&@#chan to @#chan).
- internal: use of the CHANOPPFX macro is now deprecated.
All of this was done to make it a bit more 'safe' and userfriendly (#0001812).
| Bram Matthys | 2004-05-14 | 1 | -2/+2 |
| * | - Local opers can now also join +O (operonly) channels (#0001694). | Bram Matthys | 2004-05-14 | 1 | -23/+22 |
| * | Added module support for Windows | codemastr | 2004-05-12 | 1 | -3/+3 |
| * | - Fixed /who +m bug for opers, reported by Bugz (#0001715).•••- Fixed halfop mode code to not check remote halfop modes (desynch danger).
| Bram Matthys | 2004-04-13 | 1 | -1/+2 |
| * | - Updated server<->server code for MODE so operoverride bug #0001704 and other••• feature requests can be fixed/added in the future (3.2.1).
| Bram Matthys | 2004-04-13 | 1 | -6/+10 |
| * | Made set::modes-on-join work with extcmodes | codemastr | 2004-03-10 | 1 | -1/+21 |
| * | Fixed a HOOKTYPE_PRE_LOCAL_JOIN bug | codemastr | 2004-03-07 | 1 | -1/+1 |
| * | Redesigned HOOKTYPE_PRE_LOCAL_JOIN | codemastr | 2004-03-04 | 1 | -19/+20 |