Commit graph

420 commits

Author SHA1 Message Date
Jilles Tjoelker
5c2b9eaf48 BAN: Reject bans with insufficient non-wildcard characters.
Such bans are not applied locally, but are propagated normally.
They can only be removed on a server that applies them.

Note that normally KLINE will not accept such bans.
This is mainly for services, differing min_wildcard and
ircd changes.
2010-03-06 01:45:41 +01:00
Jilles Tjoelker
416d868ed4 Add /stats g to show propagated (global) klines. 2010-03-06 00:31:51 +01:00
Jilles Tjoelker
6229f9f83b Among bans with the same creation time, prefer the one with longest lifetime. 2010-03-05 23:16:28 +01:00
Jilles Tjoelker
9470d75a42 BAN: Avoid fake direction. 2010-03-05 22:53:35 +01:00
Jilles Tjoelker
cedb7d05b4 Remove +/- from the BAN message, instead indicating unban with duration=0.
A kline must now last at least one second since its creation time.

Also add better logic for bans that have already expired
when they come in.
2010-03-05 22:51:47 +01:00
Jilles Tjoelker
431a1a2784 Add propagated klines.
A KLINE command without the ON clause now sets a propagated
("global") ban. KLINE commands with the ON clause work as
before.

Propagated klines can only be removed with an UNKLINE command
without the ON clause, and this removes them everywhere.
In fact, they remain in a deactivated state until the latest
expiry ever used for the mask has passed.

Propagated klines are part of the netburst using a new BAN
message and capab. If such a burst has an effect, both the
server name and the original oper are shown in the server
notice.

No checks whatsoever are done on bursted klines at this time.

The system should be extended to XLINE and RESV later.

There is currently no way to list propagated klines,
but TESTLINE works normally.
2010-03-05 18:36:44 +01:00
Jilles Tjoelker
c935336b64 kline: Fix oper reasons. 2010-03-05 18:28:59 +01:00
Jilles Tjoelker
97f44d343a Skip propagated bans in rehash txlines/tresvs. 2010-03-05 00:37:56 +01:00
Jilles Tjoelker
27f616ddf5 Track who set a dline/kline/xline/resv as in ratbox3.
Like in ratbox3, there is no way to query this information
(other than bandb's tables, but they worked before this
commit).
2010-03-01 01:23:22 +01:00
Jilles Tjoelker
a12ad04472 Generate the "Temporary K-line %d min" part from aconf->hold - aconf->created. 2010-02-28 16:27:06 +01:00
Jilles Tjoelker
b52c294986 Store the creation time of klines and dlines as a time_t instead of as text.
The value 0 indicates the creation time is unknown (currently the case
for bandb).
Also store a creation time for xlines and resvs, but do not use it yet.
2010-02-28 00:46:56 +01:00
Jilles Tjoelker
3102dbdc4f Use FLAGS_SENTUSER when checking whether to register when ping cookie is received. 2010-02-24 23:28:27 +01:00
Stephen Bennett
1fb3b1e1c4 Use FLAGS_SENTUSER instead of 'user' being non-empty to decide whether to register a user on CAP END.
identd and SASL can cause source_p->user to be present without USER having been sent.
Without this change, that could cause a crash later on as localClient->fullcaps is not initialised.
2010-02-23 22:35:58 +00:00
Jilles Tjoelker
ff91faaf76 Do not penalize for spambot checks if creating a new channel. 2010-02-21 01:45:51 +01:00
Jilles Tjoelker
4eb9a3ca0b JOIN 0: Make spambot check equivalent to PART's. 2010-02-21 01:12:04 +01:00
Jilles Tjoelker
9148f6aa7c Remove dead code: last_join_time is already updated by check_spambot_warning(). 2010-02-21 01:10:04 +01:00
Jilles Tjoelker
cf3564d61f Do not check for spambot if the user is not allowed to join the channel. 2010-02-21 01:07:32 +01:00
Jilles Tjoelker
fad065bb95 challenge: Fix build. 2010-02-18 23:42:07 +01:00
William Pitcock
ed8b3d69ac Add certfp check to challenge too. 2010-02-17 23:01:25 -06:00
William Pitcock
76169ea734 Clarify ERR_NOOPERHOST and convert it to use sendto_one_numeric(). 2010-02-17 06:51:41 -06:00
William Pitcock
ff31db8473 Add support for client certificate fingerprints in o:lines. 2010-02-17 06:41:41 -06:00
Jilles Tjoelker
0cce7774d5 Subject /invite to umodes +g and +R.
The behaviour is the same as /msg except that where
/msg would send RPL_UMODEGMSG to the user, the /invite
is instead let through. This counts as a notification
for caller_id_wait like RPL_UMODEGMSG.

Checks are on the target user's server, which means an
error message will appear after RPL_INVITING.
This must be because the accept list is not globally
known.
2010-02-15 23:07:14 +01:00
Jilles Tjoelker
40b79a3908 Add missing return value. 2010-02-15 22:18:00 +01:00
Jilles Tjoelker
890af0e7c5 Subject /invite to target change.
Similar to /msg, inviting a user that is not in a channel
you have op or voice in requires a free target; opers always
have a free target.

Being invited adds the source as a reply target.
2010-02-15 22:08:55 +01:00
Jilles Tjoelker
4f2685f3e1 Move target change code to src/tgchange.c,
so we can use it for /invite as well.
2010-02-15 21:58:34 +01:00
Jilles Tjoelker
c9f01c4f2f target change: Allow free replies.
When a user receives a private message, notice or RPL_UMODEGMSG,
add the source to a special set of 5 target slots.
These slots are checked in the normal way when sending messages,
allowing a reply without using up a free target.

This feature will not be very useful if a user is being messaged
by many different users; to help this, messages blocked entirely
by +g or +R do not affect the targets. CTCP replies also remain
free in terms of targets.
2010-02-15 01:07:07 +01:00
Jilles Tjoelker
179becdf5f target change: Overwrite the least recently used target with a new one. 2010-02-15 00:31:17 +01:00
Jilles Tjoelker
ad1d39a76f Make the number of targets tracked for target change a #define. 2010-02-13 15:18:17 +01:00
Jilles Tjoelker
96bfafc1f8 testline/testgecos: Send "not an oper" message if appropriate. 2010-02-07 17:57:36 +01:00
Jilles Tjoelker
8eda114a78 Pass certfp to other servers and show it in whois. Do not show it on connect.
The server protocol for this is
:<uid> ENCAP * CERTFP :<40 hex chars>
both in new user introductions and in burst.

As in oftc-hybrid, only the user themselves and opers can see the certfp.

Displaying the certfp on connect seems unnecessary to me,
the user can whois themselves if needed.
2010-02-06 00:18:27 +01:00
Jilles Tjoelker
114105b429 Fix /links buffer overflow. 2010-01-27 21:05:10 +01:00
Jilles Tjoelker
1fd171a547 Fix op-moderate (cmode +z) for channel names with '@'. 2010-01-24 19:37:00 +01:00
Jilles Tjoelker
641eb2c3c8 Put back fb7d6089158e, not setting large_ctcp_sent for CTCP ACTION. 2010-01-20 00:03:57 +01:00
William Pitcock
2e918bf515 Merge +C (no CTCP to channels) from ircd-seven. 2010-01-19 02:11:04 -06:00
Jilles Tjoelker
3d0bbdcbe1 Do not set large_ctcp_sent for CTCP ACTION as it does not request a reply. 2010-01-14 01:12:16 +01:00
Jilles Tjoelker
a990586f4d If a removed resv was temporary, mention this in the server notice.
This agrees with xline.
2010-01-09 22:14:53 +01:00
Jilles Tjoelker
1a9ea263fa Add back unresv (permanent resv) notices. 2010-01-09 22:12:06 +01:00
Jilles Tjoelker
43d4d72ca9 Put back resv_forcepart.
This undoes erroneous revert in a3c064b3b8a2.
2010-01-09 19:08:48 +01:00
Jilles Tjoelker
70ea02ebd6 Complete the move of xlines and resvs from aconf->name to aconf->host. 2010-01-08 18:46:29 +01:00
Jilles Tjoelker
4418166c7e Do not change \s in xlines to spaces, match_esc() treats \s correctly.
This undoes erroneous revert in a3c064b3b8a2.
2010-01-08 18:13:47 +01:00
William Pitcock
00c036b172 Add back missing notices. 2010-01-07 18:17:08 -06:00
William Pitcock
23959371d0 Fix up more things with bandb. 2010-01-07 18:14:15 -06:00
William Pitcock
d4c273075e Make this work again. 2010-01-07 17:50:49 -06:00
William Pitcock
f36d4fdd54 Make this work again. 2010-01-07 17:49:08 -06:00
William Pitcock
9964e93509 Readd some oper notices. 2010-01-07 17:37:52 -06:00
William Pitcock
8bbeb278ec Update modules to use bandb_add()/bandb_del(). 2010-01-07 17:19:03 -06:00
Jilles Tjoelker
0b5cf476f5 SCAN UMODES: default list-max to 500, like a global WHO. 2010-01-01 22:55:25 +01:00
Stephen Bennett
6657de63ac Merge 2009-12-08 19:23:32 +00:00
Stephen Bennett
c127b45b83 Revert all presence-related changes 2009-12-08 19:22:55 +00:00
Jilles Tjoelker
f4d319c7ae Use full (:n!u@h) prefix for sending ETB from a user to clients. 2009-09-20 00:44:47 +02:00
Jilles Tjoelker
c2c25552ca Force part local users (not resv_exempt) on channel resv.
A notice will be sent to any force parted users that the channel
is temporarily/permanently unavailable on the server.
A new config option channel::resv_forcepart can be used to disable this.

from ircd-ratbox (dubkat)
2009-09-19 21:24:35 +02:00
Jilles Tjoelker
72d36704fc Disallow changing away status via /presence.
Allowing this desynchronizes clients and servers that
do not know about this extension without good reason.
If you want to allow this, change it to spit out the
usual AWAY protocol.
2009-06-04 00:01:57 +02:00
Jilles Tjoelker
50325a6667 Reject presence updates with too long keys, instead of truncating them
and causing soft assertion failures. Values are still
silently truncated though.
2009-06-03 23:49:50 +02:00
Jilles Tjoelker
331c548d9d Correct minimum parameter counts for PRESENCE. 2009-06-03 20:03:15 +02:00
Jilles Tjoelker
5beadfb00f ENCAPs cannot come from local clients, no need to check. 2009-06-03 19:57:27 +02:00
Jilles Tjoelker
beafd0ee32 Remove special CAP presence handling of /whois away message.
This cannot work because /whois is executed remotely too
and CAPs aren't known remotely.
2009-06-03 19:54:49 +02:00
William Pitcock
0fc5aeca53 presence: m_presence module: Use safer get_metadata() where appropriate, to avoid crash possibilities. 2009-06-02 02:55:45 -05:00
William Pitcock
f72de72bf4 presence: Use RPL_WHOISMETADATA. 2009-06-02 02:44:31 -05:00
William Pitcock
8f2d1ccf7f presence: If CLICAP_PRESENCE is enabled, then RPL_AWAY is replaced by the "away" keyword in the presence dataset.
As such, only fall back to legacy RPL_AWAY if CLICAP_PRESENCE is not set on source_p.
2009-06-02 02:17:42 -05:00
William Pitcock
54ff698839 presence: Add CLICAP_PRESENCE.
This will enable broadcasting presence updates on channels.
2009-06-02 02:14:44 -05:00
William Pitcock
4af8bcef59 presence: Replace stagnant free_away() call with delete_metadata(..., "away"). 2009-06-02 02:06:18 -05:00
William Pitcock
884b5d41c1 presence: Remove user.away, replaced by a metadata entry.
Cache the metadata retrieval value where feasible for minimal performance impact.
2009-06-02 02:03:51 -05:00
William Pitcock
45d1f80189 presence: Add m_presence module. This provides an ENCAP s2s interface and lowlevel client interface. 2009-06-02 01:45:43 -05:00
Jilles Tjoelker
aa9c9ed268 Allow ctcp replies through floodcount after ctcp'ing a large group.
A large group is any $$ or $# or a channel with more than
floodcount/2 local members, checked on each server separately.
Note that floodcount checks are done on the sender's server.

The special treatment is active for 15 seconds.
2009-05-17 20:52:16 +02:00
Jilles Tjoelker
d69601a5e2 Rewrite perm xlines containing '",' from local opers (to '"\,').
The change also applies to xlines sent to other servers.
Note that the backslash must be supplied in an unxline.
Incoming xlines containing '",' are rejected to avoid
inconsistency between servers.
2009-05-08 14:42:55 +02:00
Jilles Tjoelker
cc169c9476 Disallow the sequence '",' in perm xlines,
it would cause problems with xline.conf.
2009-05-08 14:27:30 +02:00
Jilles Tjoelker
395935d103 Change \s to space when writing xline.conf, to be compatible with older versions. 2009-05-08 13:40:09 +02:00
Jilles Tjoelker
23a8f750f7 Disallow double quotes in klines.
These could cause parse problems with kline.conf.
2009-05-08 01:50:35 +02:00
Jilles Tjoelker
b0f30fa1ca Disallow commas in channel resvs.
These can never match and could cause parse problems in resv.conf.
2009-05-08 01:23:40 +02:00
Jilles Tjoelker
97c9dd8a26 Change xlines to store spaces as \s.
Spaces in xline.conf files are changed to \s in memory
and recognized on unxline, but are not changed in the
file. New xlines are added to xline.conf files with \s.

xline.conf written by this commit or newer will not work
properly with charybdis older than 1124:131254925f32 (which
introduced \s support in match_esc()).
2009-05-08 00:21:14 +02:00
Jilles Tjoelker
39b23540e3 Stop changing \s to spaces in masktrace and testmask,
match_esc() handles \s directly now.
2009-05-07 23:58:32 +02:00
Jilles Tjoelker
a416ed2e79 Move check for required CAPABs to mr_server -- CAPAB may not be sent.
Also fix exit message.
2009-04-21 18:43:07 +02:00
William Pitcock
c6240d7940 Allow for capabilities to be marked as "required".
If capability negotiation fails on these capabilities, then the server link is dropped.
2009-04-20 09:36:55 -05:00
William Pitcock
5f8d323c59 can_kick hook, based on the ircd-seven one. 2009-04-20 09:20:11 -05:00
Stephen Bennett
9a180ae365 Allow / in spoofed hosts 2009-04-20 08:37:13 -05:00
Jilles Tjoelker
b7b1d686a9 Simplify floodcount checking, it is no longer affected by +g/+R anymore. 2009-04-19 00:04:21 +02:00
Jilles Tjoelker
631b4a542a Use uid/sid for some ERR_CHANOPRIVSNEEDED if they go to a remote client. 2009-04-09 23:45:35 +02:00
Jilles Tjoelker
2ae93813bd Add new topic command ETB, allowing services to set topic+setter+ts always
(provided channelTS != 0).

ETB is controlled by the EOPMOD capab. Fairly complicated
stuff is needed for older servers.

ETB can come from clients or servers, but at this time it
should only be sent from clients, as otherwise it is not
always possible to update older servers.
2009-03-29 17:08:42 +02:00
Jilles Tjoelker
c4d2d01419 Apply +z to messages blocked by +b and +q as well.
This adds a new server capab EOPMOD which will be used
for an extended topic command also.
2009-03-29 15:48:07 +02:00
Jilles Tjoelker
61b7e0d959 Do not send "<blah> is rehashing <blah>" notices to the remote oper. 2009-03-07 16:57:58 +01:00
Jilles Tjoelker
995f300eb1 Allow /rehash throttles to clear throttling. 2009-03-07 01:49:09 +01:00
Jilles Tjoelker
94734aacc6 Correct WHOX overflow check so it also works for fields other than the last.
Found with llvm static analyzer.
2009-03-01 01:58:53 +01:00
Jilles Tjoelker
f93bc39774 Remove some unused variables.
Found with llvm static analyzer.
2009-03-01 01:53:40 +01:00
Jilles Tjoelker
6865c0b099 Add channel::only_ascii_channels config option
to restrict channel names to printable ascii only.
Like disable_fake_channels this only applies to joins
by local users; unlike disable_fake_channels it applies
to opers as well.
2009-02-22 00:12:21 +01:00
Jilles Tjoelker
18fc47e681 Disallow invites to juped channels.
In particular, this is checked when the source is
local and not resv_exempt, or the target is local and
not resv_exempt.
2009-02-06 14:07:03 +01:00
Jilles Tjoelker
53307da8ca Disable autoconnect for a server with excessive TS delta.
Note that in some cases (different TS delta settings,
heavy lag) it is possible only one of the servers
detects the problem and autoconnect may be left enabled.
The mechanism used for disabling is the same as
/quote set autoconn <server> 0; the A flag in /stats c
disappears and a rehash or /quote set autoconn can put
it back.
2009-02-05 23:43:07 +01:00
Jilles Tjoelker
e0f8d70cb2 Remove comments related to (removed) ability to disable TS6. 2009-01-30 16:50:00 +01:00
Jilles Tjoelker
ad08ad1876 For remote rehashes, send error messages to the requesting oper as well. 2009-01-30 00:11:12 +01:00
Jilles Tjoelker
e5b12a6143 Show D:line oper reason in /testline. 2009-01-27 20:20:37 +01:00
Jilles Tjoelker
1e57e391c5 Get rid of local variable shadowing. 2009-01-25 16:26:17 +01:00
Jilles Tjoelker
cb2540a673 commit 1df4ff0b0558e4698819f8e4ac6ecb7654b81a2c
Author: Stephen Bennett <spb@exherbo.org>
Date:   Sun Jan 18 16:30:27 2009 +0000

    Make testline show oper reason and setter information for K:lines, where applicable
2009-01-25 16:23:36 +01:00
Jilles Tjoelker
ff8e6e19e0 Remove some more references to parv[0] in comments. 2009-01-18 21:20:14 +01:00
Jilles Tjoelker
161f040940 Update comments for parv[0] removal. 2009-01-18 18:22:43 +01:00
Jilles Tjoelker
3a17735469 Change /stats O to show privset blocks (oper only).
To show operator blocks, only /stats o (lowercase) now works.
2009-01-18 01:35:24 +01:00
Jilles Tjoelker
3dfaa67120 Replace parv[0] with source_p->name. 2009-01-17 01:18:19 +01:00
Jilles Tjoelker
0a849a8fa9 Do not log ERROR messages from unknowns.
from ircd-ratbox (androsyn)
2009-01-17 00:23:02 +01:00
Jilles Tjoelker
463947ad90 Remove more TS5 remnants. 2009-01-16 23:18:10 +01:00
Jilles Tjoelker
4dd5d304eb Log to serverlog when throwing out a server because of a bad nickname. 2009-01-16 23:10:49 +01:00
Jilles Tjoelker
6c77f1f74f Close the local link that sends a TS5 NICK introduction.
This is no longer supported and was already broken,
sending out a UID message without UID parameter to
other servers.
2009-01-16 23:08:05 +01:00
Jilles Tjoelker
94a84cdd98 Reject SCAN UMODES if invalid parameters are given. 2009-01-16 18:33:38 +01:00