FoxGate [Premium] ⭐ The #1 AntiVPN Plugin icon

FoxGate [Premium] ⭐ The #1 AntiVPN Plugin -----

Potential AntiVPN for your Minecraft server, with a lot of features and extremely customization!




  • 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]
  • 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.
----------, Apr 28, 2025

  • 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]
  • 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.
----------, Apr 27, 2025

Resource Information
Author:
----------
Total Downloads: 5
First Release: Apr 13, 2025
Last Update: Apr 28, 2025
Category: ---------------
All-Time Rating:
0 ratings
Find more info at discord.idcteam.xyz...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings