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