# ------------------------------------------------------------------------------------------- # # ______ _____ _ # # | ___| | __ \ | | # # | |_ ___ __ __| | \/ __ _ | |_ ___ # # | _|/ _ \\ \/ /| | __ / _` || __|/ _ \ # # | | | (_) |> < | |_\ \| (_| || |_| __/ # # \_| \___//_/\_\ \____/ \__,_| \__|\___| # # # # [v1.0.2] # # # # ------------------------------------------------------------------------------------------- # # 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. # 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 # ___ __ _ _ _ # / __\___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __ # / / / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \ # / /__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | | # \____/\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_| # |___/ # 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 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 # has incompatibility! # Also, PlaceholderAPI is supported. # # 📷 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%, %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>VPN or Proxy has been found in your connection!\n\n<gray>This is an error? <white>Join to our discord server.\n<aqua><underlined>discord.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 <aqua>"{service}"</aqua> to <yellow>{player}</yellow>: {error}' # Determine the prefix to use when a player use a command. prefix: '<yellow><bold>FGT</bold></yellow><dark_gray> ►<reset>' help: add: 'Add a IP to the database.' check: 'Check an external IP and save in database.' db: 'Purge or reconnect the database.' reload: 'Reload configuration file to apply changes.' remove: 'Remove a IP from the database.' status: 'View information from a cached IP in the database.' verbose: 'Enable/disable verbose mode.' 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 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. # {STATUS} - Return the status of the player. # {GEO_COUNTRY} - Return the country player (Premium and only works enabling the feature). # {GEO_ASN} - Return the ASN player (Premium and only works enabling the feature). detected: '<red>' undetected: '<green>' none: '<red>None.' no_cached: '<red>Not cached in database.' allow: '<green>Verified.' deny: '<red>Blocked.' saved: '<yellow>Scanned.' 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 " check: invalidip: '{prefix} {IP}<red> is not a valid IP!' cached: '{prefix} {IP}<yellow> is already cached in the database. You can <white><underlined><click:run_command:"/foxgate status {IP}">click here to view information saved in the database</click></underlined></white>.' checking: '{prefix} <yellow>Checking <white>{IP}<yellow>...' checked: '{prefix} {IP}<green> was successfully checked, view the information obtained in the database with the command <gray>(/foxgate status)</gray> or <white><underlined><click:run_command:"/foxgate status {IP}">click here</click></underlined></white>.' # _ _ _ ___ __ # /_\ _ __ | |_(_/\ /\/ _ \/\ \ \ # //_\\| '_ \| __| \ \ / / /_)/ \/ / # / _ | | | | |_| |\ 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 # Continue when reached minium to flag? # - To save requests and performance, you can # disable FoxGate in still checking in the # others services to verify for VPN. By # default, it's enable for better experience # for beginners users using this plugin. # # In '/foxgate status': # This can affect in some cases, because only go # to show only the services that was request. # # (!) This don't affect to '/foxgate check' command. continue: true # 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", "10"] # ⛽ 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 # ⛽ Negativity API # 🔗 https://negativity.fr/ # # 🛒 Details: # - Unlimited requests, no key. negativity: # Enable this service? enabled: true # Model request to use. model: "JSON" # URL. url: "https://api.negativity.fr/ip/%IP%" # Values to check. values: # Fields to check. fields: - "proxy" - "vpn" # 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/api/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' # ⛽ 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"] # ___ _ # / _ \_ __ ___ _ __ ___ (_)_ _ _ __ ___ __/\__ # / /_)/ '__/ _ \ '_ ` _ \| | | | | '_ ` _ \ \ / # / ___/| | | __/ | | | | | | |_| | | | | | | /_ _\ # \/ |_| \___|_| |_| |_|_|\__,_|_| |_| |_| \/ # 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 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 country: true asn: true # Enable the detection for GeoBlocking when a player # join to the server. If you enable this feature, you can # block or whitelist country from joining or detecting. # # This uses MaxMind for working this feature. # https://www.maxmind.com/en/home geo: # Enter here your key of maxmind for enabling this # feature, if you leave this empty, this disable # this feature. This is used to download # the database. key: "" # Determine here the time to pass for update the # database of ASN and Country. This is for avoid # downloading every time and is checked every 2 hours # and when plugin starts or reload (with /foxgate reload). # Use in hours. update: 12 # We allow customize options here, # you can allow to FoxGate in verify whitelist # for bypass detection by Country or ASN, # and blacklist/whitelist by Country and ASN. # List for allow/deny connections in certain countries. # Use ISO code for this system, view all ISO codes in # the list: (A-2) # https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes country: # Bypass detections of FoxGate. bypass: # Add the list of ISO codes allowed for bypass detections # of VPN in FoxGate. Use the value "[]" to disable, like: # # list: [] list: [] #- AR #- BR #- MX #- ES #- VE # Blacklist the bypass to this name's. # Works like the configuration of the antivpn system. blacklist-name: - 'ImZowi' # It's me! :3 # Blacklist the bypass to this IP's. # Works like the configuration of the antivpn system. blacklist-ip: - '127.0.0.1' # Whitelist/blacklist connections from X countries. # The player is blocked from joining but the IP doesn't get verified! blocker: # Define the type of usage to this list. # 'whitelist': Allow the access to certain countries. # 'blacklist': Deny the access in certain countries. type: 'blacklist' # Add the list of ISO codes for block/allow connections # to the server. Use the value "[]" to disable, like: # # list: [] list: - PK - IR - DZ # Add the connections to the database for prevent joining # in X amount of type? This is useful if you want deny # connections of bots in certain countries. # # "The player is blocked from joining but the IP doesn't get verified!" # In this case, the plugin add the player to the database like # "Blocked", but doesn't save services detected, because the player # isn't scanned for VPN/Proxy. database: # Enable this feature? enable: true # Determine here the time to add the player to # the database in case their country isn't allowed to # join in hours. time: 2 # Message to return when a player isn't from a country that isn't allowed # to join, this is useful for kick the player fast without commands. You can # use the placeholders: %PLAYER%, %IP%, %UUID%, %COUNTRY% and %ASN%. kick: "<red>You have been disconnected by FoxGate:\n<white>Your country isn't allowed from joining! (%COUNTRY%)\n\n<gray>This is an error? <white>Join to our discord server.\n<aqua><underlined>discord.idcteam.xyz" # Notification when a player is kicked. You can suppress this with only # leave in blank. notify: '{prefix} <aqua>{player} <gray>has been removed for joining in blacklisted country: <aqua>{COUNTRY}</aqua>! <green>({IP})' # Whitelist the detection to this name's. # Works like the configuration of the antivpn system. whitelist-name: - 'ImZowi' # It's me! :3 # Whitelist the detection to this IP's. # Works like the configuration of the antivpn system. 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' # Change here the status name in the command '/foxgate status' # to show when a player is detected in the database has been blocked # for their country. This is in the case, the player was blocked # for the option 'database' enabled. status: '<gold>Blocked by their Country.' # List for allow/deny connections in certain ASN. # Use ASN system for this part, you can get ASN from an # IP with the link: # https://www.ipvoid.com/ip-to-asn/ # Example: # 1.1.1.1 (Cloudflare) is: AS13335 # Use the number for this list: 13335 asn: # Bypass detections of FoxGate. bypass: # Add the list of ASN allowed for bypass detections # in FoxGate. Use the value "[]" to disable, like: # # list: [] list: [] #- '13335' # (Cloudflare) #- '15169' # (Google) # Blacklist the bypass to this name's. # Works like the configuration of the antivpn system. blacklist-name: - 'ImZowi' # It's me! :3 # Blacklist the bypass to this IP's. # Works like the configuration of the antivpn system. blacklist-ip: - '127.0.0.1' # Whitelist/blacklist connections from X ASN's. # The player is blocked from joining but the IP doesn't get verified! blocker: # Define the type of usage to this list. # 'whitelist': Allow the access to certain ASN's. # 'blacklist': Deny the access in certain ASN's. type: 'blacklist' # Add the list of ASN'S allowed for join to the server. # Use the value "[]" to disable, like: # # list: [] # (!) In this list, we are blocking ASN from knowed # services of hosting, can prevent some bots and VPN. list: - '210644' # More in the original list inside the plugin. # Add the connections to the database for prevent joining # in X amount of type? This is useful if you want deny # connections of bots in certain ASN's. # # "The player is blocked from joining but the IP doesn't get verified!" # In this case, the plugin add the player to the database like # "Blocked", but doesn't save services detected, because the player # isn't scanned for VPN/Proxy. database: # Enable this feature? enable: true # Determine here the time to add the player to # the database in case their country isn't allowed to # join in hours. time: 2 # Message to return when a player isn't from a ASN that isn't allowed # to join, this is useful for kick the player fast without commands. You can # use the placeholders: %PLAYER%, %IP%, %UUID%, %COUNTRY% and %ASN%. kick: "<red>You have been disconnected by FoxGate:\n<white>Your ASN isn't allowed from joining! (%ASN%)\n\n<gray>This is an error? <white>Join to our discord server.\n<aqua><underlined>discord.idcteam.xyz" # Notification when a player is kicked. You can suppress this with only # leave in blank. notify: '{prefix} <aqua>{player} <gray>has been removed for joining in blacklisted ASN: <aqua>{ASN}</aqua>! <green>({IP})' # Whitelist the detection to this name's. # Works like the configuration of the antivpn system. whitelist-name: - 'ImZowi' # It's me! :3 # Whitelist the detection to this IP's. # Works like the configuration of the antivpn system. 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' # Change here the status name in the command '/foxgate status' # to show when a player is detected in the database has been blocked # for their ASN. This is in the case, the player was blocked # for the option 'database' enabled. status: '<gold>Blocked by their ASN.' # 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. # 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. embed: # Messages when the player is allowed to connect. allowed: # Enable this webhook? enable: true # Username to show. # - Determine here a custom username for the webhook. username: "FoxGate: High Quality AntiVPN" # Avatar to show. # - Determine here a custom avatar for the webhook. avatar: "https://i.imgur.com/86T0cIF.png" # Determine here the content in the message. # Set "" to disable the content. content: "" # Determine here the title of the embed. # Set "" to disable the title or url. title: text: "An IP was verified by FoxGate." url: "https://www.spigotmc.org/resources/116596/" # Determine here the description of the embed. # Set "" to disable the description. description: "" # Show thumbnail in the embed. # Set "" to disable the content. thumbnail: "https://api.creepernation.net/avatar/{UUID}" # Add fields. # Delete "fields" for disable anything about it. fields: '1': name: "User" description: "`{NAME}`" inline: true '2': name: "IP" description: "`{IP}`" inline: true '3': name: "Count" description: "`{COUNT_DETECTED}`/`{MAX}`" inline: true '4': name: "Detected ({COUNT_DETECTED})" description: "`{DETECTED}`" inline: true '5': name: "Undetected ({COUNT_UNDETECTED})" description: "`{UNDETECTED}`" inline: true '6': name: "Country & ASN" description: "`{GEO_COUNTRY}`/`{GEO_ASN}`" inline: true # Determine here the color in decimal. color: 5793266 # Determine the footer to use. footer: text: "Powered by FoxGate" icon: "https://i.imgur.com/86T0cIF.png" # Messages when the player is denied to connect. denied: # Enable this webhook? enable: true # Username to show. # - Determine here a custom username for the webhook. username: "FoxGate: High Quality AntiVPN" # Avatar to show. # - Determine here a custom avatar for the webhook. avatar: "https://i.imgur.com/86T0cIF.png" # Determine here the content in the message. # Set "" to disable the content. content: "" # Determine here the title of the embed. # Set "" to disable the title or url. title: text: "An IP was blocked by FoxGate." url: "https://www.spigotmc.org/resources/116596/" # Determine here the description of the embed. # Set "" to disable the description. description: "" # Show thumbnail in the embed. # Set "" to disable the content. thumbnail: "https://api.creepernation.net/avatar/{UUID}" # Add fields. # Delete "fields" for disable anything about it. fields: '1': name: "User" description: "`{NAME}`" inline: true '2': name: "IP" description: "`{IP}`" inline: true '3': name: "Count" description: "`{COUNT_DETECTED}`/`{MAX}`" inline: true '4': name: "Detected ({COUNT_DETECTED})" description: "`{DETECTED}`" inline: true '5': name: "Undetected ({COUNT_UNDETECTED})" description: "`{UNDETECTED}`" inline: true '6': name: "Country & ASN" description: "`{GEO_COUNTRY}`/`{GEO_ASN}`" inline: true # Determine here the color in decimal. color: 16711680 # Determine the footer to use. footer: text: "Powered by FoxGate" icon: "https://i.imgur.com/86T0cIF.png" # Messages when the player is blocked to connect # because their country. country: # Enable this webhook? enable: true # Username to show. # - Determine here a custom username for the webhook. username: "FoxGate: High Quality AntiVPN" # Avatar to show. # - Determine here a custom avatar for the webhook. avatar: "https://i.imgur.com/86T0cIF.png" # Determine here the content in the message. # Set "" to disable the content. content: "" # Determine here the title of the embed. # Set "" to disable the title or url. title: text: "An IP was blocked by FoxGate." url: "https://www.spigotmc.org/resources/116596/" # Determine here the description of the embed. # Set "" to disable the description. description: "A player tried to join from banned country." # Show thumbnail in the embed. # Set "" to disable the content. thumbnail: "https://api.creepernation.net/avatar/{UUID}" # Add fields. # Delete "fields" for disable anything about it. fields: '1': name: "User" description: "`{NAME}`" inline: true '2': name: "IP" description: "`{IP}`" inline: true '3': name: "Country & ASN" description: "`{GEO_COUNTRY}`/`{GEO_ASN}`" inline: true # Determine here the color in decimal. color: 16741120 # Determine the footer to use. footer: text: "Powered by FoxGate" icon: "https://i.imgur.com/86T0cIF.png" # Messages when the player is blocked to connect # because their ASN. asn: # Enable this webhook? enable: true # Username to show. # - Determine here a custom username for the webhook. username: "FoxGate: High Quality AntiVPN" # Avatar to show. # - Determine here a custom avatar for the webhook. avatar: "https://i.imgur.com/86T0cIF.png" # Determine here the content in the message. # Set "" to disable the content. content: "" # Determine here the title of the embed. # Set "" to disable the title or url. title: text: "An IP was blocked by FoxGate." url: "https://www.spigotmc.org/resources/116596/" # Determine here the description of the embed. # Set "" to disable the description. description: "A player tried to join from banned ASN." # Show thumbnail in the embed. # Set "" to disable the content. thumbnail: "https://api.creepernation.net/avatar/{UUID}" # Add fields. # Delete "fields" for disable anything about it. fields: '1': name: "User" description: "`{NAME}`" inline: true '2': name: "IP" description: "`{IP}`" inline: true '3': name: "Country & ASN" description: "`{GEO_COUNTRY}`/`{GEO_ASN}`" inline: true # Determine here the color in decimal. color: 16741120 # Determine the footer to use. footer: text: "Powered by FoxGate" icon: "https://i.imgur.com/86T0cIF.png"