FoxGate
The #1 AntiVPN Plugin from the market.
"It's time to limit your server to legitimate and real traffic."
➡️ FoxGate (formerly, FoxAntiVPN) is a powerful tool designed to protect your Minecraft server from unwanted visitors using VPNs. This plugin prevents players from bypass ip bans by allowing server owners to detect and block VPN's, Proxy's and more. This plugin connects to a configerable list of services which detect VPN's without any hassel. This plugin is extremely hard to bypass. With numerous APIs working together, bypassing this AntiVPN is very difficult. The more services you enable, the harder it becomes for users to evade detection. Currently supporting Spigot + Forks, BungeeCord + Forks, Velocity + Forks, FOLIA + Forks, Nukkit/PowerNukkitX + Forks, WaterdogPE and Hytale.
⭐ Features:
Supports different types of databases with HikariCP Connection. Allows to the user chooise their best option for storing data. Available options: MySQL, MariaDB, PostgreSQL, H2, SQLite, Jaybird and Custom (in case you want to use any other local/remote database).
# ___ _ _
# / \__ _| |_ __ _| |__ __ _ ___ ___
# / /\ / _` | __/ _` | '_ \ / _` / __|/ _ \
# / /_// (_| | || (_| | |_) | (_| \__ \ __/
# /___,' \__,_|\__\__,_|_.__/ \__,_|___/\___|
#
# Configure a database for use.
#
# ❓ Has questions? Join to the discord server:
# - https://discord.zowi.gay/
# - https://discord.idcteam.xyz/
database:
# ⚙ Determine the type of DataBase will be used.
# - Available options in type.
# All options use HikariCP for better performance.
#
# |=> MySQL
# |=> MariaDB
# |=> PostgreSQL
# |=> SQLite (COULD CAUSE ISSUES IN OLDER VERSIONS!)
# |=> H2
# |=> JayBird
# |=> Custom
#
# -----------------------------------------------------------------------------
# Type | Stability | Performance | Support | Popularity | Concurrence |
# -----------------------------------------------------------------------------
# MariaDB | 4⭐ | 4⭐ | 5⭐ | 5⭐ | 5⭐
# MySQL | 4⭐ | 4⭐ | 5⭐ | 5⭐ | 4⭐
# PostgreSQL | 5⭐ | 5⭐ | 4⭐ | 3⭐ | 5⭐
# SQLite | 1⭐ | 3⭐ | 3⭐ | 2⭐ | 4⭐
# H2 | 2⭐ | 4⭐ | 3⭐ | 2⭐ | 1⭐
# Jaybird | 2⭐ | 2⭐ | 1⭐ | 1⭐ | 1⭐
#
# 📚 Note: In case you change this configuration and your server is
# already started, use the command "/foxgate db reconnect" to restart
# your database without restarting plugin or server. Always remember do
# "/foxgate reload" before using this command to apply.
type: H2
# 🔩 Set the table's name inside the DataBase.
# - Modify in case you want mantain older stats while using another
# new. This can also help in case a conflict occurrs.
#
# 📚 Note: If you want restore older stats used in Older versions
# of FoxGate (1.0.5-pre4 or older), use the next:
# - 'vpn_cache'
table: foxgate
# 🔩 Save the cache inside the database instead of a file?
# - Use this only if you want to use multi-proxy or you're sure
# this will don't cause problems with your database.
cache_database: false
# 🔩 Enable whitelist based in DataBase?
# - Set this feature to enabled in case you want to save
# whitelist IP's/names in a database instead of a file.
# Extremely recommended for Multi-Proxy.
#
# 📚 Note: Available only in MySQL, MariaDB and PostgreSQL.
whitelist_database: false
The plugin is trying to support all types of software with any version of Minecraft, since 1.3.x; all softwares, can probably works correctly with this plugin, because this already download their own libraries for avoid any type of problems. Now supporting Nukkit, PowerNukkitX and WaterdogPE, bedrock softwares and Hytale.
Customize the messages how you want! This plugins supports MiniMessage and Legacy colors in all versions; also the configuration it's too extended for an extremely customization in base of your needs!

Downloads their libraries automatically when starting for adding more options available for you! Every update, the libraries get downloaded and automatically updates for you to mantain always up-to-day in functions and fixes vulnerabilities.
Check all libraries downloaded by the plugin: Click here to see 'Dependencies' tab from BuiltByBit.
(Sometimes can be outdated that list; the plugin always download from trusted sites)
The default config is setup to block most VPN's, although you can add a custom service or modify existing services in the config. The plugin was made for support multi-services for detection, and for it, we provide a lot of tools for you: Send requests with Headers, Condition systems for Flag/Bypass (ignore detection) and custom VLs per service (for add VLs to reach maxFlags).
# __ _
# / _\ ___ _ ____ _(_) ___ ___ ___
# \ \ / _ | '__\ \ / | |/ __/ _ / __|
# _\ | __| | \ V /| | (_| __\__ \
# \__/\___|_| \_/ |_|\___\___|___/
#
# The configuration is generated with our File Manager,
# which overrides the real comments. See the description of
# every available services in our GitHub repository of
# issues and wiki.
#
# 💼 GitHub:
# https://github.com/IDCTeam-Group/FoxGate-Issues/wiki/Services
#
# 📚 Note: Use 'Ctrl+F' to search the service, and put the file
# name for search more easy. ^^
# 🔩 Enable this service?
enabled: true
# 🔑 Add this field in case require key.
# - This is used for '{KEY}' variable in the
# headers or URL fields.
key: ''
# 🔗 The plugin should output errors though
# the console?
# - Enable this option if you want get output
# in case a service give errors in the console.
# Useful for debug responses while debugging it's
# disabled.
#
# 📚 Note: This only works in certain scenearies, like
# an API returning 'nullable' value or another.
output_errors: true
# 📚 Model of the response.
# - Add the model to handle the response of
# the API. Check the response type and set one
# correctly for making this works properly.
#
# 📁 Supported values:
# - HTML
# - JSON
# - CONTAINS
model: JSON
# 🚩 Flags to add when it's detected in this service.
# - Option for add more VLs to reach the maxFlags
# in each services. Useful if you trust in a service
# and want make it count more VLs.
vls: '2'
# 🔗 URL of the API.
# - This field is important, insert the URL of
# the service for response.
#
# 📁 Supported placeholders:
# - {IP} - Return the player's IP.
# - {KEY} - Return 'key' field value.
url: https://api.zowi.gay/{IP}?key={KEY}
# ⛓ Headers to use.
# - Set custom headers in case it's required.
# The values can be in List or Map.
#
# 📚 Note: Set to '[]' or '{}' to disable.
headers: {
}
# 💡 Values to check.
values:
# 🧩 Fields to check.
# - Disable the fields to check with using
# the value '{}'. If you exclude this value,
# field 'type' will check if the final
# response contains that value.
fields:
- security.bogon
- security.vpn
- security.proxy
- security.hosting
- security.residential_proxy.detected
- security.abuser.detected
- security.tor
# 🚩 Type to determine.
# - Determine which value needs to determine
# if the connection it's a VPN/Proxy or another,
# this will check for a String.
#
# 📚 Note: Use 'boolean' for check for any boolean
# boolean, like: 'true'/'false' or '0'/'1'.
type: boolean
# 📚 Custom conditions to determine bypass or detection logic.
# - These conditions allow advanced control based on fields from the
# API response.
#
# 📁 Structure:
# - Each key (e.g. '1', '2', etc.) holds a list of conditions.
# - Each list works with AND logic (all conditions must match).
# - Multiple keys result in OR logic (at least one group must match).
#
# 🧩 Syntax:
# - Use {field} to refer to response fields (e.g. {score}).
# - Supported operators: '=', '!=', '>', '>=', '<', '<='.
# - Values can be strings (true/false) or numbers.
#
# 📚 Note: This feature only works in 'JSON' and 'HTML' type,
# and for make this works in HTML, always use '{foxgate_check}' for
# use field (only exists this in HTML).
conditions:
# 💼 Conditions for Bypass
# - If any group of conditions here matches, the player will be
# ignored (not flagged). Use this for trusted connections like mobile
# users or low score in risk/fraud.
#
# 📚 Note: Disable this condition with 'bypass: {}'.
bypass: {
}
# 🚩 Conditions for Flag.
# - If any group of conditions here matches, the player will
# be flagged (detected). Useful for detecting based on high
# risk/fraud score, known abuse, etc.
#
# 📚 Note: Disable this condition with 'flag: {}'.
flag: {
}
View alts from a certain IP with one command! See and check any IP to verify all accounts cached their last connection, providing to you exactly data and totally configurable message for you.

Limit the maxium connections per IP to prevent players with a lot of accounts simultaneous or bots in your server. You can change the limit, enable/disable feature and change the kick message, using our IPLimiter module for making that detection, also, can works based in time, useful for specific scenaries.
# _____ ___ __ _ _ _
# \_ \/ _ \/ /(_)_ __ ___ (_| |_ ___ _ __
# / /\/ /_)/ / | | '_ ` _ \| | __/ _ | '__|
# /\/ /_/ ___/ /__| | | | | | | | || __| |
# \____/\/ \____|_|_| |_| |_|_|\__\___|_|
#
# Limit maximum connections per IP to avoid multi-accounts
# or bots.
# When a player join, this start a count in their IP, where
# a new connection in the IP it's 1 point more, and if
# that IP reachs a certain amount of points, the connection
# will be denied. But, if the player leave the server, the IP
# discount 1 point.
#
# Note: This feature it's experimental and could be unstable
# in some cases, try using this with precaution. Every update,
# this tries to be more stable while tries to be optimized.
#
# ❓ Has questions? Join to the discord server:
# - https://discord.zowi.gay/
# - https://discord.idcteam.xyz/
# Enable this feature?
enable: true
# Determine the maximum limit of points per
# IP to start blocking coming new connections
# from that IP.
# - Avoid using a low value, because exists rare
# cases where an user joins with a duplicate IP
# in the same city from same provider of ISP.
#
# ⭐ Recommended: 3
maximum: 3
# ⏳ Base in time.
# - When enabled, the IP counter will automatically reset
# after the specified time period. This prevents permanent
# IP blocks and allows users from the same network
# (like family, school, or workplace) to join again
# after the time expires.
#
# With '30m' and maximum=3: If 3 players from the same
# IP join within 30 minutes, the 4th will be blocked.
# After 30 minutes, the counter resets to 0.
# If the module it's disabled, the counter never resets
# automatically, only will allow if one player leaves the
# server, this discount 1 from the counter and the 4th
# can enter.
#
# ⭐ Recommended: 30m
# Note: Use 'DISABLE' for disable this feature.
time: DISABLE
AND...
- The plugin has minimal performance impact due to it running asynchronously and in parallel.
- Debug the things that FoxGate does for transparency and check what returns the API when a user/ip is scanned with FoxGate.
- Filter all messages of disconnection when is made by FoxGate. This don't hide messages that aren't made by the plugin, supporting multi-platform. (This was a previously feature of FoxGate Plus Edition, passed to Free Edition)
- Blacklist or Bypass specific ISP (Internet Service Provider) that you want with our ISP Module using IPInfo service. It's free and faster in FoxGate!
- FoxGate supports auto-update configuration and multi-language, you can contribute in translate our plugin in our GitHub repository!
- Supported IPv4 and IPv6 on their commands, services and modules.
- Use your server software firewall for blocking instead of a disconnect message. If you're using a supported server's software (Flamecord, VeloFlame, ...), you can use their module of firewall for blocking instead of using server events.
- Easy to fix a false flag. You can use Custom VLs per service, remove a wrongly flagged ASN, hostname, using conditions system per service or increase the maximum flags to kick player. You can join to our discord support for ask a great configuration in base of your amount of services and module settings.
- Perfect detection. The plugin contains a lot of modules for detect any type of malicious actors, modules like ISPFilter, GeoLocation, IPRange and Services. Also, our new IPRange system with new structure, allows to download custom sources/lists for different purposes, like: Proxies, Tors and even Residential Proxies! (Check our addon in a page with Plus Edition).
- Block any connection from Bogon IP in case an user it's trying to connect for bypass stuffs. You can toggle this in configuration.
- Easy and friendly whitelist command. Gives whitelist to users to avoid the modules with a single command, using /fg whitelist <add/remove/info/purge>, in that command you can add a user/IP to the whitelist with optional reason and a duration time, see info about a user/IP in whitelist, remove a player from whitelist and purge the list.
- Passive mode. This makes the plugin doesn't detect on every player join, but allows to has compatibility with another AntiVPN's or checking with the command manually, useful for checking only in certain cases in every services.
- Highly recommended. This is a better solution for replace your another AntiVPN plugin for this, customize how you want, change the things for your benefit and enjoy with FoxGate!
FoxGate It is lightweight and fast in making multi-verification.
Want see first the Plus version?\
(Plus version add new features that it's perfect for an antivpn)
| BuiltByBit | Polymart | Spigot |
|---|---|---|
| builtbybit.com | polymart.org | spigotmc.org |
| See the Plus version in BuiltByBit now. | See the Plus version in Polymart now. | See the Plus version in SpigotMC now. |
🚀 Services available in the default config.
❝ Do these services in the config works correctly? The list of services in the default config have all been tested at least once. You can still configure each services values as well as edit or add more services (like in the example above). Services may not always function due to issues on their end or because of how they where added to the config.
Some services are disabled by default because they require an API key to function. However, thirteen of these services work without a key and are enabled by default, providing basic VPN and proxy detection right away. To maximize protection against VPNs, proxies, and other threats, it is recommended to obtain API keys for the remaining services. Doing so will enhance the accuracy and effectiveness of detection.
See more about these services in our wiki in GitHub.
| ✅ FREE SERVICE - No key required for work. | ⭕ KEY REQUIRE SERVICE - Key required for work. |
|---|---|
| 1. BlackBox | 1. 2IP |
| 2. BlockListDE | 2. AbuseIPDB |
| 3. CINSscore | 3. AntiVPN.io |
| 4. FastAsFuck | 4. BanProxy |
| 5. FunkeMunky | 5. FocSec |
| 6. GreenSnow | 6. FreeIPAPI |
| 7. IPLocate | 7. GetIPIntel |
| 8. IP-API | 8. GreIP |
| 9. IP-Check | 9. IP2Location |
| 10. IPAPI.is | 10. IPDetective |
| 11. IPQuery | 11. IPGeolocation |
| 12. IPRisk | 12. IPHub |
| 13. MarvinMC | 13. IPHunter |
| 14. MerakiStudios | 14. IPQualityScore |
| 15. NegativityAPI | 15. IPStack |
| 16. Rayzs.de | 16. IsProxyAPI |
| 17. TCPShield | 17. NoProxy |
| 18. ZowiCentral | 18. ProtectCord |
| - NO MORE - | 19. ProxyCheck |
| 20. ProxyRadar | |
| 21. VPNAPI | |
| 22. VPNBlocker |
❝ Want to know how to configure these services? Check the configuration section below for examples and templates. When a player is detected using a VPN or proxy, the plugin automatically stores this information in a database. This prevents repeated API requests for the same IP address for a configurable number of hours, reducing unnecessary API calls and improving efficiency.
By using both services that are enabled-by-default and those that require API keys, you can create a robust detection system that effectively identifies and blocks VPN, proxy, and other undesired connections. See more information in the documentation section.
📊 Statistics.
❝ What data is collected? We are using bStats, this does not collect any personal data. Most of the collected data is information about the plugin's server like player count, online mode, Minecraft version, Java version, and more. All data gets sent and stored completely anonymously. See more in information about this in bStats: Getting Started.
This stats are collected by bStats.org, the information under are shared with the Plus version, which is identified as "-pv" in version of the plugin, this can help to the creator to view some statistics without taking some performance. Read quote about the data collected, you can always disable the collection in our config.yml available in the plugin's folder. Since 1.0.2 (plus) and 1.1.0 (free), FoxGate uses their own code base for Metrics, but following their rules.
This use asynchronous methods to send data and changes to Gson for better stability; improving the performance of this. You can safety has enable this to help to the creator without affecting the performance.
JAVA SOFTWARES
| Bukkit | BungeeCord | Velocity |
|---|---|---|
| Bukkit ➡️ Show through bStats site. View statistics of Bukkit platform by clicking above. |
BungeeCord ➡️ Show through bStats site. View statistics of BungeeCord platform by clicking above. |
Velocity ➡️ Show through bStats site. View statistics of Velocity platform by clicking above. |
OTHERS SOFTWARES: BEDROCK MINECRAFT AND HYTALE SOFTWARE
| Nukkit | WaterdogPE | Hytale |
|---|---|---|
| Nukkit ➡️ Show through bStats site. View statistics of Nukkit platform by clicking above. |
WaterdogPE ➡️ Show through bStats site. View statistics of WaterdogPE platform by clicking above. |
Hytale ➡️ Show through bStats site. View statistics of Hytale platform by clicking above. |
🔗 Links.
| Documentation | Discord |
|---|---|
| github.com | discord.idcteam.xyz |
| Some documentation for help. | Join our community for technical support. |
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 | ||||
| 10h ago | 1 |
- Fixed Velocity issue where the parse doesn't works correctly and allows the user joins after first-block.
- Fixed **ConsoleFilter** doesn't filter in **Velocity 4** and **IPRange (VPN)** doesn't contains an option for disable it.
# FoxGate+ was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- 1.2.0-pre6**
- Did some improvements and bug fixes when the plugin update configurations.
- [FOR RUSSIAN SERVERS]** Added option of **reverse proxy** for modules: **Discord Webhook**, **Telegram Forward** and **VK Forward**. Useful to bypass country restrictions (like in **Russia**) with a proxy. **NOTE**: I don't sure if will be good add option for global module, I mean, put this system in **config.yml** for download databases and others.
``
yaml
# 🌱 Reverse Proxy for the requests.
# - Use this feature in case you want to bypass any restriction
# in your country. This can make the request a bit slow, but can
# make the plugin works fine with this module.
#
# ⚠ Supported types:
# - HTTP
# - SOCKS4
# - SOCKS5
#
# 📚 Note: Enable this feature when it's required and try to follow
# the format-type.
reverse_proxy:
# 🚩 Enable this feature?
enabled: false
# 💼 Type the proxy type.
# - Select one proxy type to use. Chooise right.
#
# ⚠ Supported types:
# - HTTP
# - SOCKS4
# - SOCKS5
type: HTTP
# 🚩 Determine the host of the Proxy.
# - Type one domain or IP for use the proxy and one port
# for auth.
#
# ⚠️ Warning! Those values can't be empty.
host: ''
port: '8080'
# 🧵 Credentials.
# - Put any credential for authentication if it's required
# by the proxy provider.
#
# 📚 Note: Leave empty for don't use any of those fields.
user: ''
password: ''
`
- Now the commands shows entirely in the tab-complete, even if no arguments.
> Thanks to @anttimk for the suggestion.
- Updated all libraries to keep up to date (day: 17/05/2026). **Important fix by Adventure 5.1.1**.
- [Residential Proxy Addon]** Added option for reduce false flags, by allowing detection for **cross-providers**.
`yaml
residential_proxy:
# 🚩 Enable this feature?
enable: true
# 🌱 Detect only when the residential proxy are in cross-provider.
# - Enable this feature when you want to only detect the residential proxy
# if was detected in two or more providers. Useful to reduce false flags
# because sometimes one provider means that the connection isn't totally
# "a risk", but allows to be more easy to be bypassed if the provider
# it's detected but only in one service.
#
# :star: Recommended: false
crossproviders_only: false
# 🧵 [PLACEHOLDER] Current and available residential proxies providers
# being cached by our backend.
# - This updates constantly and when checks for a new update, the list can be
# updated dinamically with a modern result, independent of your version of
# FoxGate.
providers:
- IPRoyal
- Proxy-Seller
- 711Proxy
`
- The command
/fg update ranges now forces to download all lists without exception (previously, you literally need to delete manually the cache or wait the time of update for see how the lists get downloaded if you added/removed one). This too makes the verification for download **residential proxies** when you bought, enables it faster.
- 1.2.0-pre7**
- Some optimization and stability improvements.
- Fixed some errors in **Velocity** instance servers.
- Improved handler for the platforms that works in async.:
Bukkit, BungeeCord, Velocity and WaterdogPE.Added a better API for the events**, you can use FoxGateCheckEvent` for see results and/or manipulate values in the plugin (depends in the platform).- 1.2.0-pre8**
- Fixed for emergency the plugin doesn't enables after the update.
- 1.2.0-pre9**
- Added reverse-proxy (for download options), fixed whitelist don't working sometimes and others small improvements.
- ISPFilter** now can update the list of blocked **ISPs** for you using our backend to mantain always up-to-date!
- Added **Sentry** for report errors and issues to me (can be disabled in the config.yml)
- Optimized the **IPRange** module.
- [NEW MODULE]** Deprecating **IPRange (Range)** module in new instances and added a new and more precise module, **VPN Providers** (aka **IPRange (VPN)**), which get IPs from my backend, where us collect ranges from known VPNs for blocking it.
- [IMPORTANT]** The plugin now uses Java 25, requires forcerly update to this version for use our plugin. **Otherwise, download a previous version temporary and disable auto-updater**.
- Added **new restrictions for the plugin in case your server can't generate too much Virtual Threads**.
- Improved structure for **IPRange**, **ISPFilter** and **GeoLocation**. This includes the next: Improved and enhanced HTTP Status handle (through external pages and with my backend), merged into 1 single database option for ISPFilter and GeoLocation (MaxMind, IPInfo and IPLocate, where IPInfo will be the default).
- Fixed possible causes where the plugin can't parse well the messages in component for doing kicks in our new handler.
# FoxGate+ was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Some optimization and stability improvements.
- Fixed some errors in **Velocity** instance servers.
- Improved handler for the platforms that works in async.: **Bukkit**, **BungeeCord**, **Velocity** and **WaterdogPE**.
- Added a better API for the events**, you can use *FoxGateCheckEvent* for see results and/or manipulate values in the plugin (depends in the platform).
- Updated libraries (day 17/07 - dd/MM).
- Fixed some issues in the **IPLimiter** module and added option for ignore bogon IPs (useful for certain plugins).
- Added **whitelist by name and IP** in **IPLimiter** module.
- Added **support** to **Velocity 3.5** and **4**.
# FoxGate Plus was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Fixed some possible issues with **Sonar** in **H2**.
- Fixed **bogon** sometimes doesn't catching in first join. Also, added option for actions in this.
- Added more supported format for custom proxies and tor list.
# FoxGate Plus was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Added support to VK [Forwarding] (Plus Feature)**.
- IPRange** now works using **CIDR**. Your old **Regex** format it's parsed automatically to the new format. Note: This last thing, was done for give time to the users in migrate to **CIDR**.
- Added a lot of new languages by default.
yaml
# 🌎 Plugin language setting.
# - Available options below. You can help in contribute to maintain
# one translation up-to-date or publish one through our GitHub Issues
# page!
#
# • ar_sa - العربية (السعودية)
# • cz_cz - čeština (Česká republika)
# • da_dk - Dansk (Danmark)
# • de_de - Deutsch (Deutschland) [❤ Thanks to ich_lou]
# • en_us - English (United States) [❤ Thanks to Goinging]
# • es_ar - Español (Argentina)
# • es_es - Español (España) [❤ Thanks to VonVisha]
# • fr_fr - Français (France)
# • he_il - עברית (ישראל)
# • hu_hu - Magyar (Magyarország)
# • id_id - Bahasa Indonesia (Indonesia)
# • it_it - Italiano (Italy) [❤ Thanks to MircoAPPP]
# • ja_jp - 日本語 (Japan) [❤ Thanks to YOMA8338]
# • ko_kr - 한국 (Korean) [❤ Thanks to metaph0]
# • lt_lt - Lietuvių (Lietuva)
# • nl_nl - Nederlands (Nederland)
# • pl_pl - Polski (Poland)
# • pt_br - Português (Brasil)
# • ro_ro - Română (România)
# • ru_ru - Русский (Russia) [❤ Thanks to mikheilkozlovi & AMGewka]
# • sk_sk - Slovenčina (Slovensko)
# • sv_se - Svenska (Sverige)
# • th_th - ภาษาไทย (ประเทศไทย)
# • tr_tr - Türkçe (Turkey)
# • uk_ua - Українська (Україна)
# • vi_vn - Tiếng Việt (Vietnam) [❤ Thanks to hieudieu393]
# • zh_cn - 中文 (中国)
#
# 📚 Note: Language files are automatically downloaded from the official
# GitHub repository into the 'languages' folder. This value can't be empty.
# 🔎 How to edit the messages? Go into the folder 'languages', and edit the
# currently file in selected language: If this option it's 'en_us', edit
# the file with the name 'messages_en_us.yml'.
language: en_us
`
- Added back SQLite support**. H2 still it's the default for being better.
- Fixed a minor issue in tab-complete.
- Drop ViaProxy**
- Removed by default Cloudflare Warp in bypassing and improved the list for ISPFilter, too in GeoLocation module.
- [Experimental]** Migrated from Java 17 to Java 21. The scanner for Services has been refactored with a model and little improvements (the FoxPlayer class refactored a bit to reduce boilerplate). This change introduces changes to thread usage, making a less usage of this, because we are using now [Virtual Threads (Java 21)](https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html), this it's an experimental change. Also, the feature "continue" now works correctly.
- Added "ZombieBot" service like a enabled-by-default.
- Updated a bit the main configuration and added some changes, like:
- Added a new "updater" structure, the plugin will migrate automatically.
`yaml
# 💼 Enable automatic update checking?
# - Checks for new updates on our Backend during server startup.
# Requires an active internet connection to verify updates.
#
# 📚 Note: Since versions 1.0.0 (plus) and 1.0.6 (free), FoxGate uses
# its own update checking system. This implementation uses asynchronous
# methods to scan for updates, save performance. You can safely enable
# this to check for updates without affecting performance.
updates:
# 🚩 Enable checking of updates?
# - The plugin will check for updates when the
# server starts only, this will send a message
# in the console and the link to download by
# default.
#
# ⭐ Recommended: true
# 📚 Note: Your hosting needs to whitelist or allow
# connections to 'central.zowi.gay', our backend.
enable: true
# ⌛ Automatic actions for updates.
automatic:
# 🪄 Enable automatic updating for the .jar?
# - Toggle this feature for always mantain the latest
# version. This updates through our backend and
# works for both editions: Free and Plus.
#
# ⭐ Recommended: true
# ⚠️ Warning! Always keep this feature enabled, so if an
# important fix occurs, you will always keep the plugin
# up-to-date.
updater: false
# ⏳ Enable periodically checking?
# - Enabling this will make the plugin check in silent
# for a new update. This makes the plugin check every
# 1 hour.
#
# ⭐ Recommended: true
# 📚 Note: This feature requires to keep enabled the
# option 'auto_update'.
periodically: true
`
- Relocated the value
print_console to consolefilter section and with the new name show_threats.Relocated the value passive_mode to scanner section.Added option for **disable all services** through the main configuration.
`yaml
# 🧲 Scanner settings.
# - Actions when a player get detected or verified:
# Bypass and block time.
scanner:
# 💼 Toggle scanning through services?
# - Make the plugin to toggle the checking through
# services. Useful if you want avoid using external APIs
# and use local checking (means, through modules).
toggle_services: true
# 🔍 Enable the Passive mode?
# - FoxGate will stop checking when a player join to the server.
# Useful in case you want to use FoxGate with other AntiVPN or
# for only checking with our command.
passive_mode: false
`
- Added new feature: Geyser bypass, check the configuration for more details:
`yaml
# 🔎 Ignore detection for bedrock players?
# - Toggle to ignore any connections from a bedrock player,
# making great the usage of the plugin in case *YOUR* (yes,
# isn't our fault) server doesn't do correctly the IPForwarding.
#
# 📚 Note: Use this feature only when it's necessary and your
# server does wrongly the IP-Forwarding. The plugin checks for
# GeyserAPI, Floodgate or external methods for detect bedrock
# connections. Enabling this without a reason, will allow bedrock
# users bypass always the AntiVPN for non-sense.
# ⚠️ Warning! This feature was made for Minecraft: Java Edition
# softwares.
geyser:
# 🚩 Enable the bypass/ignore to bedrock users?
enable: false
# 🧩 Custom prefixes.
# - Put a value in case you use a prefix for identify
# a bedrock user if you doesn't has Geyser or Floodgate
# in the server/proxy.
#
# 📚 Note: Disable prefix value with leaving empty.
prefix: ''
# 💡 Standalone IP's for Geyser.
# - Custom IP's in case you requires to detect
# a bedrock user when you can't put Floodgate
# in the server/proxy and you're running a
# Geyser Standalone proxy.
#
# 📚 Note: Leave empty for disable with '[]'.
standalone_ips: [
]
`
## **1.2.0-PRE2**
- Done internal changes for improve and stability changes to all file configuration classes.
- Now in modules, you can put for blocking permanent or X certain of hours (previously, only services was able to block permanent only, through
scanner section).Now {KEY} and {IP} works in headers when you scan through services.Stability and performance** improvements. Using a right way the cache and redundances in my part. Fixed in the totally all issues from previous databases issues, now reduced the amount of calls in a right way. **To prevent issues caused in older versions for the database, use purge command** ( /fg db purge).Improved SQL for database usage. A possible fix to patch duplicate entries to the database for cause of AUTO_INCREMENT.Optimized a big part of the code and fixed redudant things (sorry). Using better the CPU threads and Virtual Threads to make a great optimization, also, this patches a little bug that can occurs about "stuck for 2-4 seconds more". Fixed and improved our logic for checking updates and download updates (our fallback now will handle it, just update to this .jar and everything will go to start working again). **Summary: Now works auto-update and update checking**. The plugin now uses **ETag** for downloading files, means, if the file it's up-to-date, this doesn't will download again. (not too important)* Now, the Country and ASN will check first than others modules, the new order its: **Bogon → Country → ASN → ISPFilter → IPRange → Services**. Fixed compatibility my refactored command in **Velocity** (some commands doesn't works right). Removed the entirely flood when startup in **Velocity**. Fixed compatibility with new versions of **Hytale**. Improved stability and fixed some minor issues. [PLUS]** Fixed **HWID warnings** when you update from older versions. Improved and implemented better structure for IPRange module**: New **Tor**, **Proxies** and **Ranges** lists in **IPRange**, the mission of this it's block with known ranges IPs before reach to **services**, reducing the usage of resources for checking through services. Also, our **Residential Proxy addon** it's available for usage through the plugin directly. Updated **zowicentral.yml** service. Disabled by default **BlockListDE**, **CINSScore**, **GreenSnow** and **TCPShield** services, now you can use to import those lists in the new **IPRange** module. Removed **FastAsF-ck** by default, it's parked. Please, to prevent malicious actions from this service, remove ASAP. Added new command **/fg setconfig**, allows you to use commands in-game for edit configuration of the plugin. **THIS FEATURE IT'S IN EXPERIMENTAL STAGE**. You can do now in-game: Services**: Enable/disable. Change URL, VLs, Output (Errors), Key and Model. Modules**: Whitelist, blacklist and exclude (if exists).
`yaml
[12:53:00 INFO]: [FGP] [IPR] Loading IPRange Module...
[12:53:00 INFO]: [FGP] [IPR/Ranges] Downloading from Zowi's Central...
[12:53:02 INFO]: [FGP] [IPR/Ranges] Got 1219 entries from Zowi's Central.
[12:53:02 INFO]: [FGP] [IPR/Ranges] Loaded 1218 entries (last update: 01/05/2026 12:53:02).
[12:53:02 INFO]: [FGP] [IPR/Tors] Downloading from Zowi's Central...
[12:53:02 INFO]: [FGP] [IPR/Tors] Downloading from check.torproject.org...
[12:53:02 INFO]: [FGP] [IPR/Tors] Got 14105 entries from Zowi's Central.
[12:53:02 INFO]: [FGP] [IPR/Tors] Got 1238 entries from check.torproject.org.
[12:53:02 INFO]: [FGP] [IPR/Tors] Loaded 14139 entries (last update: 01/05/2026 12:53:02).
[12:53:03 INFO]: [FGP] [IPR/Proxies] Loaded 297195 residential proxy entries from cache (last update: 01/05/2026 11:41:04).
[12:53:03 INFO]: [FGP] [IPR/Proxies] Downloading proxies from source tcpshield.com...
[12:53:03 INFO]: [FGP] [IPR/Proxies] Downloading proxies from source cinsscore.com...
[12:53:03 INFO]: [FGP] [IPR/Proxies] Downloading proxies from source blocklist.greensnow.co...
[12:53:03 INFO]: [FGP] [IPR/Proxies] Downloading proxies from source lists.blocklist.de...
[12:53:03 INFO]: [FGP] [IPR/Proxies] Downloading proxies from source api.proxyscrape.com...
[12:53:03 INFO]: [FGP] [IPR/Proxies] Downloading proxies from source az0-vpnip-public.oooninja.com...
[12:53:03 INFO]: [FGP] [IPR/Proxies] Got 2920 entries from api.proxyscrape.com.
[12:53:04 INFO]: [FGP] [IPR/Proxies] Got 27408 entries from lists.blocklist.de.
[12:53:04 INFO]: [FGP] [IPR/Proxies] Got 2624 entries from tcpshield.com.
[12:53:04 INFO]: [FGP] [IPR/Proxies] Got 3772 entries from blocklist.greensnow.co.
[12:53:04 INFO]: [FGP] [IPR/Proxies] Got 30178 entries from az0-vpnip-public.oooninja.com.
[12:53:04 INFO]: [FGP] [IPR/Proxies] Got 15000 entries from cinsscore.com.
[12:53:05 INFO]: [FGP] [IPR] Loaded 342635 blocked ranges in total.
[12:53:05 INFO]: [FGP] [IPR] Working with IPRange now.
``## **NEW ADDON: Residential Proxies detector: $1.99 USD**

## FoxGate Plus was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Added **Hytale** support. First plugin of AntiVPN in support and working in **Hytale**.
- Fixed some issues about consolefilter returning error in older versions.
- Updated libraries to day 23/1/2026 (dd-MM-yyyy).
- Move package from 'zoruafan.foxgate' to ''thezowi.foxgate' and we updated a bit my classes. For developers, the Listener class change a bit.
- Removed **MITL** from default services because it's down.
- Added **FastAsFu--** service in enabled-by-default.
- Added **NoProxy** service in **paid services**.
- Re-added **Negativity** service in enabled-by-default.
- Added new option "order" (in
config.yml, sectionantivpn), which allows to load in an custom order the services. More details in the configuration.
yaml
# 📍 Custom order for load services.
# - Use this function for chooise an order for load
# in case it's required. The listed services will load
# in order while non-listed will load after and
# dinamically.
#
# 📚 Note: When checking, this will affect the order
# of services. Useful if you want to provide priority for
# non-key services.
order:
- zowicentral
- blackbox
- ip-api
- ipapi-is
- ip-check
- iplocate
- ipquery
- iprisk
- marvinmc
- merakistudios
- rayzsde
- funkemunky
- negativity-api
- fastasfuck
- tcpshield
- blocklistde
- greensnow
- cinsscore
`
- Now "{KEY}" works properly in header.
- Improved IPv6 support in all softwares.
- Added option for check through modules and services in the command of '/fg check'. Just add the argument '--modules' in the end. Ex.
/fg check 1.1.1.1 --modules`# FoxGate Plus was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Fixed the placeholder **{player}** in notification.
- Fixed somethings about "updater" and others stuff, now needs to works correctly.
- Added a general notification when a player it's blocked and this tries to join. Can be disabled in language file with leaving empty.
# FoxGate Plus was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
/plugins/FoxGate/modules/iprange.yml and option enable**.- What it's IPRanges and what does** module? It's a free module made by me for help to prevent residential proxies and others undetectable stuff (in base of my known ranges list), commonly for block LiquidProxy, which sometimes uses datacenters. The main reason of why was disabled by default was for their first builds, where this was having performance issues; with the time, this was improved and, made more lite and stable. When I finished this module, I forget to enable this by default, because this module can **PREVENT A LOT OF RESIDENTIAL PROXIES AND IMPROVE YOUR DETECTION FOR FREE** (remember, **Plus Edition** can prevent more and combination with this module will be a **extremely great protection**).
# FoxGate Plus was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Major improvements with the handling of **FoxGate** for Velocity:
- Switched from
LoginEventtoPreLoginEvent: Players are now blocked before reaching any backend server. - Implemented **Intent (Continuation)** conditions, means, player connections are held until they are fully scanned.
- Instead of directly disconnecting, the login event is now cancelled, and the reason is properly attached.
- Added more cache to reduce database calls, new option added:
yaml
# Enable save in cache the results of block?
# Useful for save performance and avoid database calls
# while a player tries to join repeated or in a bot
# attack.
#
# ⭐ Recommended: true
# 📚 Note: Disable this feature If you need to edit
# your kick messages, because plugin cache the block
# message in an attempt to save performance.
cache: true
`
- Fixed and caching **services** result for 10 minutes (fixing probably a lot of problems related to **Discord Webhook** and **Telegram Forward**), also, using cache when it's possible.
- Fixed duplicate checks when player join again in scanning, this prevent player from joining until the scan finish (if they try to rejoin).
- Fixed an error in update checker for Velocity. (sorry)
- Added logs when reloading the plugin of enabled services.
- Fixed cache issues when saving. (this only affects to people who use the new Velocity Handler)
- Added 'conditions' system for Bypass/Flag an IP in an AntiVPN service.
- Added 'AbuseIPDB' service. Provided an example of this service using 'Conditions' system:
`yaml
# 📚 Custom conditions to determine bypass or detection logic.
# - These conditions allow advanced control based on fields from the
# API response.
#
# 📁 Structure:
# - Each key (e.g. '1', '2', etc.) holds a list of conditions.
# - Each list works with AND logic (all conditions must match).
# - Multiple keys result in OR logic (at least one group must match).
#
# 🧩 Syntax:
# - Use {field} to refer to response fields (e.g. {score}).
# - Supported operators: '=', '!=', '>', '>=', '<', '<='.
# - Values can be strings (true/false) or numbers.
#
# 📚 Note: This feature only works in 'JSON' and 'HTML' type,
# and for make this works in HTML, always use '{foxgate_check}' for
# use field (only exists this in HTML).
conditions:
# 💼 Conditions for Bypass
# - If any group of conditions here matches, the player will be
# ignored (not flagged). Use this for trusted connections like mobile
# users or low score in risk/fraud.
#
# 📚 Note: Disable this condition with 'bypass: {}'.
bypass:
'1':
- '{data.isWhitelisted}=true'
- '{data.isTor}=false'
# 🚩 Conditions for Flag.
# - If any group of conditions here matches, the player will
# be flagged (detected). Useful for detecting based on high
# risk/fraud score, known abuse, etc.
#
# 📚 Note: Disable this condition with 'flag: {}'.
flag:
'1':
- '{data.abuseConfidenceScore}>=75'
`
- [Premium users with Extended ASN] Now exists an option for auto-updating your list, you need a token, for this, DM to me for creating one if you purchase this extension.
- Fixed database using equal value of bypass in blocker in time. Also, now using 'add' command, will save with blocker time for avoid issues.
- [Premium] Added option to detected users allows from joining to the server but get block connections to certains subservers. (Proxy only)
- Big improvement with the handling of **FoxGate** for Backend (Spigot/Paper/etc):
- Implemented **Intent (Continuation)** conditions, means, player connections are held until they are fully scanned.
- Now ConsoleFilter will hide UUID message when get blocked.
- [Premium] Fixed next error:
`
[22:44:20 WARN] [foxgate]: [GEO] Exception with provider MAXMIND for country: java.lang.NoClassDefFoundError: zoruafan/foxgate/shared/org/apache/commons/lang3/SystemProperties
[22:44:20 WARN] [foxgate]: [GEO] Provider MAXMIND failed. Trying next...
[22:44:20 INFO] [foxgate]: [GEO] Downloading from provider: MAXMIND - for: asn
[22:44:21 WARN] [foxgate]: [GEO] Exception with provider MAXMIND for asn: java.lang.NoClassDefFoundError: zoruafan/foxgate/shared/org/apache/commons/lang3/SystemProperties
[22:44:21 WARN] [foxgate]: [GEO] Provider MAXMIND failed. Trying next...
`
- Added the service 'MerakiStudios' in enabled-by-default.
- Added option for 'Passive Mode', where you can use FoxGate with another AntiVPN. Option:
`yaml
# 🔍 Enable the Passive mode?
# - FoxGate will stop checking when a player join to the server.
# Useful in case you want to use FoxGate with other AntiVPN or
# for only checking with our command.
passive_mode: false
`
- [Premium] Fixed some IPs doesn't includes the country on checking. (Ex. '1.1.1.1')
- Added auto-updating for Premium and Free editions (also implemented '/fg update' command).
- Added Italian language. (Thanks to MircoAPPP)
- Added Spanish (Spain) language. (Thanks to VonVisha)
- Fixed an issue about Whitelist returning "java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "l" is null"
- Dropped Java 11 to use Java 17. This doesn't will break support from 1.3.x-1.16.x versions (servers can still running Java 17 and Java 21 without issues).
- [Java 17] Optimized ISPFilter module and FoxPlayer checks with using Java 17 features.
- [Java 17] [Premium] Optimized DiscordWebhook, using Java 17 features.
- [Java 17] [Premium] Optimized TelegramWH with using Java 17 features and improved character escaping for avoid issues in don't sending.
- [Java 17] [Premium] Optimized GeoLocation module, using Java 17 features and fixed little issues.
- Fixed more issues related config (in case a list doesn't load for any reason).
- [Premium] Fixed RestrictionServers doesn't working on WaterdogPE. (For users with previous update)
- Added the service 'IPLocate' in enabled-by-default.
- Removed AntiVPN.net from default services because it's down.
- Removed VPN-API.xyz from default services because it's down.
- Removed NegativityAPI from default services because it's down.
- Added hostname block/bypass in ISPFilter module.
- Added 'isProxyIP' service.
- Fixed ViaProxy doesn't catch '{ISP}' placeholder in kick message.
- Added Vietnam language. (Thanks to hieudieu393)
- Improved module enabled/disabling. ISPFilter and GeoLocation (Premium) now closes databases and remove threads when reloading the plugin with '/fg reload'. (If previously was running)
- Added new database for ISPFilter and GeoLocation module: IPLocate.
- [Premium] GeoLocation now handles better IPInfo database and IPLocate database.
- Updated all libraries to up-to-date (24/12/2025)
- [!] Updated MiniMessage to 4.25.0 (supports latest Velocity and 1.21.9-11)
- [Premium] GeoLocation ASN works now with a custom provider for known list (optional).
- Added Korean language. (Thanks to metaph0)
- Improved handling of commands and tab-complete. Now using a better and improved list of permissions to separate all commands.
- Improved database reconnecting while using '/fg db reconnect', when the database in startup fails to connect, now you can create new instance without need of restart.
- Added new IPRange feature: This works like another module, the configuration files (like DiscordWebhook and others) was updated for adding this new feature.
- Added new option in services for custom flags per-service. It's useful in case you trust more in the results from a service than others, perfect for implement more Flags to reach maxFlags.
- Reduced amount of threads created by the plugin, tried to maintain the same performance.
- Added fully support for IPv6 (not only in our services).
- Added new option in IPLimiter: Based in time.
- [Premium] Added to the config a option for downloading ASN list with suspecious ISPs.
- Added option for download known hostnames in ISPFilter, preventing more Tor, VPN's and some Residential Proxies.
- Added Firewall based in software (beta). Supports VeloFlame and FlameCord at the moment. (Idea will be extended to other softwares and support root commands)
- Updated all libraries to up-to-date (27/10/2025)
- Changed by default maxFlags from 3 to 4 to prevent false flags. Recommended if you has more than 11 services, use 5 or 7.
- Added option for show or hide all module logs to avoid flood in the console (can be enabled/disabled in 'config.yml').
- [Premium] Added little aliases for "{ASN}" and "{COUNTRY}" in message of kick and actions: {GEO_ASN} and {GEO_COUNTRY}.
- Added Deutsch language. (Thanks to ich_lou)
- Fixed cache method returning error when disabling it and Metrics now shutdown threads when returning method of unload (partially when plugin fails or server shutdown).
- [Premium] Strictly license checking added.
- Added the service 'TCPShield', 'BlockListDE', 'CINSscore' and 'GreenSnow' in enabled-by-default.
- Libraries now download from our fallback CDN instead of use GitHub.
- Added checking alts from an IP and their last time connection via command.
- [IMPORTANT] Removed support in any type of SQLite, our community decided to remove it. The plugin DOESN'T WILL DELETE YOUR SQLITE FILE, you can has it like a backup, while the plugin will default start using H2 if SQLite it's the type you're using. Why H2? H2 it's more stable and with great performance than SQLite, SQLite since months was giving a lot of problems, where I fix an issue in it but other appears. From limit support, to a ending support of it. We strongly recommend to you try remote database for great experience, any Minecraft host will give it for free.
- Added option in configuration for block bogon IP's. Also, '/fg check' will be affected for bogon IP's while it's enabled in configuration.
`yaml
# 🛰️ Block any type of bogon connection?
#
# When enabled, we will block any connection considered a bogon.
# This protects you from players which tries to do any 'bypass' method.
#
# The plugin will block IP's considered:
# - Local Address
# - Loopback
# - Link Local
# - Site Local
# - Multicast
#
# 📚 Note: This feature it's always recommended having enabled. If
# you get disconnected for this configuration, please, consider to
# re-check your forwarding method, because can allow people from doing
# malicious stuff.
bogon:
# 🚩 Enable the blocking of bogon IP's?
enable: true
# 🧩 Add the connections to the database for prevent joining
# in X amount of time? This is useful if you want deny
# connections of bogon in case a bot-attack of users using
# those IP's.
#
# "The player is blocked from joining but the IP doesn't get checked!"
# In this case, FoxGate add's the player to the database like it's
# "Blocked", but doesn't save services detected, because the player
# isn't scanned for VPN/Proxy.
database:
# Enable this feature?
enable: true
# Time (in hours) to store user in database.
time: 12
``- Added Turkish and Czech language.
- [Premium] The plugin it's now obfuscated and known ASN List stop working in 1.0.5 and lower in this plugin.
# FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Added [**WaterdogPE**](https://waterdog.dev/) support.
- Changed messages for **beginners**.
- Fixed some little errors in **ISPFilter** and fixed **fallback**.
- Improved logic in some classes.
- Added **two** services to default list, thanks to ❤ **\_bad\_**:
[**FocSec**](https://github.com/IDCTeam-Group/FoxGate-Issues/wiki/Services#-focsec-14-days-trial-paid-service)
``
yaml# ⛽ Focsec [14 days trial] (PAID SERVICE)
# 🔗 https://focsec.com/
#
# 🛒 Details:
# 💼 https://focsec.com/login
#
# This is a PAID SERVICE, require starting from
# $29 monthly subscription for using IP-security
# feature. First plan it's $29 (Lite).
#
# - 3k daily requests, Lite ($29)
# - 10k daily requests, Basic ($49)
# - 25k daily requests, Plus ($89)
# - 1M+ daily requests, Enterprise.
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://api.focsec.com/v1/ip/{IP}"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'Authorization': '{KEY}'
# Values to check.
values:
# Fields to check.
fields:
- "is_vpn"
- "is_proxy"
- "is_tor"
- "is_datacenter"
# Type to determine.
type: boolean
`
[**IP-Check**](https://github.com/IDCTeam-Group/FoxGate-Issues/wiki/Services#-ip-check)
`yaml
# ⛽ IP-Check
# 🔗 https://ip-check.net/how-to-use-apis.php
#
# 🛒 Details:
# - Unlimited requests, no key.
# Enable this service?
enabled: true
# Model request to use.
model: "HTML"
# URL.
url: "https://ip-check.net/api/proxy-detect.php?ip={IP}"
# Values to check.
values:
# Fields to check.
fields: []
# Type to determine.
type: boolean
``# FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Added official support to **Nukkit** and **PowerNukkitX** (Bedrock Softwares).
[Time to expand this project to Bedrock] - Added feature to bypass **FoxGate** by **playtime** (disabled in configuration by default)
- Major improvements with the handling of **FoxGate** for **BungeeCord**:
- Switched from
LoginEventtoPreLoginEvent: Players are now blocked before reaching any backend server. - Added full **MiniMessage** support for BungeeCord messages.
- Implemented **Intent conditions**, means, player connections are held until they are fully scanned.
- Instead of directly disconnecting, the login event is now **cancelled**, and the reason is properly **attached**.
- Fixed issues with **clickable commands** in chat.
- Resolved unwanted **HikariCP debug logs** appearing in recent BungeeCord builds.
- If **Zowi's Central** is unreachable, it will now **timeout after 5 seconds** to avoid long plugin startups.
[We strongly recommend using direct providers instead of relying on Zowi’s Central.] - Resolved issues where some libraries were not being correctly relocated on older platforms.
[requires updating **FoxGate** and deleting the folder **FoxCore**] - Now, in case a module can't load but an older file exists, this will use it like fallback.
# FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- ⚠ **FIXED A VULNERABILITY WHICH CAN LAG THE SERVER.** (seems some plugins are affected to this, **FoxGate** was one)
- Added support for **1.21.6**/**1.21.7**
- Updated some dependencies.
- Added fallback option for **ISP** and recoded their logic.
- Fixed a lot of problems with a new logic for **IPLimiter**.
- Added fallback for dependencies in case has problems to be relocated in Legacy versions.
- Added multi-language feature.
- Added auto-updatable configuration files.
- Now the **whitelist extra features** (expiration time and reason) supports in file mode.
- Remove messages of **HikariCP** for prevent confussion.
- Services are now separated, same with others features.
- Added **MITL**, **ProtectCord** and **Zowi's Central** services for check VPN/Proxy.
- Added a lot of **cache** for making the plugin faster.
- Improved database handling, added **Custom** for adding your own JDBC.
- Fixed some little things (
infodoesn't appears in tab-complete for whitelist, databases created in another folder, ...)
### THIS UPDATE COULD RESET YOUR CONFIGURATION, IF NOT, PLEASE, RESET. THIS PROBABLY COULD BE THE LAST TIME THAT YOU NEED TO RESET, BECAUSE THE PLUGIN NOW HAS AUTO-UPDATER FOR ALL CONFIGURATION FILES.
# FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
### General
- Removed
AmeliaDBbecause their creator discontinued their project. - Removed
IDCTeamservice, our API is disabled for the moment. - Converted the
load()function to async, now the plugin doesn't go to prevent player login in case this doesn't start. - Fixed a problem that the plugin literally **create repeated table in the database**.
- Fixed a problem that the cache system uses an invalid folder (in **free edition**), and prevent issues to premium edition.
- Improved **whitelist system and cache system** for **Multi-Proxy servers**, cache system now support databases and save in certain times for no make overload. **Whitelist system now works with databases** (only certain types) and improved their logic.
- Fixed a problem that the database has expiration time in
"NULL"when starting, this require restart the table, otherwise, the expiration time will be permanent! - Improved performance with more
async tasksandbetter handling. (Velocity has a few change in our event for make it faster) - Fixed problems with **Limiter feature**. (this tries to implement a fix while use optimization features)
- Added **IPQuery** (enabled-by-default, unlimited requests) and **ProxyRadar** services. Thanks to our buyer, **@\_bad\_**, for making the configuration for these services!
- Command whitelist now support "\*" regex for allow bypass in some **ISP** (if needed): 1.1.1.1 -> 1.1.\*.\*, 1.1.1.\*
- Added option to **block**/**bypass** specific ISPs. (This isn't equal to ASN, and please, read the description about this)
- Improved logic of handling of
FoxGateCheckfor making this shared. - Implemented **new ISP module with IPInfo**.
(Join to our discord server for asking of how use this option correctly) - Fixed** update checker **doesn't disable** in the configuration.
- Change from
"newFixedThreadPool"to"ThreadPoolExecutor"thread function. This will **change the performance and how request will be sended**, so, if **someone experiment issues with this "experimental" decision**, **I will revert the change**; also for making this more controlable. (This is the reason why this version will be beta, but stable in functionability) - Optimized **method of checking with adding cache** for the
servicesandfields.
### Premium
- Fixed an issue that happen if the database it's fast, the ASN or country says
"unknown"in the kick-message/command actions. - Fixed problem that the geolocation databases, sometimes download before checking the file, returning an error on startup.
- Added new ASNs to the list of Geo Module to fight new hostings and VPN's, like **UrbanVPN** (VPN that bypass a lot of
AntiVPN's); also this could reduce/mitigate any bot attacks and prevent a lot of new VPNs. :shopping_cart: **You could purchase**"Extended ASN List"**for mitigate more VPNs/Bots/Proxys**. - FoxGate now download their databases in **Zowi's Central** in case you don't has a MaxMind key. (Please, read the description about this)
- Fixed thumbnails in discord webhook.
- Added new subcommand for testing Discord Webhooks or Telegram Forward features.
- Now Geo module **verify and save in cache** the list of **allowed**/**blacklisted** ASN/Countries for **save performance in bot attacks**.
View here the changes of our configuration file: [View in Github our changelogs in the configuration file.](https://github.com/IDCTeam-Group/FoxGate-Issues/commit/cee8c3bb82eb7db4b0713814ad51c820a9ec9934#diff-5a7db8dbadaef1b1b5a8738ba70b5ffac82b8e243732154165911284e08aad4b)
## FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Fixed option
database.cache_databaseno working correctly. Now seems to works perfectly. - Feature
consolefilternow passed to Free Edition, decision made by me and my community. This now has been passed to configuration section:
# ___ __ _ _ _
# / __\___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __
# / / / _ \| '_ \| |_| |/ _ | | | | '__/ _ | __| |/ _ \| '_ \
# / /__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | |
# \____/\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_|
# |___/
# Configure some others little options.
configuration:
# Allow the usage of Metrics (bStats) in your server?
# - This is only for stadistics usage.
#
# ❝ What data is collected?
# We are using bStats (https://bstats.org/), this does not collect
# any personal data. Most of the collected data is information about
# the plugin's server like player count, online mode, Minecraft version,
# Java version, and more. All data gets sent and stored completely
# anonymously. See more in information about this in "bStats: Getting Started"
# https://bstats.org/getting-started
#
# (!) Since 1.0.2 (premium) and 1.1.0 (free), FoxGate uses
# their own code base for Metrics, but following their
# rules. This use asynchronous methods to send data and
# changes to Gson for better stability; improving the
# performance of this. You can safety has enable this to
# help to the creator without affecting the performance.
metrics: true
# Print to console?
# - Enable this to send the equal notification to the console when
# a player is flagged.
console: true
# Define the permission.
# - Set here the permission to see the notification in case this
# is used in case a player is using VPN. By default, this is one
# permission default of the antivpn: 'foxav.notifications'
permission: 'foxav.notifications'
# Do you want to enable this feature?
# - Automatic check new updates in the Market pages. This only detect
# when the server is starting. You need to have connection for check
# new updates.
#
# (!) Since 1.0.0 (premium) and 1.0.6 (free), FoxGate uses
# their own code code for update chacking. This use
# asynchronous methods to scan updates; improving the
# performance of this. You can safety has enable this to
# verify updates without affecting the performance.
update: true
# Do you want debug enable debug messages of FoxGate?
# - Set what messages you want to debug when the debugging mode
# is enabled with the command '/fg debug'. This only shows in
# the console.
debug:
# Messages about Events of the player?
events: true
# Messages returning service's responses for better
# creation or control of this. Enable only for testing,
# don't recommend enable this in production, otherwise,
# your console can be flooded a lot.
services: true
# Messages about actions making by FoxGate.
# Like, sending discord webhooks (responses), downloading
# GeoLocation databases and seding Telegram (requests).
actions: true
# Enable the option to hide any disconnection message
# when a player is detected for VPN, it's blocked for
# their Country or ASN.
# This probably doesn't go to work in some platforms or
# versions, because only support Apache Log4J and SLF4J.
consolefilter:
# Enable hide the message of disconnection if the next
# scenaries.
vpn: true
limiter: true
# Premium Edition features.
country: true
asn: true
``# FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Improved the **performance** with **remaking the handling of detection** in all supported loaders/softwares.
- Added **ViaProxy** loader/software support.
- Updated all libraries:
3.5.1 -> 3.5.3> **SQLite** from
3.49.0.0 -> 3.49.1.0> **MiniMessage** from
4.18.0 -> 4.20.0> **MiniMessage Option** from
1.0.0 -> 1.1.0> **HikariCP** from
6.2.1 -> 6.3.0> **SLF4JAPI** from
2.0.16 -> 2.1.0-alpha1> **SL4FJJDK** new in
2.1.0-alpha1.> **GSON** from
2.12.2 -> 2.13.1> **ASM** from
9.7.1 -> 9.8> **Jar-Relocator** now is using my fork.
- Added new command
/fg debugfor debugging all actions of **FoxGate**:
(config.yml)``
# Do you want debug enable debug messages of FoxGate?
# - Set what messages you want to debug when the debugging mode
# is enabled with the command '/fg debug'. This only shows in
# the console.
debug:
# Messages about Events of the player?
events: true
# Messages returning service's responses for better
# creation or control of this. Enable only for testing,
# don't recommend enable this in production, otherwise,
# your console can be flooded a lot.
services: true
# Messages about actions making by FoxGate.
# Like, sending discord webhooks (responses), downloading
# GeoLocation databases and seding Telegram (requests).
actions: true
`
`
message:
help:
debug: 'Debug actions made by FoxGate in the console.'
debug:
enable: '{prefix} <green>You enabled the debug mode. Check the console.'
disable: '{prefix} <red>You disabled the debug mode.'
`
- Added new command to whitelist add/remove to the configuration. Also, moved all whitelist to new file created by default called
whitelist.yml.(whitelist.yml)
`
# Whitelist the detection to this name's.
# - Allow players in the list to bypass the detection of
# the antivpn. To disable this feature, use the value:
#
# names: []
#
# (!) It's case sensetive!
names:
- ImZowi
# Whitelist the detection to this IP's.
# - Allow ip's in the list to bypass the detection of
# the antivpn. To disable this feature, use the value:
#
# ips: []
#
# (!) The value under is the default in localhost.
ips:
- "127.0.0.1"
`
(config.yml)
`
message:
help:
whitelist: 'Edit configuration via command whitelist user/IP.'
whitelist:
invalid_usage: '{prefix} Use the command <aqua>/foxgate whitelist <add/remove> <name/ip><reset>.'
already: '{prefix} {IP}<red> is already whitelisted/unwhitelisted in the configuration!'
whitelisted: '{prefix} {IP}<green> was whitelisted in the configuration with type <white>{type}</white>. You can <white><underlined><click:run_command:"/foxgate whitelist remove {IP}">click here for remove again</click></underlined></white>.'
unwhitelisted: '{prefix} {IP}<green> was unwhitelisted in the configuration with type <white>{type}</white>. You can <white><underlined><click:run_command:"/foxgate whitelist add {IP}">click here for add again</click></underlined></white>.'
type_ip: 'IP'
type_name: 'Name'
problem: '{prefix} <red>Error while trying to add/remove to the whitelist. Check the console.'
`
- Added new option for using name in proxies and new command
/fg clearcache. This works with using a cache file or using database in case it's multi-proxy.(config.yml)
`
database:
# You want to save the cache in the database in new table
# instead of use a file? Use this only if you want to use
# multi-proxy or you're sure you don't has problems with your
# database.
#
# Name of this table it's '"table"_cache', so, if the "table"
# it's "foxgate", the name will be: "foxgate_cache", or if
# the "table" it's "vpn_cache", will be "vpn_cache_cache". Always
# finish with "_cache".
cache_database: false
message:
help:
clearcache: 'Clear the cache file with username saves.'
clearcache:
purging: '{prefix} <white>We are <yellow>purging</yellow> the cache file...'
purging_correctly: '{prefix} <green>The cache file has been purged/reseted.'
purging_problem: '{prefix} <red>Error while trying to purge the cache file. Check the console.'
`
- Added option to **Limit connections per IP**. Default it's
3.(config.yml)
`
antivpn:
# Limit maximum connections per IP.
# - When a player join to the server, this is saved
# in a list for count the numbers of players in
# a connection. If the limit is reached, the
# player isn't allowed from joining.
limiter:
# Enable this feature?
enable: true
# Determine the maximum limit of connections per
# IP. '3' is the best value by default, increase in
# case is required. This can help in prevent bots with
# same IP.
maxium: 3
# Message to return when a player is kicked with this option.
# placeholders: %PLAYER%, %IP%, %UUID%, %COUNTRY% (Premium and
# only if function is enabled) and %ASN% (Premium and only if
# function is enabled).
kick: "<red>You have been disconnected by FoxGate:\n<white>Maximum accounts per IP in your connection.\n\n<gray>This is an error? <white>Join to our discord server.\n<aqua><underlined>discord.idcteam.xyz"
`
- Using our custom base for bStats (Metrics) to avoid taking performance. For the **Creator** for the site, please, read our uncompiled comment inside the classes.
(config.yml)
`
configuration:
# Allow the usage of Metrics (bStats) in your server?
# - This is only for stadistics usage.
#
# ❝ What data is collected?
# We are using bStats (https://bstats.org/), this does not collect
# any personal data. Most of the collected data is information about
# the plugin's server like player count, online mode, Minecraft version,
# Java version, and more. All data gets sent and stored completely
# anonymously. See more in information about this in "bStats: Getting Started"
# https://bstats.org/getting-started
#
# (!) Since 1.0.2 (premium) and 1.1.0 (free), FoxGate uses
# their own code base for Metrics, but following their
# rules. This use asynchronous methods to send data and
# changes to Gson for better stability; improving the
# performance of this. You can safety has enable this to
# help to the creator without affecting the performance.
metrics: true
`
- Added new database type: **JayBird**.
(config.yml)
`
# This database is experimental.
jaybird:
hostname: "localhost"
port: 3050
database: "FoxGate.fdb"
username: "foxgate"
password: ""
# These settings apply to this Firebird database, as it uses Hikari for connection pooling.
# - Default values are suitable for most users. Modify only if necessary.
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Recommended: 10
maximum-pool-size: 10
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# Recommended: 1
minimum-idle: 1
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
`
- Added new **5 services** in the default configuration. (Thanks for our buyer, **@\_bad\_**, for making these configurations for **FoxGate** in the default section)
IPAPI IS
`
# ⛽ IPAPI IS
# 🔗 https://ipaphttps://ipapi.is/i.is/
#
# 🛒 Details:
# 💼 https://ipapi.is/app/signup
#
# - 1k daily requests, free account or without key (IP-based for limit).
# - 10k daily requests, pay $10 monthly.
# - 20k daily requests, pay $20 monthly.
# - 50k daily requests, pay $50 monthly.
# - 100k daily requests, pay $100 monthly.
# - 2M daily requests, pay $200 monthly.
ipapiis:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# You can use this field in case you
# has an account in this page.
key: ""
# URL.
url: "https://api.ipapi.is/?q=%IP%&key=%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "is_datacenter"
- "is_tor"
- "is_proxy"
- "is_vpn"
- "is_abuser"
- "is_bogon" # Read more about this in https://ipgeolocation.io/blog/bogon-ip-addresses
# Type to determine.
type: boolean
`
IPStack
`
# ⛽ IPStack
# 🔗 https://ipstack.com/
#
# 🛒 Details:
# 💼 https://ipstack.com/signup/free
#
# - 100 monthly requests, free account.
# - 50k monthly requests, basic account.
# - 500k monthly requests, professional account.
# - 2M monthly requests, professional plus account.
ipstack:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://api.ipstack.com/%IP%?access_key=%KEY%&security=1"
# Values to check.
values:
# Fields to check.
fields:
- "security.is_proxy"
- "security.is_crawler"
- "security.is_tor"
- "security.hosting_facility"
# Type to determine.
type: boolean
`
2IP
`
# ⛽ 2IP
# 🔗 https://2ip.io/
#
# 🛒 Details:
# 💼 https://2ip.io/registration/api/
#
# - 10k requests free per month.
# (Based in Billing)
2ip:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://api.2ip.io/%IP%?token=%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "asn.hosting"
# Type to determine.
type: boolean
`
GreIP
`
# ⛽ GreIP
# 🔗 https://greip.io/
#
# 🛒 Details:
# 💼 https://dashboard.greip.io/login
#
# - 15k monthly requests, free account.
# - 170k monthly requests, Standard account.
# - 400k monthly requests, Premium account.
# - Unlimited requests, "Pay-as-you-go".
greip:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'Authorization': 'Bearer KEY'
# URL.
url: "https://greipapi.com/lookup/ip/threats?ip=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "data.threats.isProxy"
- "data.threats.isRelay"
- "data.threats.isTor"
- "data.threats.isHosting"
# Type to determine.
type: boolean
`
IPGeolocation (PAID)
`
# ⛽ IPGeolocation (PAID SERVICE)
# 🔗 https://ipgeolocation.io/
#
# 🛒 Details:
# 💼 https://app.ipgeolocation.io/login
#
# This is a PAID SERVICE, require starting from
# $15 monthly subscription for using IP-security
# feature. First plan it's $15 (Bronze).
#
# - 150k monthly requests, Bronze ($15)
# - 1M monthly requests, Solver ($65)
# - 6M monthly requests, Gold ($200)
# - 120M+ monthly requests, Enterprise.
ipgeolocation:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://api.ipgeolocation.io/ipgeo?apiKey=%KEY%&ip=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "security.is_tor"
- "security.is_proxy"
- "security.is_cloud_provider"
- "security.is_known_attacker"
- "security.is_anonymous"
# Type to determine.
type: boolean
``- Fixed **permissions** with **LuckPerms** providing support multi-platform.
- Fixed **PostgreSQL** support.
➡️ **Reset your configuration** in case you want to apply already all the changes instead of copy manually.
# FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
(If you don't has plugin that hide tab-completion)2. Support now
1.3.x to 1.21.x, changed internal libraries to **Gson**.3. Improved command and improved performance.
4. Now libraries message are hidden by default, enable it with using argument
-Dfoxgate.enableLibrariesLog.5. Fixed in BungeeCord, player's get invalid packet for commands, making this only working in console only, **now works in both**.
### FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- Fixed compatibility with some services, like **ProxyCheck**.
- Improved performance and handling with the database, using totally async for **Velocity** and **BungeeCord**.
<details>
<summary>Configuration</summary>
``
# ___ _ _
# / \__ _| |_ __ _| |__ __ _ ___ ___
# / /\ / _ | __/ _ | '_ \ / _ / __|/ _ \# / /_// (_| | || (_| | |_) | (_| \__ \ __/
# /___,' \__,_|\__\__,_|_.__/ \__,_|___/\___|
# Configure a database for use.
database:
# - Available options in type.
# All options use HikariCP for better performance.
# |=> MySQL
# |=> MariaDB
# |=> PostgreSQL
# |=> SQLite
# |=> H2
#
# If you change this configuration and your server is already
# started. You can use the command "/foxgate db reconnect" to
# apply the changes without restarting plugin or server.
# Remember first reload the plugin with "/foxgate reload"
# and use that command.
type: "SQLite"
# Edit table in case you want a different.
# If you want to use your actually stats (of 1.0.5-pre4 or older),
# use the next:
# - "vpn_cache"
table: "foxgate"
# MariaDB/MySQL databases type. Edit here.
remote:
# Determine information of your database.
hostname: "localhost"
port: 3306
database: "foxav_db"
username: "root"
password: "password123"
# These settings apply to the MySQL/MariaDB connection pool (HikariCP).
# - Default values are suitable for most users. Only modify these if you know what you're doing!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 10
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 10
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 2
minimum-idle: 2
# Sets the maximum time an idle connection can remain in the pool before being automatically closed.
# - Connections that remain idle for longer than the configured value will be removed from the pool
# and replaced with new connections as needed.
# - This is useful to free up resources and keep connections "fresh" avoiding possible problems with
# stale connections.
# Recommended: 600000 (10 minutes)
idle-timeout: 600000
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1500000 (25 minutes)
maximum-lifetime: 1500000
# Frequency of pings to keep the connection alive, in milliseconds.
# - This prevents connections from being closed due to inactivity (common in many databases or firewalls).
# - Must be less than 'maximum-lifetime' and greater than 30 seconds (30000 ms).
# Example:
# For long-running servers, a value of 10 minutes (600000 ms) is generally ideal.
# Recommended: 600000 (10 minutes)
keepalive-time: 600000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 3-5 seconds (3000-5000 ms) is ideal.
# Recommended: 5000 (5 seconds)
connection-timeout: 5000
# Custom validation timeout (time taken to validate a connection), in milliseconds.
# - Determines how long the pool will wait while testing if a connection is still valid.
# - A low value improves responsiveness, but setting it too low may cause false negatives.
# Example:
# For most databases, 3 seconds (3000 ms) is sufficient for validation.
# Recommended: 3000 (3 seconds)
validation-timeout: 3000
# Leak detection threshold in milliseconds.
# - This setting helps detect connections that are not properly closed.
# - If a connection is checked out but not closed within this time, a warning will be logged.
# - Useful for debugging connection leaks in plugins or applications.
# Example:
# If you expect queries to be fast, a value of 60 seconds (60000 ms) can help catch leaks.
# If you have long transactions, set a higher value to avoid false positives.
# Recommended: 60000 (1 minute)
leak-detection-threshold: 60000
# Custom properties for advanced users.
# Add any additional properties to fine-tune the connection.
#
# You can uncomment unnecesary properties or remove,
# also edit to values that is perfect for you.
# (!) THIS PROPERTIES IS BASED WITH SUPPORT
# MARIADB, IF YOU GET ERROR IN MYSQL, YOU CAN
# ADAPT OR CONSIDERING TO CHANGE TO MARIADB,
# THAT WORKS WITH MYSQL DATABASES.
properties:
# - SSL.
# Database connection settings.
# Adjust these properties to optimize the connection with your MySQL/MariaDB server.
# Enables or disables SSL for secure connections.
# It is highly recommended to set this to true if your server supports SSL.
# Default is false, as many MySQL/MariaDB servers do not support SSL.
sslMode: "disabled"
requireSSL: "false" # If set to "true", forces SSL connections. Overrides 'sslMode'.
verifyServerCertificate: "false" # Validates the server's SSL certificate. Set to "true" for production.
# - Connection Optimization
cachePrepStmts: "true" # Enables prepared statement caching
prepStmtCacheSize: "250" # Number of prepared statements to cache
prepStmtCacheSqlLimit: "2048" # Maximum size of a query in the cache
useServerPrepStmts: "true" # Uses server-side prepared statements
# - Performance and Buffering
rewriteBatchedStatements: "true" # Optimizes batch insert/update performance
useCompression: "false" # Enables compression for data transfer (optional)
maintainTimeStats: "false" # Disables time statistics for improved performance
autoReconnect: "true" # Automatically reconnects if the connection is lost
# - Character Encoding
# Specifies whether Unicode character encoding should be used.
# If working with multilingual data, this is highly recommended.
useUnicode: "true"
# Defines the character encoding for the database connection.
# Use "utf8" for compatibility with most character sets.
characterEncoding: "utf8"
# - Time Zone
serverTimezone: "UTC" # Ensures consistent timezone handling
postgresql:
hostname: "localhost"
port: 5432
database: "foxav_db"
username: "postgres"
password: "password123"
# Database connection settings for PostgreSQL.
settings:
# Adjust these properties to optimize the connection with your PostgreSQL server.
# Enables or disables SSL for secure connections.
# It is highly recommended to set this to true if your server supports SSL.
# Default is false.
ssl: false
# The maximum time in seconds to wait for a connection from the pool.
# Choose a value between 1 and 5 for a balance between availability and performance.
# Recommended: 3.0
connectiontimeout: 3.0
# Specifies whether Unicode character encoding should be used.
# PostgreSQL natively supports Unicode, so this can be left as true.
useUnicode: true
# Defines the character encoding for the database connection.
# Use "UTF-8" to handle multilingual data and ensure compatibility.
characterEncoding: "UTF-8"
# Keeps idle connections alive.
tcpKeepAlive: true
# Timeout for socket operations in seconds.
socketTimeout: 30
# Number of prepared statement executions before switching to server-side prepared statements.
prepareThreshold: 5
# Application name for debugging or monitoring purposes.
applicationName: "FoxGate"
# Enables optimized binary transfer for certain data types.
binaryTransfer: true
# These settings apply to this PostgreSQL, because uses Hikari for connection.
# - Default values are suitable for most users. Only modify these if you know what you're doing!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 10
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 10
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 2
minimum-idle: 2
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 30-50 seconds (30000-50000 ms) is ideal.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
# Leak detection threshold in milliseconds.
# - This setting helps detect connections that are not properly closed.
# - If a connection is checked out but not closed within this time, a warning will be logged.
# - Useful for debugging connection leaks in plugins or applications.
# Example:
# If you expect queries to be fast, a value of 60 seconds (60000 ms) can help catch leaks.
# If you have long transactions, set a higher value to avoid false positives.
# Recommended: 60000 (1 minute)
leak-detection-threshold: 60000
sqlite:
file: "FoxGate.db"
# These settings apply to this SQLite, because uses Hikari for connection.
# - Default values are suitable for most users. Only modify these if you know what you're doing!
#
# Yeah... I know HikariCP isn't better to use with SQLite, but is only for avoid any
# type of errors! Please, don't kill me!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 10
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 10
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 1
minimum-idle: 1
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 30-50 seconds (30000-50000 ms) is ideal.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
# Leak detection threshold in milliseconds.
# - This setting helps detect connections that are not properly closed.
# - If a connection is checked out but not closed within this time, a warning will be logged.
# - Useful for debugging connection leaks in plugins or applications.
# Example:
# If you expect queries to be fast, a value of 60 seconds (60000 ms) can help catch leaks.
# If you have long transactions, set a higher value to avoid false positives.
# Recommended: 60000 (1 minute)
leak-detection-threshold: 60000
h2:
file: "h2db"
# These settings apply to this H2, because uses Hikari for connection.
# - Default values are suitable for most users. Only modify these if you know what you're doing!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 10
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 10
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 1
minimum-idle: 1
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 30-50 seconds (30000-50000 ms) is ideal.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
# Leak detection threshold in milliseconds.
# - This setting helps detect connections that are not properly closed.
# - If a connection is checked out but not closed within this time, a warning will be logged.
# - Useful for debugging connection leaks in plugins or applications.
# Example:
# If you expect queries to be fast, a value of 60 seconds (60000 ms) can help catch leaks.
# If you have long transactions, set a higher value to avoid false positives.
# Recommended: 60000 (1 minute)
leak-detection-threshold: 60000
# When an IP isn't detected a vpn or proxy, this need to save in
# cache to don't make more requests for a little time for save
# performance and requests, customizable here.
bypass:
# Enable this feature?
enable: true
# Determine the amount in hours to save the IP in cache and avoid
# make more requests to this IP. Useful to save performance and
# verify only one time for certain time.
#
# Recommended: 2
# Type 'permanent' for bypass permanent.
expiration_time: 2
# When an IP is detected in a result, this is save in the cache
# to don't make more request for a little time, this value is
# saved in hours.
#
# Recommended: 36
# Type 'permanent' for blocking permanent.
expiration_time: 36
``
</details>
- Added new service for detecting Proxy, VPN and Datacenter: **IPDetective**
`
# ⛽ IPDetective
# 🔗 https://ipdetective.io/
#
# 🛒 Details:
# 💼 https://ipdetective.io/login
#
# - 1,000 daily requests, free account.
# - 30k daily requests, basic account.
# - 80k daily requests, premium account.
# - 200k daily requests, enterprise account.
ipdetective:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'x-api-key': 'KEY'
# URL.
url: "https://api.ipdetective.io/ip/%IP%?info=true"
# Values to check.
values:
# Fields to check.
fields:
- "type"
# Type to determine.
type: ["vpn", "datacenter", "bot", "proxy"]
``# We are happy to announce... FoxGate Premium was released! :D
See the description section to view where you can purchase it, you can join to the discord server for any question about it.
- FIXED VELOCITY SUPPORT, USE THIS VERSION FOR VELOCITY USERS NOW.**
- Fixed updater checker returning invalid version.
- Fixed some displays.
# We are working for the premium version, this for the moment has the webhook and geo (new, view how this system is in new configuration of this version) system, you can contact in the discord support for purchase with PayPal (for the moment, only). This go to be public for purchase when I finish all the systems planned.
- Fixed some problems.
- Improved a little more the performance.
- Updated libraries.
- Libraries now **relocate to avoid problems with software, like Carbon**.
- Fixed permissions problems with Velocity.
- Fixed problems with caching in the database.
- Now the plugin use shaded class for reduce size and better compatibility.
- Improved a little more the system of detection in VPNs.
- Improved compatibility with Minecraft 1.7.x.
- Fixed **AntiVPNio** endpoint.
# We are working for the premium version, this for the moment has the webhook system, you can contact in the discord support for purchase with PayPal (for the moment, only). This go to be public for purchase when I finish all the systems planned.
- Fixing default value for **MySQL**, adding configuration for **MariaDB** and **MySQL** default compatibility.
- Fixed all errors with **H2**, it's now stable and usable in production.
- Added a **startup java argument** for suppressing all log about the **library downloader**.
- Added stable support for Velocity** (and Forks).
- Added stable support for BungeeCord** (and Forks).
- Using now **Java 11** and applied **A LOT OF CHANGES FOR PERFORMANCE**.
- Fixed some **rarely errors** in backend.
- Improved **SQLite** performance with adding some execution.
- Updated **HikariCP** from
4.0.3to6.2.1. - Added **Negativity API (unlimited usage)**.
# THIS UPDATE DOESN'T REQUIRE RESET YOUR CONFIG, YOU CAN COMPARE YOUR CONFIG.YML WITH THE .JAR INSIDE IF YOU WANT GET SOME LITTLE CHANGES.
- Added **IPRisk API (unlimited usage)**.
- Added **FreeIPAPI**.
- Increased
max_flagsoption to __3__ for better avoid false flags for the amount of free APIs. - Added **IPdb-Amelia API** (unlimited usage).
- Disabled **SkyDB** by default in configuration because their big delay in response.
- Fixed
valueto check for VPN in case the API return in array list. - Added option to use
valuewith array list. (this feature was added for **IPdb-Amelia**, for better results) - Added reload command for the plugin.
- Fixed bypass permission.
- Added auto-complete for add/remove sub-arguments.
- Fixed **Folia** support.
- Implemented a **little API** for **developers**.
- Download their dependencies automatically when the server start, so you can use **MySQL** and **SQLite** in **Proxy** (**BungeeCord**/**Velocity**).
- Added support for **MiniMessage**.
- Added support for new databases: **MariaDB**, **PostgreSQL** and **H2** with **HikariCP**.
- Added new command **/foxgate db**; in this you can **purge** the database, all saved IP's (/foxgate db purge) and **reconnect** the database if you applied changes and you don't want restart your server (/foxgate db reconnect).
- Added new command **/foxgate status**, with this you can see information from an IP saved in the database.
- Improved the structure in the **config.yml**.
- Updated and fixed some fields in the **API**.
- Fixed in Velocity backends, this only detecting IP of host.
- Fixed a lot of errors in 1.0.4 version.
- Changed
PlayerPreLoginEventtoAsyncPlayerPreLoginEventfor better performance.
New configuration reference:
<details>
<summary>Spoiler</summary>
``
# ------------------------------------------------------------------------------------------- #
# ______ _____ _ #
# | ___| | __ \ | | #
# | |_ ___ __ __| | \/ __ _ | |_ ___ #
# | _|/ _ \\ \/ /| | __ / _ || __|/ _ \ ## | | | (_) |> < | |_\ \| (_| || |_| __/ #
# \_| \___//_/\_\ \____/ \__,_| \__|\___| #
# #
# [v1.0.5-pre5] #
# #
# ------------------------------------------------------------------------------------------- #
# If you still has questions, you can join to the discord server in:
# https://discord.com/invite/FTtVXfj or you can use the Discussion page in https://www.spigotmc.org/threads/646308/.
# ___ _ _
# / \__ _| |_ __ _| |__ __ _ ___ ___
# / /\ / _
| __/ _ | '_ \ / _ / __|/ _ \
# / /_// (_| | || (_| | |_) | (_| \__ \ __/
# /___,' \__,_|\__\__,_|_.__/ \__,_|___/\___|
# Configure a database for use.
database:
# - Available options in type.
# |=> MySQL (HikariCP)
# |=> MariaDB (HikariCP)
# |=> PostgreSQL (HikariCP)
# |=> SQLite (HikariCP)
# |=> H2 (Unstable)
#
# If you change this configuration and your server is already
# started. You can use the command "/foxgate db reconnect" to
# apply the changes without restarting plugin or server.
# Remember first reload the plugin with "/foxgate reload"
# and use that command.
type: "sqlite"
# Edit table in case you want a different.
# If you want to use your actually stats (of 1.0.5-pre4 or older),
# use the next:
# - "vpn_cache"
table: "foxgate"
# MariaDB/MySQL databases type. Edit here.
# This uses HikariCP.
remote:
# Determine information of your database.
hostname: "localhost"
port: 3306
database: "foxav_db"
username: "root"
password: "password123"
# These settings apply to the MySQL/MariaDB connection pool (HikariCP).
# - Default values are suitable for most users. Only modify these if you know what you're doing!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 4
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 4
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 4
minimum-idle: 4
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1500000 (25 minutes)
maximum-lifetime: 1500000
# Frequency of pings to keep the connection alive, in milliseconds.
# - This prevents connections from being closed due to inactivity (common in many databases or firewalls).
# - Must be less than 'maximum-lifetime' and greater than 30 seconds (30000 ms).
# Example:
# For long-running servers, a value of 10 minutes (600000 ms) is generally ideal.
# Recommended: 600000 (10 minutes)
keepalive-time: 600000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 3-5 seconds (3000-5000 ms) is ideal.
# Recommended: 5000 (5 seconds)
connection-timeout: 5000
# Custom validation timeout (time taken to validate a connection), in milliseconds.
# - Determines how long the pool will wait while testing if a connection is still valid.
# - A low value improves responsiveness, but setting it too low may cause false negatives.
# Example:
# For most databases, 3 seconds (3000 ms) is sufficient for validation.
# Recommended: 3000 (3 seconds)
validation-timeout: 3000
# Custom properties for advanced users.
# Add any additional properties to fine-tune the connection.
#
# You can uncomment unnecesary properties or remove,
# also edit to values that is perfect for you.
# (!) THIS PROPERTIES IS BASED WITH SUPPORT
# MARIADB, IF YOU GET ERROR IN MYSQL, YOU CAN
# ADAPT OR CONSIDERING TO CHANGE TO MARIADB,
# THAT WORKS WITH MYSQL DATABASES.
properties:
# - SSL.
# Database connection settings.
# Adjust these properties to optimize the connection with your MySQL/MariaDB server.
# Enables or disables SSL for secure connections.
# It is highly recommended to set this to true if your server supports SSL.
# Default is false, as many MySQL/MariaDB servers do not support SSL.
sslMode: "false"
requireSSL: "false" # If set to "true", forces SSL connections. Overrides 'sslMode'.
verifyServerCertificate: "false" # Validates the server's SSL certificate. Set to "true" for production.
# - Connection Optimization
cachePrepStmts: "true" # Enables prepared statement caching
prepStmtCacheSize: "250" # Number of prepared statements to cache
prepStmtCacheSqlLimit: "2048" # Maximum size of a query in the cache
useServerPrepStmts: "true" # Uses server-side prepared statements
# - Performance and Buffering
rewriteBatchedStatements: "true" # Optimizes batch insert/update performance
useCompression: "false" # Enables compression for data transfer (optional)
maintainTimeStats: "false" # Disables time statistics for improved performance
autoReconnect: "true" # Automatically reconnects if the connection is lost
# - Character Encoding
# Specifies whether Unicode character encoding should be used.
# If working with multilingual data, this is highly recommended.
useUnicode: "true"
# Defines the character encoding for the database connection.
# Use "utf8" for compatibility with most character sets.
characterEncoding: "utf8"
# - Time Zone
serverTimezone: "UTC" # Ensures consistent timezone handling
postgresql:
hostname: "localhost"
port: 5432
database: "foxav_db"
username: "postgres"
password: "password123"
# Database connection settings for PostgreSQL.
settings:
# Adjust these properties to optimize the connection with your PostgreSQL server.
# Enables or disables SSL for secure connections.
# It is highly recommended to set this to true if your server supports SSL.
# Default is false.
ssl: false
# The maximum time in seconds to wait for a connection from the pool.
# Choose a value between 1 and 5 for a balance between availability and performance.
# Recommended: 3.0
connectiontimeout: 3.0
# Specifies whether Unicode character encoding should be used.
# PostgreSQL natively supports Unicode, so this can be left as true.
useUnicode: true
# Defines the character encoding for the database connection.
# Use "UTF-8" to handle multilingual data and ensure compatibility.
characterEncoding: "UTF-8"
# Keeps idle connections alive.
tcpKeepAlive: true
# Timeout for socket operations in seconds.
socketTimeout: 30
# Number of prepared statement executions before switching to server-side prepared statements.
prepareThreshold: 5
# Application name for debugging or monitoring purposes.
applicationName: "FoxGate"
# Enables optimized binary transfer for certain data types.
binaryTransfer: true
# These settings apply to this PostgreSQL, because uses Hikari for connection.
# - Default values are suitable for most users. Only modify these if you know what you're doing!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 10
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 10
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 2
minimum-idle: 2
# Sets the maximum time an idle connection can remain in the pool before being automatically closed.
# - Connections that remain idle for longer than the configured value will be removed from the pool
# and replaced with new connections as needed.
# - This is useful to free up resources and keep connections "fresh" avoiding possible problems with
# stale connections.
# Recommended: 600000 (10 minutes)
idle-timeout: 600000
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 30-50 seconds (30000-50000 ms) is ideal.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
sqlite:
file: "FoxGate.db"
# These settings apply to this SQLite, because uses Hikari for connection.
# - Default values are suitable for most users. Only modify these if you know what you're doing!
#
# Yeah... I know HikariCP isn't better to use with SQLite, but is only for avoid any
# type of errors! Please, don't kill me!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 5
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 5
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 1
minimum-idle: 1
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 30-50 seconds (30000-50000 ms) is ideal.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
# This is too unstable for the moment.
h2:
file: "h2db"
# When an IP isn't detected a vpn or proxy, this need to save in
# cache to don't make more requests for a little time for save
# performance and requests, customizable here.
bypass:
# Enable this feature?
enable: true
# Determine the amount in hours to save the IP in cache and avoid
# make more requests to this IP. Useful to save performance and
# verify only one time for certain time.
#
# Recommended: 2
expiration_time: 2
# When an IP is detected in a result, this is save in the cache
# to don't make more request for a little time, this value is
# saved in hours.
#
# Recommended: 36
expiration_time: 36
# ___ __ _ _ _
# / __\___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __
# / / / _ \| '_ \| |_| |/ _ | | | | '__/ _ | __| |/ _ \| '_ \
# / /__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | |
# \____/\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_|
# |___/
# Configure some others little options.
configuration:
# Allow the usage of Metrics (bStats) in your server?
# - This is only for stadistics usage, can help to the creator
# in view amount of servers that the plugin are using. This
# doesn't seems to has any impact in performance.
metrics: true
# Print to console?
# - Enable this to send the equal notification to the console when
# a player is flagged.
console: true
# Define the permission.
# - Set here the permission to see the notification in case this
# is used in case a player is using VPN. By default, this is one
# permission default of the antivpn: 'foxav.notifications'
permission: 'foxav.notifications'
# Do you want to enable this feature?
# - Automatic check new updates in the Spigot page. This only detect
# when the server is starting. You need to have connection for check
# new updates.
update: true
#
# /\/\ ___ ___ ___ __ _ __ _ ___ ___
# / \ / _ / __/ __|/ _ |/ _ |/ _ / __|
# / /\/\ | __\__ \__ | (_| | (_| | __\__ \
# \/ \/\___|___|___/\__,_|\__, |\___|___/
# |___/
# 🔨 Configure here the messages to show.
# You can use MiniMessage in this section. This also works with
# legacy bukkit colors, but isn't recommended, because this
# is totally incompatibility!
#
# 📷 Viewer:
# https://webui.advntr.dev/
#
# 📚 Format:
# https://docs.advntr.dev/minimessage/format.html
message:
# Message to return when a player is kicked with the option of actions in 'kick', this
# his useful if you want kick with the plugin and no with command. You can use the
# placeholders: %PLAYER%, %IP% and %UUID%. Use '\n', '%NL%' or '\nl' for new lines in
# the message.
# This doesn't support MiniMessage, sorry. :(
kick: "&cYou have been disconnected by FoxGate:\n&fVPN or Proxy has been found in your connection!\n\n&7This is an error? &fJoin to our discord server.\n&b&ndiscord.idcteam.xyz"
# Notification when a player is kicked. You can suppress this with only
# leave in blank.
notify: '{prefix} <aqua>{player} <gray>has been detected using VPN and has been removed! <green>({IP})'
# This only show in console.
# This can help in debug in case a service is not working correctly.
# On the end, the plugin already send the message of error. You can
# suppress this with only leave in blank.
error: '{prefix} Error while verifying VPN in service "{service}" to {player}: '
# Determine the prefix to use when a player use a command.
prefix: '<yellow><bold>FGT</bold></yellow><dark_gray> ►<reset>'
help:
verbose: 'Enable/disable verbose mode.'
add: 'Add a IP to the database.'
remove: 'Remove a IP from the database.'
reload: 'Reload configuration file to apply changes.'
db: 'Purge or reconnect the database.'
status: 'View information from a cached IP in the database.'
verbose:
enable: '{prefix} <green>You enabled the verbose mode.'
disable: '{prefix} <red>You disabled the verbose mode.'
no_malicious: '{prefix} <green>[VERBOSE] <aqua>{player} <gray>is not a VPN in service: <green>{service} <dark_gray>({IP})'
malicious: '{prefix} <red>[VERBOSE] <aqua>{player} <gray>is marked a VPN in service: <green>{service} <dark_gray>({IP})'
ignored: '{prefix} <yellow>[VERBOSE] <aqua>{player} <gray>has been ignored for whitelist in <green>{type} <dark_gray>({IP})'
db:
invalid_usage: '{prefix} Use the command <aqua>/foxgate db <purge/reconnect><reset>.'
reconnecting: '{prefix} <yellow>Trying to reconnecting the database...'
reconnect_correctly: '{prefix} <green>The database was reconnected.'
reconnect_problem: '{prefix} <red>Error while trying to reconnect the database. Check the console.'
purging: '{prefix} <yellow>Trying to purging the database...'
purging_correctly: '{prefix} <green>The database has been purged/reseted.'
purging_problem: '{prefix} <red>Error while trying to purge the database. Check the console.'
reload:
message: '{prefix} <green>The configuration file has been reloaded.'
add-remove:
invalidip: '{prefix} {IP}<red> is not a valid IP/Username!'
already: '{prefix} {IP}<red> is already added/removed from the database!'
add: '{prefix} {IP}<green> has been added to the dabatase!'
remove: '{prefix} {IP}<green> has been removed from the database!'
status:
invalidip: '{prefix} {IP}<red> is not a valid IP!'
# Here you can find new placeholders only for this message:
#
# {DETECTED} - Return only the services that detected that IP has VPN.
# {UNDETECTED} - Return only the services that doesn't detect that IP is VPN.
# {LIST} - Return both list, but this difference with color (customizable).
# {MAX} - Return the number of maxium flags to deny access to the player.
# {COUNT_DETECTED} - Return the count of services that the player has been detected.
# {COUNT_UNDETECTED} - Return the count of services that the player doesn't has been detected.
# {STATUS} - Return the status of the player.
detected: '<red>'
undetected: '<green>'
none: '<red>None.'
no_cached: '<red>Not cached in database.'
allow: '<green>Verified.'
deny: '<red>Blocked.'
info: " \n <green>Viewing status of <aqua>{IP}\n <dark_gray>▪ <white>Status: {STATUS} <yellow>({COUNT_DETECTED}/{MAX})</yellow>\n <white>Undetected: <green>{COUNT_UNDETECTED} <dark_gray>❙ <white>Detected: <red>{COUNT_DETECTED} \n <dark_gray>▪ <white>Services: {LIST}\n "
# _ _ _ ___ __
# /_\ _ __ | |_(_/\ /\/ _ \/\ \ \
# //_\\| '_ \| __| \ \ / / /_)/ \/ /
# / _ | | | | |_| |\ V / ___/ /\ /
# \_/ \_|_| |_|\__|_| \_/\/ \_\ \/
#
# 🪓 Configure and customize VPN detection.
# This section allows you to configure and manage anti-VPN lists, which are used to perform
# checks when players join to determine if they are using a VPN. By default, several anti-VPN
# services are pre-configured for detection purposes.
antivpn:
# Specify the minimum number of services
# required to flag a player's IP as a VPN/proxy.
# - This value must be equal to or less than the
# number of enabled/created services.
max_flags: 3
# Change userAgent value in case is necessary.
# Recommended default:
# - 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11'
# Or:
# - 'FoxGate/plugin'
userAgent: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11"
# Determine here the timeout to prevent any
# type of crash if the API is down, this help
# a lot in case an API dead or you use a
# service that is down.
# Use in milliseconds.
#
# (1500ms = 1.5s)
# (1000ms = 1.0s)
timeout: 1750
# Whitelist the detection to this name's.
# - Allow players in the list to bypass the detection of
# the antivpn. To disable this feature, use the value:
#
# whitelist-name: []
#
# (!) It's case sensetive!
whitelist-name:
- 'ImZowi' # It's me! :3
# Whitelist the detection to this IP's.
# - Allow ip's in the list to bypass the detection of
# the antivpn. To disable this feature, use the value:
#
# whitelist-ip: []
#
# (!) The value under is the default in localhost.
whitelist-ip:
- '127.0.0.1'
# Actions to make when is detected.
# - Use this to kick with the plugin instantly:
#
# - 'kick'
#
# Or add your custom command. Disable this feature
# with only adding 'actions: {}'.
actions:
- 'kick'
#- 'ipban %IP% Trying to access with %PLAYER% using a VPN.'
# List of services.
# You can create your check antivpn with:
#
# 'servicename':
# # Enable this service?
# enabled: true
# # Add this field in case requere key.
# key: "KEY"
# # Add the model to request the page, this
# # use JSON in case is invalid the value or
# # is not set.
# #
# # Supported:
# # JSON, HTML
# model: "JSON"
# # This field is necessary. Insert your
# # service URL.
# #
# # Remember:
# # %IP% = Return player's ip.
# # %KEY% = Return 'key' field value.
# url: "https://example-antivpn.com/check/%IP%?key=%KEY%"
# # Headers in case is necessary.
# #
# # Set to: 'headers: []' to disable or only don't
# # add in the settings for this service.
# headers:
# 'Example-header': 'KEY'
# # Values to check.
# # This equal is necessary to determine.
# values:
# # Fields to check.
# # In case you disable this with adding
# # 'fields: {}' to exclude and only get if
# # 'type' option contains in the final request.
# # This is a example.
# fields:
# - "vpn"
# # Type to determine.
# # If this return true/false, use "boolean", in case
# # this is string, only put string, example:
# #
# # type: 'yes'
# type: boolean
services:
# ⛽ IP-API
# 🔗 https://ip-api.com/
#
# 🛒 Details:
# - Unlimited requests, no key.
ipapi:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
url: "http://ip-api.com/json/%IP%?fields=status,message,proxy,hosting,query"
# Values to check.
values:
# Fields to check.
fields:
- "proxy"
- "hosting"
# Type to determine.
type: boolean
# ⛽ BlackBox
# 🔗 https://blackbox.ipinfo.app/
#
# 🛒 Details:
# - Unlimited requests, no key.
blackbox:
# Enable this service?
enabled: true
# Model request to use.
model: "HTML"
# URL.
url: "https://blackbox.ipinfo.app/lookup/%IP%"
# Values to check.
values:
# Fields to check.
fields: {}
# Type to determine.
type: "Y"
# ⛽ Rayzs DE
# 🔗 https://www.rayzs.de/
#
# 🛒 Details:
# - Unlimited requests, no key.
rayzsde:
# Enable this service?
enabled: true
# Model request to use.
model: "HTML"
# URL.
url: "https://www.rayzs.de/provpn/api/proxy.php/?a=%IP%"
# Values to check.
values:
# Fields to check.
fields: {}
# Type to determine.
type: boolean
# ⛽ SkyDB
# 🔗 http://ipcheck.skydb.de/
# WARNING: DISABLED BY DEFAULT BECAUSE THEIR BIG DELAY IN
# RESPONSE! ENABLE IT IF YOU REALLY WANT THIS.
#
# 🛒 Details:
# - Unlimited requests, no key.
skydb:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# URL.
url: "http://ipcheck.skydb.de/getinfo?ip=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "Hosting"
- "Proxy"
- "VPN"
- "TOR"
# Type to determine.
type: boolean
# ⛽ FunkeMunky
# 🔗 https://funkemunky.cc/
#
# 🛒 Details:
# - 20k montly requests, no key.
# - 150k-2Mo montly requests, paid account.
# - 200 minutly requests, paid account (unlimited).
funkemunky:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
# Use this for paid account:
# url: "https://funkemunky.cc/vpn?ip=%IP%&license=%KEY%&cached=USE_WEB_CACHE"
url: "https://funkemunky.cc/vpn?ip=%IP%"
# Insert your key here.
# You can use this field in case you
# has a paid account.
key: ""
# Values to check.
values:
# Fields to check.
fields:
- "proxy"
- "data_center"
- "vpn"
# Type to determine.
type: boolean
# ⛽ IPRisk
# 🔗 https://api.iprisk.info/
#
# 🛒 Details:
# - Unlimited requests, no key.
iprisk:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
url: "https://api.iprisk.info/v1/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "vpn"
- "data_center"
- "open_proxy"
# Type to determine.
type: boolean
# ⛽ IPdb-Amelia
# 🔗 https://ipdb.amelia.fun/
#
# 🛒 Details:
# - Unlimited requests, no key.
amelia:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
url: "https://ipdb.amelia.fun/query?address=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "result.types"
# Type to determine.
#
# Amelia provide list of types:
# https://ipdb.amelia.fun/types
type: ["3", "4", "6"]
# ⛽ IP2LOCATION
# 🔗 https://ip2location.io/
#
# 🛒 Details:
# 💼 https://ip2location.io/sign-up
#
# - 500 requests per day, no key, only proxy detection.
# - 30k montlhy requests, "free" plan, basic vpn detection.
# - 150k montlhy requests, "starter" plan, basic vpn detection.
# - 300k montlhy requests, "plus" plan, advanced vpn detection.
# - 600k montlhy requests, "security" plan, full vpn detection.
ip2location:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
#
# I changed here because if "key" parameters is
# in the URL, this make like this is trying to
# use a key. Delete '#' under and delete 'key: ""',
# remember to replace 'KEY' with your API key.
#key: "&key=KEY"
key: ""
# URL.
url: "https://api.ip2location.io/?ip=%IP%&format=json%KEY%"
# Values to check.
values:
# Fields to check.
# "is_proxy" only field if you don't has "Security" plan, the
# others if you pay 499$ for this...
fields:
- "is_proxy"
- "proxy.is_vpn"
- "proxy.is_tor"
- "proxy.is_public_proxy"
- "proxy.is_web_proxy"
- "proxy.is_web_crawler"
- "proxy.is_residential_proxy"
- "proxy.is_botnet"
- "proxy.is_spammer"
- "proxy.is_scanner"
- "proxy.is_consumer_privacy_network"
- "proxy.is_enterprise_private_network"
- "proxy.is_data_center"
# Type to determine.
type: boolean
# ⛽ FreeIPAPI
# 🔗 https://freeipapi.com/
#
# 🛒 Details:
# 📃 See more information in https://docs.freeipapi.com/request.html#authorization
# 🏷 Prices and usages: https://freeipapi.com/#pricing
# 💼 Login: https://freeipapi.com/register
#
# - 60 requests per minute, without key.
# - Unlimited requests, "premium" plan.
freeipapi:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
#headers:
# 'Authorization': 'Bearer KEY'
#
# Remove comment from above to use key in case
# you has one.
headers: []
# URL.
url: "https://freeipapi.com/api/json/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "isProxy"
# Type to determine.
type: boolean
# ⛽ BanProxy
# 🔗 https://www.banproxy.com/
#
# 🛒 Details:
# 💼 https://banproxy.com/panel
#
# - 50 minutly requests, free account.
# - Unlimited requests, paid account.
banproxy:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://banproxy.com/api/%IP%/%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "proxy"
- "hosting"
# Type to determine.
type: boolean
# ⛽ GetIPIntel
# 🔗 https://getipintel.net/
#
# 🛒 Details:
# 💼 https://getipintel.net/free-proxy-vpn-tor-detection-api/#FAQ
#
# - 500 requests per day and 15 requests per minute - normal.
# - Unknowned requests with a "package".
getipintel:
# Enable this service?
# PLEASE, PUT A VALID "EMAIL" LIKE
# KEY TO USE THIS, OTHERWISE, THIS CAN
# BLOCK YOU (SOMETIMES, INSTANTLY).
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
# PLEASE, PUT A VALID "EMAIL" LIKE
# KEY TO USE THIS, OTHERWISE, THIS CAN
# BLOCK YOU (SOMETIMES, INSTANTLY).
key: ""
# URL.
url: "https://check.getipintel.net/check.php?ip=%IP%&contact=%KEY%&flags=m&format=json"
# Values to check.
values:
# Fields to check.
fields:
- "result"
# Type to determine.
type: '1'
# ⛽ VPN-API XYZ
# 🔗 https://vpn-api.xyz/
#
# 🛒 Details:
# 💼 https://vpn-api.xyz/dashboard
# 🔑 Autokey: https://vpn-api.xyz/getkey.php
#
# - Unlimited requests, key required.
vpn-apixyz:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://vpn-api.xyz/detector?key=%KEY%&host=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "is_proxy"
# Type to determine.
type: boolean
# ⛽ VPN Blocker
# 🔗 https://vpnblocker.net/
#
# 🛒 Details:
# 💼 https://vpnblocker.net/
#
# - 500 montlhy requests, no key/free.
# - Unlimited requests, paid.
vpnblocker:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'X-API-KEY': 'KEY'
# URL.
url: "https://api.vpnblocker.net/v2/json/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "host-ip"
# Type to determine.
type: boolean
# ⛽ IPQualityScore
# 🔗 https://www.ipqualityscore.com/
#
# 🛒 Details:
# 💼 https://www.ipqualityscore.com/user/dashboard
#
# - 5.000 monthly requests, free account.
# - 500k monthly requests, "SMB Basic" plan.
# - 1M monthly requests, "SMB Premium" plan.
# - 4M monthly requests, "SMB Enhanced" plan.
# - "CUSTOM" monthly requests, "Enterprise" plan.
ipqualityscore:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://ipqualityscore.com/api/json/ip/%KEY%/%IP%?strictness=0&allow_public_access_points=true"
# Values to check.
values:
# Fields to check.
# "bot_status" and "recent_abuse" can probably detect bots, I added for better detection in
# some services of VPN. If you get false flags of this, delete both values and try.
fields:
- "proxy"
- "vpn"
- "tor"
- "bot_status"
- "recent_abuse"
# Type to determine.
type: boolean
# ⛽ IDCTeam-API (👑 own API)
# 🔗 https://www.idcteam.xyz/discord
#
# 🛒 Details:
# 💼 https://www.idcteam.xyz/profile
#
# - 250 hours requests, free account.
# - Infinite hours requests, paid account.
idcteam:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# URL.
url: "https://api.idcteam.xyz/utils/checkip?ip=%IP%&key=%KEY%"
# Insert your key here.
# Don't delete this field!
key: ""
# Values to check.
values:
# Fields to check.
#
# 👑 Premium feature, in the future, read:
# (Future plan, for the moment, this can detect bot's and
# vpn's)
# This also can prevent some types of bots, if you use
# a legitimated copy of the plugin (paid), you can join
# to our discord server and get a key that detects
# bot's ips, also can unlock a completely feature that
# prevents requests when an attack on your server
# occurs.
fields:
- "proxy"
- "bot"
# Type to determine.
type: boolean
# ⛽ ProxyCheck
# 🔗 https://proxycheck.io/
#
# 🛒 Details:
# 💼 https://proxycheck.io/pricing
#
# - 100 daily requests, no key.
# - 1,000 daily requests, free account.
# - 10k-512m daily requests, paid account.
#
# WARNING! This use 2 requets, why? This use
# the field 'vpn=3' (3) to check for vpn and proxy,
# this in the DOCS say this use 2 request instead of
# 1, but this is because use value '3' to detect
# better VPNs and proxys. Set to '1' for only
# check 'VPN' or '2' to only check 'PROXY', and
# only use 1 request.
proxycheck:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://proxycheck.io/v2/%IP%?vpn=3&key=%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "%IP%.proxy"
- "%IP%.vpn"
# Type to determine.
type: "yes"
# ⛽ VPNAPI
# 🔗 https://vpnapi.io/
#
# 🛒 Details:
# 💼 https://vpnapi.io/signup
#
# - 100 daily requests, no key.
# - 1,000 daily requests, free account.
# - 10k-200k daily requests, paid account.
vpnapi:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Set empty to don't use one. Don't delete this field!
key: ""
# URL.
url: "https://vpnapi.io/api/%IP%?key=%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "security.vpn"
- "security.proxy"
- "security.tor"
- "security.relay"
# Type to determine.
type: boolean
# ⛽ ANTIVPN NET
# 🔗 https://www.antivpn.net/
#
# 🛒 Details:
# 💼 https://www.antivpn.net/account/
#
# - 10k requests, free account.
# - 1M-10M requests, paid account.
antivpnnet:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://antivpn.net/api/v1/lookup?ip=%IP%&key=%KEY%&format=-json"
# Values to check.
values:
# Fields to check.
fields:
- "is_proxy"
# Type to determine.
type: boolean
# ⛽ ANTIVPN IO
# 🔗 https://www.antivpn.io/
#
# 🛒 Details:
# 💼 https://dash.antivpn.io/
#
# - 15k mothly requests, free account.
# - 2M-10M montlhy requests, paid account.
antivpnio:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
# How to get a key here? Easy, when you
# create a server, this send you a command,
# you only need to copy the code (key) and
# replace 'KEY' for that code. REMOVE
# THE COMMAND NAME AND / WHEN YOU COPY!
#
# Example value:
# 'Bearer XXXXXXXX'
headers:
'Authorization': 'Bearer KEY'
# URL.
url: "https://connection.antivpn.io/check?ip=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "VPN"
# Type to determine.
type: boolean
# ⛽ IPHub
# 🔗 https://iphub.info/
#
# 🛒 Details:
# 💼 https://iphub.info/login
#
# - 1,000 daily requests, free account.
# - 10k-200k daily requests, paid account.
iphub:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'X-Key': 'KEY'
# URL.
url: "https://v2.api.iphub.info/ip/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "block"
# Type to determine.
type: '1'
# ⛽ IPHunter
# 🔗 https://www.iphunter.info/
#
# 🛒 Details:
# 💼 https://www.iphunter.info/user/register
#
# - 1,000 daily requests, free account.
# - 60k-20M daily requests, paid account.
iphunter:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'X-Key': 'KEY'
# URL.
url: "https://www.iphunter.info:8082/v1/ip/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "block"
# Type to determine.
type: '1'
# ___ _
# / _ \_ __ ___ _ __ ___ (_)_ _ _ __ ___ __/\__
# / /_)/ '__/ _ \ '_ _ \| | | | | '_ _ \ \ /
# / ___/| | | __/ | | | | | | |_| | | | | | | /_ _\
# \/ |_| \___|_| |_| |_|_|\__,_|_| |_| |_| \/
# Premium features, only available for paid users,
# this is here in case you purchase the premium
# version, so you avoid reset your currently config.yml
premium:
# Enable the usage of Discord Webhooks to send any alert's or
# messages if the player is vpn/proxy or if is allowed to connect
# to the server.
discord:
# Enter here the webhook URL, set to empty to
# disable this feature or add URL of webhook to
# enable this feature.
#
# See https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
# for how to use it.
webhook: ""
# Customize the messages.
# Remember! You utilize %NAME% to get the name of the
# player, %UUID% to get the UUID of the player and
# %IP% to get the IP of the player.
embed:
# Messages when the player is allowed to connect.
allowed:
# Determine here the content in the message.
# Set "" to disable the content.
content: ""
# Show thumbnail in the embed.
# Set "" to disable the content.
thumbnail: "https://api.tydiumcraft.net/v1/players/skin?uuid=%UUID%&type=avatar"
# Title of the fields.
name: "User"
uuid: "UUID"
ip: "IP"
# Determine here the color in decimal.
color: 5793266
# Prevent bots from joining to your server if this
# has any type of attack. This blocks connections and prevent
# making new requests. Normal players can join when this occurrs.
#
# This is based for small servers, if you server is bigger, please,
# configure better if you can.
antibot:
# Enable this feature?
enable: true
# Determine the maxium connections per second to start blocking these IP's.
max: 6
# Determine the time to continue blocking with this little shield that
# bots (in seconds).
timer: 10
# Buffer
# Configure here a little buffer to add more seconds if this continue.
# If you has disabled this feature, the antibot system is disabled only
# when timer ends. If you enable "buffer", this feature increase the time
# of the timer to still blocking.
buffer:
# Enable this feature?
enable: true
# Determine the maxium connections per second to
# increase more additional seconds to the timer.
max: 3
# Dertermine the time to add when "max" is reached
# and need to increase the timer. Remember, all in seconds.
add: 5
# Send to the console all details about the attacks?
log: true
# Add this IP's to the vpn list to avoid detection for X hours?
# (depend on your configuration)
blacklist: true
# Block that IP's from pinging the server?
# THIS FUNCTION REQUIRE PACKETEVENTS!
pinging: true
# Deny all.
# Configure here if you want block any join if still joining bots
# when reach X amount of joins (this has a count). This automatically
# blacklist connections for 1 hour, the count of connections is
# reseted when timer finish.
denyall:
# Enable this feature?
enable: true
# Determine the maxium connection to block any type of connection
# to the server (don't allow *ANY* connection from join).
maxium: 500
# List of urls with knowned proxies.
# Add list of proxies to save ips to the database, so this can be used
# to block connections of bots (the possible) and don't make requests.
list:
- "https://tcpshield.com/blocklist.txt"
- "https://check.torproject.org/torbulkexitlist?ip=1.1.1.1"
- "https://cinsscore.com/list/ci-badguys.txt"
- "https://lists.blocklist.de/lists/all.txt"
- "https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt"
- "https://raw.githubusercontent.com/clarketm/proxy-list/master/proxy-list-raw.txt"
- "https://raw.githubusercontent.com/scriptzteam/ProtonVPN-VPN-IPs/main/exit_ips.txt"
- "https://blocklist.greensnow.co/greensnow.txt"
- "https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies.txt"
- "https://raw.githubusercontent.com/monosans/proxy-list/main/proxies/socks4.txt"
``</details>
- THIS UPDATE ONLY WORKS IN BACKEND, PROXY GO TO WILL BE SUPPORTED IN 1.0.5 (FINAL VERSION OF THIS PRE-VERSIONS)**. **ALSO THIS VERSION REQUIRE RESET YOUR CONFIGURATION FILE FOR APPLY ALL NEW CHANGES**!
- Fixed loading in **Velocity** (still in experimental)
### 1.0.5-pre1:
- Added **Velocity** (experimental) support.
- Fixed some errors in the console.
- Using Proxy logger instead of the plugin logger in bungeecord.
- Added **GetIPIntel** API.
- Added **IP2Location** API.
- Added **VPNBlocker** API.
- You found a error? Join to the Discord [https://discord.gg/FTtVXfj](https://discord.gg/FTtVXfj) here.**
- Reset you config.yml to get new the new changes (or copy from SpigotMC Updates page the configuration for the new's APIs)!**
- Added **bypass feature** to deny detection if the player is verified and don't is a VPN/proxy for a certain time. (Customizable)
``
database:
# Available:
# - SQLite (NOT AVAILABLE IN BUNGEECORD!)
# - MySQL (IMPORTANT TO WORK IN BUNGEECORD!)
type: "sqlite"
sqlite:
file: "FoxGate.db"
mysql:
host: "localhost"
port: 3306
database: "foxav_db"
username: "root"
password: "password123"
# Highly recommended to keep this true for secure connections.
# Ensure your MySQL server supports SSL.
# By default is false, because a lot of MySQL servers don't supports
# SSL.
SSL: false
# The maximum number of connections in the connection pool.
# Recommended: 4
maximumpoolsize: 4
# The maximum time in seconds to wait for a connection from the pool,
# is recommended a value from higher than 1 and less than 5.
# Recommended: 3.0
connectiontimeout: 3.0
# When an IP isn't detected a vpn or proxy, this need to save in
# cache to don't make more requests for a little time for save
# performance and requests, customizable here.
bypass:
# Enable this feature?
enable: true
# Determine the amount in hours to save the IP in cache and avoid
# make more requests to this IP. Useful to save performance and
# verify only one time for certain time.
#
# Recommended: 2
expiration_time: 2
# When an IP is detected in a result, this is save in the cache
# to don't make more request for a little time, this value is
# saved in hours.
#
# Recommended: 36
expiration_time: 36
``- Renamed **blacklist** to **whitelist** in the configuration (request by **kokoro_koklo**).
- Fixed typo in the kick message by default (thanks to **kokoro_koklo**).
- Updated endpoint and fields of **VPNAPI**.
- [EXPERIMENTAL] Added **multi-thread** option for better performance.
- Added **better support for BungeeCord**. (Tested with **NullCordX 3.8.7**, Waterfall Fork)
- Added **BanProxy** and **IPQualityScore** services to detect VPN and bots.
- Added **disconnection** when finish requests to save performance.
- Added new options for **MySQL** connection database:
database:
# Available:
# - SQLite (NOT AVAILABLE IN BUNGEECORD!)
# - MySQL (IMPORTANT TO WORK IN BUNGEECORD!)
type: "sqlite"
sqlite:
file: "FoxGate.db"
mysql:
host: "localhost"
port: 3306
database: "foxav_db"
username: "root"
password: "password123"
# Highly recommended to keep this true for secure connections.
# Ensure your MySQL server supports SSL.
# By default is false, because a lot of MySQL servers do't supports
# SSL.
SSL: false
# The maximum number of connections in the connection pool.
# Recommended: 4
maximumpoolsize: 4
# The maximum time in seconds to wait for a connection from the pool,
# is recommended a value from higher than 1 and less than 5.
# Recommended: 3.0
connectiontimeout: 3.0
# When an IP is detected in a result, this is save in the cache
# to don't make more request for a little time, this value is
# saved in hours.
#
# Recommended: 36
expiration_time: 36
`
- Added option to **check updates**, can be disabled in config.yml.
- Added option to **blacklist ip's from detection**, request of **@arrafii14** in discord server.
`
# Blacklist the detection to this name's.
# It's case sensetive!
blacklist-name:
- 'ImFoxerARG' # It's me! :3
# Blacklist the detection to this IP's.
blacklist-ip:
- '127.0.0.1' # It's default in localhost!
``You found a error? Join to the **Discord** server [**clicking here**](https://discord.gg/FTtVXfj).
- Reset you config.yml to get new the new changes and avoid errors!**