Web altyapısı da dahil olmak üzere büyük web tarayıcıları tarafından kullanılan PAC sözleşmesi, değiştirilmiş bir düzenli ifade sözdizimi kullanmaktır. Şimdiye kadar, pacmanager eşleştirme için normal normal ifadeler kullanmıştır. shExpMatch işlevini tarayıcılara benzer bir eşleştirme kullanmak için değiştiriyoruz.
Bu değişiklik, RoomOS’un ağdaki diğer web istemcileriyle aynı PAC dosyası eşleşmeleriyle birlikte çalışacağı anlamına gelir. RoomOS için özel olarak yazılan PAC dosyalarının, amaçlandığı gibi çalışmaya devam etmek için güncellenmesi gerekebilir.
PAC dosyası değerlendirmesi RoomOS yazılımında iki ayrı yerde yapılır:
-
Kendi trafiği için web altyapısı.
-
Diğer tüm HTTP trafiği için Pacmanager: HttpFeedback, Webex sağlama, çağrı sinyali vb.
Bir PAC dosyası bu işlevi kullanabilir: shExpMatch( dizi, desen)
Dize karakter dizesiyle eşleşirse TRUE, aksi takdirde FALSE döndürür.
Iki sözleşme arasındaki temel farklar aşağıda listelenmiştir: "REGEX" geleneksel düzenli ifadeler ve "TARAYICI" ise web tarayıcısı sözleşmesi anlamına gelmektedir.
Nokta işareti, "."
-
REGEX: . bir niceleyici ile tekrarlanabilen tek bir karakterle eşleşir.
-
TARAYICI: . yalnızca bir sabit nokta karakteriyle eşleşiyor
Yıldız, "*":
-
REGEX: * bir öğeden sonra sıfır veya daha fazla niceleyicidir, ancak başka 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 bir niceleyicidir veya * niceleyicisini açgözlü olmayacak şekilde değiştirebilir, ancak kendi başına hiçbir şeyle eşleşmez.
-
TARAYICI: ? tek bir karakterle eşleşiyor
Tüm ifadenin eşleşip eşleşmeyeceği:
-
regex: Başta ^ ve sonda $ kullanmadan, PATTERN'in tüm STRING ile eşleşmesi gerekmez: Dizenin eşleşen bir SUBSTRING içermesi yeterlidir.
-
tarayıcı: Her zaman DIZEYI tam olarak DESEN ile eşleştirmeyi gerekli kıl
Örnekler
"provider.domain" altındaki tüm ana bilgisayar adlarını eşleştirmek istiyoruz ancak "otherprovider.domain", "provider.domain.tld" veya "providersdomain" yerine getirmiyoruz:
regex:
shExpMatch( url, "^.*\\.provider\\.domain$")
tarayıcı:
shExpMatch( url, "*.provider.domain")
"proxy1.domain", "proxy2.domain" vb. eşleştirmek istiyoruz, ancak "proxytest.domain" değil:
regex:
shExpMatch( url, "^proxy.\\. domain$")
tarayıcı:
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 .