lumo:creation_complete_du_plugin_dokuwiki
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| lumo:creation_complete_du_plugin_dokuwiki [2026/03/12 10:24] – estro | lumo:creation_complete_du_plugin_dokuwiki [2026/03/12 10:45] (Version actuelle) – supprimée estro | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Création complète du plugin DokuWiki ====== | ||
| - | [[./ | ||
| - | ---- | ||
| - | ===== Structure du Plugin ===== | ||
| - | < | ||
| - | / | ||
| - | ├── action.php | ||
| - | ├── syntax.php | ||
| - | ├── helper.php | ||
| - | ├── script.sh | ||
| - | └── manifest.ini | ||
| - | </ | ||
| - | <adm note 1. manifest.ini> | ||
| - | <code ini> | ||
| - | [plugin] | ||
| - | name=Bash Exec Plugin | ||
| - | desc=Exécute des scripts bash avec validation sécurisée | ||
| - | author=Votre Nom | ||
| - | email=votre@email.com | ||
| - | url=https:// | ||
| - | date=2026-03-12 | ||
| - | version=1.0.0 | ||
| - | </ | ||
| - | </ | ||
| - | <adm danger 2. helper.php (Fonctions utilitaires)> | ||
| - | <code php> | ||
| - | <?php | ||
| - | /** | ||
| - | * Helper class for Bash Exec Plugin | ||
| - | */ | ||
| - | class helper_plugin_bashexec extends DokuWiki_Plugin { | ||
| - | | ||
| - | /** | ||
| - | * Validation stricte des arguments | ||
| - | */ | ||
| - | public function validateArgument($arg) { | ||
| - | // Autorise uniquement alphanumérique, | ||
| - | if (!preg_match('/ | ||
| - | return false; | ||
| - | } | ||
| - | return true; | ||
| - | } | ||
| - | | ||
| - | /** | ||
| - | * Validation du chemin du script | ||
| - | */ | ||
| - | public function validateScriptPath($path) { | ||
| - | $allowedPaths = array( | ||
| - | DOKU_PLUGIN . ' | ||
| - | '/ | ||
| - | ); | ||
| - | | ||
| - | foreach ($allowedPaths as $allowed) { | ||
| - | if (strpos($path, | ||
| - | return true; | ||
| - | } | ||
| - | } | ||
| - | return false; | ||
| - | } | ||
| - | | ||
| - | /** | ||
| - | * Journalisation des exécutions | ||
| - | */ | ||
| - | public function logExecution($script, | ||
| - | $logFile = DOKU_LOG . '/ | ||
| - | $timestamp = date(' | ||
| - | $entry = sprintf( | ||
| - | "[%s] User: %s | Script: %s | Args: %s | Return: %d\n", | ||
| - | $timestamp, | ||
| - | $user, | ||
| - | basename($script), | ||
| - | implode(' | ||
| - | $returnCode | ||
| - | ); | ||
| - | file_put_contents($logFile, | ||
| - | } | ||
| - | | ||
| - | /** | ||
| - | * Vérification des permissions | ||
| - | */ | ||
| - | public function checkPermissions() { | ||
| - | global $USERINFO; | ||
| - | | ||
| - | // Vérifie si l' | ||
| - | if (!isset($USERINFO[' | ||
| - | return false; | ||
| - | } | ||
| - | | ||
| - | // Optionnel : Restreindre à certains groupes | ||
| - | $allowedGroups = $this-> | ||
| - | if ($allowedGroups) { | ||
| - | $userGroups = explode(',', | ||
| - | foreach ($userGroups as $group) { | ||
| - | if (in_array(trim($group), | ||
| - | return true; | ||
| - | } | ||
| - | } | ||
| - | return false; | ||
| - | } | ||
| - | | ||
| - | return true; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | </ | ||
lumo/creation_complete_du_plugin_dokuwiki.1773311077.txt.gz · Dernière modification : de estro
