Stiamo cambiando la modalità di funzionamento della corrispondenza PAC (Proxy Auto-Configuration) per pacmanager nel software RoomOS.
La convenzione PAC utilizzata dai principali browser Web, incluso il motore Web, consiste nell'utilizzare una sintassi delle espressioni regolari modificata. Fino a questo momento, pacmanager ha utilizzato le normali espressioni regolari per la corrispondenza. È in corso una modifica della funzione shExpMatch volta a utilizzare una corrispondenza simile a quella dei browser.
In base a questa modifica, RoomOS utilizzerà le stesse corrispondenze di file PAC degli altri client Web della rete. Per continuare a funzionare come previsto, i file PAC appositamente scritti per RoomOS potrebbero richiedere un aggiornamento.
La valutazione del file PAC viene effettuata in due ubicazioni separate nel software RoomOS:
-
Motore Web per il proprio traffico.
-
Pacmanager per il resto del traffico HTTP: HttpFeedback, provisioning di Webex, segnalazione delle chiamate e così via.
Un file PAC può avvalersi di questa funzione: shExpMatch(string, pattern)
Restituisce true se la stringa corrisponde al percorso e false in caso contrario.
Le principali differenze tra le due convenzioni sono elencate di seguito, dove "REGEX" identifica espressioni regolari tradizionali e "BROWSER" la convenzione del browser Web.
Simbolo di punto "."
-
REGEX: . corrisponde a un solo carattere, che può essere ripetuto con un quantificatore
-
BROWSER: . corrisponde solo a un carattere di punto letterale
Asterisco "*":
-
REGEX: * è un quantificatore pari almeno a zero quando segue un elemento, ma non corrisponde a nulla se è da solo
-
BROWSER: * corrisponde a zero o più caratteri
Punto di domanda "?":
-
REGEX: ? è un quantificatore zero o uno quando segue un elemento oppure può modificare il quantificatore * fungendo da limite, ma che non corrisponda a nulla se è da solo
-
BROWSER: ? corrisponde a un solo carattere
Se è necessario che l'intera espressione corrisponda:
-
REGEX: senza l'utilizzo di ˆ iniziale e $ finale, il PERCORSO non deve corrispondere all'intera STRINGA: è sufficiente che la STRINGA contenga una sottostringa corrispondente.
-
BROWSER: richiedere sempre una STRINGA esattamente corrispondente al PERCORSO
Esempi
È consigliabile trovare una corrispondenza per tutti i nomi host sotto "provider.domain", ma non per "otherprovider.domain", "provider.domain.tld" o "providersdomain":
REGEX:
shExpMatch(url, "ˆ.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
È consigliabile trovare una corrispondenza per "proxy1.domain", "proxy2.domain" e così via, ma non per "proxytest.domain":
REGEX:
shExpMatch(url, "ˆproxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
Altre risorse
Per maggiori dettagli sul formato del file PAC, consultare: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.