Áú»¢¶Ä²©

This is the documentation page for an unsupported version of Áú»¢¶Ä²©.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

Objets JavaScript suppl¨¦mentaires

Aper?u

Cette section d¨¦crit les ajouts de Áú»¢¶Ä²© au langage JavaScript impl¨¦ment¨¦s avec Duktape et les fonctions JavaScript globales prises en charge.

Objets int¨¦gr¨¦s

Áú»¢¶Ä²©

L'objet Áú»¢¶Ä²© fournit une interaction avec la fonctionnalit¨¦ interne de Áú»¢¶Ä²©.

²Ñ¨¦³Ù³ó´Ç»å±ð Description
log(loglevel, message) ?crit <message> dans le journal Áú»¢¶Ä²© en utilisant le niveau de journalisation <loglevel> (voir le param¨¨tre DebugLevel du fichier de configuration).

Exemple :

Áú»¢¶Ä²©.log(3, "this is a log entry written with 'Warning' log level")

Vous pouvez utiliser les alias suivants :

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

La taille totale de tous les messages consign¨¦s est limit¨¦e ¨¤ 8 Mo par ex¨¦cution de script.

²Ñ¨¦³Ù³ó´Ç»å±ð Description
sleep(delay) Retarde l'ex¨¦cution de JavaScript de delay millisecondes.

Exemple (retarder l'ex¨¦cution de 15 secondes) :

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

HttpRequest

This object encapsulates cURL handle allowing to make simple HTTP requests. Errors are thrown as exceptions.

HttpRequest is a new name for this object since Áú»¢¶Ä²© 5.4. Previously it used to be called CurlHttpRequest. Method names have also been changed in Áú»¢¶Ä²© 5.4. The old object/method names are now deprecated and their support will be discontinued after Áú»¢¶Ä²© 6.0.

Method Description
addHeader(name, value) Adds HTTP header field. This field is used for all following requests until cleared with the clearHeader() method.
clearHeader() Clears HTTP header. If no header fields are set, HttpRequest will set Content-Type to application/json if the data being posted is JSON-formatted; text/plain otherwise.
connect(url) Sends HTTP CONNECT request to the URL and returns the response.
customRequest(method, url, data) Allows to specify any HTTP method in the first parameter. Sends the method request to the URL with optional data payload and returns the response.
delete(url, data) Sends HTTP DELETE request to the URL with optional data payload and returns the response.
getHeaders() Returns object of received HTTP header fields.
get(url, data) Sends HTTP GET request to the URL with optional data payload and returns the response.
head(url) Sends HTTP HEAD request to the URL and returns the response.
options(url) Sends HTTP OPTIONS request to the URL and returns the response.
patch(url, data) Sends HTTP PATCH request to the URL with optional data payload and returns the response.
put(url, data) Sends HTTP PUT request to the URL with optional data payload and returns the response.
post(url, data) Sends HTTP POST request to the URL with optional data payload and returns the response.
getStatus() Returns the status code of the last HTTP request.
setProxy(proxy) Sets HTTP proxy to "proxy" value. If this parameter is empty then no proxy is used.
setHttpAuth(bitmask, username, password) Sets enabled HTTP authentication methods (HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_NEGOTIATE, HTTPAUTH_NTLM, HTTPAUTH_NONE) in the 'bitmask' parameter.
The HTTPAUTH_NONE flag allows to disable HTTP authentication.
Examples:
request.setHttpAuth(HTTPAUTH_NTLM \| HTTPAUTH_BASIC, username, password)
request.setHttpAuth(HTTPAUTH_NONE)
trace(url, data) Sends HTTP TRACE request to the URL with optional data payload and returns the response.

Example:

try {
           Áú»¢¶Ä²©.log(4, 'jira webhook script value='+value);
         
           var result = {
               'tags': {
                   'endpoint': 'jira'
               }
           },
           params = JSON.parse(value),
           req = new HttpRequest(),
           fields = {},
           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 'Response code: '+req.getStatus();
           }
         
           resp = JSON.parse(resp);
           result.tags.issue_id = resp.id;
           result.tags.issue_key = resp.key;
       } catch (error) {
           Áú»¢¶Ä²©.log(4, 'jira issue creation failed json : '+JSON.stringify({"fields": fields}));
           Áú»¢¶Ä²©.log(4, 'jira issue creation failed : '+error);
         
           result = {};
       }
         
       return JSON.stringify(result);

XML

L'objet XML permet le traitement des donn¨¦es XML dans l'¨¦l¨¦ment et le pr¨¦traitement de d¨¦couverte de bas niveau et les webhooks.

Pour utiliser l'objet XML, le serveur/proxy doit ¨ºtre compil¨¦ avec le support libxml2.

²Ñ¨¦³Ù³ó´Ç»å±ð Description
XML.query(data, expression) R¨¦cup¨¨re le contenu du n?ud ¨¤ l'aide de XPath. Renvoie null si le n?ud n'est pas trouv¨¦.
expression - une expression XPath ;
data - donn¨¦es XML sous forme de cha?ne.
XML.toJson(data) Convertit les donn¨¦es au format XML en JSON.
XML.fromJson(object) Convertit les donn¨¦es au format JSON en XML.

Exemple :

Entr¨¦e :

<menu>
           <food type = "breakfast">
               <name>Chocolate</name>
               <price>$5.95</price>
               <description></description>
               <calories>650</calories>
           </food>
       </menu>

Sortie :

{
           "menu": {
               "food": {
                   "@type": "breakfast",
                   "name": "Chocolate",
                   "price": "$5.95",
                   "description": null,
                   "calories": "650"
               }
           }
       }
R¨¨gles de s¨¦rialisation

La conversion XML vers JSON sera trait¨¦e selon les r¨¨gles suivantes (pour les conversions JSON vers XML, des r¨¨gles invers¨¦es sont appliqu¨¦es) :

1. Les attributs XML seront convertis en ³¦±ô¨¦s dont les noms seront pr¨¦c¨¦d¨¦s de '@'.

Exemple :

·¡²Ô³Ù°ù¨¦±ð:

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

Sortie :

 {
          "xml": {
            "@foo": "FOO",
            "bar": {
              "baz": "BAZ"
            }
          }
        }

2. Les ¨¦l¨¦ments ¨¤ fermeture automatique (<foo/>) seront convertis comme ayant une valeur 'null'.

Exemple :

·¡²Ô³Ù°ù¨¦±ð:

<xml>
         <foo/>
       </xml>

Sortie :

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

3. Les attributs vides (avec la valeur "") seront convertis comme ayant une valeur de cha?ne vide ('').

Exemple :

·¡²Ô³Ù°ù¨¦±ð:

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

Sortie :

{
         "xml": {
           "foo": {
             "@bar": ""
           }
         }
       }

4. Plusieurs n?uds enfants avec le m¨ºme nom d'¨¦l¨¦ment seront convertis en une seule ³¦±ô¨¦ qui a un tableau de valeurs comme valeur.

Exemple :

·¡²Ô³Ù°ù¨¦±ð:

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

Sortie :

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

5. Si un ¨¦l¨¦ment de texte n'a ni attribut ni enfant, il sera converti en cha?ne.

Exemple :

·¡²Ô³Ù°ù¨¦±ð:

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

Sortie :

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

6. Si un ¨¦l¨¦ment de texte n'a pas d'enfant, mais poss¨¨de des attributs : le contenu du texte sera converti en un ¨¦l¨¦ment avec la ³¦±ô¨¦ '#text' et le contenu comme valeur ; les attributs seront convertis comme d¨¦crit dans la r¨¨gle de s¨¦rialisation 1.

Exemple :

·¡²Ô³Ù°ù¨¦±ð:

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

Sortie :

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

Fonctions JavaScript globales

Des fonctions JavaScript globales suppl¨¦mentaires ont ¨¦t¨¦ impl¨¦ment¨¦es avec Duktape?:

  • btoa(string) - encode la cha?ne en cha?ne base64
  • atob(base64_string) - d¨¦code la cha?ne base64
try {
           b64 = btoa("utf8 string");
           utf8 = atob(b64);
       } 
       catch (error) {
           return {'error.name' : error.name, 'error.message' : error.message}
       }
  • md5(donn¨¦es) - calcule le hachage MD5 d'une cha?ne

  • sha256(donn¨¦es) - calcule le hachage SHA256 d'une cha?ne

  • mac('<ype de hachage>',³¦±ô¨¦,donn¨¦es) - renvoie le hachage HMAC sous forme de cha?ne au format hexad¨¦cimal?; Les types de hachage MD5 et SHA256 sont pris en charge ; Les param¨¨tres de ³¦±ô¨¦ et de donn¨¦es prennent en charge les donn¨¦es binaires. Exemples :

    • ³ó³¾²¹³¦('³¾»å5',³¦±ô¨¦,»å´Ç²Ô²Ô¨¦±ð²õ)
    • ³ó³¾²¹³¦('²õ³ó²¹256',³¦±ô¨¦,»å´Ç²Ô²Ô¨¦±ð²õ)
  • sign(hachage,³¦±ô¨¦,donn¨¦es) - renvoie la signature calcul¨¦e (signature RSA avec SHA-256) sous forme de cha?ne, o¨´?:
    hash - seul 'sha256' est autoris¨¦, sinon une erreur est renvoy¨¦e?;
    ³¦±ô¨¦ - la ³¦±ô¨¦ priv¨¦e. Il doit correspondre ¨¤ la norme PKCS#1 ou PKCS#8. La ³¦±ô¨¦ peut ¨ºtre fournie sous diff¨¦rentes formes?:

    • avec des espaces au lieu de retours ¨¤ la ligne?;
    • avec des '' ¨¦chapp¨¦s ou non au lieu de nouvelles lignes?;
    • sans aucun retour ¨¤ la ligne sous la forme d'une cha?ne ¨¤ une seule ligne?;
    • sous forme de cha?ne au format JSON.

    La ³¦±ô¨¦ peut ¨¦galement ¨ºtre charg¨¦e ¨¤ partir d'une macro utilisateur/macro secr¨¨te/coffre.

    data - les donn¨¦es qui seront sign¨¦es. Il peut s'agir d'une cha?ne (les donn¨¦es binaires sont ¨¦galement prises en charge) ou d'un tampon (Uint8Array/ArrayBuffer).
    OpenSSL ou GnuTLS est utilis¨¦ pour calculer les signatures. Si Áú»¢¶Ä²© a ¨¦t¨¦ compil¨¦ sans aucune de ces biblioth¨¨ques de chiffrement, une erreur sera g¨¦n¨¦r¨¦e ("biblioth¨¨que OpenSSL ou GnuTLS manquante").
    Cette fonction est prise en charge depuis Áú»¢¶Ä²© 6.0.15.