Commit graph

51 commits

Author SHA1 Message Date
Elizabeth Jennifer Myers
765d839d3c Port ircd-seven banfowards to charybdis.
nenolod gave the thumbs-up to port ircd-seven banfowards to charybdis to spb
for a while, and people have asked about it. Might as well do it since it's a
slow weekend.

Note that as a side effect use_forward is removed from the config and
unconditionally enabled!
2011-08-12 20:33:10 -04:00
Elizabeth Jennifer Myers
7eec45bc9d Back out chanroles.
While what chanroles are trying to accomplish is a good idea, it is
apparently unclear this is the proper way to do it. Until we figure out
the exact way we wish to do this, it should be reverted for now.
2011-07-07 21:24:14 -04:00
Elizabeth Jennifer Myers
e794d39a80 Add client interface for GRANT.
TODO: implement notifications of grant privilege changes to the target.
2011-07-06 17:25:26 -04:00
William Pitcock
f3bfe2c271 chanroles: instead of checking for chanop + CHANROLE_UNSET combination, grant a default set of flags.
this allows ops with zero effective privilege.
2011-07-06 15:12:46 -05:00
Elizabeth Jennifer Myers
8aabb973c0 Implement chanroles, as discussed with nenolod.
The theory behind this is that services sends an ENCAP * GRANT #channel
UID :+flagspec message specifying the chanroles the user has. They are
mapped into flag bits and applied to the membership of the user. They
then are restricted or permitted to what they can do based on the
permissions mask regardless of rank.

For backwards compatibility, the default permission bit (without a GRANT
statement) allows a user to to anything an existing op can do ONLY if
they are an op.

Todo: make CHANROLE_STATUS work (the ability to apply +ov to people),
which is at the moment controlled by CHANROLE_MODE.
2011-07-06 13:46:22 -04:00
Jilles Tjoelker
fa0e215255 Tweak previous commit to avoid problems with OMODE.
Do not allow a user to op themselves if they are
already opped, as "already opped" could be because
of OMODE's hack which will be unconditionally
reverted after the mode change.

Also, this matches old behaviour for users not
being able to generate mode changes redundantly
opping themselves.

Note that this change should only be taken advantage
of if all servers run patched code. Otherwise, mode
changes will be silently dropped and a desync
results.
2010-12-31 02:43:16 +01:00
William Pitcock
402cce0b9c Remove stupid hybrid-esque 'impossible to op yourself' hack.
Who the fuck thought that check was a good idea?
2010-12-30 19:21:14 -06:00
William Pitcock
96d2612765 Don't bother running the get_channel_access hook if the client is not really on the channel. 2010-12-14 23:04:11 -06:00
William Pitcock
3c52f289b1 Actually make get_channel_access() public. 2010-12-07 00:12:36 -06:00
William Pitcock
749d8c11dd Add a hook for get_channel_access(). 2010-12-06 22:57:28 -06:00
William Pitcock
83b72f917a chmode: Remove chm_regonly, a vestige from ratbox which doesn't apply to native charybdis networks. 2010-12-06 22:46:37 -06:00
Jilles Tjoelker
6917ed0eba Send only one ERR_MLOCKRESTRICTED per MODE command.
This agrees with other error messages from MODE.
2010-08-24 23:03:23 +02:00
William Pitcock
6fb6bd15ae Enforce TS rules on MLOCKs. 2010-08-23 20:22:59 -05:00
William Pitcock
01ed04abaf Send numeric 735 on MLOCK policy-restricted mode changes that are ignored. 2010-08-23 19:04:46 -05:00
Stephen Bennett
6b8db2daf2 Allow the final parameter of MLOCK to be empty, to remove an existing mlock 2010-05-02 20:42:46 +01:00
Stephen Bennett
78e6b731e4 Rework ircd-side MLOCK enforcement: instead of trying to track modes locked on or off, instead keep a simple list of mode letters that are locked, and reject any change to those modes. 2010-04-30 22:01:21 +01:00
Jilles Tjoelker
19716b9fd6 New custom channel mode API allowing reloading such modules.
Additionally, attempting to use too many modes or two times
the same letter is now detected and prevented.

Modules now request that a channel mode be added/orphaned,
instead of ugly manipulation from which that request had
to be guessed.

Slight changes are needed to modules that provide channel modes.
From the old API, one important function has been made static,
the other important function has been renamed, so loading old
modules should fail safely.
2010-04-01 01:16:16 +02:00
William Pitcock
f02f338b31 chm_simple(): enforce MLOCK 2010-03-07 23:15:52 -06:00
William Pitcock
8727cbe88a Add propagation of MLOCK state for simple modes.
Special modes like +j can be tracked easily just by adding the necessary
code to parse them to set_channel_mlock().  This will cover propagation
as well.
2010-03-07 23:13:39 -06:00
Alexander F?r?y
51027be825 Use RPL_QUIETLIST and RPL_ENDOFQUIETLIST instead of RPL_BANLIST and
RPL_ENDOFBANLIST for channel mode +q.
2010-02-27 01:08:41 +01:00
William Pitcock
2e918bf515 Merge +C (no CTCP to channels) from ircd-seven. 2010-01-19 02:11:04 -06:00
Stephen Bennett
179f024d18 / is a host character and not a nick character, so make pretty_mask treat it as such 2009-04-20 08:42:41 -05:00
Jilles Tjoelker
a33bdd9fb6 Remove obsolete comment. 2009-01-25 21:02:04 +01:00
Valery Yatsko
acdf71d9d2 A very draft version of extensions, which are adding can_join hooks for custom channel modes 2008-07-27 12:10:48 +04:00
Valery V Yatsko
c18cb68b91 Generating cflags bufs dynamically: one for RPL_MYINFO and one for
supported.c
2008-06-25 07:51:32 +04:00
Valery V Yatsko
9bec26cc38 Merged find_orphaned_cflags and construct_noparam_modes in one function
as there's no reason to use them separetly
2008-06-25 07:13:58 +04:00
Valery V Yatsko
f588b95674 New way of noparam mode search 2008-06-24 22:21:26 +04:00
Valery V Yatsko
cbed45a2da New orphaned cflags implementation, now using chm_orphaned instead of
storing orphaned flags in a variable
2008-06-24 22:00:41 +04:00
Jilles Tjoelker
d463189921 Fix some tracking for cmode +r. 2008-06-25 19:40:12 +02:00
Jilles Tjoelker
84c9a8c7be Fix limits on simple modes.
Formerly some mode strings like +svvvv were not accepted.
2008-06-25 19:27:30 +02:00
Valery V Yatsko
46d59e1138 A draft version of find_cmode_slot and orphaned concept for channel
flags
2008-06-24 21:26:49 +04:00
Valery V Yatsko
efccc22c27 Applying dyn-cmodes.diff - first step in implementing channel module
addition in extensions
2008-06-24 20:45:19 +04:00
Jilles Tjoelker
2e819b6b3e Fix various compiler warnings. 2008-04-20 15:20:10 +02:00
Valery Yatsko
4562c60489 irc_string.h -> match.h, irc_string.h; includes changed 2008-04-20 09:47:38 +04:00
Valery Yatsko
cbe4e1ba31 legacy irc sprintf gone 2008-04-20 09:12:09 +04:00
Valery Yatsko
f427c8b00d strlcpy -> rb_strlcpy 2008-04-20 08:40:40 +04:00
Valery Yatsko
c84557ac70 chm_* declarations gone to chmode.h - this makes some modules clean 2008-04-08 23:39:35 +04:00
William Pitcock
4016731b1c s_log.* -> logger.* (s_foo looks ugly, lets try to get rid of it) 2008-04-02 21:52:01 -05:00
Valery Yatsko
e335494516 CurrentTime -> rb_currenttime(); 2008-04-02 03:53:20 +04:00
Valery Yatsko
81af5bcb39 libcharybdis includes gone. 2008-04-02 02:39:19 +04:00
William Pitcock
5cefa1d6c8 macro replacement 2008-04-01 15:43:10 -05:00
William Pitcock
330fc5c10c dlink -> rb_dlink 2008-04-01 15:41:52 -05:00
William Pitcock
b2f0da886e ircs[n]printf -> rb_s[n]printf 2008-04-01 15:38:40 -05:00
William Pitcock
aed5ce90a5 Remove CHFL_DEOPPED entirely.
Since charybdis 2.3 will require TS6, emulating legacy semantics is
unnecessary.
2008-02-27 14:08:27 -06:00
Jilles Tjoelker
1ef5b43053 Require resv oper privilege to set cmode +L or +P. 2007-12-18 00:24:05 +01:00
jilles
832942858c [svn] Fix desyncs with very long extbans. Bans can now be upto 195 chars long. 2007-11-07 15:45:14 -08:00
jilles
fd488ac17a [svn] Use mask_match() to check bans from local clients for
redundancy. This fixes the problem that bans like *!?@*
prevent any ban starting with *!*@ being set.
2007-07-14 06:34:50 -07:00
jilles
94d53e53a4 [svn] add_id() for local client: do not collapse() the ban mask.
The code calling this already collapses the mask, and if
not, doing it here would cause a desync.
2007-07-14 05:20:48 -07:00
jilles
1178125363 [svn] Put "End of Channel Quiet List" instead of
"End of Channel Ban List" for a +q list.
Due to client restrictions the numerics for
quiet lists must be the same as for ban lists.
2007-02-21 11:52:51 -08:00
nenolod
5366977b4f [svn] Backport from early 3.x:
--
nenolod     2006/09/27 16:39:14 UTC	(20060927-2178)
  Log:
  - remove "Processing connection to foobar.net" message


  Changes:	Modified:
  +0 -3		trunk/src/s_auth.c (File Modified)


nenolod     2006/09/27 16:34:26 UTC	(20060927-2176)
  Log:
  - missed the processing connection one (actually, we can probably nuke this one)


  Changes:	Modified:
  +1 -2		trunk/src/s_auth.c (File Modified)


river       2006/09/27 16:33:05 UTC	(20060927-2174)
  Log:
  get_client_name = stupid



  Changes:	Modified:
  +10 -7	trunk/modules/core/m_kill.c (File Modified)


nenolod     2006/09/27 16:32:37 UTC	(20060927-2172)
  Log:
  - remove excessive arguments


  Changes:	Modified:
  +1 -2		trunk/src/s_conf.c (File Modified)
  +1 -1		trunk/src/s_user.c (File Modified)


nenolod     2006/09/27 16:30:59 UTC	(20060927-2170)
  Log:
  - use sendto_one_notice() for on-connect notices too.


  Changes:	Modified:
  +10 -10	trunk/src/s_auth.c (File Modified)


nenolod     2006/09/27 16:27:01 UTC	(20060927-2168)
  Log:
  - use sendto_one_notice() in the core, too.


  Changes:	Modified:
  +2 -2		trunk/src/chmode.c (File Modified)
  +8 -15	trunk/src/modules.c (File Modified)
  +3 -5		trunk/src/s_conf.c (File Modified)
  +1 -2		trunk/src/s_newconf.c (File Modified)
  +20 -57	trunk/src/s_user.c (File Modified)


river       2006/09/27 16:19:25 UTC	(20060927-2166)
  Log:
  the KILL command will use get_client_name(, SHOW_IP) instead of
  target->name, and will show a more useful error for local opers



  Changes:	Modified:
  +6 -4		trunk/modules/core/m_kill.c (File Modified)


nenolod     2006/09/27 16:09:48 UTC	(20060927-2164)
  Log:
  - fix bugs in sendto_one_notice()/sendto_one_numeric() where a client identifier won't be sent to unregistered clients


  Changes:	Modified:
  +4 -2		trunk/src/send.c (File Modified)


nenolod     2006/09/27 16:05:46 UTC	(20060927-2161)
  Log:
  - back out r2159


  Changes:	Modified:
  +1 -1		trunk/include/client.h (File Modified)


nenolod     2006/09/27 16:04:05 UTC	(20060927-2159)
  Log:
  - get_id(): fall back to "*" if client has no known name


  Changes:	Modified:
  +1 -1		trunk/include/client.h (File Modified)


nenolod     2006/09/27 16:01:29 UTC	(20060927-2157)
  Log:
  - convert to sendto_one_notice().


  Changes:	Modified:
  +2 -3		trunk/unsupported/m_clearchan.c (File Modified)
  +4 -6		trunk/unsupported/m_force.c (File Modified)


nenolod     2006/09/27 15:57:11 UTC	(20060927-2155)
  Log:
  - use sendto_one_notice() in many places instead of
sendto_one(source_p, ":%s NOTICE %s :", ...);


  Changes:	Modified:
  +10 -25	trunk/extensions/example_module.c (File Modified)
  +5 -14	trunk/extensions/hurt.c (File Modified)
  +1 -2		trunk/extensions/m_42.c (File Modified)
  +7 -12	trunk/extensions/m_mkpasswd.c (File Modified)
  +1 -2		trunk/extensions/m_ojoin.c (File Modified)
  +1 -2		trunk/extensions/m_opme.c (File Modified)
  +3 -3		trunk/extensions/spy_whois_notice.c (File Modified)
  +3 -3		trunk/extensions/spy_whois_notice_global.c (File Modified)
  +3 -7		trunk/modules/core/m_die.c (File Modified)
  +2 -4		trunk/modules/core/m_kill.c (File Modified)
  +2 -2		trunk/modules/core/m_squit.c (File Modified)
  +1 -2		trunk/modules/m_challenge.c (File Modified)
  +11 -15	trunk/modules/m_connect.c (File Modified)
  +20 -28	trunk/modules/m_dline.c (File Modified)
  +2 -2		trunk/modules/m_etrace.c (File Modified)
  +11 -21	trunk/modules/m_gline.c (File Modified)
  +2 -4		trunk/modules/m_kline.c (File Modified)
  +1 -2		trunk/modules/m_rehash.c (File Modified)
  +3 -7		trunk/modules/m_restart.c (File Modified)
  +31 -45	trunk/modules/m_set.c (File Modified)
  +2 -4		trunk/modules/m_testmask.c (File Modified)
  +5 -8		trunk/modules/m_unreject.c (File Modified)
  +2 -5		trunk/modules/m_xline.c (File Modified)
--
2007-01-24 23:23:01 -08:00