NetworkSecurity icon

NetworkSecurity 2.0.0-BETAv1

Security for your Network.

 
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:
  1. Their IP is checked.
  2. If cached, the plugin checks if the IP matches blocked countries/continents.
  3. If not cached, it uses APIs to get country and continent data, then checks the blocklist.
  4. It also checks if the IP is a VPN using ProxyCheck.
  5. Access is granted or blocked based on the configuration.
How to Use (SPIGOT/PAPER/PURPUR)
  1. 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)
  1. Install the Plugin:
    • Place the NetworkSecurity.jar file in your plugins directory.
  2. 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.
  3. 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)
  1. Install the Plugin:
    • Place the NetworkSecurity.jar file in your plugins directory.
  2. 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.
  3. 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.
  4. 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.

vpn

detector

proxy

security

2fa

discord

webhook

api