Megváltoztatjuk az automatikus proxykonfiguráció (PAC) egyeztetésének működését a pacmanager esetén a RoomOS szoftverben.
A főbb webböngészők, köztük a webmotor által használt PAC-konvenció a módosított reguláris kifejezések szintaxisának használata. Mostanáig a pacmanager hagyományos reguláris kifejezéseket használt az egyeztetéshez. Megváltoztatjuk a shExpMatch függvényt, hogy az a böngészőkéhez hasonló egyeztetést használjon.
Ez a változás azt jelenti, hogy a RoomOS ugyanazokkal a PAC-fájlegyeztetésekkel fog működni, mint a hálózat többi webes kliense. Előfordulhat, hogy a kifejezetten a RoomOS rendszerhez írt PAC-fájlokat frissíteni kell a további megfelelő működés érdekében.
A PAC-fájl kiértékelése két külön helyen történik a RoomOS szoftverben:
-
Webmotor a saját forgalomhoz.
-
Pacmanager minden más HTTP-forgalomhoz: HttpFeedback, Webex-telepítés, hívásjelzés stb.
A PAC-fájlok használhatják ezt a függvényt: shExpMatch(karakterlánc, minta)
A visszaadott érték igaz, ha a karakterlánc megfelel a mintának, egyébként hamis.
A két konvenció közötti fő különbségeket az alábbiakban soroljuk fel, ahol a „REGEX” a hagyományos reguláris kifejezéseket, a „BROWSER” pedig a webböngésző konvencióját jelenti.
A pontjel, „.”
-
REGEX: a . egyetlen karakternek felel meg, amely számszerűsítővel megismételhető
-
BROWSER: a . csak egy konstans pont karakternek felel meg
A csillag, "*":
-
REGEX: a * egy elem után állva egy számszerűsítő, amely nulla vagy annál nagyobb lehet, önmagában azonban nem felel meg semminek
-
BROWSER: a * nulla vagy annál több karakternek felel meg
A kérdőjel, „?”:
-
REGEX: a ? egy elem után állva egy számszerűsítő, amely nulla vagy annál nagyobb lehet, illetve módosíthatja a * számszerűsítőt úgy, hogy az ne legyen mohó, de önmagában nem felel meg semminek
-
BROWSER: a ? egyetlen karakternek felel meg
A teljes kifejezésnek egyeznie kell:
-
REGEX: A kezdő ˆ és a záró $ használata nélkül a PATTERN mintának nem kell egyeznie a teljes STRING karakterlánccal: elég, ha a STRING tartalmaz egy egyező részkarakterláncot.
-
BROWSER: A STRING karakterláncnak mindig pontosan meg kell felelnie a PATTERN mintának
Példák
A „provider.domain” alatti összes hosztnevet egyeztetni szeretnénk, de az „otherprovider.domain”, a „provider.domain.tld” és a „providersdomain” alattiakat nem:
REGEX:
shExpMatch(url, "ˆ.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
A „proxy1.domain”, „proxy2.domain” stb. tartományt megfeleltetjük, a „proxytest.domain” tartományt nem:
REGEX:
shExpMatch(url, "ˆproxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Egyéb erőforrások
A PAC fájlformátummal kapcsolatos további részletekért lásd: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.