Nous modifions la façon dont la correspondance de la configuration automatique du proxy (PAC) fonctionne pour pacmanager dans le logiciel RoomOS.
La convention PAC utilisée par les principaux navigateurs web, y compris le moteur Web, consiste à utiliser une syntaxe d'expression régulière modifiée. Jusqu'à présent, pacmanager utilisait des expressions régulières ordinaires pour la mise en correspondance. Nous allons modifier la fonction shExpMatch pour utiliser une correspondance similaire à celle des navigateurs.
Cette modification signifie que RoomOS fonctionnera avec les mêmes correspondances de fichiers PAC que les autres clients web du réseau. Les fichiers PAC spécifiquement écrits pour RoomOS peuvent avoir besoin d'être mis à jour pour continuer à fonctionner comme prévu.
L'évaluation du fichier PAC se fait à deux emplacements différents dans le logiciel RoomOS :
-
Moteur Web pour son propre trafic.
-
Pacmanager pour tous les autres trafics HTTP : HttpFeedback, mise à disposition Webex, signalisation d'appels, etc.
Un fichier PAC peut utiliser cette fonction : shExpMatch (String, pattern)
Elle renvoie la valeur True si la chaîne correspond au modèle, sinon False.
Les principales différences entre les deux conventions sont énumérées ci-dessous, "REGEX" signifiant les expressions régulières traditionnelles et "BROWSER" signifiant 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 :. ne correspond qu'à un 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 plusieurs caractères
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 trop coûteux, mais ne correspond à rien en tant que tel.
-
NAVIGATEUR : ? correspond à un seul caractère
Indique si l'ensemble de l'expression doit correspondre à :
-
REGEX : sans utiliser le ˆ de tête et le $ de fin, il n'est pas nécessaire que le modèle corresponde à l'intégralité de la chaîne : Il suffit que la chaîne contienne une sous-chaîne qui corresponde.
-
NAVIGATEUR : Toujours exiger que la chaîne de caractères (STRING) corresponde exactement au motif (PATTERN)
Exemples
Nous voulons faire correspondre tous les noms d'hôtes à "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", et ainsi de suite, 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, consulter : https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.