Конвенцията PAC, използвана от основните уеб браузъри, включително уеб машината, е да се използва модифициран синтаксис на регулярни изрази. Досега pacmanager използваше обикновени регулярни изрази за намиране на съответствие. Променяме функцията shExpMatch, за да използваме намиране на съвпадение, подобно на това в браузърите.

Тази промяна означава, че RoomOS ще работи със същите намирания на съвпадения на PAC. както останалите уеб клиенти в мрежата. PAC файловете, специално написани за RoomOS, може да се наложи да бъдат актуализирани, за да продължат да работят по предназначение.

Оценката на PAC файла се извършва на две отделни места в софтуера RoomOS:

  • Уеб двигател за собствен трафик.

  • Pacmanager за всички други HTTP трафик: HttpFeedback, осигуряване на Webex, сигнализация на обажданията и т.н.

PAC файлът може да използва тази функция: shExpMatch(string, pattern)

Връща true, ако низът съвпада с шаблона. В противен случай връща false.

Основните разлики между двете конвенции са изброени по-долу, като "REGEX" означава традиционни регулярни изрази, а "BROWSER" означава конвенцията на уеб браузъра.

Знакът на точката, "."

  • REGEX: . съвпада с един знак, който може да се повтори с квантор

  • BROWSER: . съвпада само с един знак на точка

Звездата, "*":

  • REGEX: * е квантор за "нула или повече" след даден елемент, но не съвпада с нищо сам по себе си

  • BROWSER: * съвпада с нула или повече знака

Въпросителният знак (?),

  • REGEX: ? е квантификатор нула или едно след даден елемент или може да модифицира количествения показател *, за да не бъде изискващ, но не съвпада с нищо сам по себе си

  • BROWSER:? съвпада с един знак

Дали целият израз трябва да съвпада:

  • REGEX: Без използването на водещ ˆ и завършващ $, ШАБЛОНЪГТ не е необходимо да съответства на целия НИЗ: Достатъчно е НИЗ да съдържа подниз, който съвпада.

  • BROWSER : Винаги изисквайте НИЗ да бъде съчетан точно по ШАБЛОН

Примери

Искаме да съпоставим всички имена на хостове под "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.