De PAC-conventie die door de belangrijkste webbrowsers, inclusief de webengine, wordt gebruikt, is het gebruik van een aangepaste syntaxis voor reguliere expressies. Tot nu toe heeft pacmanager gewone reguliere expressies voor overeenkomsten gebruikt. We wijzigen de functie shExpMatch voor het gebruik van overeenkomsten op een manier die vergelijkbaar is met die van de browser.

Deze wijziging betekent dat RoomOS met hetzelfde PAC-bestand werkt als andere webclients in het netwerk. PAC-bestanden die speciaal zijn geschreven voor RoomOS moeten mogelijk worden bijgewerkt om goed te blijven werken.

De evaluatie van het PAC-bestand gebeurt op twee aparte plaatsen in RoomOS-software:

  • Webengine voor eigen verkeer.

  • Pacmanager voor alle andere HTTP-verkeer: HttpFeedback, Webex-inrichting, gesprekssignalering, enzovoort.

Een PAC-bestand kan gebruik maken van deze functie: shExpMatch (tekenreeks, patroon)

Het resultaat is waar als de tekenreeks overeenkomt met het patroon, anders is het onwaar.

De belangrijkste verschillen tussen de twee conventies worden hieronder weergegeven, waarbij 'REGEX' verwijst naar de traditionele reguliere expressies en 'BROWSER' naar de webbrowserconventie.

De punt, '.'

  • REGEX: . komt overeen met een enkel teken dat met een quantifier kan worden herhaald.

  • BROWSER: . komt alleen overeen met een letterlijk puntteken

De ster, '*':

  • REGEX: * is een quantifier van nul-of-meer na een item, maar komt op zichzelf niet met iets overeen.

  • BROWSER: * komt overeen met nul of meer tekens

Het vraagteken, '?':

  • REGEX: ? is een quantifier van nul-of-één na een item of kan de quantifier * wijzigen in non-greedy, maar komt op zichzelf niet met iets overeen

  • BROWSER: ? komt overeen met een enkel teken

Of de hele expressie moet overeenkomen:

  • REGEX: zonder gebruik van voorloop ˆ en volg $, hoeft het PATROON niet overeen te komen met de gehele TEKENREEKS: het is voldoende dat de TEKENREEKS een subtekenreeks bevat die overeenkomt.

  • BROWSER: de TEKENREEKS moet altijd exact overeenkomen met het PATROON.

Voorbeelden

We willen een overeenkomst met alle hostnamen onder 'provider.domain', maar niet 'otherprovider.domain', 'provider.domain.tld' of 'providersdomain':

REGEX:

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

BROWSER:

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

We willen een overeenkomst met 'proxy1.domain', 'proxy2.domain', enzovoort, maar niet met 'proxytest.domain':

REGEX:

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

BROWSER:

shExpMatch(url, "proxy?.domain")

Overige resources

Zie voor meer informatie over de PAC-bestandsindeling: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.