Droit en écriture d’un plugin

Bonjour,

Je suis en train de faire en sorte que mon plugin écrive des données dans html/plugins/monplugin/data/x.txt

Tout marche en test sur un jeedom à jour stable sur docker.

Je voudrais juste m’assurer avant de balancer une nouvelle bêta qu’un plugin a toujours le droit de créer un répertoire (data/) et un fichier pour écrire dedans, quelques soit la version de jeedom et l’os (smart, diy, rasp etc)

Pour info j’aurai un fichier txt par équipement nommé d’apres l’id de l’équipement. Ex : monplugin/data/eq56.txt

Merci

Hello,

je fais la même chose que toi, j’utilise un fichier dans data.

pour ma part, je crée le dossier dans github (qui contient un fichier .dummy car il ne peut être vide)

et au début de mes dépendances, je set les droits pour être certain (ca date de quand il y avait les problèmes après restauration) :
https://github.com/NebzHB/plugin-homebridge/blob/beta/resources/install_homebridge.sh#L15

ensuite chaque fois que je lis ou écrit dedans, je set les droits à nouveau.(avant et après)
https://github.com/NebzHB/plugin-homebridge/blob/beta/core/class/homebridge.class.php#L185

je sais ca peut paraître excessif mais voilà :stuck_out_tongue:

Ah oui en effet !

Je suis parti sur un truc plus light:

//write to file:
        $dataPath = dirname(__FILE__).'/../../data/';
        if (!is_dir($dataPath))
        {
            log::add('jeelog','debug','mkdir data folder');
          	if (mkdir($dataPath, 0777, true) === false )
			{
				log::add('jeelog','error','Impossible de créer le dossier data');
			}
		}
        else
        {
          if ( !is_writable($dataPath))
          {
            log::add('jeelog','error','Impossible d\'écrire dans le dossier data');
          }
        }

      	$eqId = $eqLogic->getId();
        log::add('jeelog', 'debug', 'eqId: '.$eqId);
        try
        {
          $filePath = $dataPath.'eq'.$eqId.'.txt';
          log::add('jeelog', 'debug', 'Log file path: '.$filePath);
          $dataFile = fopen($filePath, 'w');
          fwrite($dataFile, $data);
          fclose($dataFile);
        }
        catch (Exception $e)
        {
          $e = print_r($e, 1);
          log::add('jeelog', 'error', 'Impossible d\' écrire le fichier de données: '.$e);
          return false;
        }

pas si light que ca :wink:

j’ai joué la sécurité de mon coté… meme si un autre plugin modifie le dossier principal ou bien si le core change qqch, mes droits seront toujours corrects

T’inquiete Je garde ta soluce en cas de soucis :slight_smile:

Je pense tu auras moins de risque en faisant un execcmd avec getsudo.