
NetworkSecurity 2.0.0-BETAv1
Security for your Network.
Discord: https://discord.gg/MvmgcHPCfW
Video DEMO:
Java 11+
Compatible with: Spigot, Paper, Purpur, BungeeCord and Velocity
Velocity requires jsmysqlfix-velocity plugin
Bypass Permissions:
-------------------
Players can bypass certain checks using the following 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 (VPN, country, continent).
Storage Options:
----------------
The plugin stores IP, country, and continent data in:
- JSON: Files saved as cache.json, player_country.json, and player_ip.json.
- SQLite: Local database stored at /plugins/securitynetwork/storage/sqlite/cache.db.
- MySQL: External MySQL database support (optional).
Blocking and Security:
----------------------
- Players from blocked countries, continents, or VPNs are denied access.
- Players who fail verification checks are automatically blocked.
Administration Commands (Requires: securitynetwork.admin):
-----------------------------------------------------------
- /ipadmin delete <ip> : Remove an IP from cache
- /ipadmin stats : Show blocked and allowed IP counts
- /ipadmin wipe : Wipe the entire database (confirmation required)
Test Command (Console Only):
----------------------------
- /ipchecktest <ip>
Discord Integration:
--------------------
Linked with Discord for 2FA-style account confirmation.
Discord Commands:
- /vincular-discord <discord_name>: Initiates link request with a Discord account.
* Permission: securitynetwork.discord.link
- /desvincular-discord: Initiates unlink process for the player.
* Permission: securitynetwork.discord.unlink
Discord Confirmation:
- Players receive a Discord message to confirm login attempts.
- Includes interactive buttons for approval or denial.
- Automatically expires after 5 minutes.
Discord Permissions:
--------------------
- securitynetwork.discord.link: Allows using the /vincular-discord command.
- securitynetwork.discord.unlink: Allows using the /desvincular-discord command.
# ===============================
# 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
# ===============================
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
bot.token=TU_TOKEN_AQUI
bot.channelId=ID_DEL_CANAL
ip.blocked.temp=§c⚠ Tu IP está bloqueada temporalmente.\n§7Revisa el Discord del servidor para confirmar tu identidad.
ip.blocked=§cAcceso denegado por medidas de seguridad. \n§e¿Crees que es un error? -> gg/gatitos
command.link.only-player=§cEste comando solo puede ser usado por jugadores.
command.link.usage=§eUso: /vincular-discord <nombre_discord>
command.link.success=§7{0}
command.unlink.only-player=§cEste comando solo puede ser usado por jugadores.
command.unlink.success=§7{0}
command.test.only-console=§cEste comando solo puede ser ejecutado desde la consola.
command.admin.no-permission=§cNo tienes permiso para usar este comando.
command.admin.usage.delete=§cUso: /ipadmin delete <ip>
command.admin.usage.wipe=§cUso: /ipadmin wipe confirm
command.admin.ip-removed=§aIP {0} eliminada de la caché.
command.admin.stats.title=§6--- Estadísticas de IPs ---
command.admin.stats.blocked=§cBloqueadas: §f{0}
command.admin.stats.allowed=§aPermitidas: §f{0}
command.admin.wipe.success=§4Todos los datos fueron eliminados de la base de datos.
command.admin.wipe.failed=§cLa eliminación falló. Inténtalo de nuevo.
command.admin.unknown-subcommand=§cSubcomando desconocido. Usa: delete, stats, wipe
command.admin.help.header=§eUso:
command.admin.help.delete=§7/ipadmin delete <ip> - Elimina una IP de la caché
command.admin.help.stats=§7/ipadmin stats - Muestra cantidad de bloqueadas y permitidas
command.admin.help.wipe=§7/ipadmin wipe - ¡PELIGRO! Borra toda la base de datos (requiere confirmación)
command.test.usage=§eUso: /ipchecktest <ip>
command.test.success=§aComando ejecutado correctamente para IP: {0}
command.test.error=§cError ejecutando el comando: {0}
uuid.missing=§cNo se pudo obtener el UUID del jugador. \n§e¿Crees que es un error? -> gg/gatitos
ip.missing=§cNo se pudo obtener la IP del jugador. \n§e¿Crees que es un error? -> gg/gatitos
webhook.prefix.time=`[{0}]`
webhook.message.blocked=Jugador `{0}` bloqueado.
webhook.reason.country-continent=Bloqueado por país o continente restringido.\nPaís: {0}\nContinente: {1}
webhook.reason.early-block=Bloqueo anticipado por país/continente.\nPaís: {0}\nContinente: {1}
webhook.reason.proxy=Conexión bloqueada por VPN o Proxy.\nIP: {0}\nUUID: {1}
webhook.reason.mismatch=Posible robo de cuenta: Desajuste de país.
discord.link.sent=✔ Solicitud enviada a Discord. Esperando confirmación.
discord.link.not-found=❌ No se pudo encontrar al usuario: {0}
discord.link.invalid-channel=❌ Canal de Discord inválido.
discord.link.message= <@{0}>, tienes una solicitud de vinculación. Acepta para vincular con Minecraft UUID `{1}`
discord.link.expired=❌ La solicitud de vinculación ha expirado.
discord.unlink.requested=✔ Solicitud de desvinculación enviada a Discord. Esperando confirmación.
discord.unlink.not-linked=❌ Tu cuenta de Minecraft no está vinculada.
discord.unlink.error=⚠ Error al obtener el vínculo.
discord.unlink.not-found=⚠ No se pudo encontrar al usuario vinculado.
discord.unlink.message=⚠ <@{0}>, ¿deseas **desvincular** tu cuenta de Minecraft?
discord.unlink.expired=⌛ La solicitud de desvinculación ha expirado.
discord.confirmation.message=️ <@{0}> Alguien está intentando entrar a tu cuenta. ¿Eres tú?
discord.confirmation.expired=⌛ Solicitud de confirmación expirada.
discord.confirmation.response=Gracias por tu respuesta.
discord.confirmation.error=❌ No se pudo borrar el mensaje de autenticación.
discord.confirmation.no-link=❌ No se encontró un usuario de Discord vinculado a esta cuenta.
discord.confirmation.channel-error=❌ No se pudo enviar la solicitud de confirmación. Revisa la configuración del canal.
discord.confirmation.yes=Sí
discord.confirmation.no=No
discord.accept.expired=❌ Esta solicitud ya expiró.
discord.accept.unauthorized=⚠ No estás autorizado para aceptar esta solicitud.
discord.accept.already-linked=❌ Esta cuenta de Minecraft ya está vinculada.
discord.accept.already-used=❌ Este usuario de Discord ya está vinculado con otra cuenta.
discord.accept.success=✔ ¡Vinculación completada!
discord.accept.error=❌ No se pudo borrar el mensaje de confirmación.
discord.unlink.confirm.success=✔ Has desvinculado tu cuenta.
discord.unlink.confirm.error=⚠ Hubo un problema al desvincular tu cuenta.
discord.unlink.confirm.unauthorized=⚠ Solo el usuario vinculado puede confirmar esto.
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.
Storage:
- JSON: Stores data in local JSON files (cache.json and player_country.json).
- MySQL/SQLite: Stores data in databases.
Verification Process:
When a player attempts to join:
- Their IP is checked.
- If cached, the plugin checks if the IP matches blocked countries/continents.
- If not cached, it uses APIs to get country and continent data, then checks the blocklist.
- It also checks if the IP is a VPN using ProxyCheck.
- Access is granted or blocked based on the configuration.
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.