View Issue Details

IDProjectCategoryView StatusLast Update
0005278unrealircdpublic2024-09-09 16:55
ReporterPeGaSuS Assigned Tosyzop  
PrioritynormalSeverityfeatureReproducibilityN/A
Status assignedResolutionfixed 
PlatformUnixOSUbuntuOS Version18.04 LTS
Product Version4.2.3 
Fixed in Version6.1.8 
Summary0005278: Add extban to ban users banned in another channel
DescriptionWe currently have the extban to ban users that are in a channel, with "+b ~c:#channelname".

Would be nice if we could have an extban to ban users banned in another channel (so we can keep some kind of banlist sync across channels registered by the same person.

I was thinking in something like "+b ~b:#channelname" or "+b ~C:#channelname".

The latter goes in hand with the extban "~c" as they're kinda related.

Thoughts?
TagsNo tags attached.
3rd party modules

Activities

syzop

2020-05-17 19:01

administrator   ~0021581

Yeah, I like it.

Only (natural) caveat would be to do this only 1 level, so if the target channel has a ~c as well it should not be processed. Otherwise it becomes too costly in terms of CPU.

syzop

2024-09-08 18:54

administrator   ~0023332

This is now done. Mostly in ee1d6818b403a2d8719076e9700e93763abda0fb and 3c1ef65a0021afa79f33d29c2f1dc862dbb0f9e0

commit ee1d6818b403a2d8719076e9700e93763abda0fb
Author: Bram Matthys <[email protected]>
Date: Sat Sep 7 20:52:01 2024 +0200

    Add +b/+e/+I ~inherit:#channel to inherit channel bans from another channel
    
    Several notes:
    * This only checks on-JOIN (not on nick change, message, etc)
      for performance reasons
    * If the #channel in ~inherit:#channel also contains ~inherit
      entries then those are not processed (no recursion and no looping)
    * Only a limited number of ~inherit entries is permitted.
      This will be moved to set:: items in a future commit so you
      can set different amounts for +b/+e/+I ~inherit.
    * This is work in progress, UnrealIRCd or the entire world could explode
    * Documentation will follow later
    
    Developers:
    * Sadly, clean_ban_mask() needed to be changed to have two more
      parameters, 'ban_type' and 'channel' were added at different positions.
      This because the module needs the ban type (EXBTYPE_BAN, EXBTYPE_EXCEPT,
      EXBTYPE_INVEX) and channel because it rejects based on number of
      existing ~inherit entries in the channel... and while is_ok() is called
      for local clients and has all this information, for services clients
      is_ok() is not called so the only way to reject the +beI is through
      xxx_conv_param() which comes from clean_ban_mask().

[..]
commit 3c1ef65a0021afa79f33d29c2f1dc862dbb0f9e0
Author: Bram Matthys <[email protected]>
Date: Sun Sep 8 17:15:26 2024 +0200

    Add set::max-inherit-extended-bans to configure limits for ~inherit extban:
    
    Looks like this, with the current defaults:
    set {
            max-inherit-extended-bans {
                    ban 1;
                    ban-exception 1;
                    invite-exception 1;
            }
    }

syzop

2024-09-09 16:05

administrator   ~0023336

It seems the +e/+I inherit runs is_banned() instead of checking +e or +I lists.. that's a bug. I may not have time to fix this in the next couple of days, so might be later.

Also, +b ~inherit checks both +b _and_ +e on the target channel. I think that's how users would expect it ("if you are banned there you are banned here") but it kinda makes the +e ~inherit functionality redundant..... well... not really redundant since you could still opt-in to _only_ the +e ~inherit:#chan stuff and not the +b, but... not sure if that is very useful. For +I everything is as expected/fine.

Reopening this bug until I fix at least the first issue :)

syzop

2024-09-09 16:55

administrator   ~0023337

Fixed +I but not the rest.

Issue History

Date Modified Username Field Change
2019-05-16 21:09 PeGaSuS New Issue
2020-05-17 19:01 syzop Assigned To => syzop
2020-05-17 19:01 syzop Status new => acknowledged
2020-05-17 19:01 syzop Note Added: 0021581
2024-09-08 18:54 syzop Status acknowledged => resolved
2024-09-08 18:54 syzop Resolution open => fixed
2024-09-08 18:54 syzop Fixed in Version => 6.1.8
2024-09-08 18:54 syzop Note Added: 0023332
2024-09-09 16:05 syzop Status resolved => assigned
2024-09-09 16:05 syzop Note Added: 0023336
2024-09-09 16:55 syzop Note Added: 0023337