[Framework SC] les scenarios en php

Oui j’ai vu ça, c’est la dernière maj de Jeedom qui provoque ça.
Je vais essayer de regarder ça ce WE :wink:

Par ailleurs tout fonctionne bien c’est juste un soucis d’affichage dans les journaux.

Salut,

ça a été corrigé normalement, il faut remettre à jour le core et ça doit être OK.

Corrigé peut être pour le pb d’encodage qu’on semble distinguer dans la capture postée par @aztazt

Mais le log ne prend plus le html directement depuis la dernière maj :

Il faut donc que je corrige de mon côté pour que le html s’affiche de nouveau.

Sauf erreur tu trouveras toutes les infos ici :

Merci !

Dommage, un simple strip_tags() du contenu lors du téléchargement du fichier de log et une limitation des tags et attributs autorisés aurait suffit plutôt que de faire des replace juste pour l’affichage…
J’avais pas vu ce topic.

Du coup c’est pas la première fois que le html est supprimé dans les logs, je vais réfléchir si je le réautorise via l’installation du framework, ou si je fais avec la nouvelle façon, mais cela implique refaire énormément de mofifs partout pour un rendu moins bon…

edit: en attendant vous pouvez rajouter cette ligne dans vos scénario pour désactiver le html :

$sc->htmlLog(false); //Désactive le html dans le log

http://rulistaff.free.fr/sc/doc/?class-sc#_htmlLog

Bon au final j’ai corrigé dans Jeedom, c’est juste une ligne à modifier, c’est ulra simple.
Je modifie l’install du framework et publie une maj. dans le WE…

2 « J'aime »

Hello @dJuL,

Oui, c’est ce que j’avais fait au début, ça semblait super logique effectivement.
Mais strip_tags() est un peu con con et shoot tout jusqu’au prochain > et dans les scenarios il peut y avoir des comparaisons et notamment 42 < 500, donc toute la fin de la ligne disparait…
Cf : Problème d'affichage dans les log scénario - #19 par Bad

Alors tu vas me dire il suffit de les remplacer par &lt;, oui, mais ca fout la zone dans l’afichage en mode brut… donc j’ai fait au moins pire, la cible dans l’alpha est beaucoup plus propre.

Bad

Ah ok je pensais que strip_tag() était meilleur que ça…
Après on peut « triché » avec un regexp en se disant qu’en html il n’y a pas d’espace dans les balises mais c’est un peu bidouille.

En tout cas en JS pas de soucis :

console.log($('<i/>').html('<span> 2 < 5 & 5 > 2 </span>').text());

=> 2 < 5 & 5 > 2

Update du Framework SC v0.995f en ligne :slightly_smiling_face:


Changelog v0.995f :

  • Mise à jour de l’installation et de l’intégration dans Jeedom afin de supporter à nouveau l’affichage des logs en HTML, supporte également l’affichage en mode brut. Reste compatible avec la nouvelle coloration des logs intégrée à Jeedom.

J’ai fait un truc mieux que juste réactiver le html, ayant vu que la sécurité du html pouvait poser des questions de sécurité à certains, le html est entièrement filtré et sécurisé: pas de JS possible aucun événement possible, aucun lien externe autorisé

  • Maj de la doc

  • Petites corrections et optimisations

  • Compatible avec Jeedom v4.xx et Jeedom v3.xx (certaines fonctions récentes ne fonctionneront pas sous Jeedom v3)


Pour installer le Framework SC et/ou voir la doc c’est ICI


log HTML :

log BRUT :

Voici le code qui gère le html (également dispo dans la doc Function Installation | Framework sc en bas de page) :

      /**
       * Framework SC / HTML SECURE LOG
       */
      if (colorMe) {
        if (isScenaroLog) {
          log = jeedom.log.scenarioColorReplace(log)
        } else {
          log = jeedom.log.stringColorReplace(log)
        }
        log = $($.parseHTML(log, false)); //parse HTML and remove <script>...</script>
        log.filter('*').add(log.find('*')).each(function() { //all elements 
          var el = $(this),
            attributes = this.attributes;
          $.each(attributes, function(i) { //all attributes
            if (attributes[i]) {
              var attr = attributes[i].name.toLowerCase();
              if (['style', 'class', 'href', 'target'].indexOf(attr) == -1) { //remove all attributes exept whitelist
                el.removeAttr(attr);
              }
              else if (attr == 'href' && /^https?:\//i.test(el.attr('href'))) { //remove all external links
                el.removeAttr('target').attr('href', '#external-link-forbidden');
              }
            }
          });
        });
        _params.display.empty().append(log); //append html log
      }
      else {
        log = $($.parseHTML(log, false)); //parse HTML and remove <script>...</script>
        log.filter('style').add(log.find('style')).remove(); //remove <style>...</style>
        _params.display.text(log.text()); //remove all html tags and decode to plain text
      }
      /**
       * Fin Framework SC
       */

:slight_smile:

3 « J'aime »

Bonjour dJuL,

On dirait que côté hébergement Free il y a eu un problème :

J’ai remarqué cela pour ma part vers minuit cette nuit.

Merci, je vais migré ça ailleurs.
Cet hébergement doit avoir au moins 20 ans et ils désactivent ça d’un coup sans prévenir…
Bon après c’est gratuit, donc…

Update du Framework SC v0.995g en ligne :slightly_smiling_face:


Changelog v0.995g :

  • Migration du framework, le site free ayant été suspendu et demandant trop de contraintes pour le débloquer.

  • Maj de la librairie $sc->install()

  • Maj du fichier d’installation

  • Maj de la doc

  • Petites corrections et optimisations

  • Compatible avec Jeedom v4.xx et Jeedom v3.xx (certaines fonctions récentes ne fonctionneront pas sous Jeedom v3)


Pour installer le Framework SC et/ou voir la doc c’est ICI


Il faudra modifier vôtre scenario d’installation/maj du framework avec le nouveau lien :

eval(file_get_contents("https://www.jpi-domotique.com/sc/install"));

https://www.jpi-domotique.com/sc/doc/?Installation

2 « J'aime »

Quelle réactivité, c’est ouf, merci @dJuL ! :+1:
(et en plus, ça fonctionne ! :slight_smile: )

Update du Framework SC v0.995h en ligne :slightly_smiling_face:


Changelog v0.995h :

  • Maj du fichier d’installation
    Le bouton download du fichier de log dans Jeedom télécharge le contenu du log en JS (et non plus via le serveur) afin de supprimer le HTML dans le fichier téléchargé (uniquement si le navigateur le supporte).
    image

  • Maj de la doc (typo / corrections / maj de vieux lien vers l’ancien forum)

  • Petites corrections

  • Compatible avec Jeedom v4.xx


Pour installer le Framework SC et/ou voir la doc c’est ICI


Pour ceux qui sont encore en v0.995f ou antérieure Il faudra modifier vôtre scenario d’installation/maj du framework avec le nouveau lien :

eval(file_get_contents("https://www.jpi-domotique.com/sc/install"));

Voici le code qui gère le download en JS (également dispo dans la doc Function Installation | Framework sc en bas de page) :

if (URL && URL.createObjectURL) { //HTML5 download
  $('#bt_scenarioLogDownload').off('click').on('click', function() {
    if (colorMe) {
      log = log.clone();
      log.filter('style').add(log.find('style')).remove(); //remove <style>...</style>
    }   
    var url = URL.createObjectURL(new Blob([ log.text() ], { type: 'text/plain' }), { oneTimeOnly: true });
    $(this).attr({ href: url, download: _params.log.split('/').pop(), target: '_blank' });
    setTimeout(function() {
      URL.revokeObjectURL(url);
    }, 250);
  });
}

:slight_smile:

1 « J'aime »

Bonjour,
Je n’arrive plus à visualiser correctement les logs de mes scénarios écrits en PHP (balises HTML), j’ai beau vider le cache du navigateur et/ou faire un CTRL+F5 rien n’y fait, ça semble etre récent (peut etre une des dernières mises à jour de Jeedom ?), quelqu’un aurait une idée ?
Version Jeedom : 4.4.3
Version SC : V0995h

Merci

Oui j’ai pas encore regarder la dernière maj de Jeedom, surement pour ça…

Salut j’ai le même problème:

Merci de ton retour

Bonjour,
J’ai le problème aussi pour l’affichage des logs pas en HTML… L’installation échoue à remplacer le code sur le fichier JS (les 2 classes PHP c’est bon)

[2024-04-30 16:08:37][SCENARIO] Insertion des modifications afin d'intégrer le framework dans Jeedom
[2024-04-30 16:08:37][SCENARIO] Backup du fichier <b><i>/var/www/html/core/class/scenarioExpression.class.php</i></b>...
[2024-04-30 16:08:37][SCENARIO] Backup éffectué vers <b><i>/var/www/html/core/class/scenarioExpression.class.php.bak</i></b>
[2024-04-30 16:08:37][SCENARIO] Sauvegarde du fichier <b><i>/var/www/html/core/class/scenarioExpression.class.php</i></b>
[2024-04-30 16:08:37][SCENARIO] Ouverture du fichier <b><i>/var/www/html/core/class/scenario.class.php</i></b>
[2024-04-30 16:08:37][SCENARIO] Insertion des modifications afin d'intégrer le framework dans Jeedom
[2024-04-30 16:08:37][SCENARIO] Backup du fichier <b><i>/var/www/html/core/class/scenario.class.php</i></b>...
[2024-04-30 16:08:37][SCENARIO] Backup éffectué vers <b><i>/var/www/html/core/class/scenario.class.php.bak</i></b>
[2024-04-30 16:08:37][SCENARIO] Sauvegarde du fichier <b><i>/var/www/html/core/class/scenario.class.php</i></b>
[2024-04-30 16:08:37][SCENARIO] Ouverture du fichier <b><i>/var/www/html/core/js/log.class.js</i></b>
[2024-04-30 16:08:37][SCENARIO] Insertion des modifications afin d'intégrer le framework dans Jeedom
[2024-04-30 16:08:37][SCENARIO] Le framework semble déjà intégré dans le fichier <b><i>/var/www/html/core/js/log.class.js</i></b>

Du coup je regarde dans le fichier log.class.js et il n’y a aucun remplacement effectué…
Optimiste, je me dis que je vais faire le remplacement manuellement comme indiqué dans la doc :slight_smile: mais ça n’a pas marché quand même… même aptrès ctrl+F5

Oui désolé, pas de temps en ce moment, donc j’ai pas migré, donc j’ai pas encore fait les modifs du framework.
Il suffit de désactiver le html en début de vos scénarios en attendant que je m’en occupe :