Bon vous m’avez empêché de dormir
Mais c’est pas grave …
En faite le plugin n’est pas si mal écrit que ça c’est plutôt sa documentation qui aide pas dans cette affaire.
Si l’on regarde bien le code de la classe sur la partie case ‹ script ›.
case 'script':
if($this->getType() == 'info' && isset(script::$_requet_cache[$request])){
$result = script::$_requet_cache[$request];
}else{
if (strpos($request, '.php') !== false) {
$request_shell = new com_shell('php ' . $request . ' 2>&1');
} elseif (strpos($request, '.rb') !== false) {
$request_shell = new com_shell('ruby ' . $request . ' 2>&1');
} elseif (strpos($request, '.py') !== false) {
$request_shell = new com_shell('python ' . $request . ' 2>&1');
} elseif (strpos($request, '.pl') !== false) {
$request_shell = new com_shell('perl ' . $request . ' 2>&1');
}
else {$request_shell = new com_shell($request . ' 2>&1');}
Après avoir tester tout un tas d’extension possible le else final tente simplement d’exécuter le fichier.
Il est donc très simple d’enlever l’extention .py au script pour qu’il soit executer
un détail, ne pas oublier la directive en première ligne du script
#!/usr/bin/env python3
qui dans cet exemple exécutera du python3.
Faut t’il qu’il soit exécutable … 3 solutions.
1 passer par l’éditeur du plugin-script au moment de la sauvegarde des droits d’exécution sont donnés
2 attendre ou lancer une sauvegarde
3 utiliser chmod chown
Bon je vous laisse le PHP et retourne finir ma nuit avec mon python
PS : Faudrait faire une correction de la documentation pour spécifier cette possibilité.