Ми змінюємо спосіб пошуку відповідності автоматичної конфігурації проксі (PAC) для pacmanager у програмному забезпеченні RoomOS.
Конвенція PAC, яка використовується основними веб-браузерами, а також браузерним рушієм, полягає у використанні зміненого синтаксису регулярних виразів. Донині інструмент PAC manager застосовував звичайні регулярні вирази для зіставлення. Ми змінюємо функцію shExpMatch з метою використання зіставлення, механізм якого схожий на браузерний.
Ця зміна означає, що RoomOS буде працювати з тими ж зіставленнями PAC-файлів, що й інші веб-клієнти в мережі. Файли PAC, спеціально написані для RoomOS, можливо, доведеться оновити, щоб вони продовжувати працювати за призначенням.
Оцінка файлу PAC проводиться у двох окремих місцях у програмному забезпеченні RoomOS:
-
Браузерний рушій для власного трафіку.
-
Pacmanager для решти HTTP-трафіку: HttpFeedback, виділення ресурсів для Webex, передавання сигналів викликів тощо.
PAC-файл може використовувати цю функцію: shExpMatch (рядок, шаблон)
Він повертає true, якщо рядок відповідає шаблону; інакше повертає false.
Основні відмінності між двома конвенціями наведені нижче, серед яких «REGEX» означає традиційні регулярні вирази, а «BROWSER» означає конвенцію веббраузера.
Знак крапки «.»
-
REGEX: . відповідає одному символу, який можна повторити за допомогою квантора
-
BROWSER: . відповідає лише буквальному символу крапки
Зірочка «*»:
-
REGEX: * є квантором, що відповідає нулю або більше символів, після елемента, але не відповідає жодному символу окремо
-
BROWSER: * відповідає нулю або більше символів
Знак питання «?»:
-
REGEX: ? є квантором нульового або одного символа після елемента; також він може модифікувати квантор * як нежадібний, але сам по собі не позначає жоден символ
-
BROWSER: квантор ? відповідає одному символу
Чи має відповідати весь вираз:
-
REGEX: без використання початкового символа ˆ та кінцевого $, PATTERN не повинен відповідати всьому STRING (достатньо, щоб STRING містив підрядок, що збігається).
-
BROWSER: завжди вимагається, щоб STRING точно відповідав PATTERN
Приклади
Ми хочемо зіставити всі імена хостів у розділі «provider.domain», але не в розділі «otherprovider.domain», «provider.domain.tld» або «providersdomain»:
REGEX:
shExpMatch(url, "ˆ.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Ми прагнемо відповідності з «proxy1.domain», «proxy2.domain» тощо, але не з «proxytest.domain»:
REGEX:
shExpMatch(url, "ˆproxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Інші ресурси
Щоб дізнатися більше про формат файлів PAC, див.: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.