La convención PAC utilizada por los principales navegadores web, incluido el motor web, es utilizar una sintaxis de expresiones regulares modificada. Hasta ahora, pacmanager ha utilizado expresiones regulares ordinarias para la coincidencia. Estamos cambiando la función shExpMatch para que utilice una coincidencia similar a la de los navegadores.
Este cambio significa que RoomOS funcionará con las mismas coincidencias de archivos PAC que otros clientes web de la red. Es posible que los archivos PAC escritos específicamente para RoomOS deban actualizarse para seguir funcionando según lo previsto.
La evaluación de archivos PAC se realiza en dos lugares separados en el software de RoomOS:
-
Motor web para su propio tráfico.
-
Pacmanager para todo el resto del tráfico HTTP: HttpFeedback, aprovisionamiento de Webex, señalización de llamadas, etc.
Un archivo PAC puede hacer uso de esta función: shExpMatch(cadena, patrón)
Devuelve verdadero si la cadena coincide con el patrón, falso en caso contrario.
Las principales diferencias entre las dos convenciones se enumeran a continuación, con "REGEX" que significa expresiones regulares tradicionales y "BROWSER" que significa la convención del navegador web.
El signo de punto, "."
-
REGEX: . empareja un carácter, que puede ser repetido con un cuantificador
-
NAVEGADOR: . solo coincide con un carácter de punto literal
La estrella, "*":
-
REGEX: * es un cuantificador cero o más después de un elemento, pero no coincide con nada por sí mismo
-
NAVEGADOR: * coincide con cero o más caracteres
El signo de interrogación "?":
-
REGEX: ? es un cuantificador cero o uno después de un elemento, o puede modificar el cuantificador * para que no sea codicioso, pero no coincide con nada por sí mismo
-
BROWSER: ? coincide con un solo carácter
Si la expresión completa debe coincidir:
-
regex: Sin el uso de ^ inicial y $ final, el PATRÓN no necesita coincidir con toda la CADENA: Basta con que la CADENA contenga una subcadena que coincida.
-
navegador: Requerir siempre que la CADENA sea emparejada exactamente por PATRÓN
Ejemplos
Queremos hacer coincidir todos los nombres de host en "provider.domain", pero no en "otherprovider.domain", "provider.domain.tld" o "providersdomain":
regex:
shExpMatch(url, "^.*\\.provider\\.domain$")
navegador:
shExpMatch(url, "*.provider.domain")
Queremos hacer coincidir "proxy1.domain", "proxy2.domain", etc., pero no "proxytest.domain":
regex:
shExpMatch(url, "^proxy.\\.dominio$")
navegador:
shExpMatch(url, "proxy?.domain")
Otros recursos
Para obtener más detalles sobre el formato de archivo PAC, consulte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .