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
Exactly what I was looking plugin, have a question on the old Ips be deleted, overwritten or do they exist?
And of course, please continue to work on the plugin (1.8 UUID)
OMFG this plugin works again! XD yaaaay <3
that good plugin
Could you give me the source code? Would like to check out how checking IPs is done :P
@lord0o
It works on 1.5 for me.
Update to 1.5 please :)
Hey, How is it going with the database-support? Also, could you add a node to exlude a player from the IPCompare so it doesnt get logged?
It Still works with 1.4.6
not anymore.. (0.3 killed ALL plugins, with no exceptions.)
Though, this is still working on 1.4.5 0.2
Please dont let this one die please! please please please! update!
Does it still work on 1.4.5 ?
We're using this plugin on our server due to an incident with an annoying hacker wannabe, and I have a suggestion. Can an option to show single accounts connecting with a large number of IPs be added? This person is using dynamic IPs or a VPN or something to get around IP banning, and being able to identify what accounts are using something similar would help our investigations.
I kinda start noticing odd behaviour lately with bukkit 1.3.2 R1.1 dev build. When players login, and they are denied, they still kinda login.. even though they cant play, their character stays online, and it fills up player slots of the server. I was wondering if there is anything that could be done to prevent this? anyone has tips?
Working fine in 1.3.2 R1.0 as well Though i am seriously hoping this one wont die.. our server well.. we cant run without this!
Working in 1.3.1
good plugin men!
it work whit CB 1.2.5 R:3, at least in my server ;)
Update please!
This plugin is I'd say unique, but please....keep it alive... :/
How about 1.2.5?
Don't let this plugin die! Please!
Please dont let this plugin die. I dont know why but each ip comparing plugin dies and some new will strart from scratch adding features slowly and when its mature itd dies.
and btw I get this when some dupl player joins: 2012-04-09 13:23:27 [INFO] [IPCompare] 0.7: The player test has the same ip as Admin 2012-04-09 13:23:27 [SEVERE] Could not pass event PlayerKickEvent to AuthMe org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:303) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459) at net.minecraft.server.NetServerHandler.disconnect(NetServerHandler.java:136) at org.bukkit.craftbukkit.entity.CraftPlayer.kickPlayer(CraftPlayer.java:220) at net.insomniacraft.IPCompare.listeners.IPComparePlayerListener.onPlayerJoin(IPComparePlayerListener.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459) at net.minecraft.server.ServerConfigurationManager.c(ServerConfigurationManager.java:132) at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:129) at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:94) at net.minecraft.server.Packet1Login.handle(SourceFile:68) at net.minecraft.server.NetworkManager.b(NetworkManager.java:229) at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:48) at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:61) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:551) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:449) at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) Caused by: java.lang.NullPointerException at org.bukkit.craftbukkit.inventory.CraftInventory.setContents(CraftInventory.java:59) at uk.org.whoami.authme.listener.AuthMePlayerListener.onPlayerKick(AuthMePlayerListener.java:541) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ... 22 more 2012-04-09 13:23:27 [SEVERE] Could not pass event PlayerQuitEvent to AuthMe org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:303) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459) at net.minecraft.server.ServerConfigurationManager.disconnect(ServerConfigurationManager.java:179) at net.minecraft.server.NetServerHandler.disconnect(NetServerHandler.java:158) at org.bukkit.craftbukkit.entity.CraftPlayer.kickPlayer(CraftPlayer.java:220) at net.insomniacraft.IPCompare.listeners.IPComparePlayerListener.onPlayerJoin(IPComparePlayerListener.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459) at net.minecraft.server.ServerConfigurationManager.c(ServerConfigurationManager.java:132) at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:129) at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:94) at net.minecraft.server.Packet1Login.handle(SourceFile:68) at net.minecraft.server.NetworkManager.b(NetworkManager.java:229) at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:48) at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:61) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:551) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:449) at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) Caused by: java.lang.NullPointerException at org.bukkit.craftbukkit.inventory.CraftInventory.setContents(CraftInventory.java:59) at uk.org.whoami.authme.listener.AuthMePlayerListener.onPlayerQuit(AuthMePlayerListener.java:493) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ... 23 more 2012-04-09 13:23:27 [INFO] Fetching addPacket for removed entity: CraftPlayer{name=test}