Ed Kellett
25f673bfde
um_callerid: Use newer common channel iteration
2020-10-21 20:24:40 +01:00
Ed Kellett
f3439650c0
m_cap: Try to append caps even if one is too long
2020-10-19 19:30:43 -04:00
Ed Kellett
738b5d291e
Mint CLICAP_FLAGS_PRIORITY
2020-10-19 19:30:43 -04:00
Ed Kellett
9f9e21dfbe
Kill CLICAP_FLAGS_REQACK
2020-10-19 19:30:43 -04:00
Ed Kellett
e8a8d7a440
Refactor common channel iteration
2020-10-19 20:15:26 +01:00
Ed Kellett
5e413b1372
Use linear channel list comparisons
2020-10-19 20:15:26 +01:00
Ed Kellett
54c7ead605
m_names: honour userhost-in-names for global NAMES
2020-10-19 11:47:08 +01:00
Ed Kellett
a77ebe1ed7
m_dline: don't fail on /dline <time>
2020-10-18 20:14:34 +01:00
Ed Kellett
94613c78b6
Implement the solanum.chat/identify-msg vendor cap
2020-10-16 21:47:38 +01:00
Ed Kellett
a6f63a829e
Innovation by sed
2020-10-15 15:52:41 +01:00
Aaron Jones
59cfd72e68
Merge pull request #355 from edk0/kline-cidr
...
Improve [kd]line handling of invalid IP-like masks
2020-08-06 09:17:00 +00:00
Aaron Jones
9dd128b4da
Merge pull request #288 from edk0/umode-o-split
...
Split oper privs up a bit
2020-08-06 09:07:50 +00:00
Ed Kellett
7f7a433218
m_stats: Remove outdated comment
2020-08-04 22:58:31 +01:00
Ed Kellett
b549e8e80d
m_stats: use oper:privs for /stats O
2020-08-04 22:58:30 +01:00
Ed Kellett
326ecd968b
m_stats: Rework privilege requirements
...
.need_oper is replaced with a generic mechanism for requiring any
privilege. need_admin remains because I think it's the least horrible
way to deal with oper:hidden_admin.
All need_oper requirements have been changed to oper:general
requirements.
2020-08-04 22:58:30 +01:00
Ed Kellett
9039ac0178
m_stats: use designated initializers
2020-08-04 22:58:30 +01:00
Ed Kellett
458c853869
Add auspex:hostname
2020-08-04 22:58:30 +01:00
Ed Kellett
58a490f9a4
Add oper:testline
2020-08-04 22:58:30 +01:00
Ed Kellett
6d5be11fb1
Add oper:privs
2020-08-04 22:58:30 +01:00
Ed Kellett
d4f7eb4ce6
Replace most checks for +o with oper:general
...
I'm preparing to PR a succession of privs changes with the ultimate goal
of severely limiting the scope of the binary oper/user dichotomy and
move conceptually distinct oper functions into their own privs.
Accomplishing this is a non-trivial task, and can wait, but it's
inconvenient now to have such functions enabled by the same mechanism
that grants any privs at all--so I'm moving all of them to a
transitional priv with the intention of eroding that later.
2020-08-04 22:58:30 +01:00
Ed Kellett
24652f2b95
m_stats: Make /stats l respect oper hiding
...
found by @jesopo
2020-08-03 01:23:54 +01:00
Aaron Jones
ad7ecd5cbb
Merge pull request #352 from edk0/grant-oper-data
...
m_grant: zero-initialize struct oper_conf
2020-07-27 17:13:33 +00:00
Ed Kellett
cf0aa42180
m_dline: make apply_undline permissive
...
Trying to find invalid bans won't do anything unless they already exist,
in which case it's legitimate to try to remove them.
2020-07-26 22:50:42 +01:00
Ed Kellett
72464c6abd
m_dline: Make error notices more verbose
2020-07-26 22:50:42 +01:00
Ed Kellett
bf493a3410
m_dline: Abort early if host isn't an IP address
2020-07-26 22:03:20 +01:00
Ed Kellett
7d9e8e9d77
Add error handling to parse_netmask()
2020-07-26 22:03:06 +01:00
Ed Kellett
bd8b9a37be
m_privs: don't leave a damaged privset behind
2020-07-25 23:49:52 +01:00
Ed Kellett
687ec8f766
m_grant: zero-initialize struct oper_conf
...
bug noticed by @xnrand
2020-07-16 17:59:27 +01:00
Simon Arlott
373ba193b8
Merge pull request #351 from ophion-project/upstream/sasl
...
sasl: use mapi_cap_list_v2 correctly
2020-07-12 10:28:02 +01:00
Unit 193
7372db99f2
Fix a couple typos.
...
automaticlly → automatically
completly → completely
permissable → permissible
redunant → redundant
threshhold → threshold
2020-07-11 04:51:22 +00:00
Ariadne Conill
8ad8fd34f5
callerid: fix a missed instance of hardcoded +g
2020-07-10 21:25:25 -06:00
Ariadne Conill
c6e584dd1b
callerid: fix invite case
2020-07-10 18:43:31 -06:00
Ariadne Conill
ace0c8655b
callerid: align soft caller-id behavior with ircd-hybrid implementation
2020-07-10 18:18:28 -06:00
Ariadne Conill
3792c63dc0
sasl: use mapi_cap_list_v2 correctly
2020-07-09 17:47:28 -06:00
Ariadne Conill
92f5320e1d
message: run privmsg_user hook on both source and target
2020-07-09 16:06:56 -06:00
Ariadne Conill
4abf8eb2e6
callerid: actually the guard should be for source_p
2020-07-09 16:06:33 -06:00
Ariadne Conill
4841ad6197
callerid: only check the target's accept list on their own local server
2020-07-09 16:06:33 -06:00
Ariadne Conill
3ed61fba8c
callerid: use public isupport_umode
2020-07-09 16:06:33 -06:00
Ariadne Conill
5d4cce6cc0
callerid: has_common_channels(): fix return value
2020-07-09 16:06:33 -06:00
Ariadne Conill
4d07382c2d
callerid: fix module description
2020-07-09 16:06:33 -06:00
Ariadne Conill
915bb5614b
callerid: unregister usermode +g if usermode +G cannot be allocated
2020-07-09 16:06:33 -06:00
Ariadne Conill
c6edf65411
callerid: use hdata.error where available
2020-07-09 16:06:33 -06:00
Ariadne Conill
fdff78f891
callerid: catch find_umode_slot() failures
2020-07-09 16:06:33 -06:00
Ariadne Conill
db80763427
callerid: use invite instead of can_invite hook
2020-07-09 16:06:33 -06:00
Ariadne Conill
7b60cca0f1
callerid: implement relaxed caller id mode (+G)
2020-07-09 16:06:33 -06:00
Ariadne Conill
7106e36ed3
callerid: fix up isupport
2020-07-09 16:06:33 -06:00
Ariadne Conill
6558648dc3
callerid: don't clobber other modules
2020-07-09 16:06:33 -06:00
Ariadne Conill
921b508b1b
add callerid module
2020-07-09 16:06:33 -06:00
Ariadne Conill
4a9cf86981
message: remove hardcoded +G logic
2020-07-09 16:06:33 -06:00
Ariadne Conill
98ac35197b
invite: remove hardcoded callerid logic
2020-07-09 16:06:33 -06:00
Simon Arlott
ac09f70838
Merge remote-tracking branch 'ophion/upstream/dnsbl-rename'
2020-07-09 20:53:38 +01:00
Aaron Jones
860d2381cf
Merge pull request #345 from edk0/alias
...
m_alias: Preserve protocol framing characters
2020-07-07 09:16:38 +00:00
Aaron Jones
e241d7979c
Merge pull request #346 from edk0/opmod-as-statusmsg
...
Port opmod_send_cprivmsg from ircd-seven, sans naming mistake
2020-07-06 10:52:15 +00:00
Janik Kleinhoff
04e5ed6c57
Make 5614c9e6f0b (opmod as fake statusmsg) optional
...
This adds a channel { ... } option, opmod_send_statusmsg, disabled by
default for compatibility reasons.
2020-07-06 10:36:35 +01:00
Ariadne Conill
3321eef45a
ircd: rename DNSBL entries from blacklist to dnsbl_entry.
2020-07-05 21:20:31 -06:00
Ed Kellett
fff4f76353
Add general::tls_ciphers_oper_only
2020-07-05 23:06:51 +01:00
Ed Kellett
4e14f9a413
m_alias: Preserve protocol framing characters
2020-07-05 01:15:03 +01:00
Aaron Jones
e2ceb48c3e
Merge pull request #343 from xnrand/patch-ison-unreg-conn
...
m_ison: Do not report unregistered connections
2020-06-29 17:36:30 +00:00
Aaron Jones
b41d97e9ab
m_invite: remove redundant block of code missed by review
...
I missed this due to refactoring in #341 . This function is already
called by the same function we're already in, just further down.
[ci skip]
2020-06-27 14:45:02 +00:00
Ariadne Conill
402b21d47a
regonlymsg: use hdata.error where available
2020-06-26 15:36:12 -06:00
xnrand
c345d844e6
m_ison: Do not report unregistered connections
...
Prior to this, m_ison would report a nick as being online if a client
that was not yet registered had chosen this nickname on the same server.
This change adds a check to make sure the struct Client has a
struct User associated with it, i.e. registration has occurred.
2020-06-26 20:36:43 +00:00
Ariadne Conill
2bbfce681f
regonlymsg: catch find_umode_slot() failure
2020-06-26 14:32:46 -06:00
Ariadne Conill
daaf127d84
regonlymsg: use invite instead of can_invite hook
2020-06-26 14:24:34 -06:00
Ariadne Conill
27590ae0b4
invite: revert the ERR_CHANOPRIVSNEEDED change too
2020-06-26 14:24:26 -06:00
Ariadne Conill
e3c27d7dbd
Revert "invite: rework the way can_invite hook is called"
...
This reverts commit ed06fed70a67b0cdd4e53aad575fca7b9d046061.
2020-06-26 14:24:21 -06:00
Ariadne Conill
ddb063e2f9
invite: remove redundant parenthesis
2020-06-26 13:58:00 -06:00
Ariadne Conill
4371dcbd55
invite: rework the way can_invite hook is called
2020-06-26 13:57:22 -06:00
Ariadne Conill
4436a7ca73
regonlymsg: allow messages through if target is not a local client
2020-06-26 13:56:05 -06:00
Ariadne Conill
90e99760a0
regonlymsg: do not clobber the work of other modules
2020-06-26 13:05:50 -06:00
Ariadne Conill
dc5d1d012a
regonlymsg: fix allow_message() return values
2020-06-26 12:03:43 -06:00
Ariadne Conill
968dee680f
modularize usermode +R (registered users only)
2020-06-26 11:56:42 -06:00
Ariadne Conill
ed3b56f965
message: remove hardcoded +R logic
2020-06-26 11:56:41 -06:00
Ariadne Conill
0b8910e40b
invite: remove hardcoded UMODE_REGONLYMSG code
2020-06-26 11:56:40 -06:00
Aaron Jones
01ef07c1c8
Merge pull request #333 from edk0/privs-multiline
...
m_privs: break long responses into multiple lines
2020-06-26 16:55:56 +00:00
Aaron Jones
b804829aa4
Merge pull request #340 from ophion-project/upstream/hook-channel-lowerts
...
join: add channel_lowerts hook
2020-06-26 16:51:52 +00:00
Ariadne Conill
13a16b28cb
join: add channel_lowerts hook
2020-06-26 10:29:29 -06:00
Aaron Jones
6d58b1d38e
Merge pull request #334 from edk0/massnotice
...
Remove the massnotice wildcard restriction
2020-06-25 17:42:43 +00:00
Aaron Jones
9d65d599c4
Merge pull request #322 from edk0/invite-umode-g
...
m_invite: Don't punch through +g
2020-06-25 17:37:04 +00:00
Ed Kellett
8e1e48e114
m_kline: insert a safety zero early
2020-06-25 12:43:57 +01:00
Ed Kellett
f0e4d607c9
m_invite: Don't punch through +g
2020-06-21 14:08:24 +01:00
Aaron Jones
3ef1213be4
Merge pull request #335 from edk0/post-registration-delay
...
Import post_registration_delay from ircd-seven
2020-06-21 12:56:56 +00:00
Stephen Bennett
b3a0099139
Rename connect_delay to post_registration_delay. This matches the ircd-ratbox feature, and better describes what it actually is. Also make sure to set localClient->firsttime on registration, so that the delay counts from the right time.
2020-06-07 19:22:36 +01:00
Stephen Bennett
2d6562846f
Initial attempt at the conndelay hack
2020-06-07 19:22:36 +01:00
Ed Kellett
d819df92b8
Remove the massnotice wildcard restriction
2020-06-07 18:10:51 +01:00
Ed Kellett
7e1a68eaf8
m_privs: break long responses into multiple lines
2020-06-07 00:43:06 +01:00
Ed Kellett
260fc2cc34
Add client_quit hook
2020-05-23 19:10:07 +01:00
Ed Kellett
91ccda4f8c
Fix invite-notify and move it to an extension
...
The existing approach to invite-notify is deeply flawed--it currently
notifies only the target user's server, and that can't be fixed without
sending notifies for invites that end up not happening.
I'm resolving this by broadcasting a second message, INVITED, from the
target user's server. I'm also pulling it out into an extension while
I'm at it--invite notifies reveal new information, so I don't think
they should be mandatory.
2020-04-30 18:17:00 +01:00
Ed Kellett
e0622d7519
m_invite: Add hooks
...
can_invite is called on the source server, can override channel access
invite is called on the target
2020-04-30 18:16:59 +01:00
Ed Kellett
a7d4a0ab81
Centralise banmask matching logic
2020-04-12 12:35:18 +01:00
Ed Kellett
7b6410135b
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.
2019-11-17 18:01:51 +00:00
Ed Kellett
20276d4011
m_motd: don't ratelimit with no server argument
2019-09-15 20:05:51 +01:00
Ed Kellett
e902e16974
m_stats: don't ratelimit with no server argument
2019-09-15 20:05:51 +01:00
Ed Kellett
b143f5e3bd
m_grant: match "deoper" case-insensitively
2019-09-15 00:35:55 +01:00
Ed Kellett
ebd0f4db7a
m_grant: remove a confusing line
2019-09-15 00:35:55 +01:00
Ed Kellett
7f373431d0
m_grant: use AV2
2019-09-15 00:35:55 +01:00
Ed Kellett
910f883959
m_grant: propagate privset changes
2019-09-15 00:35:55 +01:00
Ed Kellett
bdc87b5f37
m_grant: maintain privilegeset refcounts
2019-09-15 00:35:55 +01:00
Ed Kellett
6119faa9a0
charybdise m_grant
2019-09-15 00:35:55 +01:00
Ed Kellett
c1649fd04d
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.
2019-09-15 00:35:55 +01:00
Ed Kellett
ed3ca2ff16
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]
2019-09-13 10:08:27 +01:00