1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-30 09:06:37 +02:00
Commit Graph

179 Commits

Author SHA1 Message Date
Bram Matthys 5124e60b7c Add "CAP chghost" support. Internal recode of userhost changes.
Fix force-rejoin not working if doing SVSMODE -x/+x (Koragg, #5015).

Note to module coders:
Please use the following procedure in case of an user/host change:
* userhost_save_current(acptr);
* << change username or hostname here (or both) >>
* userhost_changed(acptr);
This function will take care of notifying other clients about
the userhost change, such as doing PART+JOIN+MODE if force-rejoin
is enabled, and sending :xx CHGHOST user host messages to
"CAP chghost" capable clients.

Also, small note to everyone:
If force-rejoin is enabled we will not send the PART+JOIN+MODE to
"CAP chghost" capable clients. Doing so is just a hack to notify
people of a userhost change. "CAP chghost" users can thus benefit
from the reduced noise in this respect.
2017-10-07 13:31:30 +02:00
Bram Matthys 5399e060fa Send CAP DEL sasl if set::sasl-server squits and CAP NEW when it returns.
(Only to cap-notify and v3.2 clients, of course)
Also fix a "bug" where sts parameters were not shown in CAP NEW tls.
2017-09-30 15:19:29 +02:00
Bram Matthys 7d381086ad Remove CLICAP_FLAGS_CLIACK. Never understood this idea. Unused and deprecated it seems. 2017-09-30 12:35:56 +02:00
Bram Matthys 44052b86c0 Remove CLICAP_FLAGS_STICKY. We don't use this anyway. 2017-09-30 12:33:57 +02:00
Bram Matthys ea651384f8 Add groundwork for draft/sts (more to follow)
Module coders:
* The cap->visible(void) callback function is now cap->visible(aClient *)
* There is a new cap->parameter(aClient *) callback function.
* Various updates to subfunctions to pass 'sptr' (due to the above),
  including clicap_find(sptr, ...)
* New CLICAP_FLAGS_UNREQABLE flag
Other:
* There is a new (src/)modules/cap directory containing the sts module,
  well.. once I commit it :D
2017-08-09 13:21:36 +02:00
Bram Matthys ec9db8fd5f Move match_user() to module (efunc in m_tkl) 2017-03-18 15:00:34 +01:00
Bram Matthys 993b5bc721 The HOOKTYPE_PACKET validation code is wrong, making the hook unusable. 2016-05-23 11:26:54 +02:00
Bram Matthys dd31542e2c Use UID's in MD commands. Add functions / remove duplicate code. Modularize various functions
in src/moddata.c (move them to src/modules/m_md.c as per TODO). Looks good but more testing warranted.
2016-01-03 12:18:55 +01:00
Bram Matthys b2da8251d8 Fix crash on boot if set::modes-on-join contains channel mode 'f'. Reported by LinkServ (#4461). 2015-11-11 10:23:56 +01:00
Bram Matthys 2f112c3efa Update hook prototypes (typechecking). Fix build. Forgot.. in 3.4 these return int now... 2015-09-22 10:43:26 +02:00
Bram Matthys bd7aebc81e upd hook prototypes 2015-09-21 13:40:36 +02:00
Bram Matthys 9ba9d65c7e Add GCC typechecking: we now validate HookAdd... calls, making sure the function (pointer) is as it should. This to avoid crashes and weird behavior in case of a mismatch.
This resulted in 5-10 changes in the existing code where parameters were off.
Hopefully I didn't make too many mistakes when writing the hook prototypes as it was a tedious job.
An (unintentional) benefit of this new system is that you can see the hook prototypes in include/modules.h like:
/* Hook prototypes */
int hooktype_local_quit(aClient *sptr, char *comment);
....
Though, the wiki is likely a better place: https://www.unrealircd.org/docs/Dev:Hook_API
2015-09-21 11:52:00 +02:00
Bram Matthys 15469cae2e Send version information in SERVER command like before (VL). Expand PROTOCTL EAUTH.
PROTOCTL EAUTH=servername,protocolversion,flags,unrealversiontext
This makes deny link { } work again and gives a bit more information too.
Bug reported by GLolol (#4408).
2015-09-05 12:06:55 +02:00
Bram Matthys c478d7d9ef Move some stuff to introduce_user() so we can use it. 2015-07-20 16:42:36 +02:00
Bram Matthys 421b224d8e Fix SSL client certificate fingerprint authentication not working for server linking. Broken since May 23 already. 2015-07-18 22:05:22 +02:00
Bram Matthys afb4c7bebe Rip out remainder of HOOKTYPE_GUEST. Whoops.. were not sending "nick in use" errors (bug caused a few hours ago) 2015-07-12 20:02:00 +02:00
Bram Matthys 372ce82335 Make client capabilities a modular sub-system, as it should have been since the beginning. 2015-07-12 17:10:48 +02:00
Bram Matthys d753714abe use enum for module object types 2015-07-12 16:08:28 +02:00
Bram Matthys 60356bd97c typo (l -> L) 2015-07-08 18:06:30 +02:00
Bram Matthys 7b02afb3e5 Make MOD_LOAD and MOD_UNLOAD have a useful argument: pass modinfo, just like in MOD_TEST and MOD_INIT.
Change MOD_TEST/MOD_LOAD/etc macro's (this breaks all modules). Now just use this:
MOD_INIT(modulename)
{
// you can access modinfo here.. or other stuff...
}

(Similar to the CMD_FUNC() macro)

Rather than:
DLLFUNC int MOD_INIT(name)(ModuleInfo *modinfo)
{
//...
}
2015-07-08 17:57:02 +02:00
Bram Matthys b37bab0521 Add priority argument to HookAdd... and rename all the ...Ex stuff to just ... 2015-07-08 17:10:37 +02:00
Bram Matthys f58402365c Moved jointhrottle from channel mode +j to set::anti-flood::join-flood
with a default of 3:90 (3 joins per 90 seconds). There's rarely any need
to configure this on a per-channel basis and this way it's enabled by
default for everyone (unless you decide not to load load the module)
2015-07-05 13:31:56 +02:00
Bram Matthys dd3c4ac4f4 Insert an extra parameter in UmodeAdd and SnomaskAdd to indicate "unset this on de-oper". Safer and better than in XYZ places in the code. 2015-06-21 20:37:53 +02:00
Bram Matthys c0f18b3e8e Replace user mode +v ("victim", receive infected DCC notices) with snomask +D (modules/snomasks/dccreject). 2015-06-21 19:48:13 +02:00
Bram Matthys c9523e962d Added HOOKTYPE_SEE_CHANNEL_IN_WHOIS. Make umode +S use it to hide channels.
Also make the '?' and '!' prefixes in channels in /WHOIS output more generic:
both mean you only get to see the channel because you are an ircop, but:
'?' means the channel is +s/+p too (so take extra care)
and '!' means the channel is public but for other reasons hidden in /WHOIS, like umode +p (later) or umode +S.
2015-06-21 10:22:16 +02:00
Bram Matthys 8cb381cc8e Move user mode +S to usermodes/servicebot.
TODO: hide channels in /WHOIS and some more testing. Tomorrow.. ;)
2015-06-20 21:09:17 +02:00
Bram Matthys 4ae1eb23f0 Move user mode +B to usermodes/bot module.
Also add HOOKTYPE_WHO_STATUS.
2015-06-20 18:30:57 +02:00
Bram Matthys 501daede0c move cgiirc block to webirc module and rename the block to webirc { } 2015-06-12 20:16:26 +02:00
Travis McArthur adf8a61625 Add support for adding/removing validators 2015-05-31 23:19:08 -04:00
Travis McArthur ffe6877fbe Clean up unnecessary stuff 2015-05-30 22:14:45 -04:00
Bram Matthys c2ca896dea Add new flag MOD_OPT_PERM_RELOADABLE. Can be used instead of MOD_OPT_PERM if
you want to permit re-loading but not complete un-loading of your module.
This way you get the benefits of being able to upgrade code on-the-fly but
can still disallow the user to do something potentially unwise.
2015-05-23 20:43:31 +02:00
Bram Matthys 5ff5e01aa2 Rename moddata_client_XXX_string to moddata_client_XXX 2015-05-19 11:22:11 +02:00
Bram Matthys 7ad4b6db67 Module coders: introduce moddata_client_set_string() and moddata_client_get_string(). Will document later in ModData wiki page (which does not exist yet). 2015-05-18 17:15:02 +02:00
Bram Matthys fa38dbf9e6 Added HOOKTYPE_WHOIS. May later be replaced by a more advanced system. 2015-05-18 16:45:31 +02:00
Travis McArthur 63cb121130 Modularize secureonly (+z) 2014-07-04 21:13:08 -07:00
Travis McArthur 2519f9d3ac Modularize nonickchange (+N) 2014-06-29 00:21:17 -07:00
Travis McArthur 5924674c3f Remove unnecessary hook added (oops!) 2014-06-07 20:33:57 -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 de3f9b9cc2 - Add server synching and broadcast functions for new ModData system.
- Also added an example module for coders (m_mdex), not compiled by default.
2014-06-01 20:06:28 +02: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 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 1698007836 - Add HOOKTYPE_INVITE 2013-05-20 18:07:25 +00:00
William Pitcock f5cc654a06 - Initial work on modularizing CAP. 2013-05-20 17:04:16 +00:00
William Pitcock df1b02adb9 - Allow the ircd to be started without a cloaking module. (#3726) 2013-05-20 02:07:51 +00:00
William Pitcock 8ad50de220 - Finish token removal from Command objects 2013-05-19 21:29:26 +00:00
William Pitcock ca86485927 - Remove token parameter from CommandAdd(). 2013-05-19 21:27:26 +00: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