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.