我们正在 RoomOS 软件中更改 pacmanager 的代理自动配置 (PAC) 匹配的工作方式。
主要 Web 浏览器(包括 Web 引擎)使用的 PAC 约定是使用修改的正则表达式语法。 pacmanager 一直使用普通的正则表达式进行匹配。 我们将更改 shExpMatch 函数,以使用与浏览器类似的匹配项。
此更改意味着 RoomOS 将使用与网络中其他 Web 客户端相同的 PAC 文件匹配。 专为 RoomOS 编写的 PAC 文件可能需要更新,以保持正常工作。
PAC 文件评估在 RoomOS 软件的两个单独位置完成:
-
Web 引擎用于为自己提供流量。
-
Pacmanager 用于为所有其他 HTTP 提供流量:HttpFeedback、Webex 预配置、呼叫信令等。
PAC 文件可以利用以下函数:shExpMatch(字符串、模式)
如果字符串与模式匹配,则返回 true,否则返回 false。
这两种约定的主要区别如下所示,"REGEX" 表示传统的正则表达式,“BROWSER”指 Web 浏览器约定。
点符号 "."
-
REGEX:. 匹配单个字符,可使用限定符重复
-
BROWSER:. 仅匹配字面点字符
星号 "*":
-
REGEX:* 是某个项后面零个或多个限定符,但本身不与任何内容匹配
-
BROWSER:* 匹配零个或多个字符
问号 "?":
-
REGEX:? 是某个项后面零个或一个限定符,也可以修改 * 限定符为非穷尽,但本身不与任何内容匹配
-
浏览器:? 匹配单个字符
整个表达式是否必须匹配:
-
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。