A248 / LibertyBans

The be-all, end-all of discipline.
https://ci.hahota.net:8443/job/LibertyBans/
GNU Affero General Public License v3.0
168 stars 42 forks source link

[Feature Request]: Smart/Sticky Player Punishments #196

Open TheMattVid opened 1 year ago

TheMattVid commented 1 year ago

I have confirmed that ...

Description

This would be a configurable option. When enabled, any time an account logs on and is restricted from joining due to bans to another player/IP address, the plugin will automatically assign a player ban to the player who attempted to join.

This applies to:

For all intents and purposes, if an account that isn't banned logs in and would see a LibertyBans ban message due to connections to a prior banned user or IP (depending on the configuration of the LibertyBans user), LibertyBans will assign a player ban to that new account that just attempted to join.

Other potential considerations: Will the ban message for the newly banned player display (1) the same ban reason of the previously banned player, will it say (2) "ban evasion", or will it say (3) "ban evasion, : "? That could also potentially be another configurable option.

A248 commented 1 year ago

My only concern regards undoing such a network of sticky punishments. Let's say you decide a player was unjustly banned. Now, it is necessary to remove all the sticky punishments arising from it. If they are entirely separate punishments, this cannot be done correctly, since we cannot distinguish from a copied sticky punishment versus a pre-existing punishment on the other users sharing the same IP address.

To solve this, we could easily add a tag to the punishment which identifies it as sticky and traces back to the original punishment. However, that would make the sticky punishments feature identical to strict punishments.

Therefore, perhaps, we ought not to call this a separate feature, but instead to consider it as an alternative implementation to strict punishments that maintains feature-equivalency.

TheMattVid commented 1 year ago

You make a good point. I have quite a few players who have joined from the Philippines. It seems like ISPs there reuse IP addresses a lot, as I have seen the same IP cycle across totally separate players. That has been one difficulty with the strict bans as it is, as I have had to unban a banned player to allow the legitimate player to join since connection will always be prevented due to the shared IP, despite the legitimate player not having a ban assigned to that account. I confirmed with 100% certainty that it wasn't actually an alt, since the legit player had a new IP address each day, and they only suddenly connected with the IP of a banned player over a month after the banned player last connected.

I think you are right that there would need to be some sort of sticky tag/flag assigned to each applicable user and IP to make unbanning feasible. Perhaps upon running an unban on a player with a sticky ban, it will also unban the IP that that player most recently connected with, since the idea behind unbanning would indicate that the IP is a potential source of legitimate connections.