🛠️ Fonctionnement des Commandes Nadim
1️⃣ Commandes de gestion de Nadim ("platform")
Les commandes de gestion de Nadim suivent la syntaxe :
nadim platform <commande>
Exemples :
Ajouter un outil :
nadim platform add tool mysql
Supprimer un outil :
nadim platform delete tool mysql
Mettre à jour Nadim :
nadim platform update
Gérer Nadim via Git :
nadim platform git <commande>
2️⃣ Commandes propres aux outils
Chaque outil ajouté suit la syntaxe :
nadim <nom-outil> <commande>
Exemples :
Créer une commande pour un outil :
nadim mysql add command backup
Archiver une commande existante :
nadim mysql archive command backup
Réactiver une commande archivée :
nadim mysql activate command backup
Exécuter une commande existante :
nadim mysql backup
📦 Ajout d’un Nouvel Outil
Lorsqu’on exécute :
sudo nadim platform add tool mysql --classic
Un nouveau dossier est créé dans nadim-tools/
, sans inclure de répertoire scaffold/
puisque celui-ci est centralisé dans platform/
.
Structure générée :
/usr/local/lib/nadim/nadim-tools/
├── mysql/ # Nom de l’outil ajouté (ex: MySQL)
│ ├── commands/ # Dossier des commandes (vide au départ)
│ ├── archived/ # Dossier pour les commandes archivées
│ ├── config/ # Configurations spécifiques à l’outil
│ │ ├── .env # Fichier d’environnement
│ │ ├── securedata.enc # Données sécurisées (seul root peut les décrypter)
│ ├── metadata/ # Métadonnées de l’outil
│ │ ├── version # Numéro de version
│ │ ├── LICENCE # Fichier de licence
│ │ ├── author # Auteur de l’outil
│ │ ├── readme.md # Documentation de l’outil
➕ Ajout d’une Commande dans un Outil
Une fois un outil ajouté, on peut lui ajouter des commandes dynamiques grâce au scaffold/
centralisé dans platform/
.
Ajouter une Commande
Lorsqu’on exécute :
nadim mysql add command backup
Le script create.sh
dans platform/scaffold/
est utilisé pour générer automatiquement la structure suivante :
/usr/local/lib/nadim/nadim-tools/
├── mysql/
│ ├── commands/
│ │ ├── backup/
│ │ │ ├── backup.sh # Script principal
│ │ │ ├── config.json # Configuration spécifique
│ │ │ ├── dependencies.sh # Dépendances nécessaires
Archiver une Commande
Lorsqu’on exécute :
nadim mysql archive command backup
Le script archive.sh
dans platform/scaffold/
est utilisé pour déplacer la commande vers le dossier archived/
:
/usr/local/lib/nadim/nadim-tools/
├── mysql/
│ ├── archived/
│ │ ├── backup/
│ │ │ ├── backup.sh
│ │ │ ├── config.json
│ │ │ ├── dependencies.sh
Réactiver une Commande
Lorsqu’on exécute :
nadim mysql activate command backup
Le script activate.sh
dans platform/scaffold/
est utilisé pour remettre la commande dans le dossier commands/
:
/usr/local/lib/nadim/nadim-tools/
├── mysql/
│ ├── commands/
│ │ ├── backup/
│ │ │ ├── backup.sh
│ │ │ ├── config.json
│ │ │ ├── dependencies.sh
✅ Points Clés
Le répertoire
scaffold/
est centralisé dansplatform/
, évitant ainsi toute duplication entre les outils.Les scripts
create.sh
,archive.sh
etactivate.sh
sont partagés entre tous les outils, rendant le système plus efficace et maintenable.Chaque outil reste indépendant et peut être modifié sans impacter les autres.
Les commandes peuvent être ajoutées, archivées et réactivées dynamiquement, facilitant l'évolution du framework.
Les configurations sensibles sont toujours stockées dans
.env
etsecuredata.enc
de manière cryptée via openssl.
La structure garantit une organisation claire et évolutive, permettant à Nadim de gérer un grand nombre d'outils et de commandes sans complexité excessive.
INFORMATIONS GÉNÉRALES
Conditions de Licence
Licence : Les termes et conditions d'utilisation, de reproduction et de distribution tels que définis dans ce document. La licence suivante s'applique au code source, aux scripts, aux fichiers de configuration et à toute autre contribution liée au projet Nadim.
Licencier : El Moumen Yassine ou toute entité autorisée par lui à accorder cette licence.
Entité Légale : L'union de l'entité agissante et de toutes les autres entités contrôlant, contrôlées par ou sous contrôle commun avec cette entité.
Vous (ou Votre) : Une personne ou une entité légale bénéficiant des permissions accordées par cette licence. Source : La forme préférée pour apporter des modifications à l'œuvre, comme le code source logiciel, les fichiers de documentation, etc. Objet : Toute forme résultant d'une transformation mécanique ou de traduction d'une forme source, y compris le code compilé, la documentation générée et les conversions vers d'autres types de médias. Œuvre : L'œuvre d'auteur mise à disposition sous cette licence, comme indiqué par un avis de droit d'auteur inclus ou attaché à l'œuvre. Œuvres Dérivées : Toute œuvre, sous forme source ou objet, dérivée de l'œuvre originale. Contribution : Toute œuvre soumise intentionnellement par El Moumen Yassine ou un autre contributeur à l'œuvre. Contributeur : Toute personne ou entité ayant soumis une contribution intégrée dans l'œuvre.
Sous réserve des termes et conditions de cette licence, chaque contributeur vous accorde, à vous, une licence perpétuelle, mondiale, non exclusive, gratuite, sans redevance et irrévocable pour reproduire l'œuvre, préparer des œuvres dérivées, afficher publiquement l'œuvre, exécuter publiquement l'œuvre, sous-licencier et distribuer l'œuvre et les œuvres dérivées sous forme source ou objet.
Sous réserve des termes et conditions de cette licence, chaque contributeur accorde à vous une licence perpétuelle, mondiale, non exclusive, gratuite, sans redevance et irrévocable (sauf indication contraire dans cette section) pour fabriquer, faire fabriquer, utiliser, offrir à la vente, vendre, importer et transférer autrement l'œuvre. Cette licence s'applique uniquement aux revendications de brevet licenciables par ce contributeur qui sont violées par leur contribution seule ou par la combinaison de leur contribution avec l'œuvre à laquelle ces contributions ont été soumises. Si vous engagez une action en justice contre toute entité alléguant que l'œuvre ou une contribution constitue une violation de brevet, toute licence de brevet vous étant accordée pour cette œuvre cessera dès la date de dépôt de cette action.
Les copies de l'œuvre, sous forme source ou objet, doivent inclure une copie de cette licence. Les copies doivent clairement indiquer les modifications apportées à l'œuvre d'origine et être accompagnées d'un avis de droit d'auteur. Ce contrat ne vous accorde pas le droit d'utiliser les marques, logos ou autres éléments de propriété intellectuelle de l'auteur ou des contributeurs, sauf mention expresse et autorisation écrite.
L'œuvre est fournie "telle quelle", sans garantie d'aucune sorte, explicite ou implicite, y compris mais sans s'y limiter les garanties de qualité marchande, d'adéquation à un usage particulier ou de non-violation. L'auteur ou les contributeurs ne seront en aucun cas responsables des dommages directs, indirects, accessoires, spéciaux, exemplaires ou consécutifs, y compris la perte de données ou de bénéfices, découlant de l'utilisation ou de l'incapacité à utiliser l'œuvre. En aucun cas, l'auteur ou les contributeurs ne seront responsables envers vous ou toute autre personne pour des dommages indirects, accessoires, spéciaux ou consécutifs, ou pour des pertes de profits, de données ou d'autres pertes immatérielles, découlant de l'utilisation de l'œuvre.
En utilisant ou en distribuant l'œuvre, vous acceptez les termes et conditions de cette licence. Si vous n'acceptez pas ces conditions, vous n'êtes pas autorisé à utiliser ou distribuer l'œuvre. Des termes supplémentaires ou des restrictions peuvent être appliqués par des contributeurs spécifiques dans des sections séparées de la licence ou dans des fichiers de documentation associés. Ces termes doivent être respectés en tout temps lors de l'utilisation de l'œuvre.
Cette licence se termine automatiquement si vous ne respectez pas les conditions de la licence. À la fin de la licence, vous devez cesser toute utilisation de l'œuvre et en retirer toutes les copies.
Quoi de neuf dans la version 1.0.0
Voir le journal des modificationsPublié
Gestion des configurations simplifiée grâce à l'utilisation d'un fichier INI, plus lisible et modifiable directement via nano
. Les fichiers de configuration sont désormais sans extension, facilitant leur identification et leur manipulation. Un système de chiffrement OpenSSL a été intégré pour renforcer la sécurité des données sensibles.
Vision à moyen terme : développement d'un paquet .deb
installable via apt
pour une intégration fluide dans les distributions Linux. 🚁
📂 Répertoire Principal
/usr/local/lib/nadim/ # Répertoire principal de Nadim
├── bin/ # Contient les exécutables principaux
│ ├── nadim # Exécutable principal
│ ├── uninstall # Script de désinstallation
├── .gitignore # Fichier de configuration pour Git
├── users/ # Gestion des utilisateurs et sessions
│ ├── $WHOAMI/ # Dossier de l'utilisateur actuel (OWNER)
│ │ ├── sessions/ # Sessions utilisateur
├── platform/ # Gestion centrale de Nadim et des outils
│ ├── autoload/ # Scripts exécutés automatiquement au démarrage
│ │ ├── discover.sh # Détecte et charge dynamiquement les commandes
│ │ ├── gitignore.sh # Génère ou met à jour le fichier .gitignore
│ │ ├── security-check.sh # Vérifications de sécurité
│ ├── config/ # Configuration globale de Nadim
│ │ ├── smtp # Configuration SMTP
│ │ ├── global.env # Variables d'environnement globales
│ ├── dependencies/ # Gestion des dépendances par système
│ │ ├── linux_deb/ # Dépendances pour Linux (Debian-based)
│ │ ├── linux_rpm/ # Dépendances pour Linux (RPM-based)
│ │ ├── macOS/ # Dépendances pour macOS
│ ├── commands/ # Commandes de gestion de Nadim
│ │ ├── add/ # Ajout d’un outil ou d'une commande
│ │ │ ├── tool.sh # Ajoute un nouvel outil
│ │ │ ├── command.sh # Ajoute une nouvelle commande dans un outil
│ │ ├── delete/ # Suppression d’un outil ou d'une commande
│ │ │ ├── tool.sh # Supprime un outil
│ │ │ ├── command.sh # Supprime une commande spécifique
│ │ ├── update/ # Mise à jour depuis GitHub
│ │ │ ├── update.sh # Met à jour Nadim
│ │ ├── git/ # Gestion de Nadim via Git
│ │ │ ├── git.sh # Commandes Git spécifiques
│ ├── scaffold/ # Générateur de structure pour de nouvelles commandes
│ │ ├── create.sh # Crée une nouvelle commande
│ │ ├── archive.sh # Archive une commande existante
│ │ ├── activate.sh # Restaure une commande archivée
├── nadim-tools/ # Répertoire des outils installés
│ ├── mysql/ # Exemple d'outil ajouté : MySQL
│ │ ├── commands/ # Commandes spécifiques à l'outil
│ │ │ ├── backup/ # Commande "backup" pour MySQL
│ │ │ │ ├── backup.sh # Script principal de la commande
│ │ │ │ ├── config.json # Configuration spécifique
│ │ │ │ ├── dependencies.sh # Dépendances nécessaires
│ │ ├── archived/ # Commandes archivées
│ │ │ ├── backup/ # Commande archivée
│ │ │ │ ├── backup.sh
│ │ │ │ ├── config.json
│ │ │ │ ├── dependencies.sh
│ │ ├── config/ # Configurations spécifiques à l'outil
│ │ │ ├── .env # Fichier d’environnement
│ │ │ ├── securedata.enc # Données sécurisées (seul root peut les décrypter)
│ │ ├── metadata/ # Métadonnées de l’outil
│ │ │ ├── version # Numéro de version
│ │ │ ├── LICENCE # Fichier de licence
│ │ │ ├── author # Auteur de l’outil
│ │ │ ├── readme.md # Documentation de l’outil
└── man/ # Documentation man de Nadim
├── nadim.1 # Documentation man de Nadim
Commentaires recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.