La convention PAC utilisée par les principaux navigateurs Web, y compris le moteur Web, est d'utiliser une syntaxe d'expression régulière modifiée. Jusqu'à présent, pacmanager a utilisé des expressions ordinaires pour la correspondance. Nous modifions la fonction shExpMatch pour utiliser une correspondance similaire à celle des navigateurs.

Ce changement signifie que RoomOS fonctionnera avec les mêmes correspondances de fichier PAC que les autres clients Web du réseau. Les fichiers PAC spécifiquement écrits pour RoomOS devront peut-être être mis à jour pour continuer à fonctionner comme prévu.

L'évaluation du fichier PAC est effectuée à deux endroits distincts dans le logiciel RoomOS :

  • Moteur Web pour son propre trafic.

  • Pacmanager pour tous les autres trafics HTTP : HttpFeedback, mise à disposition de Webex, signalisation d'appel, etc.

Un fichier PAC peut utiliser cette fonction : shExpMatch(chaîne, motif)

Il renvoie vrai si la chaîne correspond au modèle, faux sinon.

Les principales différences entre les deux conventions sont listées ci-dessous, avec "REGEX" qui signifie les expressions régulières traditionnelles et "BROWSER" qui signifie la convention du navigateur Web.

Le signe du point, «. »

  • REGEX : . correspond à un seul caractère, qui peut être répété avec un quantificateur

  • NAVIGATEUR : . correspond uniquement à un caractère de point littéral

L'étoile, « * » :

  • REGEX : * est un quantificateur zéro ou plus après un élément, mais ne correspond à rien en soi

  • Navigateur : * correspond à zéro ou plus

Le point d’interrogation « ? » :

  • REGEX : ? est un quantificateur zéro ou un après un élément, ou peut modifier le quantificateur * pour qu'il ne soit pas gourmand, mais ne correspond à rien en soi

  • NAVIGATEUR : ? correspond à un seul caractère

Si l'ensemble de l'expression doit correspondre ou non :

  • regex : Sans l'utilisation de la touche de début ^ et de fin $, le MOTIF n'a pas besoin de correspondre à la totalité de la CHAÎNE : Il suffit que la CHAÎNE contienne une sous-chaîne qui correspond.

  • navigateur : Toujours exiger que la CHAÎNE corresponde exactement au MODÈLE

Exemples

Nous souhaitons faire correspondre tous les noms d’hôtes sous « provider.domain », mais pas « otherprovider.domain », « provider.domain.tld » ou « providersdomain » :

regex :

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

navigateur :

 shExpMatch(url, « *.provider.domain ») 

Nous voulons faire correspondre « proxy1.domain », « proxy2.domain », etc., mais pas « proxytest.domain » :

regex :

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

navigateur :

 shExpMatch(url, « proxy ?.domain ») 

Autres ressources

Pour plus de détails sur le format de fichier PAC, voir : https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file .