主要 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