В формате 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.