نحن بصدد تغيير طريقة عمل مطابقة التكوين التلقائي للوكيل (PAC) مع pacmanager في برنامج RoomOS.
يقتضي اصطلاح PAC الذي تستخدمه مستعرضات الويب الرئيسية، بما في ذلك محرك الويب، باستخدام بنية معدلة للتعبير العادي. وحتى الآن، يستخدم pacmanager التعبيرات العادية الاعتيادية للمطابقة. نحن بصدد تغيير الوظيفة shExpMatch لاستخدام وظيفة مطابقة مشابهة للمتصفحات.
يعني هذا التغيير أن برنامج RoomOS سيتعامل مع ملف PAC نفسه المطابق لعملاء الويب الآخرين في الشبكة. قد تحتاج ملفات PAC المكتوبة خصيصًا لبرنامج RoomOS إلى التحديث لمواصلة العمل على النحو المنشود.
يتم إجراء تقييم ملف PAC في مكانين منفصلين في برنامج RoomOS:
-
محرك الويب لحركة المرور الخاصة به.
-
Pacmanager لجميع حركات مرور HTTP الأخرى: HttpFeedback، وتوفير Webex، وإشارات المكالمات، وما إلى ذلك.
يمكن لملف PAC الاستفادة من هذه الوظيفة: shExpMatch(string, pattern)
تكون هذه الوظيفة صحيحة إذا كانت السلسلة تتطابق مع النمط، وخاطئة بخلاف ذلك.
يتم سرد الاختلافات الرئيسية بين الاصطلاحين أدناه، حيث تعني كلمة "REGEX" التعبيرات العادية التقليدية وتعني كلمة "BROWSER" اصطلاح مستعرض الويب.
علامة النقطة، "."
-
REGEX: . تطابق حرفًا واحدًا، والذي يمكن تكراره باستخدام مُحدِّد كمي
-
BROWSER: . تتطابق فقط مع رمز النقطة الحرفي
علامة النجمة، "*":
-
REGEX: * هي عبارة عن مُحدِّد كمي صفري أو أكثر بعد العنصر، ولكنها لا تتطابق مع أي شيء بمفردها
-
BROWSER: * تتطابق مع الصفر أو عدد أكثر من الأحرف
علامة الاستفهام، "?":
-
REGEX: ? هي مُحدِّد كمي صفري أو واحد بعد العنصر، أو يمكنها تعديل المُحدِّد الكمي * ليكون غير جشع، لكنها لا تتطابق مع أي شيء بمفردها
-
BROWSER: ? تتطابق مع حرف واحد
لتحديد ما إذا كان يجب أن يتطابق التعبير بالكامل أم لا:
-
REGEX: بدون استخدام علامة ˆ بادئة وعلامة $ لاحقة، لا يحتاج PATTERN إلى مطابقة STRING بأكملها: يكفي أن تحتوي STRING على سلسلة فرعية مطابقة.
-
BROWSER: يلزم دائمًا مطابقة STRING بشكل تام بواسطة PATTERN
الأمثلة
نريد مطابقة جميع أسماء المضيف ضمن "provider.domain"، وليس "otherprovider.domain"، أو "provider.domain.tld"، أو "providersdomain":
REGEX:
shExpMatch(url, "ˆ.*\\.provider\\.domain$")
BROWSER:
shExpMatch(url, "*.provider.domain")
نريد مطابقة "proxy1.domain" و"proxy2.domain" وما إلى ذلك، ولكن ليس "proxytest.domain":
REGEX:
shExpMatch(url, "ˆproxy.\\.domain$")
BROWSER:
shExpMatch(url, "proxy?.domain")
موارد أخرى
للحصول على مزيد من التفاصيل حول تنسيق ملف PAC، راجع: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.