Перейти к содержимому
Mineforgian

NetworkSecurity

Security for your Network.

Загрузки
151
Подписчики
0
Обновлён
2 октября 2025 г.
Лицензия
NonCommercial-4.0

Опубликован 11 июля 2025 г.

Discord: https://discord.gg/MvmgcHPCfW

JAVA 11+

Compatible with: Spigot, Paper, Purpur, BungeeCord and Velocity

Velocity requires jsmysqlfix-velocity plugin

Administration Commands (Requires: securitynetwork.admin):

  • /ipadmin delete : Remove an IP from cache
  • /ipadmin stats : Show blocked and allowed IP counts
  • /ipadmin wipe : Wipe the entire database (confirmation required)

Permissions

  • securitynetwork.bypass.vpn: Bypass VPN check.
  • securitynetwork.bypass.country: Bypass country check.
  • securitynetwork.bypass.continent: Bypass continent check.
  • securitynetwork.bypass.all: Bypass all checks.

Discord Permissions

  • securitynetwork.discord.link: Allows using the /vincular-discord command.
  • securitynetwork.discord.unlink: Allows using the /desvincular-discord command.

Storage

  • JSON: Stores data in local JSON files (cache.json and player_country.json).
  • MySQL/SQLite: Stores data in databases.

Configs

Spoiler

bot-config.properties

bot.token=TU_TOKEN_AQUI
bot.channelId=ID_DEL_CANAL

Config.yml

# ===============================
# SecurityNetwork - Configuration
# ===============================
# This file allows you to control who can join the server
# by filtering based on proxy use, country, or continent.
# You can use up to 3 different APIs to detect IPs.
# -------------------------------
# Useful API documentation:
# - ProxyCheck.io: https://proxycheck.io/
# - IpInfo: https://ipinfo.io/
# - IPGeolocation: https://ipgeolocation.io/
#
# Country codes (ISO 3166-1 alpha-2): https://www.iban.com/country-codes
# Valid continent names used: Africa, Antarctica, Asia, Europe, North America, Oceania, South America
# ===============================
lang: es-es

api:
  # API keys for the IP detection services.
  # Leave an API blank if you don’t want to use it.
# ===============================
# VPN Y PROXY - Configuration
# ===============================
  proxycheck: your-proxycheck-key # https://proxycheck.io/
  ipHub: your-proxycheck-key # https://iphub.info/
  ipQualityScore: your-proxycheck-key # https://www.ipqualityscore.com/

# ===============================
# GEOLOCALIZADORES - Configuration (not mandatory)
# ===============================
  ipinfo: your-ipinfo-token # https://ipinfo.io/
  ipgeolocation: your-ipgeolocation-key # https://ipgeolocation.io/

# Alerts about blocking users who attempt to:
# - Take over accounts
# - Use VPN or proxy
# - Not allowed country
# - Not allowed continent
webhook:
  discord: "https://discord.com/api/webhooks/..."

countries:
  # Defines how the country filter works:
  # - "blacklist": blocks ONLY the countries listed below.
  # - "whitelist": allows ONLY the countries listed.
  mode: blacklist
  list:
    - US     # United States
    - RU     # Russia

continents:
  # Defines how the continent filter works:
  # - "blacklist": blocks ONLY the continents listed below.
  # - "whitelist": allows ONLY the continents listed.
  mode: whitelist
  list:
    - Europe
    - South America

storage:
  # Storage type for cache and player-country tracking.
  # Velocity/Bungee: "json", "mysql" <- AVAILABLE
  # Spigot/Paper/Purpur: "sqlite", "json" or "mysql"  <- AVAILABLE
  type: json
  # If using MySQL, uncomment and configure the following:
  # mysqlHost: localhost
  # mysqlPort: 3306
  # mysqlDatabase: network_security
  # mysqlUser: root
  # mysqlPassword: password123

EN-US.lang

ip.blocked.temp=§c⚠ Your IP is temporarily blocked.\n§7Check the server Discord to confirm your identity.
ip.blocked=§cAccess denied due to security measures.\n§eThink this is a mistake? -> gg/gatitos

command.link.only-player=§cOnly players can use this command.
command.link.usage=§eUsage: /link-discord <discord_name>
command.link.success=§7{0}
command.unlink.only-player=§cOnly players can use this command.
command.unlink.success=§7{0}

command.test.only-console=§cThis command can only be run from the console.

command.admin.no-permission=§cYou don't have permission to use this command.
command.admin.usage.delete=§cUsage: /ipadmin delete <ip>
command.admin.usage.wipe=§cUsage: /ipadmin wipe confirm
command.admin.ip-removed=§aIP {0} has been removed from cache.
command.admin.stats.title=§6--- IP Statistics ---
command.admin.stats.blocked=§cBlocked: §f{0}
command.admin.stats.allowed=§aAllowed: §f{0}
command.admin.wipe.success=§4All data was wiped from the database.
command.admin.wipe.failed=§cWipe failed. Please try again.
command.admin.unknown-subcommand=§cUnknown subcommand. Use: delete, stats, wipe
command.admin.help.header=§eUsage:
command.admin.help.delete=§7/ipadmin delete <ip> - Remove an IP from cache
command.admin.help.stats=§7/ipadmin stats - Show blocked and allowed IP counts
command.admin.help.wipe=§7/ipadmin wipe - WARNING! Wipes the entire database (requires confirmation)

command.test.usage=§eUsage: /ipchecktest <ip>
command.test.success=§aCommand executed successfully for IP: {0}
command.test.error=§cError while executing the command: {0}

uuid.missing=§cCould not retrieve player UUID.\n§eThink this is a mistake? -> gg/gatitos
ip.missing=§cCould not retrieve player IP.\n§eThink this is a mistake? -> gg/gatitos

webhook.prefix.time=`[{0}]`
webhook.message.blocked=Player `{0}` has been blocked.
webhook.reason.country-continent=Blocked due to restricted country or continent.\nCountry: {0}\nContinent: {1}
webhook.reason.early-block=Early block due to country/continent restrictions.\nCountry: {0}\nContinent: {1}
webhook.reason.proxy=Connection blocked for using VPN or proxy.\nIP: {0}\nUUID: {1}
webhook.reason.mismatch=Possible account theft: country mismatch detected.

discord.link.sent=✔ Request sent to Discord. Waiting for confirmation.
discord.link.not-found=❌ Could not find the user: {0}
discord.link.invalid-channel=❌ Invalid Discord channel.
discord.link.message=🔗 <@{0}>, you have a linking request. Click accept to link with Minecraft UUID `{1}`
discord.link.expired=❌ The linking request has expired.

discord.unlink.requested=✔ Unlink request sent to Discord. Waiting for confirmation.
discord.unlink.not-linked=❌ Your Minecraft account is not linked.
discord.unlink.error=⚠ Error retrieving the link.
discord.unlink.not-found=⚠ Could not find the linked user.
discord.unlink.message=⚠ <@{0}>, do you want to **unlink** your Minecraft account?
discord.unlink.expired=⌛ The unlink request has expired.

discord.confirmation.message=🛡️ <@{0}> Someone is trying to log into your account. Is it you?
discord.confirmation.expired=⌛ Confirmation request expired.
discord.confirmation.response=Thank you for your response.
discord.confirmation.error=❌ Could not delete the authentication message.
discord.confirmation.no-link=❌ No Discord user linked to this account was found.
discord.confirmation.channel-error=❌ Could not send confirmation request. Check your channel configuration.
discord.confirmation.yes=Yes
discord.confirmation.no=No

discord.accept.expired=❌ This request has already expired.
discord.accept.unauthorized=⚠ You are not authorized to accept this request.
discord.accept.already-linked=❌ This Minecraft account is already linked.
discord.accept.already-used=❌ This Discord user is already linked to another account.
discord.accept.success=✔ Linking complete!
discord.accept.error=❌ Could not delete the confirmation message.

discord.unlink.confirm.success=✔ Your account has been unlinked.
discord.unlink.confirm.error=⚠ There was an issue unlinking your account.
discord.unlink.confirm.unauthorized=⚠ Only the linked user can confirm this.

How to Use (SPIGOT/PAPER/PURPUR)

  • Run Your Server (Spigot or Paper):
  • Start your server and enjoy enhanced security with NetworkSecurity. The plugin will automatically check IP addresses for proxies, countries, and continents to improve server security.

How to Use (BUNGEECORD)

  • Install the Plugin: Place the NetworkSecurity.jar file in your plugins directory.
  • Configure the Plugin: Edit the config.yml file to set your API keys for ProxyCheck, IpInfo, and IPGeolocation. Configure the blacklisted countries and continents. BungeeCord only supports MySQL and JSON storage. Choose your storage type in the config.yml.
  • Run Your BungeeCord Server: Start your BungeeCord server, and the NetworkSecurity plugin will begin to monitor and block users based on IP, country, continent, and VPN status.

How to Use (VELOCITY)

  • Install the Plugin: Place the NetworkSecurity.jar file in your plugins directory.
  • Configure the Plugin: Edit the config.yml file to configure your API keys for ProxyCheck, IpInfo, and IPGeolocation. Set up the countries and continents you want to block and manage the bypass permissions.
  • Dependencies: Velocity requires the jsmysqlfix-velocity dependency to enable MySQL support, as Velocity does not come with an inbuilt SQL driver. Download the jsmysqlfix-velocity plugin and install it alongside NetworkSecurity for MySQL support.
  • Run Your Velocity Server: Start your Velocity server, and NetworkSecurity will enhance your security by checking the country, continent, and VPN status of the users, blocking unwanted access.

Ченджлог

2.0.2vРелиз1.21.7, 1.21.8, 1.21.9 · 2 октября 2025 г.

Actualización: HTTP API para consultas seguras (v2.0.2)

Esta actualización añade un servidor HTTP embebido para consultar de forma segura las relaciones entre cuentas de Minecraft (UUID) y Discord (ID). El acceso se protege con un token seguro (api.token) generado automáticamente si el archivo de configuración no lo contiene. El puerto del API es configurable.

Resumen rápido

  • Base URL: http://<IP>:<PUERTO>/api/
  • Puerto por defecto: 8080 (configurable en bot-config.properties con api.port)
  • Token seguro: api.token (hex generado automáticamente si está vacío)
  • Parámetro de autorización: token (query param)
  • Endpoints:
    • GET /api/getDiscordIdByMinecraft?uuid=<UUID>&token=<API_TOKEN>
    • `GET /api/getMinecraftUUIDByDiscordId?discordId=&token=
2.0.1vРелиз1.21.6, 1.21.7, 1.21.8 · 20 сентября 2025 г.
  • Expired Discord messages are now deleted instead of edited.
  • Automatic Discord channel cleanup upon bot startup.
  • Discord confirmations delete expired messages.
  • PlayerJoinListener now receives the plugin instance directly.
  • Fixed the 'Plugin cannot be null' bug in Mohist.
2.0.0v-BETAv4Релиз1.21.5, 1.21.6, 1.21.7 · 13 июля 2025 г.

✅ MariaDB and Redis Storage Support Implemented The storage system now supports MariaDB and Redis, expanding compatibility options for various server environments. These are now available alongside existing storage types.

2.0.0-betav3Релиз1.21.5, 1.21.6, 1.21.7 · 11 июля 2025 г.

IPQualityScore False Positive Fix

2.0.0v-beta2Бета1.21.5, 1.21.6, 1.21.7 · 11 июля 2025 г.

🇪🇸 NEW | Network Security [1.13.x - 1.21.x] ✈️ AntiVPN and AntiProxy [FREE] 2.0.0-BETAv2 Se ha mejorado el sistema de verificación 2FA por Discord. Ahora, cuando un jugador intenta acceder desde una IP diferente, puede recibir un botón adicional "ℹ️ Más información" en Discord.

Este botón permite al dueño de la cuenta revisar: La IP del intento País y continente Hora exacta Otras cuentas que han usado esa misma IP

Esta información solo será visible para el jugador vinculado. Nadie más podrá consultarla.

🧑‍💻 Para desarrolladores de plugins/API: Se modico el método solicitarConfirmacion(); de la API, que permite pasar datos adicionales al mensaje de confirmación. Si los datos son nulos, la API retrocede automáticamente al modo básico (sin botón de detalles).

2.0.0vБета1.21.5, 1.21.6, 1.21.7 · 11 июля 2025 г.

Compatible with: Spigot, Paper, Purpur, BungeeCord and Velocity Discord: https://discord.gg/MvmgcHPCfW JAVA 11+

Velocity requires JSMySQLFix | Velocity 1.0.1 plugin

Hey everyone! We're bringing a major update that improves the system's security and organization. Here's everything you need to know:

━━━━━━━━━━━━━━━━━━━━━━━━━━━

NEW FEATURES 2FA Authentication via Discord:

You can now link your Minecraft account to Discord. Login confirmation with interactive Discord buttons (Yes / No). Requests automatically expire after 5 minutes. Public Developer API:

Retrieve the Discord ID linked to a Minecraft UUID. Retrieve the Minecraft UUID linked to a Discord ID. Request action confirmation (like login) via Discord.

━━━━━━━━━━━━━━━━━━━━━━━━━━━

REFACTORING & STRUCTURE Storage folder reorganization:

SQLite database moved to: plugins/securitynetwork/storage/sqlite/cache.db JSON files moved to: plugins/securitynetwork/storage/json/ Old data is automatically migrated to the new structure.

━━━━━━━━━━━━━━━━━━━━━━━━━━━

MULTI-LANGUAGE SUPPORT Available translations for Discord messages:

Spanish (es-es) Mexican Spanish (es-mx) English (en-us) Catalan (ca) Portuguese (pt-br) French (fr-fr) Simplified Chinese (zh-cn)

━━━━━━━━━━━━━━━━━━━━━━━━━━━

FOR DEVELOPERS Use the API to query or manage links:

// Get Discord ID from Minecraft UUID
DiscordLinkAPI.getDiscordIdByMinecraft(UUID playerUUID);

// Get Minecraft UUID from Discord ID
DiscordLinkAPI.getMinecraftUUIDByDiscordId(String discordId);

// Request action confirmation
DiscordConfirmationAPI.solicitarConfirmacion(UUID playerUUID)
   .thenAccept(confirmed -> {
      if (confirmed) {
         // Execute secure action
      }
   });

Комментарии

Загружаем…