Konvence PAC používané velkými webovými prohlížeči, včetně webového enginu, je použití modifikované syntaxe regulárních výrazů. Doposud pacmanager používal pro porovnávání obyčejné regulární výrazy. Měníme funkci shExpMatch tak, aby používala porovnávání podobné těm prohlížečům.
Tato změna znamená, že systém RoomOS bude pracovat se stejnými soubory PAC jako ostatní weboví klienti v síti. Soubory PAC speciálně napsané pro systém RoomOS může být nutné aktualizovat, aby nadále fungovaly tak, jak bylo zamýšleno.
Vyhodnocení souboru PAC se provádí na dvou samostatných místech v softwaru RoomOS:
-
Webový engine pro vlastní provoz.
-
Pacmanager pro všechny ostatní přenosy HTTP: HttpFeedback, zřizování Webex, signalizace hovorů atd.
PAC soubor může použít tuto funkci: shExpMatch (řetězec, vzor)
Vrací TRUE, pokud je řetězec shodný se vzorcem, jinak false.
Hlavní rozdíly mezi těmito dvěma konvencemi jsou uvedeny níže, přičemž "REGEX" znamená tradiční regulární výrazy a "BROWSER" znamená konvence webového prohlížeče.
Znak tečky "."
-
REGEX: . odpovídá jednomu znaku, který lze opakovat pomocí kvantifikátoru
-
PROHLÍŽEČ: . odpovídá pouze literálnímu znaku tečky
Hvězda, „*“:
-
REGEX: * je nulový nebo více kvantifikátor po položce, ale sám o sobě nic neodpovídá
-
Prohlížeč: * ODPOVÍDÁ nule nebo více znakům
Otazník "?":
-
REGEX: ? je nulový nebo jeden kvantifikátor po položce, nebo může upravit kvantifikátor * tak, aby byl nechamtivý, ale sám o sobě nic neodpovídá
-
Prohlížeč: ? odpovídá jednomu znaku
Zda se musí celý výraz shodovat:
-
regulární výraz: Bez použití počátečního ^ a koncového $ nemusí VZOR odpovídat celému ŘETĚZCI: Stačí, když ŘETĚZEC obsahuje odpovídající podřetězec.
-
prohlížeč: Vždy požadovat, ABY řetězec odpovídal přesně podle VZORU
Příklady
Chceme spárovat všechny názvy hostitelů s položkami „provider.domain“, ale ne „otherprovider.domain“, „provider.domain.tld“ nebo „providersdomain“:
regulární výraz:
shExpMatch (url, "^.*\\.provider\\.domain$")
prohlížeč:
shExpMatch (url, „*.provider.doména“)
Chceme spárovat výrazy „proxy1.domain“, „proxy2.domain“ atd., ale ne „proxytest.domain“:
regulární výraz:
shExpMatch (url, "^proxy.\\.domain$")
prohlížeč:
shExpMatch (url, „proxy?.doména“)
Další zdroje
Další informace o formátu souboru PAC naleznete zde: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .