PHPExcel_Worksheet::$_invalidCharacters

Bonsoir,

J’ai une erreur depuis 3j lors des remontées des informations du plugin.
Mon fournisseur est « Tout sur mon eau ».
Aucun pb du plugin jusqu’à présent, je ne sais expliquer ce changement de comportement.

Cela semble coincer au moment du « TRAITE CONSO XLS », avec une erreur du type Erreur sur la fonction cronHourly du plugin : Access to undeclared static property: PHPExcel_Worksheet::$_invalidCharacters

Le debug m’affiche ceci :

0003|[2023-02-09 19:00:06][DEBUG] : heure de relève: 19
0004|[2023-02-09 19:00:06][DEBUG] : ### GET CSRF TOKEN ON https://www.toutsurmoneau.fr/mon-compte-en-ligne/je-me-connecte ###
0005|[2023-02-09 19:00:07][DEBUG] : cURL response : %3C%21doctype+html%3E%0A%3Chtml+lang%3D%22fr%22%3E%0A%3Chead%3E%0A++++++++++++%3Cmeta+name%3D%22viewport%22+content%3D%22initial-scale%3D1.0%2C+maximum-scale%3D1.0%22+%2F%3E%0A++++..........
0006|[2023-02-09 19:00:07][DEBUG] : cURL errno : 0
0007|[2023-02-09 19:00:07][DEBUG] : Extracting token
0008|[2023-02-09 19:00:07][DEBUG] : Token:
0009|[2023-02-09 19:00:07][DEBUG] : ### LOGIN ON https://www.toutsurmoneau.fr/mon-compte-en-ligne/je-me-connecte ###
0010|[2023-02-09 19:00:08][DEBUG] : cURL response : %3C%21doctype+html%3E%0A%3Chtml+lang%3D%22fr%22%3E%0A%3Chead%3E%0A++++++++++++%3Cmeta+name%3D%22viewport%22+content%3D%22initial-scale%3D1.0%2C+maximum-scale%3D1.0%22+%2F%3E%0A++++++++%3Cmeta+name%3D%22google-site-verification%22+content%3D%22gJ6mpHFXmWlv8pZSWxm5B6MoIGMcSl5PAN5A0ewOSjA%22+%2F%3E%0A++++++++%3Cmeta+name%3D%22robots%22+content%3D%22index%2C+follow%2C+noarchive%22+%2F%3E%0A++++++++%3Cscript+type%3D%22text%2Fjavascript%22%3E%0A++++........
0011|[2023-02-09 19:00:08][DEBUG] : cURL errno : 0
0012|[2023-02-09 19:00:08][DEBUG] : ### GO TO CONSOMMATION PAGE ###
0013|[2023-02-09 19:00:08][DEBUG] : cURL response : %3C%21doctype+html%3E%0A%3Chtml+lang%3D%22fr%22%3E%0A%3Chead%3E%0A++++++++++++%3Cmeta+name%3D%22viewport%22+content%3D%22initial-scale%3D1.0%2C+maximum-scale%3D1.0%22+%2F%3E%0A++++++++..........
0014|[2023-02-09 19:00:08][DEBUG] : cURL errno : 0
0015|[2023-02-09 19:00:08][DEBUG] : downloadToken :
0016|[2023-02-09 19:00:08][DEBUG] : url csv : https://www.toutsurmoneau.fr/mon-compte-en-ligne/exporter-consommation/day//2023/02
0017|[2023-02-09 19:00:08][DEBUG] : ### GET DATAFILE CSV ###
0018|[2023-02-09 19:00:08][DEBUG] : ### Create File /tmp/veolia_releve_63e534a8ab58a.xls
0019|[2023-02-09 19:00:08][DEBUG] : ### Curl call https://www.toutsurmoneau.fr/mon-compte-en-ligne/exporter-consommation/day//2023/02
0020|[2023-02-09 19:00:09][DEBUG] : response : 1
0021|[2023-02-09 19:00:09][DEBUG] : error :
0022|[2023-02-09 19:00:09][DEBUG] : response length : 1
0023|[2023-02-09 19:00:09][DEBUG] : cURL errno : 0
0024|[2023-02-09 19:00:09][DEBUG] : alert: 21
0025|[2023-02-09 19:00:09][DEBUG] : ### TRAITE CONSO XLS 4 ###
0026|[2023-02-09 19:00:09][ERROR] : Erreur sur la fonction cronHourly du plugin : Access to undeclared static property: PHPExcel_Worksheet::$_invalidCharacters
0000|PHP Warning:  DOMDocument::loadHTML(): Tag header invalid in Entity, line: 29 in /var/www/html/plugins/veolia_eau/3rparty/PHPExcel/Classes/PHPExcel/Reader/HTML.php on line 495
0001|PHP Warning:  DOMDocument::loadHTML(): Tag nav invalid in Entity, line: 29 in /var/www/html/plugins/veolia_eau/3rparty/PHPExcel/Classes/PHPExcel/Reader/HTML.php on line 495
0002|PHP Warning:  DOMDocument::loadHTML(): Tag nav invalid in Entity, line: 29 in /var/www/html/plugins/veolia_eau/3rparty/PHPExcel/Classes/PHPExcel/Reader/HTML.php on line 495
0003|PHP Warning:  DOMDocument::loadHTML(): Tag footer invalid in Entity, line: 33 in /var/www/html/plugins/veolia_eau/3rparty/PHPExcel/Classes/PHPExcel/Reader/HTML.php on line 495

Si quelqu’un a une piste à creuser svp ?

1 « J'aime »

Je suis également dans ton cas, je vais essayer de regarder un peu …

Le fichier excel qui est téléchargé n’est pas au bon format, donc forcément, ça ne peut pas marcher :frowning:
Pas sur que cela vienne du plugin

Je confirme, dans /tmp/, le fichier « .xls » renvoie cette page :

Peut-être une nouvelle protection captcha ?

Bonjour,

J’ai aussi le même problème depuis le 05/02/23.

Je constate que le token n’est pas récupéré :

0015|[2023-02-09 19:00:08][DEBUG] : downloadToken :

Et que le lien généré qui doit avoir se token ne l’a pas…

0019|[2023-02-09 19:00:08][DEBUG] : ### Curl call https://www.toutsurmoneau.fr/mon-compte-en-ligne/exporter-consommation/day//2023/02

Le tocken devrait être entre les deux slash avant après « day ».

En me connectant sur le site avec un tocken valable, effectivement le fichier *.xsl récupéré est bon et dispose de toutes les informations nécessaire.

Savez-vous si un correctif a été apporté ou va l’être ?

Salutation,
Manu

:wave: :wave: :wave:

même souci et même constat de mon côté

il semblerait que « seul les utilisateurs de toutsurmoneau.fr » soit impacté…

Bonjour,
Oui tout à fait, savez-vous si le développeur du module a été contacté pour apporter une correction ? Ou encore si une alternative existe ?
Cordialement,
Manu

Non, effectviement, cela va être fait : https://github.com/NextDom/plugin-veolia_eau/issues.

Avec le peu de temps que je peu m’accorder sur ce sujet, j’ai essayé de récupérer un « token » qui apparait (via un « regex »), mais cela ne semble pas corriger le problème pour le moment. En plus, il y a les champs « identifiants » et « mot de passe » ont évolué, comme le reste de la page d’identification (cf. le code source d’une archive : http://web.archive.org/web/20230120072248/https://www.toutsurmoneau.fr/).

Bonjour,

Merci pour ce début d’investigation.
J’avais aussi commencé à regarder de mon côté pour comprendre ce qui est fait, où ça bloque et comment résoudre la récupération et l’utilisation du token. Malheureusement, j’ai une trop forte charge de travail en ce moment ce qui ne me permet clairement pas de continuer :frowning:

Salutation,
Manu

1 « J'aime »

Bonjour,

Suez a modifié partiellement son site toutsurmoneau.
Le token est dorénavant présent dans windows.tsme_data sous le nom csrfToken.
En attendant une correction du plugin, j’ai ajouté ces quelques lignes de code (désolé pour la qualité du code) dans le fichier veolia_eau/core/class/veolia_eau_process.class.php après la ligne suivante :

$token = $html->find(‹ input[name= ›.$tokenFieldName.’]’, 0)->value;

N’oubliez pas de sauvegarder le fichier veolia_eau_process.class.php avant de le modifier.

Cette modification fonctionne sur mon jeedom depuis quelques jours quand le site toutsurmoneau est opérationnel.

          // Ajout : Extraction token pour le nouveau site toutsurmoneau
	    if ($website == 4) {
		preg_match("/csrfToken.*,/", $response, $matches);
		$token = implode($matches);
    		$token = str_ireplace("\u002D","-",$token);
    		$token = str_ireplace("csrfToken\u0022\u003A\u0022","",$token);
    		$token = str_ireplace("\u0022,","",$token);
        	log::add('veolia_eau', 'debug', 'Token: '.$token);
    
	    }
	    // Fin Ajout toutsurmoneau

Cordialement,
Laurent.

4 « J'aime »

:wave: :wave: :wave:

merci pour cette modif, appliqué et fonctionnelle…
j’ai juste supprimé la ligne log::add('veolia_eau', 'debug', 'Token: '.$token); originel après ta modif car elle fait double emploi avec celle que tu appelles dans ta modif…

nota : modif a insérer en ligne 522

code originel

            $token = $html->find('input[name='.$tokenFieldName.']', 0)->value;
            log::add('veolia_eau', 'debug', 'Token: '.$token);

devient

            $token = $html->find('input[name='.$tokenFieldName.']', 0)->value;
            // Ajout : Extraction token pour le nouveau site toutsurmoneau
            if ($website == 4) {
              preg_match("/csrfToken.*,/", $response, $matches);
              $token = implode($matches);
              $token = str_ireplace("\u002D","-",$token);
              $token = str_ireplace("csrfToken\u0022\u003A\u0022","",$token);
              $token = str_ireplace("\u0022,","",$token);
              log::add('veolia_eau', 'debug', 'Token: '.$token);
            }
            // Fin Ajout toutsurmoneau
            //log::add('veolia_eau', 'debug', 'Token: '.$token);

Super. :grin: :+1:

Le plugin va être mis à jour avec la correction

2 « J'aime »

Corrigé dans la version beta, passera en stable d’ici 2 semaines (si tout va bien)

Bonjour,
Je viens de tester la correction d’extraction du token et ça fonctionne très bien !
Merci pour la réactivité et le travail !
Manu

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.