VPNShield-overview-3x.png


VPNShield uses Third Party IP address information providers to detect if an IP address is a VPN or not

Overview
  • VPNShield will cache the information gathered if the ip adress is an VPN or not.
    • You can configure how long the information will be cached
  • You can manually whitelist or blacklist IP adresses
  • Parallel and Async checking minimize the time of the login request and the detection wether a connection is via a VPN or not
  • Supported IP adress information provider (You need to create an account on their website). Most providers offer more requests when purchasing a plan
    • ProxyCheck 1,000 Free daily requests
    • IP-Api 45 Free request per minute
    • IpHub 1,000 Free daily requests
    • NoVPN 2,000 Free daily requests (From my experience many false positives)
  • Choose between 3 VPN detection modes
    1. The result of the first provider will be used (Minimal request usage, might be less accurate)
    2. All enabled providers will be checked. If at least your configured amount of providers detected the connection as a VPN, the connection is flagged. (High request usage, more accurate)
    3. Check until the configured number of valid results has been reached (a result is invalid if for example the daily request limit is reached) and if then at least your configured amount of providers detected the connection as a VPN, the connection is flagged. Read more at Detection modes (Balanced request usage and accurate, but depends on configuration)
  • Take action if a VPN got detected
    • Kick the player with a configured message
    • Execute one or more commands
    • Notify online staff on the server

 

Detection modes

In the config is an order list, the providers are entered there and checked from top to bottom.

Mode 1

Uses the first valid result and blocks the player accordingly. A result is for example invalid if the provider is unreachable or the daily quota is reached


Mode 2

The IP is checked according to the order. If at least your configured amount of providers detected the connection as a VPN, the connection is flagged.
Example: You activated 3 providers via entereing them in the order list, created the API keys and entered that an IP gets flagged if at least 2 provider detect the IP as a VPN.
If the first and second provider detect the IP as an VPN the connection gets flagged and the third provider won't be checked
If only the second provider detects the IP as an VPN the connection doesn't get flagged and all 3 provider got checked.


Mode 3:

The ip is checked until the configured number of valid results has been reached (a result is invalid if for example the daily request limit is reached) and if then at least your configured amount of providers detected the connection as a VPN, the connection is blocked.
Example:
You activated 4 providers via entereing them in the order list, created the API keys, entered that an IP gets flagged if 2 at least provider detect the IP as a VPN and that you need at least 3 valid results.
It will now check the first 3 providers and if they all have valid results it wil check if at least 2 of them detect the IP as a VPN. If so the IP get's flagged. Only if one of the 3 checked providers return a invalid result it will check the fourth provider.


Commands
  • /vpnshield whitelist/blacklist <IP>
  • /vpnshield remove <IP> | Removes the IP from the cache/whitelist/blacklist
  • /vpnshield list [page] | Shows the manually whitelisted/blacklisted entries. Page is optional
  • /vpnshield check <IP> | Checks if the IP is detected as VPN or not
  • /vpnshield rl

 

Permissions
  • vpnshield.admin | Allows access to all commands
  • vpnshield.notify | Notifies you if a player tried to join with a VPN
  • vpnshield.bypass | Bypasses VPN checks [Works only if using LuckPermsBungee]

 

Config
  Config



Support

If you have any questions, found a bug or need help with the plugin create a ticket on my Discord Server




Terms and Conditions which you accept with buying the plugin:


► As a user of this plugin, you automatically agree to these terms (which are liable to change)

► You will not distribute or leak this plugin.
► No refunds, as such a digital item is not eligible for a refund as it was immediately accessible to you and you may have used it
► Not redistribute this plugin, share any part of the code or resell it.
► Not edit any of the plugin's code, decompile the plugin, or take some parts of it.
► You will not post my source code online or offline on any website or in the internet.
► Support is offered voluntarily and is not included in the price. Support can be discontinued at any time. I reserve the right to give support who I want and who I don't