Estamos mudando a forma como a correspondência de configuração automática de proxy (PAC) funciona para o pacmanager no software RoomOS.
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.