Includes de script
Les includes de script sont utilisés pour stocker le code JavaScript qui s’exécute sur le serveur.
Créez des includes de script pour stocker les fonctions et classes JavaScript à utiliser par les scripts serveur. Chaque include de script définit une classe d’objet ou une fonction.
Envisagez d’utiliser des includes de script au lieu de règles métier globales, car les includes de script ne sont chargés que sur demande. Voir Paramètres de confidentialité sur les includes de script appelables par le client et Script de détection Includes pour plus d’informations.
Pour obtenir d’autres exemples de scripts, reportez-vous à la section Scripts utiles.
Formulaire Script Include
Les includes de script ont un nom, une description et un script. Elles précisent également si elles sont actives ou non, et si elles peuvent être appelées à partir d’un script client. Affichez l’include de script existant ou créez-en un nouveau à l’aide du formulaire Include de script.
Pour accéder aux includes de script, accédez à .
| Champ | Description |
|---|---|
| Nom | Le nom de l’include de script. Si vous définissez une classe, elle doit correspondre au nom de la classe, du prototype et du type. Si vous utilisez un include de script sans classe (à la demande), le nom doit correspondre au nom de la fonction. |
| Nom de l'API | Nom interne de l’include de script. Utilisé pour appeler le script include à partir d’applications hors du champ d’application. |
| Glide AJAX activé | L’include de script est disponible pour les scripts clients, les filtres de liste/de rapport, les qualificatifs de référence ou s’il est spécifié comme faisant partie de l’URL. Les includes de script pouvant être appelés par le client sont invoqués à partir de GlideAjax et nécessitent que les utilisateurs satisfassent à une ACL associée à l’include de script. Lorsque cette option est sélectionnée, le lien connexe Contrôles d’accès est disponible. Consultez Paramètres de confidentialité sur les includes de script appelables par le client pour plus d'informations. |
| Mobile joignable | L’include de script est disponible pour les scripts clients appelés à partir d’équipements mobiles. |
| Bac à sable activé | L’include de script est invoqué à partir du bac à sable de script, par exemple une condition de requête. Cette méthode ne nécessite aucune authentification. Pour plus d’informations sur le bac à sable, reportez-vous à la section Configuring Script sandbox property. |
| Demande | Application dans laquelle réside l’include de script. |
| Accessible depuis | Définit les applications qui peuvent accéder à ce script include :
|
| Actif | Active l’include de script lorsque cette option est sélectionnée. Désélectionnez le champ actif pour désactiver l’include de script. |
| Description | Fournit un contenu descriptif concernant l’include de script. |
| Script | Définit le script côté serveur à exécuter lorsqu’il est appelé à partir d’autres scripts. Le script doit définir une seule classe JavaScript ou une fonction globale. Le nom de classe ou de fonction doit correspondre au champ Nom . |
| Package | Le package qui contient ce script include. |
| Créé par | L’utilisateur qui a créé ce script include. |
| Mis à jour par | L’utilisateur qui a récemment mis à jour ce script include. |
| Politique de protection | Définit le niveau de protection pour le script include :
|
| Listes connexes sur la vue de formulaire : | |
| Versions | Affiche toutes les versions de l’include de script. Utilisez cette liste pour comparer les versions ou pour revenir à une version précédente. Voir Versions. |
| Contrôles des accès | Devient disponible lorsque la case Client joignable est cochée et est masquée dans les includes de script standard. À utiliser pour protéger un CCSI contre toute utilisation non autorisée lorsque l’accès public n’est pas accordé. |
Utiliser des includes de script
Les script includes sont accessibles sous Définition du système ou Interface utilisateur du système. Vous pouvez appeler des includes de script existants à partir d’un script ou en créer un nouveau.
Pour créer un include de script entièrement nouveau, vous pouvez suivre le format de n’importe lequel des includes de script existants. Dans cet exemple, le nom de votre script include est NewInclude et il existe une seule fonction appelée myFunction. Il est important que le nom de l’include de script corresponde au nom de la classe, du prototype et du type. Lorsque vous créez un nouvel include de script et que vous lui donnez un nom, le système fournit un extrait de code avec la classe et le prototype correctement configurés.
var NewInclude =Class.create();
NewInclude.prototype={
initialize :function(){},
myFunction :function(){<Put function code here>},
type :'NewInclude'};Vous pouvez ensuite utiliser la ligne myFunction comme ceci :
var foo =new NewInclude();
foo.myFunction();Includes de script pouvant être appelés par le client
Les includes de script pouvant être appelés par le client (CCSI) rendent l’include de script disponible pour les scripts clients, les filtres de liste/de rapport, les qualificatifs de référence ou, s’il est spécifié dans le cadre de l’URL.
Avant de commencer
Rôle requis : admin
Procédure
Paramètres de confidentialité sur les includes de script appelables par le client
Les paramètres de confidentialité des includes de script appelables par le client (CCSI) déterminent qui peut accéder à un include de script pouvant être appelé par le client.
Paramètre de confidentialité privée
Le paramètre de confidentialité privée signifie que les invités qui accèdent aux pages publiques ne peuvent pas accéder à l’include de script pouvant être appelé par le client. Un script privé ne peut pas être exécuté par un utilisateur non connecté.
Paramètre de confidentialité publique
Un paramètre de confidentialité public signifie que le script client peut être exécuté par des utilisateurs non connectés qui créent une requête HTTP appropriée. Cela peut créer un problème de sécurité si le script client fournit des informations confidentielles.
- GlideSystemAjax
- SysMessageAjax
- KnowledgeMessagingAjax
- KnowledgeAjax
- RéinitialisationMotDePasseAjax
Définir la confidentialité sur tous les includes de script pouvant être appelés par le client
Modifiez le paramètre de confidentialité sur tous les includes de script pouvant être appelés par le client.
Pour fournir un contrôle supplémentaire sur tous les includes de script pouvant être appelés par les clients, les administrateurs peuvent ajouter la propriété glide.script.ccsi.ispublic . Cette propriété modifie la visibilité des includes de script appelables par le client en les rendant tous publics ou privés. Configurez la propriété comme suit :
| Titre | Propriété |
|---|---|
| Nom | glide.script.ccsi.ispublic |
| Type | true|false |
| Valeur | faux |
Confidentialité des changements sur un include de script client unique pouvant être appelé
Modifiez le paramètre de confidentialité d’un include de script unique pouvant être appelé par un client en ajoutant la fonction isPublic( ).
Le paramètre isPublic() est prioritaire sur la glide.script.ccsi.ispublic propriété. Par exemple, si la propriété est définie sur false, ce qui rend privés tous les includes de script pouvant être appelés par un client, et qu’un script définit isPublic() sur true, le script est public.
Pour modifier la confidentialité d’un include de script unique pouvant être appelé par un client, ajoutez la méthode suivante à l’include de script :
isPublic:function(){return[true/false];},var NewInclude =Class.create();
NewInclude.prototype={
initialize:function(){},
myFunction:function(){//Put function code here},
isPublic:function(){return false;},
type:'NewInclude'};
Sécurité sur includes de script pouvant être appelé par le client
Protégezvotre script d’include d’appel client (CCSI) contre toute utilisation non autorisée. Pour tous les enregistrements CCSI qui sont créés dans une application cliente, des recommandations s’affichent pour aider à réduire le risque de sécurité.
Lors de la création d’un CCSI, le système affiche les recommandations de sécurité suivantes si elles n’ont pas encore été configurées :
- Ajoutez ou définissez un contrôle d’accès, sauf si le CCSI dispose d’un accès public.
- Utilisez GlideRecordSecure au lieu de l’API GlideRecord pour une meilleure sécurité, si le script interroge la base de données.Remarque :Pour désactiver les messages de recommandations de sécurité, définissez la propriété glide.script.ccsi.customer_scoped.security_msgs_enabled sur faux dans la table sys_properties. La valeur par défaut est définie sur vrai.
Consultez Paramètres de renforcement de la sécurité de l’instance pour plus d’informations sur la conformité de la sécurité.
Script de détection Includes
Découverte Les includes de script définissent les classes JavaScript que vous pouvez utiliser pour accomplir Découverte des tâches.
Utilisation de GlideRecordUtil pour travailler avec GlideRecords
GlideRecordUtil est une classe utilitaire qui fournit des méthodes utiles pour utiliser GlideRecords pendant Découverte. Reportez-vous à GlideRecordUtil pour une description des méthodes disponibles.
Obtention d’une instance GlideRecord
var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");Obtention de tous les champs dans un GlideRecord
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var fields = new GlideRecordUtil().getFields(now_GR);
gs.log(fields.join(" ")); // List all the fields that are in a computer CIRemplissage des champs d’objet GlideRecord
var objectToPopulate = { };
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var ignore = {"sys_created_on": true, "sys_updated_by": true};
new GlideRecordUtil().populateFromGR(objectToPopulate, now_GR, ignore);
// Now the objectToPopulate contains field/value pairs from the computer GlideRecordvar now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
var ignore = {"sys_created_by": true};
new GlideRecordUtil().mergeToGR(obj, gr, ignore);
gr.update();Obtention des hiérarchies de tables
var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
gs.log(tables.join(","));
// The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".Utilisation de DiscoveryException et AutomationException
Lors de l’écriture Découverte de capteurs et de scripts liés aux capteurs, vous pouvez utiliser DiscoveryException ou AutomationException pour indiquer qu’une exception provient de Découverte.
function foo() {
if(//condition matches) throw new DiscoveryException("The message", "The cause"); }try {
foo();
}
catch(e) {
if(e instanceof DiscoveryException)
gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }L’exemple ci-dessus s’applique également à AutomationException. DiscoveryException est généralement utilisé pour fournir un traitement d’exception spécifique à Discovery, tandis qu’AutomationException est utilisé pour le traitement des exceptions qui s’appliquent à la fois à Orchestration et Découverteà .