PAC-konventionen som används av de stora webbläsarna, inklusive webbmotorn, är att använda en modifierad syntax för reguljärt uttryck. Fram till nu, pacmanager har använt vanliga reguljära uttryck för matchningen. Vi ändrar Shexp Match-funktionen för att använda en matchning som liknar webbläsarna.
Denna ändring innebär att RoomOS kommer att fungera med samma PAC-filmatchningar som andra webbklienter i nätverket. PAC-filer som är specifikt skrivna för RoomOS kan behöva uppdateras för att fortsätta fungera som avsett.
PAC-filutvärderingen görs på två separata platser i RoomOS-programvaran:
-
Webbmotor för sin egen trafik.
-
Pacmanager för all annan HTTP-trafik: HttpFeedback, Webex provisioning, samtalssignalering och så vidare.
En PAC-fil kan använda denna funktion: SHEXPmatch (sträng, mönster)
Det returnerar true om strängen matchar mönstret, false annars.
De viktigaste skillnaderna mellan de två konventionerna listas nedan, med ”REGEX” som betyder traditionella reguljära uttryck och ”BROWSER” som betyder webbläsarkonventionen.
Pricktecknet, ”.”
-
REGEX:. matchar ett enda tecken, som kan upprepas med en kvantifierare
-
WEBBLÄSARE:. matchar bara ett bokstavligt punkttecken
Stjärnan, ”*”:
-
REGEX: * är en noll eller mer kvantifierare efter ett objekt, men matchar inte någonting på egen hand
-
WEBBLÄSARE: * matchar noll eller fler tecken
Frågetecknet, ”?” :
-
REGEX:? är en noll-eller-en-kvantifierare efter ett objekt, eller kan modifiera *-kvantifieraren för att vara icke-girig, men matchar inte någonting på egen hand
-
WEBBLÄSARE:? matchar ett enda tecken
Om hela uttrycket måste matcha:
-
REGEX: Utan användning av ledande ^ och efterföljande $ behöver PATTERN inte matcha hela STRING: Det räcker att STRING innehåller en delsträng som matchar.
-
WEBBLÄSARE: Kräv alltid att STRING matchas exakt med MÖNSTER
Exempel
Vi vill matcha alla värdnamn under ”provider.domain”, men inte ”otherprovider.domain”, ”provider.domain.tld” eller ”providersdomain”:
REGEX:
shExpMatch(url, "^.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Vi vill matcha ”proxy1.domain”, ”proxy2.domain” och så vidare, men inte ”proxytest.domain”:
REGEX:
shExpMatch(url, "^proxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Övriga resurser
Mer information om PAC-filformatet finns på: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .