PAC-konventionen som används av de större webbläsarna, inklusive webbmotorn, är att använda en modifierad syntax för reguljära uttryck. Hittills har pacmanager använt vanliga reguljära uttryck för matchningen. Vi ändrar funktionen shExpMatch för att använda en matchning som liknar webbläsarna.

Den här ändringen innebär att RoomOS kommer att arbeta med samma PAC-fil som andra webbklienter i nätverket. PAC-filer som är specifikt skrivna för RoomOS kan behöva uppdateras för att fortsätta att fungera som avsett.

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

  • Webbmotor för egen trafik.

  • Pakethanterare för all annan HTTP-trafik: HttpFeedback, Webex-etablering, samtalssignalering och så vidare.

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

Returnerar sant om strängen matchar mönstret, annars falskt.

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 enskilt tecken, som kan upprepas med en kvantifierare

  • WEBBLÄSARE: . matchar endast ett bokstavligt punkttecken

Stjärnan, ”*”:

  • REGEX: * är en noll-eller-mer kvantifierare efter ett objekt, men matchar inte något på egen hand

  • WEBBLÄSARE: * matchar noll eller fler tecken

Frågetecknet, ”?”:

  • REGEX: ? är en noll-eller-en-kvantifierare efter ett objekt, eller kan ändra *-kvantifieraren till icke-girig, men matchar inte något på egen hand

  • WEBBLÄSARE: ? matchar ett enskilt tecken

Om hela uttrycket måste matcha:

  • Regex: Utan att använda inledande ^ och efterföljande $ behöver MÖNSTRET inte matcha hela STRÄNGEN: Det räcker att STRÄNGEN innehåller ett substrat som matchar.

  • webbläsare: Kräv alltid att STRÄNGEN matchas exakt efter MÖNSTER

Exempel:

Vi vill matcha alla värdnamn under ”leverantör.domän”, men inte ”andraleverantör.domän”, ”leverantör.domän.tld” eller ”providersdomän”:

Regex:

 shExpMatch( url, "^.*\\.leverantör\\.domän$") 

webbläsare:

 shExpMatch(url, ”*.leverantör.domän”) 

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

Regex:

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

webbläsare:

 shExpMatch(url, "proxy?.domän") 

Övriga resurser

Mer information om PAC-filformatet finns i: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .