מוסכמות ה-PAC המשמשת את דפדפני האינטרנט הגדולים, כולל מנוע האינטרנט, היא שימוש בתחביר ביטוי רגולרי שונה. עד עכשיו, pacmanager השתמש בביטויים רגולריים רגילים עבור ההתאמה. אנחנו משנים את shExpMatch פונקציה כדי להשתמש בהתאמה הדומה לדפדפנים.

שינוי זה אומר ש-RoomOS יעבוד עם אותן התאמות של קבצי PAC כמו לקוחות אינטרנט אחרים ברשת. ייתכן שיהיה צורך לעדכן קבצי PAC שנכתבו במיוחד עבור RoomOS כדי להמשיך לעבוד כמתוכנן.

הערכת קבצי PAC נעשית בשני מקומות נפרדים בתוכנת RoomOS:

  • מנוע אינטרנט לתעבורה משלו.

  • Pacmanager עבור כל תעבורת HTTP אחרת: HttpFeedback, הקצאת Webex, איתות שיחות וכן הלאה.

קובץ PAC יכול לעשות שימוש בפונקציה זו: shExpMatch(מחרוזת, תבנית)

הוא מחזיר אמת אם המחרוזת תואמת לתבנית, אחרת שקר.

ההבדלים העיקריים בין שתי המוסכמות מפורטים להלן, כאשר "REGEX" פירושו ביטויים רגולריים מסורתיים ו-"BROWSER" פירושו מוסכמות דפדפן האינטרנט.

סימן הנקודה, "."

  • REGEX: . תואם תו בודד, שניתן לחזור עליו עם מכמת

  • דפדפן: . תואם רק תו נקודה מילולית

הכוכב, "*":

  • REGEX: * הוא מכמת אפס או יותר אחרי פריט, אך אינו מתאים לשום דבר בפני עצמו

  • דפדפן: * מתאים לאפס או יותר תווים

סימן השאלה, "?":

  • REGEX: ? הוא מכמת אפס או אחד אחרי פריט, או יכול לשנות את מכמת * כדי להיות לא חמדן, אבל לא מתאים לשום דבר בפני עצמו

  • דפדפן: ? מתאים לדמות בודדת

האם הביטוי כולו חייב להתאים:

  • REGEX: ללא שימוש ב-ˆ ו-$ מוביל, ה-PATTERN אינו צריך להתאים לכל ה-STRING: מספיק שה-STRING יכיל מחרוזת משנה שתואמת.

  • דפדפן: דרוש תמיד STRING להיות מותאם בדיוק לפי PATTERN

דוגמאות

אנו רוצים להתאים את כל שמות המארחים תחת "provider.domain", אך לא "otherprovider.domain", "provider.domain.tld" או "providersdomain":

REGEX:

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

דפדפן:

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

אנו רוצים להתאים את "proxy1.domain", "proxy2.domain" וכן הלאה, אך לא "proxytest.domain":

REGEX:

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

דפדפן:

shExpMatch(url, "proxy?.domain")

משאבים אחרים

לפרטים נוספים על פורמט הקובץ PAC, ראה: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file.