eggheads / eggdrop

The Eggdrop IRC Bot
GNU General Public License v2.0
506 stars 84 forks source link

Setting -dynamicbans should still allow users to remove bans #991

Open TehPeGaSuS opened 4 years ago

TehPeGaSuS commented 4 years ago

Currently, when we have a channel with dynamicbans disabled (-dynamicbans) the bot doesn't let the user, even if the user is +n or +m, to manually remove the ban, reapplying it immediately.

If setting to +dynamicbans then we are able to manually remove any ban before their expire time (120 minutes by default), but that also makes the bot remove the bans after the expire time, which might not be desirable.

This is a bit counterintuitive, and the current behaviour of -dynamicbans should be changed to: allow users to manually remove any ban but, as obvious, the bot won't automatically remove any ban after the expire time.

Cheers.

ghost commented 4 years ago

I've not been able to recreate this anyway, with users and non-users.

Are you sure this isn't down to a script or something else?

Attempted to recreate on 🔢

eggdrop v1.6.21 👎 allowed the ban to be removed eggdrop v1.8.4 👎 allowed the ban to be removed eggdrop v1.9.0+msgtags (github current) 👎 allowed the ban to be removed

TehPeGaSuS commented 4 years ago

User banned in the channel

[00:42:43] .bans #spamtest [00:42:43] <PTirc> [00:42:43] #James# bans #spamtest [00:42:43] <PTirc> Global bans: [00:42:43] <PTirc> Channel bans for #spamtest: (* = not placed by bot) [00:42:43] <PTirc> [ 1] *!*@Gateway/BNC/TheGrid/Kitana (perm)

User joins the channel

[00:43:14] Kitana (Kitana@Gateway/BNC/TheGrid/Kitana) joined #spamtest [00:43:14] Mode #spamtest +b *!*@Gateway/BNC/TheGrid/Kitana by @GroundZero [00:43:15] Kitana was kicked by @GroundZero (Banned: Ban test)

I try to remove the ban manually, with -dynamicbans:

[00:43:54] Mode #spamtest -b *!*@Gateway/BNC/TheGrid/Kitana by ~James [00:43:55] Mode #spamtest +b *!*@Gateway/BNC/TheGrid/Kitana by @GroundZero

Summary

The bot re-sets the ban even if me (as admin) try to remove it, if the channel has -dynamicbans. It should allow me or any user with enough channel access to remove the ban despite the dynamicbans settings

vanosg commented 4 years ago

FWIW, I was able to mimick these behaviors as well. This is something we could probably look into further. In one way, it makes sense that if the user is banned in the Eggdrop, the user should be banned on the channel to prevent them from joining. Eggdrop is trying to enforce that ban list. For the sake of argument, why would you remove the ban from the channel when if the user rejoins, they'll just be banned again? I think that is the approach Eggdrop is taking here. Not saying it's not up for discussion, just that I believe that is the approach that was taken with the banlist enforcement.

TehPeGaSuS commented 4 years ago

For the sake of argument, why would you remove the ban from the channel when if the user rejoins, they'll just be banned again?

I might want to clean the channel banlist from older bans but cherry pick them, because the user might not be seen for some time now, but I still want to prevent them from re-joining if they reappear in a later date.

TehPeGaSuS commented 4 years ago

To make this a bit more understandable and to avoid unnecessary discussions:

On the eggdrop.conf we have set default-ban-time 120, which defines for how long a bot ban (or a manually set ban) is kept active in the channel. (Edit by admin for clarity: ...kept active in the channel, if dynamic-bans is enabled)

If we have +dynamicbans set, after set default-ban-time the bot removes the ban from the channel ban list or allows any user with enough channel access level (note channel, not bot access) to remove it even if the time wasn't expired yet, but keeps it in its internal ban list, so if the user tries to rejoin, they'll be kickbanned again.

If we have -dynamicbans set, the bot doesn't remove any ban after set default-ban-time and it doesn't allow the ban to be manually removed even if the user has enough channel access level (note channel, not bot access) even if the ban was "expired", but it doesn't also allow us to unset the ban (reapplying it immediately), even if the ban isn't set to sticky.

IMHO, the dynamicbans setting should only mean: Do we remove the channel ban after set default-ban-time or not?, but still allow users with enough channel access to remove it manually without reapplying it (unless said ban is marked as sticky).

Hope this makes things a bit more understandable.

Cheers