PAC-konventionen som används av de stora webbläsarna, inklusive Web Engine, är att använda en ändrad syntax för reguljära uttryck. Fram tills nu har pacmanager använt vanliga reguljära uttryck för matchning. Vi ändrar funktionen shExpMatch så att den använder en matchning som liknar webbläsarnas.

Den här ändringen innebär att RoomOS fungerar tillsammans med samma PAC-fil-matchningar som andra webbklienter i nätverket. PAC-filer som har skrivits för RoomOS kan behöva uppdateras för att fortsätta fungera som avsett.

Utvärderingen av PAC-filen sker på två separata platser i RoomOS-programvaran:

  • Web Engine för den egna trafiken.

  • Pacmanager för all övrig HTTP-trafik: HttpFeedback, Webex-etablering, samtalssignalering osv.

En PAC-fil kan använda den här funktionen: shExpMatch (sträng, mönster)

Det utvärderas som sant om strängen matchar mönstret, annars som falskt.

De viktigaste skillnaderna mellan de två konventionerna visas nedan, med ”REGEX”, dvs. traditionella reguljära uttryck, och ”WEBBLÄSARE”, dvs. webbläsarens konvention.

Punktsymbol, ”.”

  • REGEX: . matchar ett enda tecken, som kan upprepas med en kvantifierare

  • WEBBLÄSARE: . matchar bara en bokstavlig punkt

Stjärna, ”*”:

  • REGEX: * är en noll-eller-fler-kvantifierare efter ett objekt, men matchar inte något för sig själv

  • WEBBLÄSARE: * matchar noll eller flera tecken

Frågetecken, ”?”:

  • REGEX: ? är en noll-eller-ett-kvantifierare efter ett objekt, eller så kan den ändra *-kvantifieraren så att den blir icke-girig, men matchar inte något för sig själv

  • WEBBLÄSARE: ? matchar ett enskilt tecken

Om hela uttrycket måste matcha:

  • REGEX: Om inledande ˆ och avslutande $ inte används behöver MÖNSTRET inte matcha hela STRÄNGEN: det räcker att STRÄNGEN innehåller en delsträng som matchar.

  • WEBBLÄSARE: Kräver alltid att STRÄNGEN matchar exakt med MÖNSTRET

Exempel

Vi vill matcha alla värdnamn under ”provider.domain”, men inte ”otherprovider.domain”, ”provider.domain.tld” eller ”providersdomain”:

REGEX:

shExpMatch(url, "ˆ.*\\.provider\\.domain$")

WEBBLÄSARE:

shExpMatch(url, "*.provider.domain")

Vi vill matcha ”proxy1.domain”, ”proxy2.domain” och så vidare, men inte ”proxytest.domain”:

REGEX:

shExpMatch(url, "ˆproxy.\\.domain$")

WEBBLÄSARE:

shExpMatch(url, "proxy?.domain")

Andra 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.