PAC konvencija koju koristi većina veb pregledača, uključujući veb endžin, koristi se za modifikaciju sintakse za regularni izraz. Do sada, pac menadžer je koristio običan regularni izraz za poklapanje. Promenili smo funkciju shExpMatch da bismo koristili poklapanje koje je slično pregledačima.

Ova promena znači da će RoomOS raditi sa istim poklapanjima PAC datoteke kao i drugi veb klijenti na mreži. PAC datoteke posebno pisane za RoomOS možda treba da se ažuriraju da bi radile kako je to predviđeno.

Evaluacija PAC datoteke se obavlja na dva različita mesta u RoomOS softveru:

  • Veb endžin za sopstveni saobraćaj.

  • Pacmanager za sav drugi HTTP saobraćaj HttpFeedback, Webex nabavke, signaliziranje za poziv, i tako dalje.

PAC datoteka može da iskoristi ovu funkciju: shExpMatch(niz, šablon)

Dobija se tačan rezultat ako niz odgovara šablonu, u suprotnom je netačan.

Glavne razlike između dve konvencije navedene su u nastavku, uz "REGEX" koji označava tradicionalne redovne izraze i "BROWSER" koji označava konvenciju veb pregledača.

Znak tačke, "."

  • REGEX: . odgovara jednom karakteru, koji može da se ponovi uz kvantifikator

  • BROWSER: . odgovara samo literalnom znaku tačke

Zvezdica, "*":

  • REGEX: * je nula-ili-više kvantifikatora nakon stavke, ali ne odgovara ničemu samostalno

  • BROWSER: * odgovara nuli ili više karaktera

Znak pitanja, "?":

  • REGEX: ? je nula-ili-jedan kvantifikator nakon stavke, ili može da modifikuje * kvantifikator tako da ne bude nametnut, ali ne odgovara ničemu samostalno

  • BROWSER: ? odgovara jednom karakteru

Da li ceo izraz mora da odgovara:

  • REGEX: Ako se ne upotrebi ˆ na početku i $ na kraju, ŠABLON ne treba da odgovara celom NIZU: Dovoljno je da NIZ sadrži pod-niz koji odgovara.

  • BROWSER: Uvek zahteva da NIZ potpuno odgovara ŠABLONU

Primeri

Mi želimo da se poklope sva imena hostova pod stavkom "provider.domain", ali ne "otherprovider.domain", "provider.domain.tld" ili "providersdomain":

REGEX:

shExpMatch(url, "ˆ.*\\.provider\\.domain$")

BROWSER:

shExpMatch(url, "*.provider.domain")

Želimo da uklopimo "proxy1.domain", "proxy2.domain", i tako dalje, ali ne "proxytest.domain":

REGEX:

shExpMatch(url, "ˆproxy.\\.domain$")

BROWSER:

shExpMatch(url, "proxy?.domain")

Drugi resursi

Za više informacija o PAC formatu datoteke, pogledajte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.