主要 Web 瀏覽器(包括網路引擎)使用的 PAC 慣例是使用修改的標準運算式語法。到目前為止,pacmanager 一直使用普通的正則表達式進行匹配。我們正在變更shExpMatch 功能以使用與瀏覽器相似的相符。

此變更意味著,RoomOS 將與網路中的其他 Web 用戶端使用相同的 PAC 檔案相符。專為 RoomOS 編寫的 PAC 檔案可能需要更新才能保持按預期工作。

PAC 檔案評估在 RoomOS 軟體中的兩個不同位置完成:

  • 自身流量的網路引擎。

  • 所有其他 HTTP 流量的 Pacmanager:HttpFeedback、 Webex佈建、呼叫訊號傳遞等。

PAC 檔案可以使用此功能:shExpMatch(字串, 型式)

如果字串符合型式,則返回 true,否則返回 false。

下面列出了兩種慣例之間的主要區別,其中「regex」代表傳統正則表達式,而「BROWSER」代表 Web 瀏覽器慣例。

點符號「.」

  • 正則表達式:。符合可以使用量詞重複的單個字元

  • 瀏覽器: 。僅相符點字元

星號 "*":

  • 正則表達式:* 是項目後的 0 或多個量詞,但本身不相符任何內容

  • 瀏覽器:* 符合 0 或多個字元

問號「?」:

  • 正則表達式: ?是項目後的零或一量詞,或者可以將 * 量詞修改為非貪心,但本身不相符任何內容

  • 瀏覽器: ?符合單個字元

整個表達式是否必須符合:

  • 正則表達式:如果不使用前導 ^ 和結尾 $,則 PATTERN 不需要匹配整個 STRING:STRING 包含一個相符的子字串就足夠了。

  • 瀏覽器:始終要求 STRING 完全符合 PATTERN

範例

我們要相符「provider.domain」下的所有主機名稱,但不符合「otherprovider.domain」、「provider.domain.tld」或「providersdomain」下的所有主機名稱:

正則表達式:

 shExpMatch(url, "^.*\.provider\.domain$") 

瀏覽器:

 shExpMatch(url, "*.provider.domain") 

我們要相符「Proxy1.domain」、「Proxy2.domain」等,但不相符「Proxytest.domain」:

正則表達式:

 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