A convenção PAC usada pelos principais navegadores da Web, incluindo o mecanismo da Web, é usar uma sintaxe de expressão regular modificada. Até agora, o pacmanager usou expressões regulares comuns para a correspondência. Estamos mudando a função shExpMatch para usar uma correspondência semelhante a dos navegadores.

Essa alteração significa que o RoomOS funcionará com as mesmas correspondências de arquivo PAC que outros clientes da Web na rede. Os arquivos PAC escritos especificamente para o RoomOS podem precisar ser atualizados para continuar funcionando conforme o esperado.

A avaliação do arquivo PAC é feita em dois locais separados no software RoomOS:

  • Mecanismo da Web para o seu próprio tráfego.

  • Pacmanager para todos os outros tráfegos HTTP: HttpFeedback, provisionamento Webex, sinalização de chamada e assim por diante.

Um arquivo PAC pode usar esta função: shExpMatch(string, pattern)

Ela retorna verdadeiro se a string corresponder ao padrão, falso caso contrário.

As principais diferenças entre as duas convenções estão listadas abaixo, com "REGEX" significando expressões regulares tradicionais e "BROWSER" significando a convenção do navegador da web.

O sinal de ponto, "."

  • REGEX: . corresponde a um único caractere, que pode ser repetido com um quantificador

  • NAVEGADOR: . corresponde apenas a um caractere de ponto literal

A estrela, "*":

  • REGEX: * é um quantificador de zero ou mais após um item, mas não corresponde a nada por conta própria

  • NAVEGADOR: * corresponde a zero ou mais caracteres

O ponto de interrogação, "?":

  • REGEX: ? é um quantificador zero ou um depois de um item ou pode modificar o quantificador * para não ser ganancioso, mas não corresponde a nada por conta própria

  • NAVEGADOR: ? corresponde a um único caractere

Se a expressão inteira deve corresponder:

  • REGEX: Sem o uso de ˆ inicial e $ final, o PATTERN não precisa corresponder a toda a STRING: basta que a STRING contenha uma substring que corresponda.

  • NAVEGADOR: Sempre exige que a STRING corresponda exatamente ao PATTERN

Exemplos

Queremos corresponder todos os nomes de host em "provider.domain", mas não "otherprovider.domain", "provider.domain.tld" ou "providersdomain":

REGEX:

shExpMatch(url, "ˆ.*\\.provider\\.domain$")

NAVEGADOR:

shExpMatch(url, "*.provider.domain")

Queremos corresponder "proxy1.domain", "proxy2.domain" e assim por diante, mas não "proxytest.domain":

REGEX:

shExpMatch(url, "ˆproxy.\\.domain$")

NAVEGADOR:

shExpMatch(url, "proxy?.domain")

Outros recursos

Para obter mais detalhes sobre o formato de arquivo PAC, consulte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.