我們正在 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$")
瀏覽器:
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。