Spreminjamo, kako deluje ujemanje samodejne konfiguracije proxyja (PAC) za pacmanager v programski opremi RoomOS.
Konvencija PAC, ki jo uporabljajo glavni spletni brskalniki, vključno s spletnim mehanizmom, je uporaba spremenjene sintakse regularnega izraza. Do sedaj je pacmanager za ujemanje uporabljal navadne regularne izraze. Spreminjamo shExpMatch funkcijo za uporabo ujemanja, ki je podobno brskalnikom.
Ta sprememba pomeni, da bo RoomOS deloval z enakimi ujemanji datotek PAC kot drugi spletni odjemalci v omrežju. Datoteke PAC, posebej napisane za RoomOS, bo morda treba posodobiti, da bodo še naprej delovale, kot je predvideno.
Vrednotenje datoteke PAC se izvede na dveh ločenih mestih v programski opremi RoomOS:
Spletni motor za lasten promet.
Pacmanager za ves drug promet HTTP: HttpFeedback, zagotavljanje Webexa, signalizacija klicev itd.
Datoteka PAC lahko uporablja to funkcijo: shExpMatch(niz, vzorec)
Vrne true, če se niz ujema z vzorcem, drugače pa false.
Glavne razlike med obema konvencijama so navedene spodaj, pri čemer "REGEX" pomeni tradicionalne regularne izraze, "BRSKALNIK" pa konvencijo spletnega brskalnika.
Znak za piko, "."
REGEX: . ujema z enim znakom, ki se lahko ponovi s kvantifikatorjem
BRSKALNIK: . ujema se samo z dobesednim znakom pike
Zvezda, "*":
REGEX: * je kvantifikator nič ali več za postavko, vendar se sam po sebi ne ujema z ničemer
BRSKALNIK: * se ujema z nič ali več znaki
Vprašaj "?":
REGEX: ? je kvantifikator nič ali ena za elementom ali pa lahko kvantifikator * spremeni tako, da ni požrešen, vendar se sam ne ujema z ničemer
BRSKALNIK: ? ujema z enim znakom
Ali se mora celoten izraz ujemati:
REGEX: Brez uporabe začetnih ^ in končnih $ ni potrebno, da se VZOREC ujema s celotnim NIZOM: Dovolj je, da STRING vsebuje podniz, ki se ujema.
BRSKALNIK: Vedno zahtevajte, da se STRING natančno ujema s PATTERN
Primeri
Želimo ujemati vsa imena gostiteljev pod "provider.domain", ne pa tudi "otherprovider.domain", "provider.domain.tld" ali "providersdomain":
REGEX:
shExpMatch(url, "^.*\\.provider\\.domain$")
BRSKALNIK:
shExpMatch(url, "*.provider.domain")
Ujemati želimo "proxy1.domain", "proxy2.domain" in tako naprej, ne pa "proxytest.domain":
REGEX:
shExpMatch(url, "^proxy.\\.domain$")
BRSKALNIK:
shExpMatch(url, "proxy?.domain")
Drugi viri
Za več podrobnosti o formatu datoteke PAC glejte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .