Konvencia PAC používaná hlavnými webovými prehliadačmi vrátane webového nástroja spočíva v použití modifikovanej syntaxe regulárneho výrazu. Doteraz pacmanager používal na zhodu bežné regulárne výrazy. Funkciu SHExpMatch meníme tak, aby sme použili zhodu, ktorá je podobná prehliadačom.
Táto zmena znamená, že RooMOS bude pracovať s rovnakými zhodami súborov PAC ako ostatní weboví klienti v sieti. Súbory PAC špeciálne napísané pre RoomOS možno bude potrebné aktualizovať, aby fungovali podľa zamýšľania.
Vyhodnotenie súboru PAC sa vykonáva na dvoch samostatných miestach v softvéri RooMOS:
-
Webový engine pre vlastnú prevádzku.
-
Pacmanager pre všetku ostatnú prevádzku HTTP: HTTPFeedback, poskytovanie Webex, signalizácia hovorov atď.
Súbor PAC môže využívať túto funkciu: SHExpMatch (reťazec, vzor)
Ak sa reťazec zhoduje so vzorom, vráti true, inak false.
Hlavné rozdiely medzi týmito dvoma konvenciami sú uvedené nižšie, pričom „REGEX“ znamená tradičné regulárne výrazy a „BROWSER“ znamená konvenciu webového prehliadača.
Bodové znamenie „.“
-
REGEX:. zodpovedá jedinému znaku, ktorý sa dá opakovať pomocou kvantifikátora
-
PREHLIADAČ:. zodpovedá iba doslovnému bodkovému znaku
Hviezda, „*“:
-
REGEX: * je kvantifikátor nuly alebo viac po položke, ale sám o sebe sa ničomu nezhoduje
-
PREHLIADAČ: * zodpovedá nulovým alebo viacerým znakom
Otáznik, „?“ :
-
REGEX:? je kvantifikátor nula alebo jeden po položke, alebo môže upraviť kvantifikátor * tak, aby bol nenamýtivý, ale sám o sebe sa ničomu nezhoduje
-
PREHLIADAČ:? zodpovedá jedinému znaku
Či sa musí zhodovať celý výraz:
-
REGEX: Bez použitia vedúcich ^ a koncových $ sa PATTERN nemusí zhodovať s celým STRINGOM: Stačí, aby STRING obsahoval podreťazec, ktorý sa zhoduje.
-
PREHLIADAČA: Vždy vyžadujte, aby bol STRING presne zodpovedaný PATTERN
Príklady
Chceme zladiť všetky názvy hostiteľov v časti „provider.domain“, ale nie „otherprovider.domain“, „provider.domain.tld“ alebo „providersdomain“:
REGEX:
shExpMatch(url, "^.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Chceme zhodovať s „proxy1.domain“, „proxy2.domain“ atď., ale nie „proxytest.domain“:
REGEX:
shExpMatch(url, "^proxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Ostatné zdroje
Ďalšie podrobnosti o formáte súboru PAC nájdete na adrese: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .