Конвенція PAC, що використовується основними веб-браузерами, включаючи Web engine, полягає в використанні модифікованого синтаксису регулярних виразів. До цього часу pacmanager використовував звичайні регулярні вирази для зіставлення. Ми змінюємо функцію shExpMatch , щоб використовувати збіг, подібний до браузерів.

Ця зміна означає, що RoomOS працюватиме з тими самими файлами PAC, що й інші вебклієнти в мережі. Можливо, щоб файли PAC, спеціально написані для RoomOS, необхідно оновити, щоб вони продовжували працювати належним чином.

Оцінка файлу PAC виконується в двох окремих місцях у програмному забезпеченні RoomOS:

  • Веб-рушій для власного трафіку.

  • Менеджер пакунків для всього іншого HTTP-трафіку: HttpFeedback, підготовка Webex, передавання сигналів виклику тощо.

Файл PAC може використовувати цю функцію: shExpMatch(рядок, шаблон)

Якщо рядок відповідає шаблону, він повертає « True », в іншому випадку — « False ».

Нижче наведені основні відмінності між двома конвенціями: «REGEX» означає традиційні регулярні вирази, а «BROWSER» означає конвенцію про веб-браузер.

Крапка "."

  • REGEX: . відповідає одному символу, який можна повторити за допомогою квантора

  • БРАУЗЕР: . відповідає лише символу прямої крапки

Зірка «*»:

  • REGEX: * є нульовим або більшим квантором після елемента, але сам по собі нічого не відповідає

  • БРАУЗЕР: * відповідає нулю або більше символів

Знак запитання «?»:

  • REGEX: ? є нульовим або одиничним квантором після елемента, або може змінити квантор *, щоб бути нежадібним, але сам по собі не відповідає нічого

  • БРАУЗЕР: ? відповідає одному символу

Чи має збігатися весь вираз:

  • регекс: Без використання leading ^ і символу $, ШАБЛОН не має відповідати всьому РЯДКУ: Достатньо, щоб РЯДОК містив підрядок, який збігається.

  • браузер: Завжди вимагати точного зіставлення РЯДКА за ШАБЛОНОМ

Приклади

Ми хочемо зіставити всі імена хостів у розділі "provider.domain", але не "otherprovider.domain", "provider.domain.tld" чи "providersdomain":

регекс:

 shExpMatch (url, "^.*\\.provider\\.domain$") 

браузер:

 shExpMatch (url, "*.provider.домен") 

Ми хочемо зіставити "proxy1.домен", "proxy2.домен" тощо, але не "proxytest.домен":

регекс:

 shExpMatch (url, "^proxy.\\.domain$") 

браузер:

 shExpMatch(url, "проксі?.домен") 

Інші ресурси

Докладніше про формат файлу PAC див. в статті https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .