A PAC konvenció, amit a nagy webböngészők használnak, beleértve a webmotorokat is, egy módosított reguláris kifejezés szintaxist. A pacmanager eddig normál reguláris kifejezéseket használt az egyezéshez. Az shExpMatch funkciót a böngészőhöz hasonló egyezés használatára módosítjuk.
Ez a módosítás azt jelenti, hogy a RoomOS ugyanazokkal a PAC-fájlokkal fog működni, mint a hálózat más webkliensei. Előfordulhat, hogy a kifejezetten a RoomOS operációs rendszerhez írt PAC-fájlokat frissíteni kell ahhoz, hogy megfelelően működjenek.
A PAC fájl értékelése két külön helyen történik a RoomOS szoftverben:
-
Webmotor a saját forgalmához.
-
Pacmanager minden más HTTP forgalomhoz: HttpFeedback, Webex beüzemelése, hívásjelzésátvitel és így tovább.
A PAC fájl használhatja ezt a funkciót: shExpMatch( sztring, minta)
TRUE értéket ad vissza, ha a string illeszkedik a mintára, egyébként FALSE értéket ad.
A két konvenció közötti főbb különbségek az alábbiakban olvashatók, a "REGEX" a hagyományos reguláris kifejezéseket és a "BÖNGÉSZŐ" a webböngésző konvencióját jelenti.
A pont jele "."
-
A REGEX: . egyetlen karakterre illeszkedik, amit kvantorral (sokszorozóval) lehet ismételni
-
BÖNGÉSZŐ: . csak egy pont karakternek felel meg
A csillag, "*":
-
REGEX: * egy nulla vagy több kvantor egy elem után, de önmagában nem illeszkedik semmire.
-
BÖNGÉSZŐ: * nulla vagy több karakternek felel meg
A "?" kérdőjel:
-
Ez a kvantor (sokszorozó) alapértelmezés szerint nem mohók, csak a tárgyszöveg elejére illeszkedhetnek.
-
BÖNGÉSZŐ: ? egyetlen karakterre illeszkedik
Az egész kifejezésnek egyeznie kell-e:
-
regex: A kezdő ^ és a záró $ nélkül a MINTÁNAK nem kell az egész szövegre illeszkednie: Elegendő, ha a STRING olyan szövegrészt tartalmaz, ami egyezik.
-
böngésző: Mindig pontosan MINTA szerint kell ILLESZTENI
Példák
A „provider.domain” alatt szereplő összes állomásnevet meg akarjuk egyezni, az „otherprovider.domain”, a „provider.domain.tld” vagy a „providersdomain” cím alatt nem:
regex:
shExpMatch(url, "^.*\\.provider\\.domain$")
böngésző:
shExpMatch (url, „*.provider.tartomány”)
Szeretnénk egyeztetni a „proxy1.domain”, a „proxy2.domain” és így tovább, de a „proxytest.domain” nem:
regex:
shExpMatch (url, "^proxy.\\.tartomány$")
böngésző:
shExpMatch (url, "proxy?.tartomány")
Egyéb erőforrások
A PAC-fájlformátumról bővebben lásd: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .