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 usava expressões regulares comuns para a correspondência. Estamos alterando a função shExpMatch para usar uma correspondência semelhante à dos navegadores.
Essa alteração significa que o RoomOS funcionará com as mesmas correspondências de arquivos PAC de outros clientes 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 web para seu próprio tráfego.
-
Pacmanager para todos os outros tráfegos HTTP: HttpFeedback, provisionamento Webex, sinalização de chamadas e assim por diante.
Um arquivo PAC pode fazer uso desta função: shExpMatch (string, pattern)
Ele retornará verdadeiro se a string corresponder ao padrão; caso contrário, retornará falso.
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 si só
-
NAVEGADOR: * corresponde a zero ou mais caracteres
O ponto de interrogação, “?” :
-
EXPRESSÃO REGULAR:? é um quantificador de zero ou um após um item, ou pode modificar o quantificador* para não ser ganancioso, mas não corresponde a nada por si só
-
NAVEGADOR:? corresponde a um único caractere
Se a expressão inteira deve corresponder:
-
REGEX: Sem o uso de ^ à esquerda e $ à direita, o PATTERN não precisa corresponder à STRING inteira: basta que a STRING contenha uma substring que corresponda.
-
NAVEGADOR: Sempre exija que STRING corresponda exatamente ao PATTERN
Exemplos
Queremos combinar todos os nomes de host em “provider.domain”, mas não em “otherprovider.domain”, “provider.domain.tld” ou “providersdomain”:
REGEX:
shExpMatch(url, "^.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Queremos combinar “proxy1.domain”, “proxy2.domain” e assim por diante, mas não “proxytest.domain”:
REGEX:
shExpMatch(url, "^proxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Outros recursos
Para obter mais detalhes sobre o formato do arquivo PAC, consulte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .