Outils pour utilisateurs

Outils du site


lumo:creation_complete_du_plugin_dokuwiki

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lumo:creation_complete_du_plugin_dokuwiki [2026/03/12 10:26] estrolumo: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 ====== +
-[[./|retour]] +
----- +
-===== Structure du Plugin ===== +
-<code> +
-/lib/plugins/bashexec/ +
-├── action.php          # Gestion des actions et appels +
-├── syntax.php          # Syntaxe pour l'insertion dans les pages +
-├── helper.php          # Fonctions utilitaires +
-├── script.sh           # Votre script bash (optionnel) +
-└── manifest.ini        # Métadonnées du plugin +
-</code> +
-<adm note 1. manifest.ini> +
-++++code 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://votre-site.com +
-date=2026-03-12 +
-version=1.0.0 +
-</code> +
-</adm> +
-<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, tirets et underscores +
-        if (!preg_match('/^[a-zA-Z0-9_-]{1,50}$/', $arg)) { +
-            return false; +
-        } +
-        return true; +
-    } +
-     +
-    /** +
-     * Validation du chemin du script +
-     */ +
-    public function validateScriptPath($path) { +
-        $allowedPaths = array( +
-            DOKU_PLUGIN . 'bashexec/scripts/', +
-            '/usr/local/bin/' +
-        ); +
-         +
-        foreach ($allowedPaths as $allowed) { +
-            if (strpos($path, $allowed) === 0) { +
-                return true; +
-            } +
-        } +
-        return false; +
-    } +
-     +
-    /** +
-     * Journalisation des exécutions +
-     */ +
-    public function logExecution($script, $args, $returnCode, $user) { +
-        $logFile = DOKU_LOG . '/bashexec.log'; +
-        $timestamp = date('Y-m-d H:i:s'); +
-        $entry = sprintf( +
-            "[%s] User: %s | Script: %s | Args: %s | Return: %d\n", +
-            $timestamp, +
-            $user, +
-            basename($script), +
-            implode(' ', $args), +
-            $returnCode +
-        ); +
-        file_put_contents($logFile, $entry, FILE_APPEND); +
-    } +
-     +
-    /** +
-     * Vérification des permissions +
-     */ +
-    public function checkPermissions() { +
-        global $USERINFO; +
-         +
-        // Vérifie si l'utilisateur est connecté +
-        if (!isset($USERINFO['name'])) { +
-            return false; +
-        } +
-         +
-        // Optionnel : Restreindre à certains groupes +
-        $allowedGroups = $this->getConf('allowed_groups'); +
-        if ($allowedGroups) { +
-            $userGroups = explode(',', $allowedGroups); +
-            foreach ($userGroups as $group) { +
-                if (in_array(trim($group), $USERINFO['groups'])) { +
-                    return true; +
-                } +
-            } +
-            return false; +
-        } +
-         +
-        return true; +
-    } +
-+
-</code> +
-++++ +
-</adm> +
-3. syntax.php (Syntaxe dans les pages wiki) +
-<adm information 3. syntax.php (Syntaxe dans les pages wiki)> +
-</adm>+
lumo/creation_complete_du_plugin_dokuwiki.1773311196.txt.gz · Dernière modification : de estro

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki