]> jfr.im git - solanum.git/log
solanum.git
4 years agoAdd general::hide_tkdline_duration
Ed Kellett [Tue, 31 Dec 2019 01:34:06 +0000 (01:34 +0000)] 
Add general::hide_tkdline_duration

4 years agoMerge pull request #296 from edk0/modreload
Aaron Jones [Sun, 17 Nov 2019 19:12:03 +0000 (19:12 +0000)] 
Merge pull request #296 from edk0/modreload

m_modules: make modreload work like restart

4 years agom_modules: make modreload work like restart
Ed Kellett [Sun, 17 Nov 2019 11:15:47 +0000 (11:15 +0000)] 
m_modules: make modreload work like restart

/modrestart used to be implemented as a normal command and could crash
when used remotely because it would reload m_encap, which was on the
call stack at the time. This was fixed in 41390bfe5f. However,
/modreload has exactly the same problem, so I'm giving it the
same treatment.

Incidentally: This bug was first discovered in ircd-seven, where the
`/mod*` commands themselves live in the core, so m_encap was the only way
the crash could happen (and it didn't most of the time, because m_encap
would only be moved if you got unlucky). But `/mod*` are in modules in
charybdis, so /modrestart would have unloaded the code it was in the
middle of executing. With that in mind, I'm not sure how it ever
appeared to work.

4 years agoMerge pull request #287 from edk0/filter
Aaron Jones [Tue, 22 Oct 2019 18:33:51 +0000 (18:33 +0000)] 
Merge pull request #287 from edk0/filter

Add extensions/filter (port from ircd-seven)

4 years agofilter: avoid a memory leak per @amdj
Ed Kellett [Tue, 22 Oct 2019 17:44:19 +0000 (18:44 +0100)] 
filter: avoid a memory leak per @amdj

4 years agoMerge pull request #293 from edk0/webirc
Aaron Jones [Tue, 22 Oct 2019 16:17:33 +0000 (16:17 +0000)] 
Merge pull request #293 from edk0/webirc

m_webirc: improve TLS handling

4 years agoMerge pull request #294 from edk0/deny-webirc-auth
Aaron Jones [Tue, 22 Oct 2019 16:16:36 +0000 (16:16 +0000)] 
Merge pull request #294 from edk0/deny-webirc-auth

m_webirc: deny using webirc. as a real auth block

4 years agom_webirc: deny using webirc. as a real auth block
Ed Kellett [Sun, 20 Oct 2019 17:39:29 +0000 (18:39 +0100)] 
m_webirc: deny using webirc. as a real auth block

4 years agom_webirc: it's "TLS" to you
Ed Kellett [Sun, 20 Oct 2019 17:01:27 +0000 (18:01 +0100)] 
m_webirc: it's "TLS" to you

4 years agom_webirc: don't bail out when denying 'secure'
Ed Kellett [Thu, 13 Jun 2019 22:31:32 +0000 (23:31 +0100)] 
m_webirc: don't bail out when denying 'secure'

4 years agom_webirc: const-correctness
Ed Kellett [Wed, 12 Jun 2019 22:06:50 +0000 (23:06 +0100)] 
m_webirc: const-correctness

4 years agom_webirc: respect ircv3's `secure` option
Ed Kellett [Sun, 9 Jun 2019 00:12:52 +0000 (01:12 +0100)] 
m_webirc: respect ircv3's `secure` option

4 years agom_webirc: enforce need_ssl
Ed Kellett [Sun, 9 Jun 2019 00:11:58 +0000 (01:11 +0100)] 
m_webirc: enforce need_ssl

4 years agotests/Makefile.am: check-local: don't depend on extensions/*
Aaron Jones [Mon, 7 Oct 2019 03:48:57 +0000 (03:48 +0000)] 
tests/Makefile.am: check-local: don't depend on extensions/*

This breaks if a file in extensions/ doesn't get built due to
conditional compilation, and the tests don't need anything
under extensions/ anyway.

4 years agoMerge pull request #286 from edk0/strip-unprintable
Aaron Jones [Sun, 6 Oct 2019 22:23:59 +0000 (22:23 +0000)] 
Merge pull request #286 from edk0/strip-unprintable

strip_unprintable: Don't strip all bytes with the MSB set

4 years agostrip_unprintable: clarify type conversion
Janik Kleinhoff [Thu, 25 Oct 2018 20:31:46 +0000 (20:31 +0000)] 
strip_unprintable: clarify type conversion

This type conversion is more easily shown to work as intended than the
conversion introduced in 9dcb9e169.

4 years agoFix strip_unprintable on high bit bytes
Ed Kellett [Tue, 25 Sep 2018 11:48:22 +0000 (12:48 +0100)] 
Fix strip_unprintable on high bit bytes

4 years agoMerge pull request #290 from edk0/quiet-override
Aaron Jones [Sun, 6 Oct 2019 21:57:42 +0000 (21:57 +0000)] 
Merge pull request #290 from edk0/quiet-override

override: don't spam about (un)setting the mode

4 years agoMerge pull request #289 from edk0/rehash-privileged-modes
Aaron Jones [Sun, 6 Oct 2019 21:51:20 +0000 (21:51 +0000)] 
Merge pull request #289 from edk0/rehash-privileged-modes

Recheck umodes for opers after rehash

4 years agooverride: don't spam about (un)setting the mode
Ed Kellett [Sun, 6 Oct 2019 21:23:44 +0000 (22:23 +0100)] 
override: don't spam about (un)setting the mode

We will spam about any uses of it, so this just seems like extra noise.

4 years agoRecheck umodes for opers after rehash
Ed Kellett [Sun, 6 Oct 2019 20:56:13 +0000 (21:56 +0100)] 
Recheck umodes for opers after rehash

4 years agofilter: explicit type conversion
Ed Kellett [Sun, 6 Oct 2019 18:41:06 +0000 (19:41 +0100)] 
filter: explicit type conversion

4 years agoAdd hyperscan to CI deps
Ed Kellett [Sun, 6 Oct 2019 18:35:17 +0000 (19:35 +0100)] 
Add hyperscan to CI deps

4 years agofilter: correct type for modinit
Ed Kellett [Sat, 5 Oct 2019 23:41:56 +0000 (00:41 +0100)] 
filter: correct type for modinit

4 years agoFix build when hyperscan is missing
Ed Kellett [Sat, 5 Oct 2019 23:17:49 +0000 (00:17 +0100)] 
Fix build when hyperscan is missing

4 years agofilter: use AV2
Ed Kellett [Sat, 5 Oct 2019 21:05:15 +0000 (22:05 +0100)] 
filter: use AV2

4 years agofilter: add DROP and ABORT
Ed Kellett [Thu, 4 Apr 2019 23:13:34 +0000 (00:13 +0100)] 
filter: add DROP and ABORT

4 years agofilter: require an extra "+" before data
Ed Kellett [Wed, 3 Apr 2019 11:16:44 +0000 (12:16 +0100)] 
filter: require an extra "+" before data

This disambiguates it from control commands

4 years agofilter: add modes to disable incoming filters
Ed Kellett [Sun, 7 Apr 2019 19:45:38 +0000 (20:45 +0100)] 
filter: add modes to disable incoming filters

4 years agofilter: make the kill reason more honest
Ed Kellett [Thu, 20 Sep 2018 19:02:19 +0000 (19:02 +0000)] 
filter: make the kill reason more honest

4 years agofilter: send the failure response only on PRIVMSG
Ed Kellett [Tue, 14 Aug 2018 21:41:24 +0000 (22:41 +0100)] 
filter: send the failure response only on PRIVMSG

4 years agofilter: match in two passes, before and after stripping
Ed Kellett [Tue, 14 Aug 2018 21:38:51 +0000 (22:38 +0100)] 
filter: match in two passes, before and after stripping

4 years agofilter: move to extensions
Ed Kellett [Tue, 14 Aug 2018 21:37:58 +0000 (22:37 +0100)] 
filter: move to extensions

4 years agofilter: bump version
Ed Kellett [Sat, 11 Aug 2018 22:45:22 +0000 (23:45 +0100)] 
filter: bump version

4 years agofilter: use a static buffer instead of strdup
Ed Kellett [Fri, 10 Aug 2018 20:52:03 +0000 (21:52 +0100)] 
filter: use a static buffer instead of strdup

4 years agofilter: add version number
Ed Kellett [Fri, 10 Aug 2018 15:24:37 +0000 (16:24 +0100)] 
filter: add version number

4 years agofilter: send a numeric error for ACT_DROP
Ed Kellett [Fri, 10 Aug 2018 14:05:13 +0000 (15:05 +0100)] 
filter: send a numeric error for ACT_DROP

4 years agofilter: add #defines for nick,user,host
Ed Kellett [Fri, 10 Aug 2018 14:04:32 +0000 (15:04 +0100)] 
filter: add #defines for nick,user,host

4 years agofilter: don't give the target of PMs to filters
Ed Kellett [Fri, 10 Aug 2018 02:32:21 +0000 (03:32 +0100)] 
filter: don't give the target of PMs to filters

4 years agofilter: include identified marker
Ed Kellett [Thu, 9 Aug 2018 22:39:19 +0000 (23:39 +0100)] 
filter: include identified marker

4 years agofilter: drop messages if we're ACT_KILLing them
Ed Kellett [Thu, 9 Aug 2018 13:53:54 +0000 (14:53 +0100)] 
filter: drop messages if we're ACT_KILLing them

4 years agofilter: Filter only locally-sourced messages
Ed Kellett [Thu, 9 Aug 2018 13:51:02 +0000 (14:51 +0100)] 
filter: Filter only locally-sourced messages

(Assume the remote server filtered remote ones.)

4 years agofilter: kill last or we can't send the snote
Ed Kellett [Wed, 8 Aug 2018 21:10:02 +0000 (22:10 +0100)] 
filter: kill last or we can't send the snote

4 years agoAdd filter.c
Ed Kellett [Mon, 6 Aug 2018 16:48:15 +0000 (17:48 +0100)] 
Add filter.c

4 years agoDepend on hyperscan
Ed Kellett [Mon, 6 Aug 2018 11:57:52 +0000 (12:57 +0100)] 
Depend on hyperscan

4 years agoTravis CI: Bump to Ubuntu Bionic 18.04 LTS
Aaron Jones [Sun, 6 Oct 2019 14:55:15 +0000 (14:55 +0000)] 
Travis CI: Bump to Ubuntu Bionic 18.04 LTS

Also bump Linux compilers from (GCC 4.8, GCC 4.9, GCC 5, GCC 7,
GCC 8, Clang 3.9, Clang 4.0, Clang 5.0, Clang 6.0) to (GCC 7,
GCC 8, Clang 7, Clang 8). There's no need to test against every
ancient compiler under the sun. Furthermore, we no longer need
an apt sources list for Bionic.

[ci skip] (Tested already <https://travis-ci.org/charybdis-ircd/charybdis/builds/594225622>)

4 years agoMerge pull request #285 from edk0/ratelimits
Aaron Jones [Sun, 15 Sep 2019 19:27:39 +0000 (19:27 +0000)] 
Merge pull request #285 from edk0/ratelimits

Remove ratelimits on /stats and /motd when they don't have a server parameter

4 years agom_motd: don't ratelimit with no server argument
Ed Kellett [Fri, 2 Aug 2019 21:55:19 +0000 (22:55 +0100)] 
m_motd: don't ratelimit with no server argument

4 years agom_stats: don't ratelimit with no server argument
Ed Kellett [Fri, 2 Aug 2019 20:56:10 +0000 (21:56 +0100)] 
m_stats: don't ratelimit with no server argument

4 years agoDon't enable warnings on osx
Simon Arlott [Sun, 15 Sep 2019 11:56:55 +0000 (12:56 +0100)] 
Don't enable warnings on osx

4 years agolibrb: Fix nossl
Simon Arlott [Sun, 15 Sep 2019 11:33:56 +0000 (12:33 +0100)] 
librb: Fix nossl

4 years agolibrb: Fix nossl
Simon Arlott [Sun, 15 Sep 2019 10:43:52 +0000 (11:43 +0100)] 
librb: Fix nossl

4 years agotravis: Use newer versions of Clang
Simon Arlott [Sun, 15 Sep 2019 10:41:41 +0000 (11:41 +0100)] 
travis: Use newer versions of Clang

4 years agoFix Clang 6 compiler warnings
Simon Arlott [Sun, 15 Sep 2019 10:28:48 +0000 (11:28 +0100)] 
Fix Clang 6 compiler warnings

4 years agotravis: Remove -Wno-unused-variable
Simon Arlott [Sun, 15 Sep 2019 10:14:38 +0000 (11:14 +0100)] 
travis: Remove -Wno-unused-variable

4 years agolibrb: Avoid unused variable warning
Simon Arlott [Sun, 15 Sep 2019 10:13:54 +0000 (11:13 +0100)] 
librb: Avoid unused variable warning

4 years agolibrb: Specify -Wno-unused-parameter
Simon Arlott [Sun, 15 Sep 2019 10:12:44 +0000 (11:12 +0100)] 
librb: Specify -Wno-unused-parameter

4 years agotravis: Don't use -Werror on clang
Simon Arlott [Sun, 15 Sep 2019 10:04:28 +0000 (11:04 +0100)] 
travis: Don't use -Werror on clang

4 years agotravis: Notify on IRC
Simon Arlott [Sun, 15 Sep 2019 10:00:50 +0000 (11:00 +0100)] 
travis: Notify on IRC

4 years agoFix GCC 8 compiler warnings
Simon Arlott [Sun, 15 Sep 2019 09:57:53 +0000 (10:57 +0100)] 
Fix GCC 8 compiler warnings

4 years agotravis: Ignore more unused warnings
Simon Arlott [Sun, 15 Sep 2019 09:44:05 +0000 (10:44 +0100)] 
travis: Ignore more unused warnings

4 years agoircd: Use a larger buffer for ilog() buf2
Simon Arlott [Sun, 15 Sep 2019 09:41:33 +0000 (10:41 +0100)] 
ircd: Use a larger buffer for ilog() buf2

4 years agotravis: Ignore unused-parameter warnings
Simon Arlott [Sun, 15 Sep 2019 09:26:35 +0000 (10:26 +0100)] 
travis: Ignore unused-parameter warnings

4 years agolibrb: Fix GCC 8 warning; 640 bytes should be enough
Simon Arlott [Sun, 15 Sep 2019 09:25:25 +0000 (10:25 +0100)] 
librb: Fix GCC 8 warning; 640 bytes should be enough

4 years agoircd: Zero out the global_client_list
Simon Arlott [Sun, 15 Sep 2019 09:21:49 +0000 (10:21 +0100)] 
ircd: Zero out the global_client_list

Otherwise we unconditionally add "me" to it twice in some unit tests,
which results in a loop in the list.

4 years agotravis: Build with GCC 7 and GCC 8
Simon Arlott [Sun, 15 Sep 2019 09:02:11 +0000 (10:02 +0100)] 
travis: Build with GCC 7 and GCC 8

4 years agoFix compiler warning for SeesOper
Simon Arlott [Sun, 15 Sep 2019 09:00:56 +0000 (10:00 +0100)] 
Fix compiler warning for SeesOper

4 years agotravis: Compile with warnings as errors
Simon Arlott [Sun, 15 Sep 2019 08:57:45 +0000 (09:57 +0100)] 
travis: Compile with warnings as errors

4 years agoMerge pull request #283 from edk0/grant
Aaron Jones [Sat, 14 Sep 2019 23:39:40 +0000 (23:39 +0000)] 
Merge pull request #283 from edk0/grant

m_grant improvements

4 years agoAdd help for GRANT
Ed Kellett [Sat, 14 Sep 2019 23:25:18 +0000 (00:25 +0100)] 
Add help for GRANT

4 years agom_grant: match "deoper" case-insensitively
Ed Kellett [Sat, 14 Sep 2019 23:16:00 +0000 (00:16 +0100)] 
m_grant: match "deoper" case-insensitively

4 years agom_grant: remove a confusing line
Ed Kellett [Thu, 1 Aug 2019 13:20:30 +0000 (14:20 +0100)] 
m_grant: remove a confusing line

4 years agom_grant: use AV2
Ed Kellett [Tue, 30 Jul 2019 22:18:22 +0000 (23:18 +0100)] 
m_grant: use AV2

4 years agom_grant: propagate privset changes
Ed Kellett [Sat, 27 Jul 2019 14:43:33 +0000 (15:43 +0100)] 
m_grant: propagate privset changes

4 years agom_grant: maintain privilegeset refcounts
Ed Kellett [Sat, 27 Jul 2019 14:42:36 +0000 (15:42 +0100)] 
m_grant: maintain privilegeset refcounts

4 years agocharybdise m_grant
Ed Kellett [Sat, 27 Jul 2019 14:20:49 +0000 (15:20 +0100)] 
charybdise m_grant

4 years agoUse the m_grant from ircd-seven
Ed Kellett [Sat, 27 Jul 2019 12:50:10 +0000 (13:50 +0100)] 
Use the m_grant from ircd-seven

Charybdis' rewritten m_grant introduces at least one serious bug without
providing any apparent benefit. I think the best solution here is the
easiest one.

The bug in question is that an empty mode change is triggered after
seven's grant has done its work, and this is necessary in order to
give umodes granted by oper privileges a chance to update. The rewrite
removes this, generating a mode change only if it wants to change the
state of +o, which means the grant victim can keep privileged modes they
no longer have access to, or fail to gain new ones.

4 years agoMerge pull request #284 from edk0/drain
Aaron Jones [Sat, 14 Sep 2019 21:21:38 +0000 (21:21 +0000)] 
Merge pull request #284 from edk0/drain

Add extensions/drain (port from ircd-seven)

4 years agoextensions/drain: remove superfluous includes
Janik Kleinhoff [Tue, 7 Aug 2018 20:39:05 +0000 (20:39 +0000)] 
extensions/drain: remove superfluous includes

4 years agoAdd extensions/drain
Ed Kellett [Wed, 29 Nov 2017 02:56:30 +0000 (02:56 +0000)] 
Add extensions/drain

This takes the simplest possible approach: load the module and you're in
drain mode.

4 years agoMerge pull request #282 from edk0/propagate-oper
Aaron Jones [Fri, 13 Sep 2019 12:15:06 +0000 (12:15 +0000)] 
Merge pull request #282 from edk0/propagate-oper

Propagate OPER

4 years agoPropagate OPER
Ed Kellett [Sun, 7 Jul 2019 01:36:58 +0000 (02:36 +0100)] 
Propagate OPER

Move opername and privset storage to struct User, so it can exist for
remote opers.

On /oper and when bursting opers, send:

    :foo OPER opername privset

which sets foo's opername and privset. The contents of the privset on
remote servers come from the remote server's config, so the potential
for confusion exists if these do not match.

If an oper's privset does not exist on a server that sees it, it will
complain, but create a placeholder privset. If the privset is created by
a rehash, this will be reflected properly.

/privs is udpated to take an optional argument, the server to query, and
is now local by default:

    /privs [[nick_or_server] nick]

4 years agoMerge pull request #279 from edk0/operhide
Aaron Jones [Thu, 12 Sep 2019 22:17:26 +0000 (22:17 +0000)] 
Merge pull request #279 from edk0/operhide

Rework oper hiding

4 years agoRework oper hiding
Ed Kellett [Sun, 7 Jul 2019 03:57:53 +0000 (04:57 +0100)] 
Rework oper hiding

As it stands, oper hiding is rather messy and inconsistent. Add
SeesOper(target, source), which is true iff target should appear as an
oper to source. If I haven't missed something, all commands that reveal
oper status now use the same logic.

general::hide_opers_in_whois is a special case, and affects /whois only.

general::hide_opers is introduced, and has the same effect as giving
everyone oper:hidden. All commands that reveal oper status respect both.

4 years agoSupport ECDH X25519 for TLSv1.3 (OpenSSL 1.1.1)
Aaron Jones [Sun, 8 Sep 2019 13:59:52 +0000 (13:59 +0000)] 
Support ECDH X25519 for TLSv1.3 (OpenSSL 1.1.1)

4 years agoMerge pull request #277 from edk0/helpops
Aaron Jones [Sat, 7 Sep 2019 14:57:30 +0000 (14:57 +0000)] 
Merge pull request #277 from edk0/helpops

Fix various bugs in extensions/helpops

4 years agoMerge pull request #278 from edk0/override
Aaron Jones [Sat, 7 Sep 2019 14:26:01 +0000 (14:26 +0000)] 
Merge pull request #278 from edk0/override

Fix various bugs in extensions/override

4 years agoMerge pull request #275 from edk0/override-immunity
Aaron Jones [Sat, 7 Sep 2019 14:10:22 +0000 (14:10 +0000)] 
Merge pull request #275 from edk0/override-immunity

override: move kick immunity to its own module

4 years agoMerge pull request #276 from edk0/deferred-cap-notify
Aaron Jones [Sat, 7 Sep 2019 14:08:19 +0000 (14:08 +0000)] 
Merge pull request #276 from edk0/deferred-cap-notify

Deferred capability notifications from modules

4 years agooverride: always check oper:override
Ed Kellett [Sat, 27 Jul 2019 12:50:53 +0000 (13:50 +0100)] 
override: always check oper:override

It's possible to have the oper:override privilege removed by /grant.
/grant triggers an empty umode change event to allow privileged umodes
to be set or removed, so checking for oper:override on all umode changes
(and not just ones where +o or +p is changed) allows us to remove +p
when necessary.

4 years agooverride: don't leak the old expiry timer list
Ed Kellett [Sat, 27 Jul 2019 00:59:28 +0000 (01:59 +0100)] 
override: don't leak the old expiry timer list

4 years agooverride: start timers for +p clients on modinit
Ed Kellett [Sat, 27 Jul 2019 00:48:36 +0000 (01:48 +0100)] 
override: start timers for +p clients on modinit

Reloading override previously would have the effect of cancelling +p
expiry. With this change, reloading the module just refreshes the
timers, so expiry is delayed a bit rather than forgotten entirely.

4 years agohelpops: remove +H if usermode:helpops is lost
Ed Kellett [Sat, 3 Aug 2019 05:41:09 +0000 (06:41 +0100)] 
helpops: remove +H if usermode:helpops is lost

4 years agohelpops: handle the helper list properly on reload
Ed Kellett [Sat, 3 Aug 2019 04:17:35 +0000 (05:17 +0100)] 
helpops: handle the helper list properly on reload

Free the whole list on unload rather than leaking it, and initialise it
to the list of people with +H on load.

4 years agohelpops: fix umode handling
Ed Kellett [Sat, 3 Aug 2019 04:13:49 +0000 (05:13 +0100)] 
helpops: fix umode handling

construct_umodebuf() can change the char->flag mapping (to restore an
orphaned mode). I don't love the use of a fake constant, so I think the
cleanest solution here is just to index user_modes with a macro for the
umode letter.

4 years agoDeferred capability notifications from modules
Ed Kellett [Mon, 8 Jul 2019 02:53:29 +0000 (03:53 +0100)] 
Deferred capability notifications from modules

Reloading modules sends CAP DEL followed by an immediate CAP NEW:

    :staberinde.local CAP * DEL :account-tag
    :staberinde.local CAP * NEW :account-tag

This isn't very nice. /modrestart is particularly bad. In order to avoid
doing this, we remember the capability set at the beginning of module
operations, compare that with the set afterwards, and report only the
differences with CAP {DEL,NEW}.

4 years agoMerge pull request #274 from edk0/event-deletion
Aaron Jones [Sat, 7 Sep 2019 13:56:17 +0000 (13:56 +0000)] 
Merge pull request #274 from edk0/event-deletion

librb/event: delete indirectly via a dead flag

4 years agooverride: move kick immunity to its own module
Ed Kellett [Fri, 2 Aug 2019 18:45:25 +0000 (19:45 +0100)] 
override: move kick immunity to its own module

4 years agolibrb/event: delete indirectly via a dead flag
Ed Kellett [Sat, 3 Aug 2019 05:41:58 +0000 (06:41 +0100)] 
librb/event: delete indirectly via a dead flag

This avoids an issue where deleting an event inside the handler of a
different event puts the event iteration in an invalid state.

4 years agoVersion 4.1.3-dev
Simon Arlott [Sat, 31 Aug 2019 20:14:27 +0000 (21:14 +0100)] 
Version 4.1.3-dev