Todos os produtos
Search
Central de documentação

Edge Security Acceleration:Funções

Última atualização: Jun 29, 2026

A linguagem de regras do ESA oferece funções de transformação para manipular e validar valores extraídos de requisições HTTP.

Funções de transformação compatíveis

concat

Concatena strings.

  • Formato: concat(String | Integer | Bytes | Array elements):String.

  • Lógica: Une uma lista de valores separados por vírgula em uma única string.

  • Exemplos:

    • concat("String1"," ","String",2) retorna "String1 String2".

    • concat("/archive",http.request.uri.path) adiciona o segmento de caminho "/archive" ao início do caminho da URI.

    • concat("userid=123&",http.request.uri.query) insira o par chave-valor "userid=123" no início da string de consulta da URI.

    • concat("https://www.example.com",http.request.uri.path) combina um novo nome de host com o caminho da requisição original para gerar uma nova URL.

ends_with

Verifica se uma string termina com uma substring específica.

  • Formato: ends_with(source String,substring String):Boolean.

  • Lógica:

    • Retorna true se a source String terminar com a substring String. Caso contrário, retorna false.

    • A source String deve ser um campo. Não use uma string literal. Por exemplo, não escreva ends_with("foo.html",".html").

  • Exemplo: Se http.request.uri.path for "/welcome.html", então ends_with(http.request.uri.path,".html") retornará true.

lower

Converte uma string para letras minúsculas.

  • Formato: lower(String):String

  • Lógica: Converte o valor de string de um campo em minúsculas. Apenas bytes ASCII maiúsculos são convertidos; todos os outros bytes permanecem inalterados.

  • Exemplo: Se http.host for "WWW.example.com", então lower(http.host)=="www.example.com" retornará true.

regex_replace

Substitui substrings que correspondem a um padrão de expressão regular.

  • Formato: regex_replace(source String,regular_expression String,replacement String):String.

  • Lógica:

    • Substitui a primeira substring que corresponde à expressão regular pela string de substituição.

    • Por padrão, a correspondência diferencia maiúsculas de minúsculas.

    • Apenas a primeira ocorrência é substituída, mesmo que existam múltiplas correspondências na string de origem.

    • Para escapar um caractere $ na string de substituição, adicione outro caractere $ como prefixo.

    • A string de substituição pode conter referências a grupos de captura da expressão regular no formato ${<NUMBER>}, onde <NUMBER> é o número do grupo de captura. Até oito referências desse tipo são compatíveis, como ${1} e ${2}.

  • Exemplos:

    • Correspondência e substituição estática de caracteres:

      • Correspondência de string bem-sucedida: regex_replace("/animal/cat","/cat$","/dog")=="/animal/dog".

      • Se nenhuma correspondência for encontrada, a string de origem permanece inalterada:

        • Strings diferentes: regex_replace("/x","^/y$","/z")=="/x".

        • Strings sensíveis a maiúsculas/minúsculas: regex_replace("/cat","^/CAT$","/dog")=="/cat".

      • Quando existem múltiplas correspondências, apenas a primeira é substituída: regex_replace("/a/a","/a","/b")=="/b/a".

      • Escapando o caractere $ na string de substituição: regex_replace("/b","^/b$","/b$$")=="/b$".

      • Uso de grupos de captura na string de substituição: regex_replace("/foo/a/path","^/foo/([^/]*)/(.*)$","/bar/${2}/${1}")=="/bar/path/a".

      • Correspondência e substituição dinâmica de campos:

        • A string de origem usa um campo dinâmico para recuperar as informações de caminho da requisição do cliente. Este exemplo substitui /cat/ no caminho por /dog/: regex_replace(http.request.uri.path,"/cat/(.*)$","/dog/${1}").

        • Exemplo de substituição complexa: Substitui cada caractere + no caminho da requisição original pela string %2B: regex_replace(http.request.uri.path, "^([^+]*)\\+([^+]*)\\+(.*)$", "${1}%2B${2}%2B${3}").

      • starts_with

        Verifica se uma string começa com uma substring específica.

        • Formato: starts_with(source String,substring String):Boolean

        • Lógica:

          • Retorna true se a source String começar com a substring String. Caso contrário, retorna false.

          • A source String deve ser um campo. Não use uma string literal. Por exemplo, não escreva starts_with("foo.html",".html").

        • Exemplo: Se http.request.uri.path for "/welcome.html", então starts_with(http.request.uri.path,".html") retornará true.

        to_string

        Converte um valor para sua representação em string.

        • Formato: to_string(Integer | Boolean | IP address):String.

        • Lógica: Retorna a representação em string de um valor Integer, Boolean ou endereço IP.

        • Exemplos:

          • Se o resultado de ip.src.asnum for 15169, então to_string(ip.src.asnum) retornará "15169".

          • Se o resultado de ssl for true, então to_string(ssl) retornará "true".

          • Se o resultado de ip.src for 192.168.0.1, então to_string(ip.src) retornará "192.168.0.1".

        upper

        Converte uma string para letras maiúsculas.

        • Formato: upper(String):String.

        • Lógica: Converte o valor de string de um campo em maiúsculas. Apenas bytes ASCII minúsculos são convertidos; todos os outros bytes permanecem inalterados.

        • Exemplo: Se http.host for "www.example.com", então upper(http.host) retornará "WWW.EXAMPLE.COM".

        wildcard_replace

        Substitui substrings que correspondem a um padrão curinga.

        • Formato: wildcard_replace(source Bytes,wildcard_pattern Bytes,replacement Bytes,flags Bytes optional):String

        • Lógica:

          • Compara a string de origem com um padrão contendo zero ou mais curingas *, substitui a parte correspondente pela string de substituição e retorna o resultado. A string de substituição pode conter referências a grupos de captura curinga, como ${1} e ${2}. Até oito referências de substituição são compatíveis.

          • Se não houver correspondência, a função retorna a string de origem original.

          • O parâmetro source deve ser um campo, não uma string literal. Todo o valor de source deve corresponder ao parâmetro wildcard_pattern — correspondências parciais não são compatíveis.

          • Para insira um caractere * literal no parâmetro wildcard_pattern, escape-o com \*. Também escape o caractere \ com \\. Dois caracteres * não escapados consecutivos, como **, são inválidos e não podem ser usados. Para realizar o escape de caracteres, use a sintaxe de string raw para o parâmetro wildcard_pattern.

          • Para insira um caractere $ literal no parâmetro replacement, escape-o com $$.

          • Para executar uma correspondência curinga sensível a maiúsculas/minúsculas, defina o parâmetro flags como s.

          • Esta função utiliza correspondência preguiçosa — cada * corresponde à menor string possível.

        • Exemplos:

          • Se a URI completa for https://apps.example.com/calendar/admin?expand=true, a expressão wildcard_replace(http.request.full_uri,"https://*.example.com/*/*","https://example.com/${1}/${2}/${3}") retornará https://example.com/apps/calendar/admin?expand=true.

          • Se a URI completa for https://example.com/applications/app1, a expressão wildcard_replace(http.request.full_uri,"/applications/*","/apps/${1}") retornará https://example.com/applications/app1 inalterada, pois o padrão deve corresponder à URI completa. Use http.request.uri.path para correspondência apenas do caminho.

          • Se o caminho da URI for /calendar, a expressão wildcard_replace(http.request.uri.path,"/*","/apps/${1}") retornará /apps/calendar.

          • Se o caminho da URI for /Apps/calendar, a expressão wildcard_replace(http.request.uri.path,"/apps/*","/${1}") retornará /calendar. A correspondência não diferencia maiúsculas de minúsculas por padrão.

          • Se o caminho da URI for /Apps/calendar, a expressão wildcard_replace(http.request.uri.path,"/apps/*","/${1}","s") retornará /Apps/calendar. O parâmetro flags está definido como s para ative a correspondência sensível a maiúsculas/minúsculas. Como o padrão não corresponde ao caminho original da URI, o resultado permanece inalterado.

          • Se o caminho da URI for /apps/calendar/login, a expressão wildcard_replace(http.request.uri.path,"/apps/*/login","/${1}/login") retornará /calendar/login.