Měníme způsob, jakým bude fungovat hledání odpovídajících automatických konfigurací proxy serveru (PAC) pro správce pacmanager v softwaru RoomOS.
Konvence PAC používaná hlavními webovými prohlížeči, včetně webového enginu, používá upravenou syntaxi regulárních výrazů. Správce pacmanager až doposud používal k nalezení shody běžné regulární výrazy. Měníme však funkci shExpMatch tak, aby shody hledala podobně jako prohlížeče.
Tato změna znamená, že systém RoomOS bude fungovat se stejnými shodami souborů PAC jako ostatní weboví klienti v síti. Může se stát, že soubory PAC napsané speciálně pro systém RoomOS bude nutné aktualizovat, aby si zachovaly správnou funkčnost.
Vyhodnocování souboru PAC se provádí na dvou samostatných místech v softwaru RoomOS:
-
Webový engine pro svůj vlastní provoz.
-
Pacmanager pro veškerý další provoz přes protokol HTTP: HttpFeedback, zřizování Webex, signalizace hovorů atd.
Soubor PAC může používat tuto funkci: shExpMatch(řetězec, vzorec)
Pokud řetězec odpovídá vzorci, vrátí hodnotu „pravda“, jinak vrátí hodnotu „nepravda“.
Hlavní rozdíly mezi oběma konvencemi jsou uvedeny níže, přičemž pojmem „REGEX“ jsou myšleny klasické regulární výrazy a pojmem „PROHLÍŽEČ“ je myšlena konvence webových prohlížečů.
Tečka „.“
-
REGEX: Tečka „.“ odpovídá jednomu znaku, který lze opakovat pomocí kvantifikátoru.
-
PROHLÍŽEČ: Tečka „.“ odpovídá pouze znaku tečky.
Hvězdička „*“
-
REGEX: Hvězdička „*“ je kvantifikátor určující, že položka před ním se opakuje nula- až několikrát, ale sama za sebe nereprezentuje žádný znak.
-
PROHLÍŽEČ: Hvězdička „*“ odpovídá nula až několika znakům.
Otazník „?“
-
REGEX: Otazník „?“ je kvantifikátor určující, že položka před ním se opakuje nula- až jedenkrát, nebo může změnit kvantifikátor „*“ tak, aby nepohlcoval znaky, ale sám o sobě nepředstavuje žádný znak.
-
PROHLÍŽEČ: Otazník „?“ odpovídá jednomu znaku.
Zda musí shoda platit pro celý výraz:
-
REGEX: Když není použit úvodní znak „ˆ“ a koncový znak „$“, nemusí VZOREC odpovídat celému ŘETĚZCI – stačí, když ŘETĚZEC obsahuje podřetězec, který odpovídá.
-
PROHLÍŽEČ: Vždy je nutné, aby ŘETĚZEC přesně odpovídal VZORU.
Příklady
Chceme, aby shoda platila pro všechny názvy hostitele v doméně „poskytovatel.domena“, ale neplatila pro domény „jinyposkytovatel.domena“, „poskytovatel.domena.tld“ nebo „poskytovatelovadomena“:
REGEX:
shExpMatch(url, "ˆ.*\\.poskytovatel\\.domena$")
PROHLÍŽEČ:
shExpMatch(url, "*.poskytovatel.domena")
Chceme, aby shoda platila pro domény „proxy1.domena“, „proxy2.domena“ atd., ale nikoli pro „proxytest.domena“:
REGEX:
shExpMatch(url, "ˆproxy.\\.domena$")
PROHLÍŽEČ:
shExpMatch(url, "proxy?.domena")
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.