Konwencja PAC używana przez główne przeglądarki internetowe, w tym silnik sieci Web, polega na użyciu zmodyfikowanej składni wyrażeń regularnych. Do tej pory pacmanager używał zwykłych wyrażeń regularnych do dopasowywania. Zmieniamy funkcję SHExpMatch, aby używać dopasowania podobnego do przeglądarek.
Ta zmiana oznacza, że RooMOS będzie współpracować z tymi samymi dopasowaniami plików PAC, co inni klienci sieciowi w sieci. Pliki PAC napisane specjalnie dla RoomOS mogą wymagać aktualizacji, aby działały zgodnie z przeznaczeniem.
Ocena pliku PAC odbywa się w dwóch oddzielnych miejscach w oprogramowaniu RooMOS:
-
Silnik internetowy dla własnego ruchu.
-
Pacmanager dla całego innego ruchu HTTP: HTTPFeedback, udostępnianie Webex, sygnalizacja połączeń i tak dalej.
Plik PAC może korzystać z tej funkcji: SHExpMatch (string, pattern)
Zwraca wartość true, jeśli ciąg znaków pasuje do wzoru, w przeciwnym razie false.
Główne różnice między tymi dwiema konwencjami są wymienione poniżej, przy czym „REGEX” oznacza tradycyjne wyrażenia regularne, a „PRZEGLĄDARKA” oznacza konwencję przeglądarki internetowej.
Znak kropki, „.”
-
REGEX:. pasuje do pojedynczego znaku, który można powtórzyć za pomocą kwantyfikatora
-
PRZEGLĄDARKA:. pasuje tylko do literalnego znaku kropki
Gwiazda, „*”:
-
REGEX: * jest kwantyfikatorem zero lub więcej po elemencie, ale sam nie pasuje do niczego
-
PRZEGLĄDARKA: * dopasowuje zero lub więcej znaków
Znak zapytania, „?” :
-
REGEX:? jest kwantyfikatorem zero lub jeden po pozycji lub może zmodyfikować kwantyfikator *, aby był niezłomny, ale sam nie pasuje do niczego
-
PRZEGLĄDARKA:? pasuje do pojedynczego znaku
Czy całe wyrażenie musi być zgodne:
-
REGEX: Bez użycia prowadzącego ^ i końcowego $, WZORZEC nie musi pasować do całego STRING: Wystarczy, że STRING zawiera podciąg, który pasuje.
-
PRZEGLĄDARKA: Zawsze wymagaj, aby STRING był dokładnie dopasowany do WZORU
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
Aby uzyskać więcej informacji na temat formatu pliku PAC, zobacz: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .