IP-Check
A typical IPC Report for a player with multiple accounts...
My staff wanted a way to check for players who were using multiple accounts easily, especially those who like to bypass bans. So, my solution to their dilemma was this plugin.
With IP-Check, you can log every account a user ever makes, across every IP, and keep track of them all. It supports cross-IP logging, as well as account limiting and filtering. Don't like it when people have more than one account? Stop them! IP-Check comes with Secure Mode, in which you can define a number of accounts that players can have. Players may then have up to that many number of accounts, and any other accounts will not be permitted to join, even across different IPs! Or, for an added effect, it can even ban the account.
IP-Check can also notify you whenever a multi-accounter logs into your server. Simply set the number of accounts players may have, and any time a player logs on with more than that number of accounts, you'll receive a warning about it. If they are in violation of your rules, you can ban them! But banning each account one at a time is long and time-consuming. With IP-Check, we've summed that all up into one simple command. When issued, IP-Check will take the players IP, ban all the accounts linked to it, and then ban the IP itself. Or if you've accidentally banned the wrong account, there's a command to unban them all as well.
IP-Check supports logging with MySQL and SQLite. It has no external dependencies, and installation is as simple as dragging and dropping the plugin file and restarting your server.
Login Notifications with Simple Notifications enabled
Reporting Plugin Issues and Bugs:
All issues are now handled through GitHub. If you would like to report an issue, please visit the GitHub Issue Tracker.
Support is currently only offered for IP-Check v2.x (build 2053+). It is recommended that you update to the latest build and enable Automatic Updates so that you may receive bug fixes and patches as they are released. No support is offered for any build of IP-Check v1.x. Support is NOT offered for IP-Check v3.0.0 or v3.0.1.
NOTICE: If you are receiving messages in IPC Reports about GeoIP Services not being available, you need to download the GeoIP Database from MaxMind.com and copy it to the data folder for IP-Check. It can be downloaded from this link: GeoIP (Note, you need extract the .gz file using WinRAR or 7-Zip.)
Metrics Usage Disclaimer:
This plugin utilizes Metrics in it's code. Metrics is a system which records anonymous data about the usage of the plugin and reports it to mcstats.org where it is displayed publicly. This information cannot be used to identify your server in any way. The information collected includes but is not limited to; the version of IP-Check you are using, what version of Java you have, what operating system you are running, whether your server is online or offline, and the number of players on your server. If you would like to see the information Metrics has collected, you can view it here: Metrics Profile
Questions or Comments? Post them below! All feed-back is appreciated.
Care to donate?
A lot of work and time has gone into developing this plugin. If you'd like to donate, click button below .
All donations are greatly appreciated and help in future development of IP-Check. We help to help others.
Looks good, thank you! Will try it. If it works, I'll donate, thank you for your time and care! PS I need to find a more secure way to link my servers (different machine from proxy and different ip addresses), and I'm not content with them being offline without a guard to stop backend server access. OnlyProxyJoin seems to be too old, does not run for our spigot setup. Do you have any knowledge of security measures we might take? Thought I'd ask, as you are aware of these issues. Thanks.
@Jnk1296
Darn it. I didn't notice until now (due to you mentioning it), thanks a lot man :-)
lol You know, I just realized.
If I'd actually cared about my Metrics rankings, I'd be all freaked out since b2088 has metrics and updating disabled.
@ThisUsernameIsMine
You need to disable BANCTRSYS and KCKSYSTEM from module-control.yml. config.yml is no longer used to enable or disable major settings.
Is it possible to disable banning and kicking by IP-Check in v2.1.0 b2088?
I only use IP-Check for notifications and information on IP's, but i don't want it to kick/ban players.
Setting "secure-kick-threshold" to "0" or "-1" doesn't seem to do it, and setting a high(er) value also doesn't change anything.
I haven't exempt myself because i want to make sure it works for regular players too.
Because i often test under different account(name)s it banned me for "Multi-accounting" but whenever i try to unban myself using /ipc unban playername it says "No accounts were modified." (same for IP)
@Triade09
Dat URL..! =P
Alright, updated the GitHub repos.
IP-Check: contains the 2.0.6 stable source. IPCheck-Latest: contains bleeding-edge (aka source for 2.1.0 b2088). RP-Commons-Library: contains the source for RPC b93. Sadly, I don't have a copy of b87's source (the version b2088 uses).
GitHub Repos: Link
@Triade09
TL;DR: The I/O system is on the main thread. The whole plugin is written on one thread (regrettably). I need to switch the plugin over to NIO. I don't currently have the time nor know-how nor passion to do this. So it's a possibility, but not something that will likely happen over night. Also, I'm updating the GitHub repos with the latest code and publishing my latest development build of IPC (b2088) to dev bukkit.
-If I had to guess, it's an I/O blocking issue. The amount of time it takes to contact an SQLite or MySQL server is higher than RAM operations by orders of magnitude. Since I didn't really know what I was doing (suprise!) at the time when Freaky and I wrote the original SQL backend back in 1.4.x, and I didn't really want to bother messing with changing much of anything during the 2.0.x rewrite, the backend has remained more or less the same since July of 2013 (save for some security changes made during the 2.0.x rewrite.)
Given this, the current operating model has EVERYTHING for IP-Check running on a single thread. I/O, Server Calls, everything. Which is something that I'm somewhat admittedly ashamed to admit, but I'm only just finally getting a good handle on threads now.
In my free time, as of late, I've been trying to develop a small client-server/peer-to-peer IM system, which, again, I tried to utilize the SQL backend I developed for IP-Check. During this, however, I hit a bump with the I/O system causing moderate blocking issues for the threads. Hence, since about late December, I've been looking into Non-blocking IO. The fact that NIO is now being brought up here as well, doesn't really surprise me.
So obviously, the corrective measure here would be to switch to NIO.
As far as IP-Check is concerned, though, I've currently gone on a sort of hiatus with it. The module system was fully implemented some time ago (I'm thinking early December if my memory serves), but lately I've been rather burnt out with it and java in general, more so with IPC, though.
That said, the thought of having to totally rewrite the back-end of the plugin (and consequentially move RP-Commons over to NIO), is not entirely appealing to me at this moment in time. I've yet to come up with a successful paradigm for implementing it on a large scale (or just one that incorporates re-usability). Hence, which is WHY I've been trying to read up on it, get a sense for event queues and thread concurrency and what not. (It also doesn't help that work and college are getting in the way. :D)
If anyone is interested in taking on trying to write a portion of the software, or even submit an example of an NIO setup for this system, I'd be more than happy to allow them to. I'm currently taking the time to get GitHub set up on a Windows VM since I've not been able to figure out how to use command line git on my Ubuntu machine. So the repos should be updated here shortly (since, by the look of it, they haven't been updated since 1.5 released).
Any whom, though. In the mean while, I'll go ahead and post the dev. build I've got for IP-C so far (b2088). I initially got hung up here by problems with the configuration system, and I was trying to implement a new system that would preserve comments. Last I checked, though, that system was failing to populate/update the configuration files properly, though. So it's still using the old system.
@danmark2312 +1
https:leto36d.storage.yandex.net/rdisk/4cb85f72ce153276f84bde348efbadb4/mpfs/ZKn-_cSnWZwLG0RF65Mc9pW-YnK5RmK52_-iLxaqgG3KdiKk8NPjW1UYPiKIdECecQbwWgxix6c2wY3JG0PZ7w==?uid=0&filename=vfvvl_croper_ru.png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&rtoken=abdef1d32a5565461527dad962b42084&rtimestamp=54a7b3a0&force_default=no
I noticed my server started lagging a bit yesterday, but there was a fair amount of players joining the same time:
0.69% 198.78% 2.58 s 99.39 ms 0.0 0.0k IPCheck::onPlayerLogin(PlayerLoginEvent)
I don't know if this is only because of the players joining, but it seems to have lagged the server a bit
@time6628
It doesn't.
And they shouldn't be getting the wrong ban reason. You'll see the default ban reason in IPC's report because IPC currently only pulls ban messages from it's own database, not from Essentials or from Bukkit itself. If should-manage-bans is false, then banned players who attempt to join will see whatever message you originally banned them with.
How come whenever I /ban someone, ip-check automatically changes should-manage-bans to true? I hate this feature because everyone gets a wrong ban reason.
@mrelfire
I don't use a CI. The development builds are not public. Yes, it works with 1.7.10.
Is it working with 1.7.10 ? where can we download ? are you using jenkins compilation ?
Just an update; after several scrapped attempts, the Module system is finally implemented in a working manner that doesn't totally make a mess of everything. xD
Final Module List is as follows:
As far as configurations go, I recommend when 2.1.0 is released that you all take note of your configuration values before updating (assuming you don't have your auto-updater set to install the update in the background.) Several configuration options have been removed and I've noticed that options from past versions are not removed by updates.
The list of options removed is as follows (Along with that option's corresponding Module Toggle):
There are still more changes to be made, but the build is finally coming along. Latest build number is 2087.
@Vidsify
Define Networks.
Does this work on networks?
@mrelfire
I use Maven locally, but I don't have a public repo, no.
do you have a maven repositeroy to compile oyur code where we can take it ? or you have to manually put it on this site ?
@jorrik98
At the moment, very slowly. Still haven't been able to fix the command manager (granted I haven't really had the time lately to look at it), and I have no idea how to do so without doing a total rewrite of that component again (which is, afaic, totally out of the question. xD.) I'll be doing a good bit of work on it tonight, though, hopefully get a good bit more of the module system implemented. I'll have to just work around the bug. No huge deal, I suppose.