Web motoru dahil olmak üzere, önemli web tarayıcıları tarafından kullanılan PAC kuralı, değiştirilmiş bir normal ifade sözdizimi kullanmak içindir. Şimdiye kadar, pacmanager eşleşme için sıradan normal ifadeler kullanmıştır. shExpMatch işlevini, tarayıcılara benzer bir eşleşme kullanacak şekilde değiştiriyoruz.

Bu değişiklik, RoomOS'in ağdaki diğer web istemcileriyle aynı PAC dosya eşleşmeleriyle çalışacağı anlamına gelir. Özellikle RoomOS için yazılmış olan PAC dosyalarının, istenilen şekilde çalışmaya devam etmeleri için güncellenmeleri gerekir.

PAC dosyası değerlendirmesi, RoomOS yazılımının iki ayrı yerinde yapılır:

  • Kendi trafiği için web motoru.

  • Diğer tüm HTTP trafiği için pacmanager: HttpFeedback, Webex sağlama, çağrı sinyali vb.

PAC dosyası bu işlevin kullanımını yapabilir: shExpMatch (dize, kalıp)

Dize kalıpla eşleşiyorsa doğru, eşleşmiyorsa yanlış değerini döndürür.

İki kural arasındaki temel farklılıklar aşağıda listelenmiştir: "REGEX" klasik normal ifadeler ve "TARAYICI" web tarayıcısı kuralı anlamına gelir.

Nokta işareti, "."

  • REGEX: . tek bir karakterle eşleşir; bu, bir niceleyici ile tekrarlanabilir

  • TARAYICI: . yalnızca gerçek bir nokta karakteriyle eşleşir

Yıldız, "*":

  • REGEX: * bir öğeden sonra gelen sıfır veya daha fazla niceleyicidir, ancak kendi başına hiçbir şeyle eşleşmez

  • TARAYICI: * sıfır veya daha fazla karakterle eşleşir

Soru işareti, "?":

  • REGEX: ? bir öğeden sonra gelen sıfır veya daha fazla niceleyicidir veya * niceleyiciyi geniş kapsamlı olmayacak şekilde değiştirebilir, ancak kendi başına hiçbir şeyle eşleşmez

  • TARAYICI: ? tek bir karakterle eşleşir

İfadenin tamamının eşleşmesi gerekip gerekmediği:

  • REGEX: Baştaki ˆ ve sondaki $ kullanılmadan, KALIP'ın tüm DİZE ile eşleşmesi gerekmez: DİZE'nin eşleşen bir alt dize içermesi yeterlidir.

  • TARAYICI: DİZE'nin her zaman KALIP'la tam olarak eşleşmesi gerekir

Örnekler

"otherprovider.domain", "provider.domain.tld" veya "providersdomain" altındakileri değil, "provider.domain" altındaki tüm ana bilgisayar adlarını eşleştirmek istiyoruz:

REGEX:

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

TARAYICI:

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

"proxytest.domain" altındakileri değil, "proxy1.domain", "proxy2.domain" vb. altındaki adları eşleştirmek istiyoruz:

REGEX:

shExpMatch(url, "ˆproxy.\\.domain$")

TARAYICI:

shExpMatch(url, "proxy?.domain")

Diğer kaynaklar

PAC dosya biçimi hakkında daha fazla bilgi için bkz. https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.