Cette section d¨¦crit les ajouts de Áú»¢¶Ä²© au langage JavaScript impl¨¦ment¨¦s avec Duktape et les fonctions JavaScript globales prises en charge.
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 :
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) :
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);
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"
}
}
}
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 :
·¡²Ô³Ù°ù¨¦±ð:
Sortie :
2. Les ¨¦l¨¦ments ¨¤ fermeture automatique (<foo/>) seront convertis comme ayant une valeur 'null'.
Exemple :
·¡²Ô³Ù°ù¨¦±ð:
Sortie :
3. Les attributs vides (avec la valeur "") seront convertis comme ayant une valeur de cha?ne vide ('').
Exemple :
·¡²Ô³Ù°ù¨¦±ð:
Sortie :
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 :
·¡²Ô³Ù°ù¨¦±ð:
Sortie :
5. Si un ¨¦l¨¦ment de texte n'a ni attribut ni enfant, il sera converti en cha?ne.
Exemple :
·¡²Ô³Ù°ù¨¦±ð:
Sortie :
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 :
·¡²Ô³Ù°ù¨¦±ð:
Sortie :
Des fonctions JavaScript globales suppl¨¦mentaires ont ¨¦t¨¦ impl¨¦ment¨¦es avec Duktape?:
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?:
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.