1 of 20
2 of 20
3 of 20
4 of 20
5 of 20
6 of 20
7 of 20
8 of 20
9 of 20
10 of 20
11 of 20
12 of 20
13 of 20
14 of 20
15 of 20
16 of 20
17 of 20
18 of 20
19 of 20
20 of 20

doc

API de Metadados

As edge functions no Edge Firewall têm acesso a um conjunto de metadados que podem ser manipulados para:

  • Filtrar e gerenciar o acesso a sua aplicação.
  • Aplicar lógicas específicas para diferentes cenários.

Esta documentação de referência descreve os metadados disponíveis e como acessá-los.


GeoIP

Os dados de GeoIP são sobre a localização geográfica do cliente com base em dados de IP.

Nome Descrição
geoip_asn Número de Sistema Autônomo (ASN na sigla em inglês)
geoip_city Cidade
geoip_city_continent_code Código da cidade
geoip_city_country_code Código de cidade e país
geoip_city_country_name Nome de cidade e pais
geoip_continent_code Código do continente
geoip_country_code Código do país
geoip_country_name Nome do país
geoip_region Região
geoip_region_name Nome da região

Remote

Os dados de Remote fornecem detalhes sobre o endereço IP e a porta TCP.

Nome Descrição
remote_addr Endereço de IP do remote (client)
remote_port Porta TCP do remote (client)
remote_user Usuário informado na URL. Exemplo: usuário em http://user@site.com/

Server

Os dados de server retornam detalhes sobre o protocolo sendo utilizado na requisição.

Nome Descrição
server_protocol Protocolo sendo utilizado na requisição. Exemplo: HTTP/1.1

SSL

Os dados de SSL estão disponíveis quando a requisição é feita através de uma conexão TLS/SSL segura.

Nome Descrição
ssl_cipher Cifra TLS/SSL usada
ssl_protocol Protocolo TLS/SSL usado

Uso

Você pode acessar os metadados através de event.request.metadata [], por exemplo:

    let ip = event.request.metadata["remote_addr"] // Acessando o remote addreess da requisição

Implementação

No exemplo de código abaixo:

  • O endereço remoto é acessado.
  • É verificado se este endereço está listado em uma network list.
  • Se estiver na lista, a solicitação será negada.
     addEventListener("firewall", (event) => {

      let ip = event.request.metadata["remote_addr"] 

      try {
        let found = Azion.networkList.contains(String(networkListId), ip); 
        if (found) {
          event.deny();
        }
      } catch (err) {
        event.console.error(`Error: `, err.stack);
      }
    });

Não encontrou o que procurava? Abra um ticket.