Áú»¢¶Ä²©

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

???????? JavaScript ??????

?????????

????????? ??????

Áú»¢¶Ä²©

??????? Áú»¢¶Ä²© ???? ?????????? ?? ????????????? ??????? ?? Áú»¢¶Ä²©.

???? ?????
log(loglevel, message) ???? <?????> ???? ???? Áú»¢¶Ä²© ??????? ??? ???? <loglevel> (??? ????? DebugLevel ?? ???? ??????).

?????:

 Áú»¢¶Ä²©.log(3, "??? ??? ???? ????? ???? ????? '?????'")

??? ???? ?????? ???????? ?????:

????? ????? ?
console.log(object) Áú»¢¶Ä²©.log(4, JSON.stringify(object))
console.warn(object) Áú»¢¶Ä²©.log(3, JSON.stringify(object))
console.error(object) Áú»¢¶Ä²©.log(2, JSON.stringify(object))

::: ???? ?? ???? ????? ????? ?? ?? ??????? ?????? ????? ?-8 MB ??? ????? ??????. :::

???? ?????
sleep(delay) ?????? ????? JavaScript ?-delay ?????? ?????.

????? (????? ????? ?-15 ?????):

 Áú»¢¶Ä²©.sleep(15000)

HttpRequest

::: ???? ?? ???? "HttpRequest" ??? ?? ??? ???????? ?? ??? Áú»¢¶Ä²© 5.4. ???? ?? ???? "CurlHttpRequest". ???? ????? ???? ?? ?- Áú»¢¶Ä²© 5.4. ???? ??????????/?????? ?????? ????? ?????? ??????? ??? ????? ???? Áú»¢¶Ä²© 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 ????????? ?????? ?? ??????.

?????:

??? {
            Áú»¢¶Ä²©.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;
       } ???? (?????) {
            Áú»¢¶Ä²©.log(4, '????? ???? ?? jira ????? json : '+JSON.stringify({"fields": fields}));
            Áú»¢¶Ä²©.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 ?????? ?????? ???????. ?? Áú»¢¶Ä²© ????? ??? ?? ??? ??????? ?????? ????, ????? ????? ('???? ?????? OpenSSL ?? GnuTLS').
    ??????? ?? ????? ??? Áú»¢¶Ä²© 6.0.15.