De PAC-conventie die wordt gebruikt door de belangrijkste webbrowsers, waaronder de webengine, is om een gewijzigde syntaxis voor reguliere expressie te gebruiken. Tot nu toe heeft pacmanager gewone reguliere expressies gebruikt voor het koppelen. We wijzigen de functie shExpMatch om een overeenkomst te gebruiken die vergelijkbaar is met de browsers.

Deze wijziging betekent dat RoomOS werkt met hetzelfde PAC-bestand dat overeenkomt met andere webclients in het netwerk. PAC-bestanden die specifiek voor RoomOS zijn geschreven, moeten mogelijk worden bijgewerkt om naar behoren te blijven werken.

De evaluatie van het PAC-bestand wordt in de RoomOS-software op twee afzonderlijke plaatsen uitgevoerd:

  • Webengine voor eigen verkeer.

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

Een PAC-bestand kan deze functie gebruiken: shExpMatch (tekenreeks, patroon)

Het geeft waar terug als de tekenreeks overeenkomt met het patroon, onwaar anders.

De belangrijkste verschillen tussen de twee conventies worden hieronder opgesomd, met "REGEX" betekent traditionele reguliere expressies en "BROWSER" betekent de webbrowser conventie.

Het stip-teken '.'

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

  • BROWSER: . komt alleen overeen met een letterlijk punt

De ster, '*':

  • REGEX: * is een zero-of-more quantifier na een item, maar komt niet overeen met iets op zichzelf

  • BROWSER: * komt overeen met nul of meer tekens

Het vraagteken '?':

  • REGEX: ? is een zero-of-one quantifier na een item, of kan de * quantifier wijzigen om niet-hebberig te zijn, maar komt niet overeen met iets op zichzelf

  • BROWSER: ? komt overeen met één teken

Of de gehele expressie moet overeenkomen:

  • regex: Zonder het gebruik van leading ^ en trailing $, hoeft het PATROON niet overeen te komen met de hele TEKENREEKS: Het volstaat dat de TEKENREEKS een subtekenreeks bevat die overeenkomt.

  • browser: Altijd vereisen dat de TEKENREEKS exact overeenkomt met PATROON

Voorbeelden

We willen overeenkomen met alle hostnamen onder 'provider.domein', maar niet met 'otherprovider.domein', 'provider.domein.tld' of 'providersdomein':

regex:

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

browser:

 shExpMatch(URL, '*.provider.domein') 

We willen overeenkomen met "proxy1.domain", "proxy2.domain" enzovoort, maar niet met "proxytest.domain":

regex:

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

browser:

 shExpMatch(url, "proxy?.domein") 

Andere 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 .