La convención PAC utilizada por los principales navegadores web, incluido el motor Web, es usar una sintaxis de expresión regular modificada. Hasta ahora, pacmanager ha usado expresiones regulares ordinarias para la coincidencia. Estamos cambiando la función ShexpMatch para usar una coincidencia similar a los navegadores.
Este cambio significa que RoomOS funcionará con las mismas coincidencias de archivos PAC que otros clientes web en la red. Es posible que los archivos PAC escritos específicamente para RoomOS necesiten actualizarse para seguir funcionando según lo previsto.
La evaluación del archivo PAC se realiza en dos lugares distintos en el software RoomOS:
-
Motor web para su propio tráfico.
-
Pacmanager para 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 de lo contrario.
Las principales diferencias entre las dos convenciones se enumeran a continuación, con “REGEX” que significa expresiones regulares tradicionales y “NAVEGADOR” que significa la convención del navegador web.
El signo de punto, “.”
-
REGEX:. coincide con un solo carácter, que se puede repetir con un cuantificador
-
NAVEGADOR:. sólo coincide con un carácter de punto literal
La estrella, “*”:
-
REGEX: * es un cuantificador cero o más después de un artículo, pero no coincide con nada por sí solo
-
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í solo
-
NAVEGADOR:? coincide con un solo carácter
Si la expresión completa debe coincidir:
-
REGEX: Sin el uso de ^ inicial y final $, el PATTERN no necesita coincidir con toda la CADENA: es suficiente que la CADENA contenga una subcadena que coincida.
-
NAVEGADOR: Siempre requiere que STRING coincida exactamente con el patrón
Ejemplos
Queremos hacer coincidir todos los nombres de host en “provider.domain”, pero no “otherprovider.domain”, “provider.domain.tld” o “providersdomain”:
REGEX:
shExpMatch(url, "^.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Queremos hacer coincidir “proxy1.domain”, “proxy2.domain”, etc., pero no “proxytest.domain”:
REGEX:
shExpMatch(url, "^proxy.\\.domain$")
BROWSER:
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 .