Конвенцията на PAC, използвана от основните уеб браузъри, включително Web engine, е да се използва модифициран синтаксис на регулярния израз. Досега pacmanager е използвал обикновени регулярни изрази за съвпадението. Променяме функцията SHExpMatch, за да използваме съвпадение, което е подобно на браузърите.
Тази промяна означава, че RooMOS ще работи със същите съвпадения на PAC файлове като другите уеб клиенти в мрежата. PAC файловете, специално написани за RooMOS, може да се наложи да бъдат актуализирани, за да продължат да работят по предназначение.
Оценката на файла PAC се извършва на две отделни места в софтуера RooMOS:
-
Уеб двигател за собствен трафик.
-
Pacmanager за целия друг HTTP трафик: HttpFeedback, предоставяне на Webex, сигнализиране на повиквания и т.н.
PAC файл може да използва тази функция: SHExpMatch (низ, шаблон)
Връща вярно, ако низът съответства на шаблона, фалшиво в противен случай.
Основните разлики между двете конвенции са изброени по-долу, като „REGEX“ означава традиционни регулярни изрази и „BROWSER“ означава конвенцията за уеб браузъра.
Знакът на точката, „.“
-
REGEX:. съвпада с един символ, който може да се повтори с количествен показател
-
БРАУЗЪР:. съвпада само с буквален знак с точка
Звездата, „*“:
-
REGEX: * е количествен показател с нула или повече след елемент, но не съвпада с нищо сам по себе си
-
БРАУЗЪР: * съвпада с нула или повече символи
Въпросителният знак, „?“ :
-
РЕГЕКС:? е количествен показател нула или едно след елемент или може да модифицира количествението*, за да не е алчен, но не съвпада с нищо сам по себе си
-
БРАУЗЪР:? съвпада с един символ
Дали целият израз трябва да съвпада:
-
REGEX: Без използването на водещи ^ и последващи $, PATTERN не трябва да съответства на целия STRING: Достатъчно е STRING да съдържа подниз, който съвпада.
-
БРАУЗЪР: Винаги изисквайте 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 .