This is a translation of the original English documentation page. Help us make it better.

אובייקטי JavaScript נוספים

ופונקציות

אובייקטים מובנים

Zabbix

אובייקט Zabbix מספק אינטראקציה עם הפונקציונליות הפנימית של Zabbix.

שיטה תיאור
log(loglevel, message) כותב <הודעה> לתוך יומן Zabbix באמצעות רמת יומן <loglevel> (ראה פרמטר DebugLevel של קובץ התצורה).

דוגמא:

 Zabbix.log(3, "זהו ערך יומן שנכתב ברמת היומן 'אזהרה'")

אתה יכול להשתמש בכינויים הבאים:

כינוי כינוי ל
console.log(object) Zabbix.log(4, JSON.stringify(object))
console.warn(object) Zabbix.log(3, JSON.stringify(object))
console.error(object) Zabbix.log(2, JSON.stringify(object))

::: שימו לב חשוב הגודל הכולל של כל ההודעות שנרשמו מוגבל ל-8 MB לכל ביצוע סקריפט. :::

שיטה תיאור
sleep(delay) השהיית ביצוע JavaScript ב-delay אלפיות שניות.

דוגמה (עיכוב ביצוע ב-15 שניות):

 Zabbix.sleep(15000)

HttpRequest

::: שימו לב חשוב "HttpRequest" הוא שם חדש לאובייקט זה מאז Zabbix 5.4. בעבר זה נקרא "CurlHttpRequest". שמות השיטה שונו גם ב- Zabbix 5.4. שמות האובייקטים/השיטות הישנים הוצאו משימוש והתמיכה בהם תופסק לאחר Zabbix 6.0. :::

אובייקט זה מקפל את ידית cURL המאפשר לבצע בקשות HTTP פשוטות. שגיאות נזרקות כחריגים.

::: שימו לב חשוב האתחול של אובייקטי HttpRequest מרובים מוגבל ל-10 לכל ביצוע סקריפט. :::

שיטה תיאור
addHeader(name, value) מוסיף שדה כותרת HTTP. שדה זה משמש עבור כל הבקשות הבאות עד לניקוי בשיטת clearHeader().
האורך הכולל של שדות כותרת שניתן להוסיף לאובייקט HttpRequest בודד מוגבל ל-128 Kbytes (תווים מיוחדים ושמות כותרות) כלול).
clearHeader() מנקה כותרת HTTP. אם לא מוגדרים שדות כותרת, HttpRequest יגדיר את Content-Type לאפליקציה/json אם הנתונים המתפרסמים הם בפורמט JSON; טקסט/פשוט אחרת.
connect(url) שולח בקשת HTTP CONNECT לכתובת ה-URL ומחזיר את התגובה.
customRequest(method, url, data) מאפשר לציין כל שיטת HTTP בפרמטר הראשון. שולח את בקשת השיטה לכתובת ה-URL עם מטען נתונים אופציונלי ומחזיר את התגובה.
delete(url, data) שולח בקשת HTTP DELETE לכתובת ה-URL עם מטען נתונים אופציונלי ומחזיר את התגובה.
getHeaders(<asArray>) מחזיר את האובייקט של שדות כותרות HTTP שהתקבלו.
הפרמטר asArray עשוי להיות מוגדר ל"true" (למשל, getHeaders(true)), "false" או להיות לא מוגדר . אם הוגדר כ-"true" ערכי שדות כותרת ה-HTTP שהתקבלו יוחזרו כמערכים; יש להשתמש בזה כדי לאחזר את ערכי השדות של כותרות מרובות באותו שם.
אם לא מוגדר או מוגדר כ-"false", ערכי שדות ה-HTTP שהתקבלו יוחזרו כמחרוזות.
get(url, data) שולח בקשת HTTP GET לכתובת האתר עם מטען נתונים אופציונלי ומחזיר את התגובה.
head(url) שולח בקשת HTTP HEAD לכתובת האתר ומחזיר את התגובה.
options(url) שולח בקשת HTTP OPTIONS לכתובת האתר ומחזיר את התגובה.
patch(url, data) שולח בקשת HTTP PATCH לכתובת ה-URL עם מטען נתונים אופציונלי ומחזיר את התגובה.
put(url, data) שולח בקשת HTTP PUT לכתובת ה-URL עם מטען data אופציונלי ומחזיר את התגובה.
post(url, data) שולח בקשת HTTP POST לכתובת האתר עם מטען נתונים אופציונלי ומחזיר את התגובה.
getStatus() מחזיר את קוד המצב של בקשת ה-HTTP האחרונה.
setProxy(proxy) מגדיר פרוקסי HTTP לערך "proxy". אם פרמטר זה ריק, לא נעשה שימוש בפרוקסי.
setHttpAuth(bitmask, שם משתמש, סיסמה) מגדיר שיטות אימות HTTP מאושרות (HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_NEGOTIATE, HTTPAUTH_NTLM, HTTPAUTH_NONE) בפרמטר 'bitmask'.
ה-HTTPAUTH דגל _NONE מאפשר להשבית אימות HTTP.
דוגמאות:
request.setHttpAuth(HTTPAUTH_NTLM \| HTTPAUTH_BASIC, שם משתמש, סיסמה)
request.setHttpAuth(HTTPAUTH_NONE)
trace(url, data) שולח בקשת HTTP TRACE לכתובת ה-URL עם מטען data אופציונלי ומחזיר את התגובה.

דוגמא:

נסה {
            Zabbix.log(4, 'jira webhook script value='+value);
         
            var result = {
                'תגים': {
                    'נקודת קצה': 'ג'ירה'
                }
            },
            params = JSON.parse(value),
            req = new HttpRequest(),
            שדות = {},
            resp;
         
            req.addHeader('Content-Type: application/json');
            req.addHeader('Authorization: Basic '+params.authentication);
         
            fields.summary = params.summary;
            fields.description = params.description;
            fields.project = {"key": params.project_key};
            fields.issuetype = {"id": params.issue_id};
            resp = req.post('https://tsupport.zabbix.lan/rest/api/2/issue/',
                JSON.stringify({"fields": fields})
            );
         
            if (req.getStatus() != 201) {
                throw 'קוד תגובה: '+req.getStatus();
            }
         
            resp = JSON.parse(resp);
            result.tags.issue_id = resp.id;
            result.tags.issue_key = resp.key;
       } תפוס (שגיאה) {
            Zabbix.log(4, 'יצירת בעיה של jira נכשלה json : '+JSON.stringify({"fields": fields}));
            Zabbix.log(4, 'יצירת בעיה של ג'ירה נכשלה: '+שגיאה);
         
            תוצאה = {};
       }
         
       החזר JSON.stringify(result);

XML

אובייקט ה-XML מאפשר עיבוד של נתוני XML בפריט ו עיבוד מקדים לגילוי ברמה נמוכה ו-webhooks.

::: שימו לב חשוב על מנת להשתמש באובייקט XML, השרת/פרוקסי חייב להיות הידור עם תמיכה ב-libxml2. :::

שיטה תיאור
XML.query(data, expression) מאחזר תוכן צומת באמצעות XPath. מחזירה null אם הצומת לא נמצא.
ביטוי - ביטוי XPath;
נתונים - נתוני XML כמחרוזת.
XML.toJson(data) ממיר נתונים בפורמט XML ל-JSON.
XML.fromJson(object) ממיר נתונים בפורמט JSON ל-XML.

דוגמא:

קֶלֶט:

 <תפריט>
            <סוג מזון = "ארוחת בוקר">
                <name>שוקולד</name>
                <price>$5.95</price>
                <description></description>
                <calories>650</calories>
            </food>
        </menu>

תְפוּקָה:

{
            "תפריט": {
                "מזון": {
                    "@type": "ארוחת בוקר",
                    "name": "שוקולד",
                    "price": "$5.95",
                    "תיאור": null,
                    "קלוריות": "650"
                }
            }
       }
כללי סדרה

המרת XML ל-JSON תעובד לפי ההנחיות הבאות כללים (עבור המרות JSON ל-XML מוחלים כללים הפוכים):

1. תכונות XML יומרו למפתחות עם שמותיהם עם '@'.

דוגמא:

קֶלֶט:

  <xml foo="FOO">
           <בר>
             <baz>BAZ</baz>
           </bar>
         </xml>

תְפוּקָה:

  {
           "xml": {
             "@foo": "FOO",
             "בר": {
               "baz": "BAZ"
             }
           }
         }

2. אלמנטים סגירה עצמית (<foo/>) יומרו כבעלי ערך 'null'.

דוגמא:

קֶלֶט:

 <xml>
          <foo/>
        </xml>

תְפוּקָה:

{
          "xml": {
            "foo": null
          }
       }

3. מאפיינים ריקים (עם ערך "") יומרו כריקים ערך מחרוזת ('').

דוגמא:

קֶלֶט:

 <xml>
          <foo bar="" />
        </xml>

תְפוּקָה:

{
          "xml": {
            "פו": {
              "@bar": ""
            }
          }
       }

4. מספר צמתים צאצאים עם אותו שם אלמנט יומרו מפתח בודד בעל מערך ערכים כערך שלו.

דוגמא:

קֶלֶט:

 <xml>
          <foo>BAR</foo>
          <foo>BAZ</foo>
          <foo>QUX</foo>
        </xml>

תְפוּקָה:

{
          "xml": {
            "foo": ["BAR", "BAZ", "QUX"]
          }
       }

5. אם לרכיב טקסט אין תכונות ואין ילדים, הוא יהיה הומר כמחרוזת.

דוגמא:

קֶלֶט:

 <xml>
            <foo>BAZ</foo>
        </xml>

תְפוּקָה:

{
          "xml": {
            "foo": "BAZ"
           }
       }

6. אם לרכיב טקסט אין ילדים, אבל יש לו תכונות: תוכן טקסט יומר לרכיב עם המפתח '#text' ותוכן בתור ערך; המאפיינים יומרו כמתואר בסידרה חוק מספר 1.

דוגמא:

קֶלֶט:

 <xml>
          <foo bar="BAR">
            BAZ
          </foo>
        </xml>

תְפוּקָה:

{
          "xml": {
            "פו": {
              "@bar": "BAR",
              "#text": "BAZ"
            }
          }
       }

פונקציות JavaScript גלובליות

פונקציות JavaScript גלובליות נוספות יושמו עם Duktape:

  • btoa(data) - מקודד את הנתונים למחרוזת base64
  • atob(base64_string) - מפענח מחרוזת base64
נסה {
            b64 = btoa("utf8 מחרוזת");
            utf8 = atob(b64);
       }
       לתפוס (שגיאה) {
            החזר {'error.name': error.name, 'error.message': error.message}
       }
  • md5(נתונים) - מחשב את ה-hash MD5 של הנתונים

  • sha256(data) - מחשב את ה-hash SHA256 של הנתונים

  • hmac('<hash type>',key,data) - מחזיר HMAC hash כמחרוזת בפורמט hex; סוגי hash MD5 ו-SHA256 נתמכים; פרמטרי מפתח ונתונים תומכים בנתונים בינאריים. דוגמאות:

    • hmac('md5',key,data)
    • hmac('sha256',key,data)
  • sign(hash,key,data) - מחזיר חתימה מחושבת (חתימת RSA עם SHA-256) כמחרוזת, כאשר:
    hash - מותר רק 'sha256', אחרת נזרקת שגיאה;
    מפתח - המפתח הפרטי. זה צריך להתאים לתקן PKCS#1 או PKCS#8. ניתן לספק את המפתח בצורות שונות:

    • עם רווחים במקום שורות חדשות;
    • עם ''ים עם אסקייפ או ללא בריחה במקום שורות חדשות;
    • ללא שורות חדשות כמחרוזת בשורה אחת;
    • כמחרוזת בפורמט JSON.

    ניתן לטעון את המפתח גם ממאקרו/מאקרו סודי/כספת של המשתמש.

    נתונים - הנתונים שיחתמו. זה יכול להיות מחרוזת (נתמכים גם נתונים בינאריים) או מאגר (Uint8Array/ArrayBuffer).
    OpenSSL או GnuTLS משמשים לחישוב החתימות. אם Zabbix נבנתה ללא אף אחת מספריות ההצפנה הללו, תיגרם שגיאה ('חסרה ספריית OpenSSL או GnuTLS').
    פונקציה זו נתמכת מאז Zabbix 6.0.15.