Export Configuration Centreon CLAPI

Centreon CLAPI est un module/API Centreon qui permet d’administrer et de configurer votre plate-forme de supervision en ligne de commande. Les actions que l’on peut effectuer depuis l’interface web peuvent être réalisé en ligne de commande rapidement…

En effet, nous allons pouvoir ajouter, supprimer, mettre à jours les hôtes, les services, les commandes…etc, mais surtout, exporter/importer la configuration complète de Centreon.

Remarque : depuis la version 2.7, le module Centreon-Clapi est totalement intégré à Centreon.

Ce qu’il vous faut :

SSH/SFTP Tools :

Remarque : MobaXterm permet d’établir une connexion SSH et SFTP simultanément. Très pratique pour récupérer ou uploader les fichiers directement depuis la machine hôte vers le serveur Centreon. Il est totalement personnalisable et permet également de récupérer vos sessions PuTTy automatiquement. Bref, the best et c’est un produit français !

SSH and SFTP using MobaXterm


Commandes CLAPI

Voici la commande Clapi :

[root@centreon ~]# centreon -u USER -p PASSWORD -o OBJET -a ACTION [-v PARAMETRE]

Explication de la commande :

  • -u : l’utilisateur de l’interface Centreon.
  • -p : le mot de passe associé à l’utilisateur Centreon
  • -o : type d’objet associé à l’action. Exemple : Collecteur, hôte, service…etc.
  • -a : type d’action à réaliser : ajouter, supprimer, modifier…etc.
  • -v : pour rajouter plusieurs paramètres en fonction de l’objet ou type d’action.

Configuration Pré-requise

Connectez-vous à votre serveur Centreon en SSH.

Attention : un modèle générique doit être affecté à vos services. Sinon, l’import ne fonctionnera pas (ne me demandez pas pourquoi, à voir dans la nouvelle version de Centreon). C’est comme la création d’un service.

  • Configuration > Services > Modèles > cliquez sur Ajouter
    • Alias : generic_service
    • Nom : generic_service
    • Modèle : ne rien mettre
    • Commande de vérification : Check_ICMP (ping)
      • ARG1 : 3 (nombre de requête ping)
      • ARG2 : 200,20%
      • ARG3 : 400,50%
    • Période de contrôle : workhours
    • Allez dans l’onglet Notifications
      • Période de notification : workhours
    • Allez dans l’onglet Informations complémentaires
      • Modèle de graphique : Latency
      • Catégories : Ping
      • Icône : ping.png

Création Modèle Service Centreon

  • Allez maintenant dans les paramètres d’un service et lui affecter ce modèle.
  • Si vous avez beaucoup de services
    • Cochez tous vos services (ou par page)
    • Plus d’actions…
    • Changement massive
      • Mode de mise à jour : Incrémentale
      • Ajouter uniquement le modèle « generic_service » et validez. Laissez le reste VIDE.

Voici un exemple avec un service Exchange :

Add Service Template Centreon

  • Sauvegarder et redémarrer le collecteur pour prendre en compte les modifications.

Exporter la configuration

Lancez la commande d’export. Si vous avez une grosse configuration, cela risque de prendre un peu de temps.

[root@centreon ~]# centreon -u admin -p admin -e > /tmp/centreon-conf.txt
[root@centreon ~]#
  • -e > /tmp/centreon-conf.txt = stocker la configuration dans le fichier centreon-conf.txt et l’enregistrer dans le répertoire /tmp.

Voilà, c’est terminé. Nous venons d’exporter la configuration de Centreon. Jetons un coup d’œil à l’intérieur du fichier que nous venons d’exporter.

Remarque : effectuez un double clic pour ouvrir le fichier avec l’éditeur de MobaXterm. Sinon, effectuez un clic droit > Open with… et sélectionnez le votre.

le fichier commence par les ACL (Liste de contrôle d’accès) :

{OBJECT_TYPE};{COMMAND};{PARAMETERS}
ACLACTION;ADD;Simple User;Simple User;
ACLACTION;SETPARAM;Simple User;activate;1;
ACLACTION;GRANT;Simple User;poller_stats;
ACLACTION;GRANT;Simple User;top_counter;
ACLACTION;GRANT;Simple User;service_acknowledgement;
ACLACTION;GRANT;Simple User;service_schedule_check;
ACLACTION;GRANT;Simple User;service_schedule_forced_check;
ACLACTION;GRANT;Simple User;service_schedule_downtime;
...
...

Puis l’instance (Collecteur Central)

INSTANCE;ADD;Central;127.0.0.1;22
INSTANCE;setparam;Central;localhost;1
INSTANCE;setparam;Central;is_default;1
INSTANCE;setparam;Central;ns_activate;1
INSTANCE;setparam;Central;ns_status;0
INSTANCE;setparam;Central;init_script;centengine
INSTANCE;setparam;Central;init_system;systemv
INSTANCE;setparam;Central;monitoring_engine;CENGINE
...
...

Les commandes (Ici les commandes disponible : Exchange)

CMD;setparam;Check-MSExchange;enable_shell;0
CMD;setparam;Check-MSExchange;command_activate;1
CMD;setparam;Check-MSExchange;command_locked;0
CMD;ADD;Check-MailboxHealth;2;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
CMD;setparam;Check-MailboxHealth;enable_shell;0
...
...

les macros personnalisée, chemin des plugins centreon/nagios…etc.

RESOURCECFG;ADD;$USER1$;/usr/lib/nagios/plugins;Central;Nagios Plugins Path
RESOURCECFG;setparam;$USER1$;activate;1
RESOURCECFG;ADD;$USER2$;/usr/lib/centreon/plugins;Central;Centreon Plugins Path
RESOURCECFG;setparam;$USER2$;activate;1
RESOURCECFG;ADD;$_SERVICEPLUGIN$;0;Central;
RESOURCECFG;setparam;$_SERVICEPLUGIN$;activate;1
RESOURCECFG;ADD;$_SERVICEMODE$;0;Central;
RESOURCECFG;setparam;$_SERVICEMODE$;activate;1
...
...

La configuration Centreon :

Remarque : il est conseillé de supprimer ces lignes lors d’un import de ce fichier sur un nouveau serveur Centreon. En effet, votre nouveau serveur Centreon a déjà sa propre configuration.

CENTBROKERCFG;SETOUTPUT;central-module-master;1;buffering_timeout;0
CENTBROKERCFG;SETOUTPUT;central-module-master;1;protocol;bbdo
CENTBROKERCFG;SETOUTPUT;central-module-master;1;tls;no
CENTBROKERCFG;SETOUTPUT;central-module-master;1;compression;no
CENTBROKERCFG;SETOUTPUT;central-module-master;1;type;ipv4
...
...
ENGINECFG;ADD;Centreon Engine Central;Central;Centreon Engine
ENGINECFG;setparam;Centreon Engine Central;log_file;/var/log/centreon-engine/centengine.log
ENGINECFG;setparam;Centreon Engine Central;cfg_dir;/etc/centreon-engine
ENGINECFG;setparam;Centreon Engine Central;temp_file;/var/log/centreon-engine/centengine.tmp
ENGINECFG;setparam;Centreon Engine Central;status_file;/var/log/centreon-engine/status.dat
...
...

Les hôtes et services :

HOST;setparam;EX-SERVER1;host_snmp_community;pixelabs
HOST;setparam;EX-SERVER1;host_snmp_version;2c
HOST;setparam;EX-SERVER1;timezone;Europe/Paris
HOST;setparam;EX-SERVER1;host_locked;0
HOST;setparam;EX-SERVER1;host_register;1
HOST;setparam;EX-SERVER1;host_activate;1
HOST;setparam;EX-SERVER1;icon_image;pixelabs/exchange.png
...
...
SERVICE;ADD;EX-SERVER1;Check-CPU;
SERVICE;setparam;EX-SERVER1;Check-CPU;check_command;Check-CPU
SERVICE;setparam;EX-SERVER1;Check-CPU;check_period;workhours
SERVICE;setparam;EX-SERVER1;Check-CPU;service_is_volatile;2
SERVICE;setparam;EX-SERVER1;Check-CPU;service_active_checks_enabled;2
SERVICE;setparam;EX-SERVER1;Check-CPU;service_passive_checks_enabled;2
SERVICE;setparam;EX-SERVER1;Check-CPU;service_parallelize_check;2
...
...

Etc…

Il suffit maintenant d’importer cette configuration sur un nouveau serveur Centreon. Voir l’article : full-import-conf-centreon-centreon-clapi/

Remarque : sauvegarder ce fichier TXT ailleurs, pour le retrouver en cas de panne de votre serveur Centreon.

C’est terminé les amis. Ci-dessous quelques commandes Clapi à connaitre pour le fun 🙂

Gestion des collecteurs

Quelques commandes pour gérer vos collecteurs (Pollers). Dans mon cas, j’ai un seul collecteur (Poller) : Central

Afficher les colleurs disponibles :

[root@centreon ~]# centreon -u admin -p admin -a POLLERLIST
poller_id;name
---
1;Central
---
Return code end : 0
[root@centreon ~]#

Générer la configuration pour le collecteur Central :

[root@centreon ~]# centreon -u admin -p admin -a POLLERGENERATE -v "Central"
---
Configuration files generated for poller 'Central'
---
Return code end : 0
[root@centreon ~]#

Tester la configuration du collecteur Central :

[root@centreon ~]# centreon -u admin -p admin -a POLLERTEST -v "Central"
---
OK: Centreon Poller Central can restart without problem...
---
Return code end : 0
[root@centreon ~]#

Déplacer les fichiers pour appliquer la supervision : après avoir ajouté un hôte, service…etc

[root@centreon ~]# centreon -u admin -p admin -a CFGMOVE -v "Central"
---
OK: All configuration files copied with success.
---
Return code end : 0
[root@centreon ~]#

Relancer le collecteur Central :

[root@centreon ~]# centreon -u admin -p admin -a POLLERRESTART -v "Central"
---
.centengine restart: done                                  [  OK  ]
---
Return code end : 0
[root@centreon ~]#

Les 4 commandes ci-dessus peuvent être réalisées en une seule commande :

[root@centreon ~]# centreon -u admin -p admin -a APPLYCFG -v "Central"

Centreon Clapi APPLYCFG

Gestion des objets

Pour la gestion des objets, je vais citer quelques exemples, il faut des semaines pour faire le tour, mais si vous êtes chaud : Object management

Afficher les hôtes : J’ai qu’un hôte et c’est Exchange Server 2016

[root@centreon ~]# centreon -u admin -p admin -o HOST -a show
id;name;alias;address;activate
---
2;EX-SERVER1;Exchange Server 2016;172.16.1.2;1
---
[root@centreon ~]#

Afficher les services :

[root@centreon ~]# centreon -u admin -p admin -o SERVICE -a show
host id;host name;id;description;check command;check command arg;normal check interval;retry check interval;max check attempts;active checks enabled;passive checks enabled;activate
---
2;EX-SERVER1;13;Check-ComponentState;Check-ComponentState;;;;;2;2;1
2;EX-SERVER1;2;Check-CPU;Check-CPU;;;;;2;2;1
2;EX-SERVER1;15;Check-DAGHealth;Check-DAGHealth;;;;;2;2;1
2;EX-SERVER1;3;Check-Disk-C:;Check-Disk-C:;;;;;2;2;1
2;EX-SERVER1;4;Check-Disk-E:;Check-Disk-E:;;;;;2;2;1
2;EX-SERVER1;5;Check-Disk-F:;Check-Disk-F:;;;;;2;2;1
2;EX-SERVER1;6;Check-Disk-L:;Check-Disk-L:;;;;;2;2;1
2;EX-SERVER1;14;Check-ExchServices;Check-ExchServices;;;;;2;2;1
2;EX-SERVER1;16;Check-FailOverDB;Check-FailOverDB;;;;;2;2;1
2;EX-SERVER1;18;Check-IndexStateHealth;Check-IndexStateHealth;;;;;2;2;1
2;EX-SERVER1;11;Check-MailboxHealth;Check-MailboxHealth;;;;;2;2;1
2;EX-SERVER1;7;Check-Memory;Check-Memory;;;;;2;2;1
2;EX-SERVER1;10;Check-MSEProcess;Check-MSExchange;;;;;2;2;1
2;EX-SERVER1;17;Check-QueueHealth;Check-QueueHealth;;;;;2;2;1
2;EX-SERVER1;12;Check-ReplicationHealth;Check-ReplicationHealth;;;;;2;2;1
2;EX-SERVER1;9;Check-Service-IMAP4;Check-WINServices;;;;;2;2;1
2;EX-SERVER1;8;Check-Traffic;Check-traffic;;;;;2;2;1
---
[root@centreon ~]#

Afficher les commandes : bon…je trouve que… c’est très clair et… on s’y retrouve rapidos ! Nan ?

[root@centreon ~]# centreon -u admin -p admin -o CMD -a show
id;name;type;line
35;host-notify-by-email;notif;/usr/bin/printf "%b" "***** centreon Notification *****<br/><br/>Type:$NOTIFICATIONTYPE$<br/>Host: $HOSTNAME$<br/>State: $HOSTSTATE$<br/>Address: $HOSTADDRESS$<br/>Info: $HOSTOUTPUT$<br/>Date/Time: $DATE$" | @MAILER@ -s "Host $HOSTSTATE$ alert for $HOSTNAME$!" $CONTACTEMAIL$
36;service-notify-by-email;notif;/usr/bin/printf "%b" "***** centreon Notification *****<br/><br/>Notification Type: $NOTIFICATIONTYPE$<br/><br/>Service: $SERVICEDESC$<br/>Host: $HOSTALIAS$<br/>Address: $HOSTADDRESS$<br/>State: $SERVICESTATE$<br/><br/>Date/Time: $DATE$ Additional Info : $SERVICEOUTPUT$" | @MAILER@ -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
37;host-notify-by-epager;notif;/usr/bin/printf "%b" "Host $HOSTALIAS$ is $HOSTSTATE$<br/>Info: $OUTPUT$<br/>Time: $DATETIME$\" | @MAILER@ -s \"$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$ is $HOSTSTATE$\" $CONTACTPAGER$
38;service-notify-by-epager;notif;/usr/bin/printf "%b" "Service: $SERVICEDESC$<br/>Host: $HOSTNAME$<br/>Address: $HOSTADDRESS$<br/>State: $SERVICESTATE$<br/>Info: $OUTPUT$<br/>Date: $DATETIME$" | @MAILER@ -s "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" $CONTACTPAGER$
89;host-notify-by-jabber;notif;$USER1$/notify_via_jabber  $CONTACTPAGER$ "Host &#039;$HOSTALIAS$&#039; is $HOSTSTATE$ - Info: $HOSTOUTPUT$"
90;service-notify-by-jabber;notif;$USER1$/notify_via_jabber $CONTACTPAGER$ "$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$"
91;Check-traffic;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --mode=$_SERVICEMODE$ --interface=$_SERVICEINTERFACE$ --warning-in-traffic=$_SERVICEWARNINGIN$ --warning-out-traffic=$_SERVICEWARNINGOUT$ --critical-in-traffic=$_SERVICECRITICALIN$ --critical-out-traffic=$_SERVICECRITICALOUT$ $_SERVICEOPTION$ $_SERVICEOPTION$
92;Check-ICMP;check;$USER1$/check_icmp -H $HOSTADDRESS$ -n $ARG1$ -w $ARG2$ -c $ARG3$
93;Check-CPU;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --warning=$_SERVICEWARNING$ --critical=$_SERVICECRITICAL$
94;Check-Memory;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --warning-memory=$_SERVICEWARNING$ --critical-memory=$_SERVICECRITICAL$
95;Check-Disk-C:;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --warning-usage=$_SERVICEWARNING$ --critical-usage=$_SERVICECRITICAL$ --storage=$_SERVICEDISK$
96;Check-Disk-E:;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --warning-usage=$_SERVICEWARNING$ --critical-usage=$_SERVICECRITICAL$ --storage=$_SERVICEDISK$
97;Check-Disk-F:;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --warning-usage=$_SERVICEWARNING$ --critical-usage=$_SERVICECRITICAL$ --storage=$_SERVICEDISK$
98;Check-Disk-L:;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --warning-usage=$_SERVICEWARNING$ --critical-usage=$_SERVICECRITICAL$ --storage=$_SERVICEDISK$
99;Check-WINServices;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --service=$_SERVICENAME$ $_SERVICEOPTION$
100;Check-MSExchange;check;$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --snmp-version=$_HOSTSNMPVERSION$ --process-name=$_SERVICEPROCESS$ $_SERVICEOPTION$
101;Check-MailboxHealth;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
103;Check-ReplicationHealth;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
104;Check-ComponentState;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
105;Check-ExchServices;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
106;Check-DAGHealth;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
107;Check-FailOverDB;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
108;Check-QueueHealth;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
109;Check-IndexStateHealth;check;$USER1$/check_centreon_nrpe -H $HOSTADDRESS$ -t $_SERVICETIMEOUT$ -c $_SERVICECOMMAND$
[root@centreon ~]#

Vous avez surement compris le fonctionnement. Voir la documentation Centreon pour aller plus loin.

Dans le prochain chapitre, nous allons remettre Centreon à zero et importer la configuration.

Bonne journée et à très bientôt.

11 Responses

  1. Vinx dit :

    Hello, question sur l’export.
    Quand on lance un « centreon -u admin -p admin -o SERVICE -a show », on se retrouve avec un 2;2;1 à la fin (actif/passif/enabled)

    D’où sort la valeur « 2 » ? Dans la doc officielle, c’est 0=ON, 1=OFF
    J’ai 200k services, je dois filtrer les services active enabled, les services passive enabled, mais tout est à 2 dans ces deux colonnes !!

    merci

    • sysadmin dit :

      Salut Vinx,
      Il t’affiche « 2 » parce que c’est par défaut :
      Voir l'image
      Si tu veux « 1 » ou « 0 », il faut cocher la case « Oui » ou « Non »
      (il est possible de modifier ces paramètres en masse)
      Bonne journée.
      -sysadmin.

      • Vinx dit :

        Ah oui ok je comprends, ce qu’il retourne c’est la config du service
        Finalement ce que je recherche, c’est l’état actuel du service (monitoring/services/clic sur le service/active checks [disabled | enabled]
        Car dans ma config tous mes services sont en « Default », mais j’ai un event handler qui a passé la valeur « Active checks » à « Disabled » sur un tas de services et j’aimerais repasser « Active checks » as « Enabled » en masse via clapi 😉

        • sysadmin dit :

          Je n’ai jamais fait de modif en masse via Clapi,
          C’est easy depuis l’interface web de Centreon, tu peux sélectionner plusieurs services et modifier ce paramètre en masse et rapidos 😉

          • Vinx dit :

            Le souci c’est que j’ai 200000 services, il n’y a pas moyen de filtrer (j’aimerais retirer les services dont le host est down ou en downtime), j’ai des centaines de pages
            En plus à chaque fois que je coche des services pour faire un « Services : Enable Check », il retourne à la page 1, et me retire mon tri sur la colonne ‘Last check’ ; j’en ai pour des semaines via l’interface lente de Centreon !

          • sysadmin dit :

            Oui, effectivement 200k c’est énorme.. même en faisons des groupes de services, c’est pareil !
            En tous cas, désolé, je le maîtrise pas Clapi, je ne sais pas faire grand chose avec à part de l’Export/Import et un peu d’administration du collecteur.
            Penses à bosser sur un serveur de test pour éviter de flinguer la prod ^^
            Bon courage.
            -sysadmin.

  2. sysadmin dit :

    Mise à jour de l’article.
    J’ai essayé de détaillé au maximum. N’hésitez pas si besoin 🙂

    • DIA Serigne dit :

      Bonjour,

      Merci pour cet intéressant article!

      Je voudrais cependant vous poser une question car j’ai plusieurs pollers et je cherche à faire l’export de toute la configuration.

      Doit-on exécuter la commande d’export que sur le poller central ? ou exécuter la commande sur chaque poller ?
      Même question également pour l’import.

      Je voudrais également savoir s’il y’a des choses qui ne seront pas exporter réellement comme les conf ldap, ou l’escalade?

      D’avance merci de votre aide!

  3. thierry dit :

    bonjour !
    est-ce l’équivalent de de l’import/export AWIE ?

    Avez-vous une procédure de réinstallation complète depuis les fichiers de configuration bakupés par centreon (à partir des 4 fichiers)

    Merci,

    • sysadmin dit :

      Bonjour thierry,

      Oui, c’est l’équivalent de AWIE.
      Et non désolé, je n’ai pas eu encore l’occasion de réinstaller Centreon depuis des fichiers de sauvegarde.
      (Cela m’intéresse fortement également).
      Si je trouve quelque chose à l’avenir ou si je me penche dessus, je ferais un article.

      Bonne journée.
      -Pixel.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *