Мы изменили работу поиска соответствий в автоматической конфигурации прокси-сервера (PAC) для pacmanager в программном обеспечении RoomOS.
В формате PAC, который используется в основных веб-браузерах, включая веб-механизм, применяется особый синтаксис регулярных выражений. До недавнего времени поиск соответствий в pacmanager осуществлялся с использованием обычных регулярных выражений. Мы перевели функцию shExpMatch на тот же принцип поиска соответствий, что и в браузерах.
Это изменение означает, что RoomOS будет находить те же совпадения файлов PAC, что и другие веб-клиенты в сети. Чтобы обеспечить правильную работу, возможно, понадобится обновить файлы PAC, специально записанные для RoomOS.
Оценка PAC-файлов выполняется в двух разных местах в программном обеспечении RoomOS:
-
В веб-механизме для собственного трафика.
-
В pacmanager для остального HTTP-трафика, который включает HttpFeedback, выделение ресурсов Webex, передачу сигналов вызовов и т. д.
Файл PAC может использовать следующую функцию: shExpMatch(строка, шаблон).
Она возвращает значение true, если строка соответствует шаблону, или false, если это не так.
Основные различия между этими двумя формата приведены ниже: "REGEX" — это обычные регулярные выражения, а "БРАУЗЕР" — формат веб-браузера.
Знак точки "."
-
REGEX: знак точки "." соответствует одиночному символу, который может повторяться с помощью квантификатора
-
БРАУЗЕР: знак точки "." соответствует только символу точки
Звездочка "*"
-
REGEX: звездочка "*" — это квантификатор типа "ноль и более", который указывается после элемента, но не соответствует чему-либо сам по себе
-
BROWSER: звездочка "*" соответствует не менее чем нулю символов
Вопросительный знак "?"
-
REGEX: вопросительный знак "?" — это квантификатор типа "ноль или один", который указывается после элемента. Может дополнять квантификатор "*" для минимального поиска совпадений. Не соответствует чему-либо сам по себе.
-
БРАУЗЕР: вопросительный знак "?" соответствует одному символу
Должно ли выражение совпадать целиком
-
REGEX: если не указаны знак начала строки "ˆ" и знак окончания строки "$", ШАБЛОНУ необязательно соответствовать СТРОКЕ целиком. Достаточно, чтобы СТРОКА содержала соответствующую подстроку.
-
БРАУЗЕР: СТРОКА всегда должна точно соответствовать ШАБЛОНУ
Примеры
В примере ниже мы попытаемся найти все имена хостов, которые входят в "provider. domain", но исключить "otherprovider.domain", "provider.domain.tld" и "providersdomain".
REGEX:
shExpMatch(url, "ˆ.*\\.provider\\.domain$")
БРАУЗЕР:
shExpMatch(url, "*.provider.domain")
В примере ниже мы попытаемся найти "proxy1. domain", "proxy2. domain" и т. д., но исключить "proxytest.domain".
REGEX:
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.