- Improved the performance with remaking the handling of detection in all supported loaders/softwares.
- Added ViaProxy loader/software support.
- Updated all libraries:
- MariaDB from 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 debug for debugging all actions of FoxGate:
(config.yml)
Code (YAML):
# 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)
Code (YAML):
# 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)
Code (YAML):
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)
Code (YAML):
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)
Code (YAML):
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)
Code (YAML):
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)
Code (YAML):
# 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
Code (YAML):
# ⛽ 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
Code (YAML):
# ⛽ 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
Code (YAML):
# ⛽ 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
Code (YAML):
# ⛽ 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)
Code (YAML):
# ⛽ 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.
- Feature consolefilter now passed to Free Edition, decision made by me and my community. This now has been passed to configuration section:
Code (YAML):
# ___ __ _ _ _
# / __\___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __
# / / / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \
# / /__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | |
# \____/\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_|
# |___/
# 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
- Added new feature of Telegram Forward (unique). Send alerts of disconnections made by FoxGate to your telegram chat/group/supergroup with a bot.
Code (YAML):
# Enable the usage of Telegram Webhooks to send any alert's or
# messages if the player is vpn/proxy or if is allowed to connect
# to the server.
#
# For using this, you need a bot token, for that, need to create
# a bot. See more in:
# https://core.telegram.org/bots#how-do-i-create-a-bot
telegram
:
# Enter here the bot's token, set to empty to
# disable this feature, you need to add both
# credentials for enabling this feature.
#
# See https://core.telegram.org/bots/webhooks
# for how to use it.
bot_token
:
""
# Enter here the channel to send the alert. Set
# empty to disable this feature, you need to add both
# credentials for enabling this feature.
#
# Must be unique identifier for the target chat or
# username of the target channel (in the format @channelusername).
chat_id
:
""
# Customize the messages.
# Here you can find some placeholders for use:
#
# {NAME} - Return name of the user.
# {IP} - Return IP of the user.
# {UUID} - Return IP of the user.
# {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 maximum 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.
# {GEO_COUNTRY} - Return the country player (Only works enabling the feature).
# {GEO_ASN} - Return the ASN player (Only works enabling the feature).
# Use '%nl%', '\n' or '\nl' for new line.
text
:
# Messages when the player is allowed to connect.
allowed
:
# Enable this webhook?
enable
: true
# Determine here the content in the message.
# (!) This is required to send the message.
text
:
"*FoxGate: High Quality AntiVPN*\n\nPlayer *{NAME}* `({IP})` has been verified by *FoxGate* with a result of `{COUNT_DETECTED}/{MAX}` detected services.\n\n- Detected in `({COUNT_DETECTED})`: `{DETECTED}`\n- Undetected in `({COUNT_UNDETECTED})`: `{UNDETECTED}`\n- Country: `{GEO_COUNTRY}`\n- ASN: `{GEO_ASN}`"
# Determine here the thread message ID to send.
# Set "" to disable this feature.
#
# (!) Use this in case you want send in different
# channel-thread to separate. This must be
# unique identifier for the target message thread
# (topic) of the forum; for forum supergroups only.
thread_id
:
""
# Protect the message for privacy?
# Protects the contents of the sent message from
# forwarding and saving.
protection
: true
# Disable notification sound?
# Sends the message silently. Users will receive a
# notification with no sound.
nosound
: false
# Determine the mode of parsing.
# Values can be:
# - MarkdownV2 (Recommended)
# - HTML
# - Markdown
#
# (!) Invalid value go to use "MarkdownV2".
# https://core.telegram.org/bots/api#formatting-options
parsemode
:
"MarkdownV2"
# Messages when the player is denied to connect.
denied
:
# Enable this webhook?
enable
: true
# Determine here the content in the message.
# (!) This is required to send the message.
text
:
"*FoxGate: High Quality AntiVPN*\n\nPlayer *{NAME}* `({IP})` has been blocked by *FoxGate* for a result of `{COUNT_DETECTED}/{MAX}` detected services.\n\n- Detected in `({COUNT_DETECTED})`: `{DETECTED}`\n- Undetected in `({COUNT_UNDETECTED})`: `{UNDETECTED}`\n- Country: `{GEO_COUNTRY}`\n- ASN: `{GEO_ASN}`"
# Determine here the thread message ID to send.
# Set "" to disable this feature.
#
# (!) Use this in case you want send in different
# channel-thread to separate. This must be
# unique identifier for the target message thread
# (topic) of the forum; for forum supergroups only.
thread_id
:
""
# Protect the message for privacy?
# Protects the contents of the sent message from
# forwarding and saving.
protection
: true
# Disable notification sound?
# Sends the message silently. Users will receive a
# notification with no sound.
nosound
: false
# Determine the mode of parsing.
# Values can be:
# - MarkdownV2 (Recommended)
# - HTML
# - Markdown
#
# (!) Invalid value go to use "MarkdownV2".
# https://core.telegram.org/bots/api#formatting-options
parsemode
:
"MarkdownV2"
# Messages when the player is blocked to connect
# because their country.
country
:
# Enable this webhook?
enable
: true
# Determine here the content in the message.
# (!) This is required to send the message.
text
:
"*FoxGate: High Quality AntiVPN*\n\nPlayer *{NAME}* `({IP})` has been blocked by *FoxGate* for their country.\n\n- Country: `{GEO_COUNTRY}`\n- ASN: `{GEO_ASN}`"
# Determine here the thread message ID to send.
# Set "" to disable this feature.
#
# (!) Use this in case you want send in different
# channel-thread to separate. This must be
# unique identifier for the target message thread
# (topic) of the forum; for forum supergroups only.
thread_id
:
""
# Protect the message for privacy?
# Protects the contents of the sent message from
# forwarding and saving.
protection
: true
# Disable notification sound?
# Sends the message silently. Users will receive a
# notification with no sound.
nosound
: true
# Determine the mode of parsing.
# Values can be:
# - MarkdownV2 (Recommended)
# - HTML
# - Markdown
#
# (!) Invalid value go to use "MarkdownV2".
# https://core.telegram.org/bots/api#formatting-options
parsemode
:
"MarkdownV2"
# Messages when the player is blocked to connect
# because their ASN.
asn
:
# Enable this webhook?
enable
: true
# Determine here the content in the message.
# (!) This is required to send the message.
text
:
"*FoxGate: High Quality AntiVPN*\n\nPlayer *{NAME}* `({IP})` has been blocked by *FoxGate* for their ASN.\n\n- Country: `{GEO_COUNTRY}`\n- ASN: `{GEO_ASN}`"
# Determine here the thread message ID to send.
# Set "" to disable this feature.
#
# (!) Use this in case you want send in different
# channel-thread to separate. This must be
# unique identifier for the target message thread
# (topic) of the forum; for forum supergroups only.
thread_id
:
""
# Protect the message for privacy?
# Protects the contents of the sent message from
# forwarding and saving.
protection
: true
# Disable notification sound?
# Sends the message silently. Users will receive a
# notification with no sound.
nosound
: true
# Determine the mode of parsing.
# Values can be:
# - MarkdownV2 (Recommended)
# - HTML
# - Markdown
#
# (!) Invalid value, will use "MarkdownV2".
# https://core.telegram.org/bots/api#formatting-options
parsemode
:
"MarkdownV2"
![[IMG]](//proxy.spigotmc.org/720a41068458d8bf5a1a7917dd55096cf7ae8446/68747470733a2f2f63646e2e646973636f72646170702e636f6d2f6174746163686d656e74732f3735393535383433373038383236343230362f313336323232333738353031363536313734342f696d6167652e706e673f65783d36383066373530332669733d363830653233383326686d3d63383731353835383962363036353039373162373164323733313062343062353865633636633563633933373563303166326532363530313166623937666536263d)
- Definitive fix for N/A ASN and Country in Discord Webhook and Telegram Forward.
➡️
Reset your configuration in case you want to apply already all the changes instead of copy manually.