La convenzione PAC utilizzata dai principali browser Web, incluso il motore Web, prevede l'utilizzo di una sintassi delle espressioni regolari modificata. Fino ad ora, pacmanager ha utilizzato espressioni regolari ordinarie per la corrispondenza. Stiamo modificando la funzione ShExpMatch per utilizzare una corrispondenza simile a quella dei browser.
Questa modifica significa che RoomOS funzionerà con le stesse corrispondenze di file PAC degli altri client web della rete. I file PAC scritti specificamente per RoomOS potrebbero dover essere aggiornati per continuare a funzionare come previsto.
La valutazione del file PAC viene eseguita in due punti separati nel software RoomOS:
-
Motore web per il proprio traffico.
-
Pacmanager per tutto il resto del traffico HTTP: HttpFeedback, provisioning Webex, segnalazione di chiamata e così via.
Un file PAC può utilizzare questa funzione: shExpMatch (string, pattern)
Restituisce true se la stringa corrisponde allo schema, false altrimenti.
Le principali differenze tra le due convenzioni sono elencate di seguito, dove «REGEX» indica le espressioni regolari tradizionali e «BROWSER» che indica la convenzione del browser web.
Il segno del punto, «.»
-
REGEX:. corrisponde a un singolo carattere, che può essere ripetuto con un quantificatore
-
BROWSER:. corrisponde solo a un carattere punto letterale
La stella, «*»:
-
REGEX: * è un quantificatore a zero o più dopo un articolo, ma di per sé non corrisponde a nulla
-
BROWSER: * corrisponde a zero o più caratteri
Il punto interrogativo, «?» :
-
REGEX:? è un quantificatore zero o uno dopo un articolo, oppure può modificare il quantificatore * in modo che non sia avido, ma non corrisponde a nulla di per sé
-
NAVIGATORE:? corrisponde a un singolo carattere
Se l'intera espressione deve corrispondere:
-
REGEX: Senza l'uso di ^ iniziali e finali $, non è necessario che il PATTERN corrisponda all'intera STRINGA: è sufficiente che la STRINGA contenga una sottostringa corrispondente.
-
BROWSER: Richiede sempre che STRING sia abbinato esattamente a PATTERN
Esempi
Vogliamo far corrispondere tutti i nomi host in «provider.domain», ma non «otherprovider.domain», «provider.domain.tld» o «providersdomain»:
REGEX:
shExpMatch(url, "^.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
Vogliamo trovare «proxy1.domain», «proxy2.domain» e così via, ma non con «proxytest.domain»:
REGEX:
shExpMatch(url, "^proxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Altre risorse
Per maggiori dettagli sul formato di file PAC, veda: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .