Pour commencer, récupérer le plugin d'exemple :
https://github.com/PluginsOCSInventory-NG/example
Maintenant définissez vos critères.
Les informations retournées par le plugin seront stocker en base, il faut donc savoir combien de colonnes seront nécessaires
J'ai pris l'exemple de mon plugin sur GIT :
https://github.com/Yoyox78/OCS-Inventory-Plugin-DCUState
Chaque occurence contenant Example ou exemple sera à remplacer par Dcustate ou dcustate dans mon cas.
Dans votre cas, il faudra mettre le nom que vous avez choisi pour votre plugin, je ne détaille que les parties à modifier des fichiers
Ce dossier sert lors de l’enregistrement sur le serveur de communication
C’est le fichier de liaison entre le serveur de communication et la base de données
Dans mon cas j’ai 4 colonnes
# Lorsque vous modifiez cette ligne pensez à mettre la première lettre en majuscule (Dcustate dans mon cas), sinon ça ne fonctionnera pas
package Apache::Ocsinventory::Plugins::Dcustate::Map;
# Indiquez le nom de votre script
$DATA_MAP{dcustate} = {
# Indiquez quel champ servira pour l’ordre de rangement, dans mon cas c’est le champ date
sortBy => 'DATE',
# Dans cette partie, vous devez indiquer vos champs, attention le dernier champ n'a pas de (,) à la fin
fields => {
DATE => {},
TYPE => {},
NAME => {},
URGENCY => {}
}
Il indique au serveur de charger le fichier Map.pm du plugin
Lorsque vous modifiez cette ligne pensez à mettre la première lettre en majuscules (Dcustate dans mon cas), sinon ça ne fonctionnera pas
PerlModule Apache::Ocsinventory::Plugins::Dcustate::Map;
La convention de nommage exige que le nom du fichier commence par "cd_" ("cd" signifie "computer details").
# Donner le nom du plugin ou un petit détail sur sont utilitée.
print_item_header("dcustate");
# Donner le nom du plugin
$form_name = "dcustate";
# Comme précédemment, mettre les noms des champs choisis ainsi que des descriptions qui apparaîtront en tant qu'entête des colonnes
$list_fields = array(
'Date de vérification' => 'DATE',
'Type de périphérique' => 'TYPE',
'Nom du package' => 'NAME',
'Niveau de criticitée' => 'URGENCY'
);
Dans les deux fichiers, indiquer un numéro choisi et le nom du plugin
Attention à vérifier les numéros utilisés par les autres plugins OCS pour ne pas avoir de doublons :
https://plugins.ocsinventory-ng.org/
Pour cela vérifier dans le fichier hook.xml la ligne suivante de chaque plugin utilisé
<translation>50300</translation>
Aucune modification à faire dans ce fichier si vous l'avez
Dans cette partie vous indiquez les langues que vous avez créées, (création des dossiers et fichiers dans language)
<value>en_GB</value>
<value>fr_FR</value>
Indiquez le nom donné plus haut pour le fichier et dossier cd_ (mettre le nom du plugin)
<identifier>cd_wustate</identifier>
Indiquez le nombre présent dans les fichiers language
<translation>50300</translation>
Cette partie permet d'indiquer dans quel onglet de l'ordinateur il faut ajouter ce plugin
Mettez tout dans other (pour garder tous les plugins au même endroit)
D’autres possibilités sont envisageables : https://github.com/PluginsOCSInventory-NG/example/blob/master/hook.xml
<category>other</category>
Indiquez le nom du plugin
<available>dcustate</available>
Stock des informations générales sur le plugin, comme le nom, l'auteur, la version, etc. Elles seront affichées sur https://plugins.ocsinventory-ng.org/.
Indiquez votre nom, le nom du plugin, à quoi il sert dans toutes les langues choisies
Remplissez les lignes suivantes, elles permettront de créer, supprimer et mettre à jour la table en BDD suivant si vous installez, supprimés, ou mettez à jour
Remplacer le nom de mon plugin par le vôtre
function extension_install_dcustate()
Cette partie permet la suppression et création de table
$commonObject -> sqlQuery("DROP TABLE IF EXISTS `dcustate`;");
"CREATE TABLE `dcustate` (
Indiquez les champs mis dans map.pm et cd_dcustate
`DATE` VARCHAR(255) DEFAULT NULL,
`TYPE` VARCHAR(255) DEFAULT NULL,
`NAME` VARCHAR(255) DEFAULT NULL,
`URGENCY` VARCHAR(255) DEFAULT NULL,
Supprime la base, si elle existe
function extension_delete_dcustate()
$commonObject -> sqlQuery("DROP TABLE IF EXISTS `dcustate`");
Permet la mise à jours de la BDD
function extension_upgrade_dcustate()
Faire un joli dessin qui représente votre plugin
Créez votre script qui ne retournera que les informations souhaitées en XML
Voici un exemple de retour, respectez bien ce que vous avez défini précédemment dans les fichiers
dans notre cas, on retrouve bien
$xml += "<DCUSTATE>`n"
$xml += "<DATE>$(Get-Date -Format "dd/MM/yyyy_HH:mm")</DATE>`n"
$xml += "<TYPE>" + $i.type + "</TYPE>`n"
$xml += "<NAME>" + $i.name + "</NAME>`n"
$xml += "<URGENCY>" + $i.urgency + "</URGENCY>`n"
$xml += "</DCUSTATE>`n"
Zipper votre dossier complet en .zip