Convenția PAC utilizată de browserele web cunoscute, inclusiv de motorul web, este de a utiliza o sintaxă cu expresii regulate modificate. Până acum, pacmanager a folosit expresii regulate obișnuite pentru corespondență. În prezentăm schimbăm funcția shExpMatch pentru a utiliza o corespondență care să fie similară cu browserele.

Această modificare înseamnă că RoomOS va funcționa cu aceleași corespondențe din fișiere PAC ca alți clienți web din rețea. Poate fi necesar ca fișierele PAC scrise special pentru RoomOS să fie actualizate pentru a continua să funcționeze corespunzător.

Evaluarea fișierelor PAC este efectuată în două locuri separate în software-ul RoomOS:

  • În motorul web pentru traficul propriu.

  • În pacmanager pentru tot restul traficului HTTP: HttpFeedback, asigurarea accesului Webex, semnalizarea apelurilor și altele.

Un fișier PAC poate utiliza această funcție: shExpMatch(șir, șablon)

Returnează true dacă șirul corespunde șablonului; în caz contrar, returnează false.

Principalele diferențe dintre cele două convenții sunt enumerate mai jos, „REGEX” însemnând expresii regulate tradiționale, iar „BROWSER” însemnând convenția pentru browsere web.

Semnul punct, „.”

  • REGEX: . corespunde unui singur caracter, care poate fi repetat cu un cuantificator

  • BROWSER: . corespunde doar unui caracter punct literal

Steaua, „*”:

  • REGEX: * este un cuantificator pentru zero sau mai mult după un element, dar nu corespunde cu nimic singur

  • BROWSER: * corespunde cu zero sau mai multe caractere

Semnul întrebării, „?”

  • REGEX: ? este un cuantificator pentru zero sau unu după un element ori poate modifica cuantificatorul * pentru cât mai puține corespondențe, dar nu corespunde cu nimic singur

  • BROWSER: ? corespunde unui singur caracter

Dacă toată expresia trebuie să corespundă:

  • REGEX: Fără a utiliza caracterele ˆ înainte și $ după, ȘABLONUL nu trebuie să corespunde întregului ȘIR: este suficient ca ȘIRUL să conțină un subșir care corespunde.

  • BROWSER: Este nevoie întotdeauna ca ȘIRUL să corespundă exact cu ȘABLONUL

Exemple

Vrem să corespundă toate numele de gazde din „provider.domain”, dar nu din „otherprovider.domain”, „Provider.domain.tld” sau „providersdomain”:

REGEX:

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

BROWSER:

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

Vrem să corespundă „proxy1.domain”, „proxy2.domain” etc., dar nu „proxytest.domain”:

REGEX:

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

BROWSER:

shExpMatch(url, "proxy?.domain")

Alte resurse

Pentru mai multe detalii despre formatul fișierelor PAC, consultați: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.