1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-09 10:53:13 +02:00
Commit Graph

399 Commits

Author SHA1 Message Date
Bram Matthys efc63dff81 Permit halfops to set more modes than before. The idea is halfops should be able to help out in case of a flood but not be able to change any 'policy decission' modes such as +G, +S, +c, +s.
The following modes are now permitted to halfops: +iklmntMKNCR (was: +ikmnt)
2015-06-22 19:29:32 +02:00
Travis McArthur f4c68a3a66 Fix initializers 2014-07-22 06:33:33 -07:00
Travis McArthur 63cb121130 Modularize secureonly (+z) 2014-07-04 21:13:08 -07:00
Travis McArthur 3710fb67c4 Modularize regonlyspeak (+M), slightly modify can_send hook 2014-06-29 12:12:36 -07:00
Travis McArthur fdeb6f06bf Modularize nokicks (+Q) 2014-06-29 00:52:40 -07:00
Travis McArthur 2519f9d3ac Modularize nonickchange (+N) 2014-06-29 00:21:17 -07:00
Travis McArthur 2e10afdd9c Modularize channel mode +R, reg only - temporarily remove some logging 2014-06-29 00:01:50 -07:00
Travis McArthur 334763c21c Modularize nonotice (+T) 2014-06-28 23:34:14 -07:00
Travis McArthur 5e657e5985 Modularize adminonly (+A) 2014-06-07 20:35:19 -07:00
Travis McArthur df4597b869 Modularize operonly (+O) 2014-06-07 19:37:25 -07:00
Travis McArthur b91f683800 Modularize noinvite (+V) and noknock (+K) in one commit since they share functionality 2014-06-06 22:02:40 -07:00
Heero 8cc0724e76 delayjoin: fix issue with timing on join causing bug
added hook for after data creation, before channel join complete
2014-06-05 01:04:31 -07:00
Heero 4956d01e34 Add +D/+d and remove +u
Permits users to add +D mode to hide join/part notifications except for +vohaq
until a user speaks
[#2906] Reported by Tranqer
2014-06-04 01:13:22 -07:00
Bram Matthys e21298ea71 - First version of ModData system that allows modules to attach data to
structs such as Client, Channel, Member and Membership.
- Modules that define channel modes no longer need to be permanent. This
  was already true for paramless chmodes, but is now true for all.
- Converted floodprot module (chmode +f) to use MoData. This means some
  remains could be purged from the core and the module is now fully
  reloadable (no longer permanent).
- This code is experimental, but seems to work...
2014-06-01 17:34:16 +02:00
Bram Matthys 126795a3e3 Rejoining because of user@host change -> Changing host (Techman, #4232) 2014-05-30 19:31:16 +02:00
Bram Matthys 65d5569ef0 First attempt at parse_chanmode(), meant for 3rd party module coders.. and
who knows it may be useful for ourselves too.
2014-05-29 22:05:15 +02:00
Bram Matthys 101d2dd6a3 Big 3.4.x commit containing bug fixes and enhancements. Modularizing
user & channel modes. Fixing Windows build. Etc..
2014-05-11 20:56:02 +02:00
William Pitcock afdf5d780a - Replace ircsprintf() with bounds-checking ircsnprintf(), patch from FalconKirtaran. (#4208) 2013-05-21 06:26:52 +00:00
William Pitcock 01dffdfa46 - Extend HOOKTYPE_CHANNEL_DESTROY to allow cancelling the destroy event. 2013-05-20 19:37:43 +00:00
William Pitcock 1698007836 - Add HOOKTYPE_INVITE 2013-05-20 18:07:25 +00:00
William Pitcock 61fe014771 - Remove sendto_server_butone() and friends, now everything uses sendto_server(). (#4202)
Patch from FalconKirtaran.
2013-05-20 01:21:45 +00:00
William Pitcock f5adc61da5 - Remove sendto_channelprefix_butone_tok() usage from core. 2013-05-19 20:51:35 +00:00
William Pitcock 6085877aa7 - Remove TS2ts() and %B usage in formatter strings. Patch from FalconKirtaran (#4197, #4198). 2013-05-19 08:36:49 +00:00
William Pitcock 67669c0299 - core: remove references to sendto_serv_butone_token() and friends 2013-05-14 01:26:41 +00:00
William Pitcock 6ac8721c64 - core: remove all references to IsToken() 2013-05-13 05:03:28 +00:00
William Pitcock 6c2ef637e5 - Fix thinko. 2013-05-06 06:37:44 +00:00
William Pitcock 0912de822f - Allow halfops to set mode +N (which is consistent with extban ~n:*!*@*). (#3728) 2013-05-06 06:07:38 +00:00
William Pitcock 5a4babdb9d - CHGHOST: Switch from part-join-mode to quit-join-mode like charybdis and ircu. (#3038) 2013-05-06 06:00:05 +00:00
William Pitcock 3bdae5807d - Remove NEWCHFLOODPROT define and old +f code. (#3210) 2013-01-14 03:44:49 -06:00
William Pitcock 997aae03c4 - Require OPCanOverride to talk through channel bans. (#3410) 2012-12-26 12:31:36 -06:00
William Pitcock ec09c447e5 - Remove defines FAST_BADWORDS_REPLACE, THROTTLING, EXTCMODE. (#2937)
The code does not compile without them anyway.
2012-11-25 17:45:45 +00:00
William Pitcock 1f79ca142f - Remove channel masks. (#3281) 2012-11-25 16:59:27 +00:00
William Pitcock ab5e766d9c - Replace calls to strncpyzt() macro with more secure strlcpy().
This was done using Coccinelle, the semantic patch was:

  @@
  expression src, dst, len;
  @@

  - strncpyzt(src, dst, len);
  + strlcpy(src, dst, len);
2012-11-21 03:22:29 +00:00
William Pitcock 856be31a8d - Exorcize HTM (heavy traffic mode) from Unreal.
This is partially for the sake of Stskeeps, even though he left the
  project long ago, but mainly so we can work towards dynamic ticks in
  the event loop while guaranteeing latencies for connected clients,
  even with fakelag.
2012-11-05 05:49:04 +00:00
Bram Matthys d439c8906b complete the previous patch (MLOCK).. mostly just bringing it up to date & code-style 2012-05-04 13:05:08 +02:00
William Pitcock 5360e2ffa5 - 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)
2012-05-04 12:47:59 +02:00
Bram Matthys 75d4fecb4b ..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).
2010-08-14 18:27:19 +00:00
Bram Matthys 625102cacd - 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.
2010-05-24 12:01:07 +00:00
Bram Matthys 7dee0cdcf1 - Added support for "chained" 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. 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 .
2009-11-29 12:46:29 +00:00
Bram Matthys f966682883 - 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.
2008-02-11 16:00:13 +00:00
Bram Matthys 10fd56d4e8 - ChanMode +S/+c: reverse is now stripped/blocked as well, because it's
similar to color, and is just as annoying (..if not worse).
2007-12-30 11:27:06 +00:00
Bram Matthys 31aaee7652 - Fixed bug in MODE #channel showing extended channel mode parameters when not in #channel.
- Made 'MODE #channel b' and friends show bans to ircops even when not in channel.
2006-08-29 13:22:58 +00:00
Bram Matthys 5757c1a50e +extern MODVAR char modebuf[BUFSIZE], parabuf[BUFSIZE]; 2006-05-21 23:26:12 +00:00
Bram Matthys fe4c8b4a83 - Added 'real' aliases, this are aliases that map to real commands, so you can for example
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.
2006-05-21 23:16:53 +00:00
Bram Matthys 8607d950b7 - Made the IRCd calculate the cloaked host only once upon connect, and store (cache) it.
- 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.
2006-04-16 23:27:56 +00:00
Bram Matthys fd5c1f778f - 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 ;).
2006-02-26 01:06:10 +00:00
Bram Matthys 1d70016ef8 - Made it so a set::maxbanlength and/or set::maxbans of 0 denies all bans properly, and
fixes the first-ban-can-be-as-long-as-you-want bug, both reported by Trocotronic (#2762).
2006-01-24 00:41:08 +00:00
Bram Matthys 950ba7c702 - Made set::maxbanlength also count the "to be set" ban in, otherwise you could exceed the
limit by (max) NICKLEN+USERNAME+HOSTNAME+2, reported by Trocotronic (#0002762).
2006-01-23 20:42:07 +00:00
Bram Matthys b38f4fce10 - set::maxbans / set::maxbanlength were reported as duplicates when they were not, reported
by Jason and trystanscott (#0002753).
- Made it so bans on normal users work with +mu, reported by Nazzy (?).
2006-01-23 20:32:30 +00:00
Bram Matthys 364bf0f605 - 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).
2006-01-06 19:53:41 +00:00