Zmieniamy sposób działania dopasowania Proxy Auto-Configuration (PAC) dla pacmanagera w oprogramowaniu RoomOS.
Konwencja PAC stosowana przez główne przeglądarki internetowe, w tym przez silnik Web, polega na użyciu zmodyfikowanej składni wyrażeń regularnych. Do tego czasu system pacmanager używał zwykłych wyrażeń regularnych. Zmieniamy funkcję shExpMatch, aby użyć dopasowania, które jest podobne do przeglądarek.
Zmiana ta oznacza, że RoomOS będzie teraz pracować z tymi samymi dopasowaniami plików PAC, co inne klienty internetowe w sieci. Pliki PAC napisane specjalnie dla RoomOS mogą wymagać aktualizacji, aby dalej działały zgodnie z przewidywaniami.
Ocena pliku PAC odbywa się w dwóch osobnych miejscach oprogramowania RoomOS:
-
Silnik internetowy dla własnego ruchu.
-
Pacmanager dla całego pozostałego ruchu HTTP: HttpFeedback, wdrażanie Webex, sygnały połączeń i tak dalej.
Z funkcji tej może skorzystać plik PAC: shExpMatch(ciąg, wzór)
Zwraca true jeśli łańcuch pasuje do wzorca, false w przeciwnym wypadku.
Poniżej wymieniono główne różnice pomiędzy tymi dwoma konwencjami, przy czym "REGEX" oznacza tradycyjne wyrażenia regularne, a "BROWSER" konwencję przeglądarki internetowej.
Znak kropki „.”
-
REGEX: . dopasowuje pojedynczy znak, który może być powtórzony z kwantyfikatorem
-
BROWSER: . pasuje tylko do dosłownego znaku kropki
Gwiazdka „*”:
-
REGEX: * jest kwantyfikatorem zero-lub-więcej po elemencie, ale sama w sobie nie pasuje do niczego
-
BROWSER: * dopasowuje zero lub więcej znaków
Znak zapytania „?”
-
REGEX: ? jest kwantyfikatorem zero-lub-jedynkowym po elemencie, lub może zmodyfikować kwantyfikator *, aby był niechciwy, ale sam dopasuje niczego
-
BROWSER: ? dopasuje do pojedynczego znaku
Czy całe wyrażenie musi pasować:
-
REGEX: Bez użycia wiodących ˆ i ciągnących się $, PATTERN nie musi pasować do całego STRING: Wystarczy, że STRING zawiera podciąg, który pasuje.
-
BROWSER: Zawsze wymagaj, aby STRING był dokładnie dopasowany przez PATTERN
Przykłady
Chcemy dopasować wszystkie nazwy hostów pod „provider.domain”, ale nie „otherprovider.domain”, „provider.domain.tld” lub „providersdomain”:
REGEX:
shExpMatch(url, "ˆ.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Chcemy dopasować „proxy1.domain”, „proxy2.domain” i tak dalej, ale nie „proxytest.domain”:
REGEX:
shExpMatch(url, "ˆproxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Inne zasoby
Więcej informacji na temat formatu pliku PAC można znaleźć w: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.