Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions core/class/script.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -229,13 +229,14 @@ public function execute($_options = null) {
return script::$_requet_cache[$request];
}
$cmd = 'sudo chmod +x ' . explode(' ', $request)[0] . ' 2>/dev/null;';
if (strpos($request, '.php') !== false) {
$use_shebang = $this->getConfiguration('useShebang', '0') == '1';
if (!$use_shebang && strpos($request, '.php') !== false) {
$cmd .= 'php ' . $request;
} elseif (strpos($request, '.rb') !== false) {
} elseif (!$use_shebang && strpos($request, '.rb') !== false) {
$cmd .= 'ruby ' . $request;
} elseif (strpos($request, '.py') !== false) {
} elseif (!$use_shebang && strpos($request, '.py') !== false) {
$cmd .= 'python ' . $request;
} elseif (strpos($request, '.pl') !== false) {
} elseif (!$use_shebang && strpos($request, '.pl') !== false) {
$cmd .= 'perl ' . $request;
} else {
$cmd .= $request;
Expand Down
16 changes: 9 additions & 7 deletions desktop/js/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,9 @@ $("#table_cmd tbody").delegate(".cmdAttr[data-l1key=configuration][data-l2key=re
if ($(this).value() == 'script') {
$(this).closest('tr').find('.browseScriptFile').show()
$(this).closest('tr').find('.editScriptFile').show()

$(this).closest('tr').find('.tdRequest').attr('colspan', '2')
$(this).closest('tr').find('.tdOptions').hide()
} else {
$(this).closest('tr').find('.browseScriptFile').hide()
$(this).closest('tr').find('.editScriptFile').hide()

$(this).closest('tr').find('.tdRequest').attr('colspan', '1')
$(this).closest('tr').find('.tdOptions').show()
}
})

Expand Down Expand Up @@ -117,7 +111,15 @@ function addCmdToTable(_cmd) {
tr += '</td>'

tr += '<td class="tdOptions">'
tr += '<div class="requestTypeConfig" data-type="http">'
tr += '<div class="requestTypeConfig" data-type="script">'
tr += '<center>'
tr += '<span><label class="checkbox-inline"><input type="checkbox" class="cmdAttr" data-l1key="configuration" data-l2key="useShebang"/>{{Interpréteur shebang}}'
tr += '<sup><i class="fas fa-question-circle tooltips" title="{{Si cette option est cochée, l\'interpréteur à utiliser est celui de la ligne shebang}}"></i></sup>'
tr += '</label></span> '
tr += '</center>'
tr += '</div>'

tr += '<div class="requestTypeConfig" data-type="http" style="display : none;">'
tr += '<center>'
tr += '<input type="checkbox" class="cmdAttr" data-l1key="configuration" data-l2key="noSslCheck" />{{Vérifier SSL}} '
tr += '<input type="checkbox" class="cmdAttr" data-l1key="configuration" data-l2key="allowEmptyResponse" style="margin-left : 20px;"/>{{Retour vide}} '
Expand Down
2 changes: 1 addition & 1 deletion desktop/php/script.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@
<th style="width: 70px;">{{Type}}</th>
<th style="width: 300px;">{{Requête}}</th>
<th style="width: 360px;">{{Paramètres}}</th>
<th style="min-width:260px;width:400px">{{Options}}</th>
<th style="min-width:120px;width:260px">{{Options}}</th>
<th style="width: 100px;">{{Etat}}</th>
<th style="min-width:80px;width:100px;">{{Actions}}</th>
</tr>
Expand Down
6 changes: 6 additions & 0 deletions docs/fr_FR/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@

- Support des images d'équipement personnalisées (Jeedom 4.5)

# xx/07/2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zoic21 me confirmera mais je crois que le changelog est complété lors des merges

Copy link
Author

@MrWaloo MrWaloo Jul 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce n'est pas moi qui ai rajouté cette ligne

J'ai modifié le descriptif de la PR pour avoir le même changelog que dans le code, pour être sûr qu'il n'y ait qu'une seule version du changelog que je propose.


- Ajout de la possibilité de ne pas forcer l'interpréteur selon une règle propre à Jeedom et qui est incompatible avec certains systèmes (python3 sous Debian 11+).
- Correction de l'erreur d'affichage des options pour un type "HTTP" lors de la création d'une commande alors que le type "script" est sélectionné à ce moment.
- Mise à jour de la documentation et petites corrections de celle-ci

# 01/07/2024

- Correction de bug
Expand Down
26 changes: 14 additions & 12 deletions docs/fr_FR/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,23 @@ Vous retrouvez ici la liste des commandes :
- **Nom** : Ce champ contient le nom que vous souhaitez donner à votre commande/information.
- **Icône** : Ce champ permet d’associer une icône à votre nom (dans ce cas Jeedom remplace le nom par l’icône dans le Dashboard).
- **Type de script** :
- Le type **http** : permet d’envoyer une requête vers un équipement externe sans forcément attendre un retour de cette commande. L’exemple qui servira de support au type http sera la configuration d’une requête vers une Vera pour allumer une lumière.
- Le type **script** : sert principalement à lancer des scripts internes à Jeedom. L’exemple qui servira de support au type script sera la configuration du script de monitoring température du raspberry.
- Le type **http** : permet d’envoyer une requête vers un équipement externe sans forcément attendre un retour de cette commande. L’exemple qui servira de support au type http sera la configuration d’une requête vers une Vera pour allumer une lumière.
- Le type **XML** : permet de rapatrier des informations encodées en XML depuis un équipement distant. L’exemple qui servira de support au type XML sera la configuration du script pour interroger un Eco-Device.
- Le type **JSON** : permet de rapatrier des informations encodées en JSON depuis un équipement distant. L’exemple qui servira de support au type JSON sera la configuration du script pour interroger Sickbeard (ou XBMC).
- **le type** et le **sous-type**
- Le champ **requête**
- Ce champ doit contenir la requête en elle-même, ou le chemin du script si le champ "type de script" est script. Le bouton "parcourir" : permet de sélectionner le fichier contenu dans le dossier interne à Jeedom.
- Ce champ doit contenir la requête en elle-même, ou le chemin du script si le champ "type de script" est script. Le bouton "parcourir" permet de sélectionner le fichier contenu dans le dossier interne à Jeedom.

> Ce dossier est accessible en SSH dans ``/var/www/html/plugins/script/data/``. Pour info, la commande SSH pour attribuer les droits ``www-data`` à un fichier est : ``sudo chown www-data:www-data NOMDUSCRIPT.EXTENSION``. A savoir que pour exécuter un script, celui-ci doit avoir les droits www-data.
> Ce dossier est accessible en SSH dans ``/var/www/html/plugins/script/data/``. Pour info, la commande SSH pour que ``www-data`` soit le propriétaire d'un fichier est : ``sudo chown www-data:www-data NOMDUSCRIPT.EXTENSION``. A savoir que pour exécuter un script, celui-ci doit appartenir à ``www-data``.

- Le bouton **Editer** : permet d’éditer à l’aide d’un éditeur de code interne un des fichiers contenus dans le répertoire permettant l’accès au code du fichier.
- Le bouton **Nouveau** : permet de créer un fichier de commande.

> Ne pas oublier de saisir le nom du fichier ainsi que son extension complète sous peine de voir votre superbe script ne pas fonctionner. Sans extension Jeedom ne saura pas reconnaître le langage associé à votre fichier. CF : Généralité
> Ne pas oublier de saisir le nom du fichier ainsi que son extension complète sous peine de voir votre superbe script ne pas fonctionner. Sans extension Jeedom ne saura pas reconnaître le langage associé à votre fichier. Il est possible de contourner ce fonctionnement en cochant la case "Interpréteur shebang", ce point est détaillé plus loin.

- Le bouton **Supprimer** : permet de supprimer un fichier de commande.

- Le champ **Options** : Champ avec des options variables suivant le choix du type de script.
- **unité** : unité de la donnée (peut être vide).
- **min/max** : bornes de la donnée (peuvent être vides).
Expand All @@ -61,11 +63,13 @@ Vous retrouvez ici la liste des commandes :

> **Important**
>
> Il faut éviter, autant que possible, dans le chemin du script ou dans les paramètres de celui-ci les caractères spéciaux. Les caractères autorisés étant : les chiffres, les lettres (majuscule ou minuscule)
> Il faut éviter les caractères spéciaux, autant que possible, dans le chemin du script ou dans les paramètres de celui-ci. Les caractères autorisés étant : les chiffres, les lettres (majuscule ou minuscule)

> **Important**
>
> Vous pouvez dans le champs requete (pour http, json, xml) mettre du json, il faut juste le faire preceder de `json::`, exemple `json::{"clef":"valeur"}`
> Dans le champs requête (pour http, json, xml), vous pouvez mettre du json, il faut juste le faire précéder de `json::`, exemple `json::{"clef":"valeur"}`

# Le choix HTTP

![exemple](../images/exemple.png)

Expand Down Expand Up @@ -195,13 +199,11 @@ Le plus sympa mais pas le plus simple à expliquer.
>**IMPORTANT**
>
> L'extension de votre script doit absolument correspondre à son type. En effet Jeedom se base sur l'extension du script pour l'exécutable à lancer
>
> Si le nom de votre fichier ne contient pas :
>
> - .php .py .pl .rb
>

Le plugin script lancera un shell qui l’exécutera en se basant sur la directive de la 1ère ligne ( shebang ).
Si le nom de votre fichier ne contient pas :
- .php .py .pl .rb

ou si la case "Interpréteur shebang" est cochée, le plugin script lancera un shell qui l’exécutera en se basant sur la directive de la 1ère ligne (shebang).
Exemple :

```bash
Expand Down