Nueva Extensión para Plesk. Protección Antivirus para mejorar la seguridad de tu servidor. ¿Por qué elegir Flex Antivirus?

API — Programación Web

Como bloquear IP de un país - Rusia

Integra la función de bloqueo de IPs directamente en tu aplicación web si pertenece aun país concreto. Compatible con ASP clásico y PHP mediante el objeto COM de la extensión.

ASP Clásico PHP XML / JSON

Función BlockIp(IP,Rulename)

Desde tu página web — en tu index.asp, index.php o cualquier sección de tu aplicación — puedes llamar a esta función para bloquear una dirección IP por el Firewall Manager. Requiere credenciales de un dominio válido en Plesk.

1 Parámetros requeridos


Parámetro Tipo Requerido Descripción
Username String Requerido Usuario del dominio Plesk con acceso a la extensión.
Password String Requerido Contraseña del usuario del dominio Plesk.
FormatOutput String Opcional Formato de respuesta: xml (defecto) o json.
IP String Requerido Dirección IPv4 o IPv6 que se desea bloquear.
Rulename String Opcional Nombre de la regla donde asignar la dirección IP. Por defect no usar.
Valores de retorno json/xml
result
(true o false) Estado de la petición de bloqueo.
app
Sitio donde estaba bloqueada: Windows , MailEnable, Cloudflare
desc
Si el resultado es negativo, mostrará información del motivo.

Importante: Usa esta función en páginas protegidas con autenticación propia. Exponer la llamada sin protección permite que cualquier usuario bloquee IPs arbitrarias.

2 Ejemplo en ASP Clásico


Instancia el objeto COM FlexFirewallManager.Admin, establece las credenciales y llama a UnlockIP(). La respuesta se parsea como XML.

' Crear instancia del objeto COM Set App = CreateObject("FlexFirewallManager.Admin") App.FormatOutput = "xml" App.Username = "Usuario Dominio Plesk" App.Password = "Clave Dominio Plesk" ' IP a bloquear Dim strCountry : strIP = Request.ServerVariables("HTTP_X_FIREWALL_COUNTRY") Dim strIP : strIP = Request.ServerVariables("HTTP_X_FIREWALL_IP") If strIP = "" Then strIP = Request.ServerVariables("REMOTE_ADDR") ' Metodo 1 If strCountry = "CN" Then App.BlockIp(strIP) End If ' Metodo 2 Dim returnstring : returnstring = App.InfoIP(strIP) ' Parsear respuesta XML Set objxml = CreateObject("Msxml2.DOMDocument") objxml.LoadXml(returnstring) If LCase(objxml.SelectSingleNode("/output/result").text) = "true" Then If UCase(objxml.SelectSingleNode("/output/countrycode").text) = "RU" Then App.BlockIp(strIP) End If End If

Puedes usar FormatOutput = "json" si prefieres parsear la respuesta con JSON.parse en lugar de XML. El formato JSON es recomendado para aplicaciones modernas.

3 Ejemplo en PHP


En PHP, instancia el objeto COM con new COM(). Usa el formato json para parsear la respuesta directamente con json_decode().

// Crear instancia del objeto COM $app = new COM("FlexFirewallManager.Admin"); $app->FormatOutput = "json"; $app->Username = "Usuario Dominio Plesk"; $app->Password = "Clave Dominio Plesk"; // IP a bloquear $strCountry = $_SERVER['HTTP_X_FIREWALL_COUNTRY'];; $strIP = $_SERVER['HTTP_X_FIREWALL_IP'];; if ($strIP=="") { $strIP = $_SERVER['REMOTE_ADDR'];; } // Metodo 1 if ($strCountry == "CN") { $app->BlockIp($strIP); } // Metodo 2 $returnstring = $app->InfoIP($strIP); // Parsear respuesta JSON $appjson = json_decode($returnstring); if ($appjson->result) { if ($appjson->countrycode == "RU") { $app->BlockIp($strIP); } }

Tip: Puedes combinar esta función con un formulario de administración interno para que tus usuarios autogestionen el bloqueo de su propia IP sin necesidad de acceder al panel de Plesk.

4 Notas de implementación


Ten en cuenta los siguientes aspectos al integrar esta función en tu aplicación:

Autenticación previa Protege siempre la página que llama a BlockIp() con sesión de usuario autenticado.
Solo en Windows Server El objeto COM FlexFirewallManager.Admin requiere Windows Server con la extensión instalada.
Credenciales seguras Nunca incluyas el usuario y la clave en el código fuente accesible públicamente. Usa variables de entorno o archivos de configuración externos.
Sincronización con Cloudflare Si tienes la integración con Cloudflare activa, el bloqueo se realizará sólo en la reglas de Cloudflare.