Menjamo način na koji poklapanje za automatsku konfiguraciju proksija (PAC) funkcioniše za pacmanager u RoomOS softveru.
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.