主要Web浏览器(包括Web引擎)使用的PAC约定使用修改后的正则表达式语法。到目前为止,pacmanager使用普通正则表达式进行匹配。我们正在更改 shExpMatch 功能,以使用与浏览器类似的匹配功能。
此更改意味着RoomOS将使用与网络中的其他WEB客户端相同的PAC文件。专门为RoomOS编写的PAC文件可能需要更新以保持按预期运行。
PAC文件评估在RoomOS软件中的两个独立位置进行:
-
用于自己的流量的Web引擎。
-
针对所有其他的HTTP流量的Pacmanager:HttpFeedback、Webex配置、呼叫信号等。
PAC文件可以使用以下功能:shExpMatch(字符串、模式)
如果字符串与模式相符,则返回true,否则false。
下面列出了两个约定之间的主要差异,“REGEX”指传统正则表达式,“BROWSER”指网络浏览器约定。
点号,“。”
-
REGEX: 。匹配一个字符,可以用量器重复此字符
-
浏览器:。仅匹配一个字面点字符
明星,“*”:
-
REGEX: *是项后的零或更多量化器,但本身不匹配任何项
-
浏览器: *匹配零或更多字符
问号“?”:
-
REGEX: ?是项后的零或一量化器,或者可以修改*量化器为非贪婪,但本身不匹配任何东西
-
浏览器: ?匹配一个字符
整个表达式是否必须匹配:
-
Regex:不使用leading ^和trailing $,模式不需要匹配整个字符串:字符串包含一个匹配的子字符串就足够了。
-
浏览器:始终要求字符串完全按照模式匹配
示例
我们希望在“provider.domain”(provider.domain)、“provider.domain.tld”或“providersdomain”(providersdomain)下匹配所有主机名:
Regex:
shExpMatch(url, “^。*\\。provider\\。domain$”)
浏览器:
shExpMatch(url, “*。provider.domain”)
我们希望匹配“proxy1.domain”、“proxy2.domain”等,但不匹配“proxytest.domain”:
Regex:
shExpMatch(url, "^proxy.\\。domain$")
浏览器:
shExpMatch(url, “proxy?。domain”)
其他资源
有关PAC文件格式的更多详细信息,请参阅: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file 。