IPCompare[CodeEx]
IPCompare is CodeEx's second plugin publicly released on dev.bukkit.org. This plugin is meant to allow server owners and staff to check/compare player's ips, list every ip a user has logged in from and check if accounts have logged on from the same ip. It also limits the number of connections allowed from one ip and warns allowed players of connections from same ips. This is just a way to help stop griefers with multiple accounts.
Features:
- Check the ip of a player on line with a simple command
- Compare and see how many accounts use the same ip
- List all ip addresses associated with a player's account
- List all ip addresses that have connected to the server since the addition of the plugin
- Get warned of duplicate accounts on login
- Limit the number of accounts that can connect from an ip
- Excludes ops and players with granted permission from limitations of ip or account number
- Very lightweight
Commands and permissions:
- /compare [player ip] - Shows you all the players in the list with the specified ip.
- /iplist [page index] - Lists all the players in the IPCompare player list.
- /ip [player] - Shows you the ip of the player specified if he is online.
- /listips [player] - Lists the ips that the specified player has logged in from.
- /warntoggle [player] - Adds or removes the player to the list of player that are warned when people login with same ip as others.
- /purgeip [player] - Removes all entries of a player from the list.
Permission:
- ipcompare.admin - Gives permission to all commands from this plugin.
- ipcompare.warn - Warns the player of an account logging in from an ip that is already listed.
- ipcompare. nolimit - Exclude the player from any limitation of ips or account number.
- ipcompare.* - Gives the player all the above permissions.
Configuration
- limit-type: - The type of account limit to use. Parameters:
- none - (default value) Does not limit accounts per ip
- online - Limits the number of accounts that can be online at the same time per ip
- general - Limits the number of accounts that can join the server from one ip. Once you log in from one account, other accounts can't.
- max-number-connection-from-ip: - The limit of accounts per ip. (disconsidered if limit-type is none) Takes in a number
- Database: Still not implemented wont make any difference if you edit it.
- message-language: choose the language for the kick message. options: EN - english / DE - dutch / FR - french / GE - german / IT - italian
How to install:
Download the IPCompare.zip and extract it to you plugins folder if you do not already have the plugin. If you do have the plugin add the files that are missing from the IPCompare folder and overwrite the config.yml and IPCompare.jar with the ones in the zip file.
Changelog:
- Version 0.1- released by uruhax
- Initial release of plugin
- Version 0.2- released by uruhax
- Added pages to the /iplist command. New usage is /iplist <page_index>
- Version 0.3- released by uruhax
- Added a function that limits the number of account per ip based on configuration.
- Added a function that warns ops or players with permission node of accounts logged in on the same ip.
- Added Config file.
- Added new permission node "ipcompare.warn". Warns the player of accounts logged in on the same ip.
- Version 0.4- released by uruhax
- Added permission node ipcompare.nolimit - Let's the player login to the server without any limitations for ip or accounts.
- Added permission node ipcompare.* - Give the player ipcompare.admin ipcompare.warn and ipcompare.nolimit
- Version 0.5- released by uruhax
- Added /warntoggle command to remove/add a player to the list of players that are warned when two account from the same ip log in. Usage: /warntoggle [player name]
- Version 0.6- released by uruhax
- Fixed some bugs.
- Version 0.7- released by uruhax
- Added a /purgeip command that removes all entries of a player in the list usage: /purgeip <player_name>
- Fixed /warntoggle command errors
- Added an option in the config for language and database usage. (database usage is not functional yet)
- Language files must be added to the IPCompare folder in the plugins folder manually and the config must be switched with the one in the rar then changed as you want it.
To-do list:
- Give suggestions :D
Known bugs:
Everything that has been reported was fixed. If you find anything else be sure to tell :D
@goldseed
thanks for good feedback!
Wonderful plugin...!!!
Thanks a lot..
and
works perfectly..!
@uruhax
I suppose what I am suggesting is, with the groundwork already laid with this plugin, you can get it to work on both an IP-based and account-based level, locally.
My issue is that I've got people on my Factions server who share alternate accounts amongst an entire faction for the purpose of artificially raising their total faction power. Let's say Player1 has the IP 1.1.1.1 and Player2 has the IP 2.2.2.2. Player1 goes onto an alternate account called Player3. If Player2 then tried to log on the account Player3, they will be denied because the IP 1.1.1.1 (which is associated with it) is already associated with another player, locally, on the server. Therefore, the act of "sharing accounts" is completely denied. However, should Player1's IP change to 1.1.1.2, because he has a dynamic IP, he can still freely log on to Player3, because his last IP to access it (1.1.1.1) is no longer associated with any other account on the server.
I think an "anti-sharing" module like that one would really add a lot to an already-quality plugin like this.
@Crayder
Online will only allow the limited number of players on the server at the same time and general will only let the limited number of players ever. If it is 1 and you login, your account is the only one that can access it from that ip. It does not disable the sharing of accounts however, there's no way to disable sharing of accounts because we can't track the people and who they give their password to. I have a dynamic ip and the plugin works with me. This plugin doesn't limit accounts, only ips. What you require isn't completely possible with this plugin.
First of all, let me make sure I understand the limit types. Using "online" will disconnect people "dual boxing", using "general" virtually lock an account a single IP, and using "max-number-connection-from-ip" will lock IPs to a certain number of accounts.
For example, if I use "general" then this means that once my IP accesses an account, it is locked as mine. Only my IP can access it. With this method, I can use alternate accounts, but the alternate accounts cannot have another IP associated with it already.
If I use "max-number-connection-from-ip" and set it to 3, that means that each individual IP can use 3 different accounts, even if some other IP has already accessed an account.
Basically, here's what I want to achieve: I want to allow players of my server to only be able to use ONE account, but I understand the potential of users who have family members playing and/or a dynamic IP address. Basically, if the IP they are using right now is not associated with any other account on the server, then they should be able to safely log on ONE account. If their IP changes dynamically, that IP won't be associated with any other account so they'll still be able to use their account without any problem.
Is this possible at all?
@craftopia
Thank you :D awaiting your ticket.
@Crayder
I'll add a config that turns off the warning system. And yes that is a practical usage of the plugin, you just have to set the limit-type config to 'online'. I am currently working on a way to exclude players from limitation. I wont have time to do it today or tomorrow though.
Awesome! Great work! One more suggestion but I will add it as a ticket :)
Oh, also. I want to limit players to ONE account on my server, but some players are family members. Can you make a way to exclude certain IPs/players from the limitation?
Is there a way to turn alternate account messages off? Basically, I want to use this in unison with MCBans. MCBans tells you GLOBAL alts of a user. I want this plugin so that I can limit users not of GLOBAL alts, but alts that they use LOCALLY on my server. Is this a practical usage of the plugin?
@mcheaven
I added a /warntoggle command that add/removes the player from the warned list that should solve the spam problem for you. I am aware of the problem with ipcompare.nolimit and trying to fix it. For now the only way to ignore limits is by being op.
ipcompare. nolimit isnt working for me
please add something like a spamprotection because many players that have the same op like 10 other players are trying to login more than 10 times in 20 seconds -.-
@uruhax
antimulti is doing the same so you could work with the author of antmulti...
@kozzy68
I'll think about adding support to authentication plugins like xauth and authme and i'll report back if i think it's possible.
@uruhax
It can work on offline server as it is and its even more help on such serv but only limitation is that every one can connect as any username and only after that it will log in with his password using /login command. So only ips that should be considered are those where player was also able to /login not only connect. There are 2 main plugins that are used for that xauth or authme. Yours plugin would have to be able to read this login events. I was able to extract login event from server logs and Im using MS access db to filter it was quite easy.
@kozzy68
I can exclude ips from the limit by permission, for example every player with the ipcompare.nolimit permission or operators will not be limited. Doing that now.
Is it possible to exclude admin ip from multi accounts rule ? Also it would be nice if you can add functions like LimitIP plugin to alow accounts tie to specified ips only.
Th.
@Crayder
Yes, now you can limit them to only being able to login from a number of accounts on the same ip. You can modify that number in the config file. And you can also make it limit by online accounts status or in a more strict way only letting the first account to login from an ip login from that ip again.
@uruhax
Wow, awesome. So let me try understanding how this works: If one person (the same IP) logs on using multiple accounts, you can now limit them to only being able to login from a certain number of accounts?