Соглашение PAC, используемое основными веб-браузерами, включая веб-механизм, состоит в использовании измененного синтаксиса регулярных выражений. До сих пор pacmanager использовал для сопоставления обычные регулярные выражения. Мы изменяем функцию shExpMatch , чтобы использовать сопоставление, похожее на браузеры.
Это изменение означает, что RoomOS будет работать с тем же файлом PAC, что и другие веб-клиенты в сети. Для продолжения работы могут потребоваться обновления файлов PAC, специально написанных для RoomOS.
Оценка файла PAC выполняется в двух отдельных местах в ПО RoomOS:
-
Веб-механизм для собственного трафика.
-
Pacmanager для всего остального трафика HTTP: Обратная связь по HttpFeedback, подготовка Webex, передача сигналов вызовов и т. д.
Файл PAC может использовать эту функцию: shExpMatch( строка, шаблон)
Если строка соответствует шаблону, то возвращает true, в противном случае — false.
Основные различия между этими двумя конвенциями перечислены ниже: «REGEX» означает традиционные регулярные выражения, а «BROWSER» означает «веб-браузер».
Знак точки "."
-
REGEX: . соответствует одному символу, который может быть повторен с помощью квантора
-
BROWSER: . соответствует только символу литерала точки
Звезда "*":
-
REGEX: * - это квантор с нулевым или более числом после элемента, но не совпадает ни с чем по отдельности
-
БРАУЗЕР: * соответствует нулю или более символов
Знак вопроса "?":
-
REGEX: ? — это квантор с нулевым или одним нулевым числом после элемента, или может изменить квантор *, чтобы он не был жадным, но не совпадает ни с чем по отдельности
-
БРАУЗЕР: ? соответствует одному символу
Должно ли целое выражение соответствовать:
-
регулярное выражение: Без использования leading ^ и последующих $ ШАБЛОН не должен соответствовать всей СТРОКЕ: Достаточно, чтобы СТРОКА содержала подстроку, которая совпадает.
-
браузер: Всегда требовать, чтобы СТРОКА соответствовала ШАБЛОНУ
Примеры
Мы хотим сопоставить все имена узлов в разделах "provider.domain", но не в разделах "otherprovider.domain", "provider.domain.tld" или "providersdomain".
регулярное выражение:
shExpMatch(url, "^.*\\.provider\\.domain$")
браузер:
shExpMatch(URL, "*.provider.domain")
Мы хотим сопоставить "proxy1.domain", "proxy2.domain" и т. д., но не "proxytest.domain":
регулярное выражение:
shExpMatch(URL, "^proxy.\\.domain$")
браузер:
shExpMatch(URL, "proxy?.domain")
Другие материалы
Дополнительные сведения о формате файла PAC см. на странице https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .