PAC-käytäntö, jota suurimmat verkkoselaimet, Web engine mukaan lukien, käyttävät, on muunnetun säännöllisen lausekkeen syntaksin käyttäminen. Tähän asti pacmanager on käyttänyt tavallisia säännöllisiä lausekkeita täsmäytykseen. Muutamme shExpMatch -funktiota käyttämään vastaavuutta, joka on samanlainen kuin selaimissa.
Tämä muutos tarkoittaa, että RoomOS toimii samoilla PAC-tiedostojen vastaavuuksilla kuin muut verkko-ohjelmat. Erityisesti RoomOS:lle kirjoitetut PAC-tiedostot on ehkä päivitettävä, jotta ne toimisivat tarkoitetulla tavalla.
PAC-tiedoston arviointi tehdään kahdessa eri paikassa RoomOS-ohjelmistossa:
-
Web-moottori omaa liikennettään varten.
-
Pacmanager kaikelle muulle HTTP-liikenteelle: HttpFeedback, Webexin käyttöönotto, puhelujen signalointi ja niin edelleen.
PAC-tiedosto voi käyttää tätä toimintoa: shExpMatch(string, pattern)
Se palauttaa true, jos merkkijono vastaa mallia, ja false, jos ei.
Tärkeimmät erot näiden kahden konvention välillä on lueteltu alla. "REGEX" tarkoittaa perinteisiä säännöllisiä lausekkeita ja "BROWSER" tarkoittaa verkkoselaimen konventiota.
Pistemerkki, "."
-
REGEX: . vastaa yksittäistä merkkiä, joka voidaan toistaa kvantifikaattorin kanssa.
-
BROWSER: . vastaa vain kirjaimellista pistemerkkiä.
Tähti, "*":
-
REGEX: * on nolla tai enemmän kvantifikaattori kohteen jälkeen, mutta ei täsmää mihinkään sellaisenaan.
-
BROWSER: * vastaa nollaa tai useampaa merkkiä.
Kysymysmerkki "?":
-
REGEX: ? on nolla tai yksi kvantifikaattori kohteen jälkeen tai voi muuttaa *-kvantifikaattoria niin, että se ei ole ahne, mutta ei täsmää mihinkään sellaisenaan.
-
BROWSER: ? vastaa yhtä merkkiä.
Onko koko lausekkeen vastattava:
-
REGEX: Ilman etumerkkejä ^ ja $, PATTERNin ei tarvitse vastata koko merkkijonoa: Riittää, että STRING sisältää merkkijonon, joka täsmää.
-
BROWSER: Vaaditaan aina, että STRING vastaa täsmälleen PATTERNia.
Esimerkkejä
Haluamme löytää kaikki isäntänimet, jotka ovat kohdassa "provider.domain", mutta ei "otherprovider.domain", "provider.domain.tld" tai "providersdomain":
REGEX:
shExpMatch(url, "^.*\\.provider\\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Haluamme etsiä "proxy1.domain", "proxy2.domain" ja niin edelleen, mutta emme "proxytest.domain":
REGEX:
shExpMatch(url, "^proxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Muut resurssit
Lisätietoja PAC-tiedostomuodosta on osoitteessa: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .