Tâche #20738
Scénario #20629: Traitement express MEN (23-25)
Erreur à l'ouverture de session pour un utilisateur ayant une apostrophe dans son nom ou prénom
Description
Bonjour,
Sur Scribe 2.5.2, avec une alimentation par fichiers AAF, les utilisateurs ayant une apostrophe dans leur nom ou leur prénom (2 cas vus en établissements) ont une erreur à l'ouverture de leur session Windows :
Logon.exe
Une erreur s'est produite lors de l'appel distant (remote_logon) :
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server...
Palliatif : supprimer l'apostrophe dans la fiche via l'EAD mais cela n'est pas durable.
Ce problème ne se produisait pas en Scribe 2.3.
Merci d'avance de ce que vous pourrez faire !
Laurent Brillard
Demandes liées
Révisions associées
Gestion des utilisateurs avec apostrophe
- scribe/login.py : utilisation de la syntaxe préconisée pour "db.cursor"
Ref: #20738
Correction de l’utilisation de l’API MySQLdb.cursors
Il faut toujours passer un tuple pour les substitutions même lorsqu’il
n’y en a qu’une.
- scribe/login.py (log_connexion_db): Passage des valeurs uniques en
tant que tuple.
Ref: #20738
Historique
#1 Mis à jour par Joël Cuissinat il y a presque 7 ans
- Tracker changé de Demande à Tâche
- Projet changé de Scribe à controle-vnc
- Temps estimé mis à 3.00 h
- Tâche parente mis à #20629
- Restant à faire (heures) mis à 3.0
#2 Mis à jour par Joël Cuissinat il y a presque 7 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Joël Cuissinat
#3 Mis à jour par Joël Cuissinat il y a presque 7 ans
Le problème ayant visiblement été introduit par l'utilisation de MySQL en tant que backend du client Scribe, il faudrait vérifier et corriger à partir de la version 2.5.1 : http://eole.ac-dijon.fr/documentations/2.5/partielles/HTML/ModuleScribe/co/07-changements.html#qN193
#4 Mis à jour par Joël Cuissinat il y a presque 7 ans
C'est bien lorsqu'on essaie d'enregistrer/mettre à jour le "displayName" de l'utilisateur dans la base :
File "/usr/share/eole/controlevnc/controle_vnc_serveur.py", line 329, in remote_logon return gest_sessions.Logon().logon(self.ip, os_type, self.blocage) File "/usr/share/eole/controlevnc/gest_sessions.py", line 34, in logon Connexions().get_infos(self.ip, os_type) File "/usr/share/eole/controlevnc/connexions.py", line 421, in get_infos os_type, ip) File "/usr/lib/python2.7/dist-packages/scribe/login.py", line 249, in log_connexion_db c.execute("UPDATE log SET netbios='%s', user='%s', sid='%s', display_name='%s', prim_group='%s', os='%s' WHERE ip='%s'" % (netbios, user, sid, display_name,primgrp, ostype, ip))
On peut également simuler l'erreur avec le script dyn-logon :
root@scribe:~# /usr/share/eole/fichier/dyn-logon.py -u toto -o Vista -m truc -i 55 Traceback (most recent call last): File "/usr/share/eole/fichier/dyn-logon.py", line 70, in main logon(user, ostype, machine, adresse_ip, pid) File "/usr/lib/python2.7/dist-packages/scribe/login.py", line 130, in logon ostype, adresse_ip) File "/usr/lib/python2.7/dist-packages/scribe/login.py", line 256, in log_connexion_db c.execute("INSERT INTO log (netbios, ip, user, sid, display_name, prim_group, os) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (netbios, ip, user, sid, display_name, primgrp, ostype)) File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute self.errorhandler(self, exc, value) File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Toro L'TOTO', 'eleves', 'Vista')' at line 1") None (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Toro L'TOTO', 'eleves', 'Vista')' at line 1")
#5 Mis à jour par Joël Cuissinat il y a presque 7 ans
- Projet changé de controle-vnc à scribe-backend
#6 Mis à jour par Joël Cuissinat il y a presque 7 ans
Il faut utiliser la syntaxe python préconisée pour MySQLdb : https://stackoverflow.com/questions/775296/python-mysql-parameterized-queries
#7 Mis à jour par Joël Cuissinat il y a presque 7 ans
- Fichier login.py Voir ajouté
- % réalisé changé de 0 à 100
- Restant à faire (heures) changé de 3.0 à 0.5
Correction de la librairie python /usr/lib/python2.7/dist-packages/scribe/login.py
(fichier joint pour test/correction manuelle).
Compilation de paquets candidats et mise à jour des changelog pour 2.5.1, 2.5.2, 2.6.0, 2.6.1 + fusion dans master.
#8 Mis à jour par Laurent Brillard il y a presque 7 ans
Merci Joël, je mets en test...
#9 Mis à jour par Scrum Master il y a presque 7 ans
- Projet changé de scribe-backend à Distribution EOLE
- Statut changé de En cours à Résolu
#10 Mis à jour par Laurent Brillard il y a presque 7 ans
Joël, j'ai mis en place le fichier logon.py et apparemment cela plantait les ouvertures de session...
Y a-t-il autre chose à faire que de copier le fichier au bon endroit ?
#11 Mis à jour par Daniel Dehennin il y a presque 7 ans
- Intégration d’une machine au domaine du scribe
- Modification du displayName de
prof.3a
depuis l’EAD ⮕Identité
=prof D'l'a 3a
- Connexion avec le compte
prof.3a
#12 Mis à jour par Daniel Dehennin il y a presque 7 ans
- Restant à faire (heures) changé de 0.5 à 0.25
Cela fonctionne pour moi avec mon correctif.
#13 Mis à jour par Fabrice Barconnière il y a presque 7 ans
- Description mis à jour (diff)
- Restant à faire (heures) changé de 0.25 à 0.0
#14 Mis à jour par Fabrice Barconnière il y a presque 7 ans
Test sur Scribe 2.6.1 OK
#15 Mis à jour par Scrum Master il y a presque 7 ans
- Statut changé de Résolu à Fermé
#16 Mis à jour par Laurent Brillard il y a presque 7 ans
Bonjour,
Sur un Scribe 2.5.2 de test, OK, sur un Scribe d'établissement, j'ai l'erreur :
# service controle-vnc start Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 642, in run runApp(config) File "/usr/lib/python2.7/dist-packages/twisted/scripts/twistd.py", line 23, in runApp _SomeApplicationRunner(config).run() File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 376, in run self.application = self.createOrGetApplication() File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 441, in createOrGetApplication application = getApplication(self.config, passphrase) --- <exception caught here> --- File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 452, in getApplication application = service.loadApplication(filename, style, passphrase) File "/usr/lib/python2.7/dist-packages/twisted/application/service.py", line 405, in loadApplication application = sob.loadValueFromFile(filename, 'application', passphrase) File "/usr/lib/python2.7/dist-packages/twisted/persisted/sob.py", line 210, in loadValueFromFile exec fileObj in d, d File "/usr/share/eole/controlevnc/controle_vnc_serveur.py", line 35, in <module> from connexions import Connexions, Session File "/usr/share/eole/controlevnc/connexions.py", line 19, in <module> from scribe.login import Ldap, log_connexion_db exceptions.SyntaxError: invalid syntax (login.py, line 1) Failed to load application: invalid syntax (login.py, line 1) * already running * Starting controle VNC: controle-vnc [fail]
D'où peux venir le problème ?
#17 Mis à jour par Laurent Brillard il y a presque 7 ans
Erreur de ma part, le fichier n'était pas correctement téléchargé. Je re-teste.
Désolé...
#18 Mis à jour par Joël Cuissinat il y a plus de 6 ans
- Lié à Demande #21400: Problème à l'ouverture de session pour les logins contenant des caractères spéciaux ajouté