Bonjour,
Comme certain ont pu le voir dans la dernière version bêta et encore plus dans la dernière version alpha, il y a eu un changement majeur sur l’accès aux fichiers par le serveur web.
Avant le .htaccess n’interdisait l’accès qu’à certain type de fichier, maintenant c’est l’inverse nous n’autorisons l’accès qu’à certain type de fichier :(css|js|jpeg|jpg|png|php|html|svg|woff|woff2|ttf|m3u8|ts|ico).
De plus nous interdisons l’accès aux fichiers de type : class.php, com.php, config.php, sample.php. Attention je parle d’accès direct par le navigateur, les chargements au travers d’autres fichiers php sont bien sur possible.
Pour l’alpha on va même encore plus loin, nous autorisons l’accès à certain fichier qu’en fonction de leur répertoire : https://github.com/jeedom/core/blob/alpha/.htaccess#L54
Par exemple dans un répertoire css nous n’autorisons que les fichiers CSS. Vous avez dans le lien précèdent toutes les règles, qui sont loin d’être parfaites et vont demander encore énormément de travail.
Dans 99% des cas pas d’impact pour vos plugins si vous avez des chargements directs de fichier (type json) en javascript par exemple ou des téléchargements depuis l’interface de certain fichier.
Pour le premier cas je vous invite à passer par une requête ajax, cela permet au passage de vérifier que la demande vient bien d’un utilisateur connecté avec les bons droits (admin par exemple).
Pour le 2eme cas vous avez un fichier downloadFile.php dans le core qui permet de gérer les téléchargements de fichiers, même multiple avec gestion des droits (admin obligatoire) et vérifie que le fichier se trouve bien dans le répertoire racine de Jeedom (et pas n’importe où sur le file système).
Voici un exemple d’utilisation :
$('#bt_dockerDownloadBackup').on('click', function() {
window.open('core/php/downloadFile.php?pathfile=/var/www/html/plugins/docker2/data/backup/' + $('.eqLogicAttr[data-l1key=id]').value()+'.tar.gz', "_blank", null)
})
Vous pouvez bien sur l’utiliser en mode relatif.
Enfin dernier cas, si vous voulez accéder à un type de fichier qui ne devrait pas être dans le répertoire en question, dans ce cas il faut le mettre dans le répertoire prévu pour.
Le système de vérification des fichiers dans un répertoire est encore très perfectible et va nous demander de nombreuses heures de correction encore mais nous pensons que c’est un mal nécessaire.