API — Programação Web

Como bloquear IP de um país - China

Integra a função de bloqueio de IPs diretamente na sua aplicação web caso pertença a um país específico. Compatível com ASP clássico e PHP através do objeto COM da extensão.

ASP Clássico PHP XML / JSON

Função BlockIp(IP,Rulename)

A partir da sua página web — no seu index.asp, index.php ou qualquer seção da sua aplicação — você pode chamar esta função para bloquear um endereço IP através do Firewall Manager. Requer credenciais válidas.

1 Parâmetros necessários


Parâmetro Tipo Obrigatório Descrição
Username String Obrigatório Usuário do sistema.
Password String Obrigatório Senha do usuário.
FormatOutput String Opcional Formato da resposta: xml (padrão) ou json.
IP String Obrigatório Endereço IPv4 ou IPv6 que se deseja bloquear.
Rulename String Opcional Nome da regra em que atribuir o endereço IP. Não usar por padrão.
Valores de retorno json/xml
result
(true ou false) Status da solicitação de bloqueio.
app
Site em que estava bloqueada: Windows, MailEnable, Cloudflare
desc
Se o resultado for negativo, mostrará informações do motivo.

Importante: Use esta função em páginas protegidas com autenticação própria. Expor a chamada sem proteção permite que qualquer usuário bloqueie IPs arbitrários.

2 Exemplo em ASP Clássico


Instancie o objeto COM FlexFirewallManager.Admin, defina as credenciais e chame UnlockIP(). A resposta é interpretada como XML.

' Criar instância do objeto COM Set App = CreateObject("FlexFirewallManager.Admin") App.FormatOutput = "xml" App.Username = "Usuário do Sistema" App.Password = "Senha do Usuário" ' 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") ' Método 1 If strCountry = "CN" Then App.BlockIp(strIP) End If ' Método 2 Dim returnstring : returnstring = App.InfoIP(strIP) ' Interpretar resposta 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) = "CN" Then App.BlockIp(strIP) End If End If

Você pode usar FormatOutput = "json" se preferir interpretar a resposta com JSON.parse em vez de XML. O formato JSON é recomendado para aplicações modernas.

3 Exemplo em PHP


Em PHP, instancie o objeto COM com new COM(). Use o formato json para interpretar a resposta diretamente com json_decode().

// Criar instância do objeto COM $app = new COM("FlexFirewallManager.Admin"); $app->FormatOutput = "json"; $app->Username = "Usuário do Sistema"; $app->Password = "Senha do Usuário"; // IP a bloquear $strCountry = $_SERVER['HTTP_X_FIREWALL_COUNTRY'];; $strIP = $_SERVER['HTTP_X_FIREWALL_IP'];; if ($strIP=="") { $strIP = $_SERVER['REMOTE_ADDR'];; } // Método 1 if ($strCountry == "CN") { $app->BlockIp($strIP); } // Método 2 $returnstring = $app->InfoIP($strIP); // Interpretar resposta JSON $appjson = json_decode($returnstring); if ($appjson->result) { if ($appjson->countrycode == "CN") { $app->BlockIp($strIP); } }

Dica: Você pode combinar esta função com um formulário de administração interno para que seus usuários gerenciem por conta própria o bloqueio do próprio IP sem precisar acessar o administrador.

4 Notas de implementação


Leve em conta os seguintes aspectos ao integrar esta função na sua aplicação:

Autenticação prévia Proteja sempre a página que chama BlockIp() com uma sessão de usuário autenticado.
Somente no Windows Server O objeto COM FlexFirewallManager.Admin requer Windows Server com a extensão instalada.
Credenciais seguras Nunca inclua o usuário e a senha no código-fonte acessível publicamente. Use variáveis de ambiente ou arquivos de configuração externos.
Sincronização com Cloudflare Se você tiver a integração com o Cloudflare ativa, o bloqueio será aplicado apenas nas regras do Cloudflare.