[Résolu][Basic] verifyLibraryPassword dysfonctionne

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

[Résolu][Basic] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »

Bonjour,

Voici mon cas de figure:
Dans mon document (Clas pour le classeur) j'ai créé deux librairies basic Lib1 et Lib2 en plus de celle par défaut standard.

Lib1 est protégée par mot de passe 12345678 ( elle contient une dizaine de modules de X macros et autant de boîtes de dialogues type Dialog)
Lib2 n'a pas de mot de passe ( elle contient un module et 2 grosses macros)

Différents boutons sont dans mon document et sont liés à des macros contenues dans Lib1 et Lib2.
Je n'ai pas de souci pour que l'ensemble fonctionne sans avoir à déprotéger Lib1 sauf dans un cas de figure où une macro de Lib2 (Macro2) est appelée par une autre de Lib1 (Macro1) et que Macro2 utilise la commande :
CreateUnoService("com.sun.star.system.SystemShellExecute").execute(ConvertToUrl(ChemVbs),"", 0)

( Je précise que j'ai bien chargé Tools par GlobalScope.BasicLibraries.LoadLibrary("Tools") dans le début de Macro2 et vérifié que ChemVbs est valide et renvoie à un fichier réel et fonctionnel.

Macro1 a pour fonction d'extraire le contenu d'une feuille de Clas contenant plusieurs dizaines de milliers de lignes dans un csv et de traiter ce dernier par d'autres macros de Lib1 puis si les conditions sont remplies par le traitement , Macro1 fait appel à Macro2
Macro2 a pour fonction de créer un fichier type vbs dans les temporaires et de l'exécuter et suite à cela de faire appel à une autre macro de Lib2

Le vbs compense la lenteur du traitement par le code Basic d'open .

1er cas de figure sans déprotéger Lib1

Je lance Macro1 qui fait son travail ( je vois bien le csv se créer et le traitement demandé se réaliser jusqu'à ce que Macro1 fasse appel à Macro2 via ce bout de code :
If Clas.BasicLibraries.isLibraryPasswordProtected("Lib1")=False Then
' Ne fonctionne pas et renvoie une erreur!
' basicLibraries.verifyLibraryPassword("Lib1","12345678")
' Fonctionne mais ne pas oublier ensuite de remettre le mot de passe
Clas.basicLibraries.changeLibraryPassword("Lib1","12345678","")
End If
BasicLibraries.LoadLibrary("Lib2")
Macro2


Et là j'obtiens un message d'alerte d'Open Office "Valeur ou type de donnée interdit index hors de la plage définie"

2em cas de figure :

Je rentre manuellement mon code 12345678 en cherchant à afficher Lib1 et si je relance Macro1 tout fonctionne très bien.

En ayant fait de nombreux ( et douloureux) tests j'en viens à déterminer que la commande basicLibraries.verifyLibraryPassword("Lib1","12345678") est bloquante et renvoie une erreur. J'ai même essayé sur un document plus léger avec le même souci. Par contre si j'écrase le mot de passe par Clas.basicLibraries.changeLibraryPassword("Lib1","12345678","") j'arrive à travailler mais c'est moyen car justement je ne voudrais pas déprotéger le code.

Malgré de nombreuses heures de recherche sur la toile je n'ai rien trouvé sur ce bug de verifyLibraryPassword . Est -ce que quelqu'un aurait une proposition à ce propos ? J'ai testé sur Open Office 3.X et 4.X même combat. Libre Office j'en parle même pas car il bloque définitivement l'accès au mot de passe sans parler des bugs divers et multiples que je rencontre avec. ( bref je suis fan d'Open Office depuis plus de dix ans et très méfiant avec Libre Office depuis quelques temps)
Dernière modification par micmac le 29 févr. 2016 07:38, modifié 2 fois.
Raison : Balisage dans le premier message SVP
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12659
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: verifyLibraryPassword bogue ?

Message par Bidouille »

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?

Lisez ce fil pour savoir quelle balise utiliser : http://forum.openoffice.org/fr/forum/su ... html#27295

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »

Désolé et merci . J'en tiendrai compte à l'avenir. :marto:
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par bm92 »

Bonsoir,
Comme d'habitude : fournir un fichier, le plus simple possible, reproduisant le problème.
Comment joindre un fichier.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »

Ok, je prépare ça et je reviens :oops:
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »

Bonjour,

En espérant cette fois avoir suffisamment décrit mon souci. J'ai préparé cette pièce jointe. La feuille contenue détaille le contenu .

Attention sauf si mon installation d'Open était totalement foireuse ( alors dans la foulée j'aurais une bonne vingtaine de machines qui me poseraient de graves problèmes et une bonne dizaine d'applis qui ne fonctionneraient pas bien et j'aurais pris des grosses gueulantes depuis pas mal de temps :oops: . ) j'ai le sentiment que dans les dernières version d'Open Office cette notion de password est peu ou mal gérée. Il me semble me souvenir que dans les versions antérieures au moins jusqu'au début de la 3.X la fonction en question marchait.

Je constate si je fais appel à un script extérieur type vbs écrit par OO que je peux écrire dans les temporaires sans aucun souci que le mot de passe de ma librairie Lib1 soit ou non levé. Par contre tant que je ne retire pas le mot de passe de Lib1 impossible de lancer CreateUnoService("com.sun.star.system.SystemShellExecute").execute(ConvertToUrl(Chem),"", 0) ça se finit par une erreur envoyée par Open.

et pourtant la macro en question est dans une librairie sans mot de passe (Lib2), seule Lib1 est protégée.

Dès que je retire le mot de passe de Lib1 tout roule.

Vous me direz alors que le plus simple serait de ne pas mettre de mot de passe. Or Lib1 par ses différentes macros fait appel à des chemins et à des algorithmes sensibles que je ne peux pas laisser accessibles au premier venu. Alors même si c'est imparfait comme protection, le mot de passe c'était déjà pas si mal .... bref si quelqu'un avait un truc pour m'aider avec cette histoire de mot de passe sans le faire sauter ce serait génial.

Voire si basic se révèle impropre à faire le boulot, est-ce que je ne peux pas faire appel à java, c ou javascript , python ou autre pour me dépanner ?

Pour rappel ( mais avec un script vbs ça devenait évident, je suis sur Windows à savoir le 7 64 bits version Pro)

Merci de votre attention
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par bm92 »

Bonjour,
Testé avec Apache OpenOffice 4.1.1 sur Windows 7
Dans Lib2 Module4 Macro2, j'ai supprimé (mis en commentaire) les lignes testant et modifiant le mot de passe.
Sauvé, rechargé.
Lancé avec le bouton "Message Boum produit avec vbs".

Résultat :
J'obtiens bien un message B O U M ! produit par le script vbs.
J'essaie d'ouvrir Lib1 : on me demande le mot de passe.

Où est le problème ?
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »


La modération vous a écrit: Pour répondre à un message, utilisez le bouton RÉPONDRE (en bas de page à gauche) et non le bouton CITER, ce qui évite de citer l'ensemble du message précédent rendant la lecture très difficile.

Bonjour,

Merci de votre attention. Le problème demeure si je tente justement de jouer sur le mot de passe avec le code et particulièrement avec verifyLibraryPassword dont j'ai besoin . C'était là d'ailleurs le sujet de ma requête. Le reste n'est qu'un reflet très allégé de mon classeur de base. Voir à ce propos le bouton orange "Boîte de dialogue N°1 de Lib1faisant appel à Lib1.Module1.LanceurDialog1" et dans la boîte de dialogue générée le bouton permettant de tester verifyLibraryPassword. ....
Dernière modification par Oukcha le 27 févr. 2016 08:21, modifié 1 fois.
Raison : Suppression citation intégrale du précédent message.
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »

Bonjour,

Merci de votre attention. Le problème demeure si je tente justement de jouer sur le mot de passe avec le code et particulièrement avec verifyLibraryPassword dont j'ai besoin . C'était là d'ailleurs le sujet de ma requête. Le reste n'est qu'un reflet très allégé de mon classeur de base. Voir à ce propos le bouton orange "Boîte de dialogue N°1 de Lib1faisant appel à Lib1.Module1.LanceurDialog1" et dans la boîte de dialogue générée le bouton permettant de tester verifyLibraryPassword. ....
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par bm92 »

Bon, cette dernière question est plus claire que le document.

Lisons attentivement la documentation IDL (en anglais) de l'interface XLibraryContainerPassword.
Elle dit pour verifyLibraryPassword : si le mot de passe est déjà vérifié, alors une erreur est déclenchée.
Donc, avant d'utiliser verifyLibraryPassword, il faut tester isLibraryPasswordVerified !

Et si on le fait, on constate que depuis une bibliothèque protégée l'appel de isLibraryPasswordVerified sur cette bibliothèque répond : Vrai.

Conclusion : depuis une bibliothèque protégée, il n'est pas possible de vérifier le mot de passe. Peut-être pour des raisons subtiles de sécurité.
Je ne vois d'ailleurs pas pour quelle raison on aurait besoin de vérifier qu'une bibliothèque protégée est bien protégée avec le bon mot de passe. Si le mot de passe a changé, c'est qu'il ne protégeait rien.
Cependant j'ai trouvé un contournement : utiliser changeLibraryPassword avec le mot de passe supposé. S'il y a une erreur, le mot de passe a été changé.

Voici un document vraiment simple, résumant ces conclusions. Faire attention aux libellés affichés par chaque MsgBox.
A chaque modif des macros, il est plus sûr de relancer OpenOffice, ou au moins de recharger le document, à cause des bibliothèques chargées ou pas.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »

:D :bravo: Vous êtes un chef comme toujours !

Je n'avais pas pensé à ça dans les x tests que j'ai pu réaliser avant de m'inscrire sur le forum. Je n'en pouvais plus et la solution comme souvent était devant mon nez ! M'inspirant de votre réponse, j'ai modifié mon code en jouant sur Lib1 (protégée) par un test directement dans Lib1 et un autre dans Lib2.

On suppose que Clas=ThisComponent défini par un Global Clas As Object me permettant de définir Clas dès l'ouverture du document sans avoir besoin de le redéfinir x fois.

Code : Tout sélectionner

Sub Test_verifyLibraryPasswordLib1
	If Clas.BasicLibraries.isLibraryPasswordProtected("Lib1")=True Then
		' Contexte où Lib1 est protégée 
		If Clas.BasicLibraries.isLibraryPasswordVerified("Lib1")=True Then
			' Si le mot de passe a déjà été vérifié : ne plus l'interroger avec basicLibraries.verifyLibraryPassword("Lib1","12345678")
			Msgbox "Mot de passe déjà vérifié, normalement Lib1 devrait être utilisable sans générer d'erreur"
		Else
			' le mot de passe n'a pas encore été vérifié : on peut utiliser basicLibraries.verifyLibraryPassword("Lib1","12345678")
			basicLibraries.verifyLibraryPassword("Lib1","12345678")
			Msgbox "Mot de passe accepté, normalement Lib1 devrait être utilisable sans générer d'erreur"
		End If
	Else
		 'Contexte où Lib1 n'est plus protégée
		 Msgbox "Lib1 n'est plus soumis au mot de passe"
	End If
End Sub
Cette même macro fonctionne sans générer d'erreur quelque soit son emplacement soit dans Lib1 protégée comme dans Lib2. L'avantage par rapport à ChangeLibraryPassword c'est de ne pas faire sauter le mot de passe mais d'ouvrir le temps de la session la bibliothèque Lib1.

Je marque donc ce sujet comme résolu en vous remerciant encore de votre attention. :super: :bravo:
Avec cependant une autre question subsidiaire qui découle du résultat obtenu : une fois que le mot de passe est vérifié le code de Lib1 est ouvert. Hormis devoir fermer le document, peut-on envisager de recacher le code ?
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
toucan
MOOdérateur
MOOdérateur
Messages : 182
Inscription : 22 févr. 2016 23:49

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par toucan »

Bonsoir
christophe.joyau a écrit :Je marque donc ce sujet comme résolu en vous remerciant encore de votre attention.
Pour marquer un fil comme [Résolu} Voir :A propos des balises - Comment mettre [Résolu] ou [Issue]
christophe.joyau a écrit :Avec cependant une autre question subsidiaire
Nous vous rappelons que la règle n° 7 stipule qu'il ne faut mettre qu'une question par fil.
Afin que nous puissions avoir une base de connaissance efficace lors d'une recherche sur un seul de vos problèmes, nous vous prions de créer autant de fils que de questions.
Merci de votre collaboration.
ApacheOpenOffice 4.1.2 sous Xubuntu 15.10
Avatar de l’utilisateur
christophe.joyau
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 24 févr. 2016 09:43

[Résolu] verifyLibraryPassword dysfonctionne

Message par christophe.joyau »

Décidément j'ai bien des choses à apprendre sur les us et coutumes locales !

Juste une dernière précision , j'ai donc repris mon projet en m'inspirant des explications de Bm92 et de ce que je croyais avoir compris par mes essais. En fait, en effet, verifyLibraryPassword("Lib1","12345678) ne génère plus d'erreur si on l'intègre dans une boucle testant isLibraryPasswordProtected("Lib1") quelque soit la librairie contenant ce jeu de commandes.

Or, si ce jeu de commandes se situe dans Lib1, certes la commande semblera fonctionner et ne plus générer d'erreurs mais Open deviendra alors erratique et les commandes suivantes aussi classiques soient-elles ne seront plus correctement interprétées et Open renverra alors tous les types de messages d'erreurs possibles ....

Par contre, si le jeu de commandes en question se situe dans n'importe quelle autre Librairie tout fonctionne alors sans peine et sans erreur étrange...
Open Office 4.1.1 et Apache_OpenOffice_4.1.2_Win_x86_langpack_fr et Windows7 pro 64
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9809
Inscription : 28 août 2010 08:45

Re: [Basic] verifyLibraryPassword dysfonctionne

Message par micmac »

Bonjour,

Pour être visible, le balisage [Résolu] doit être placé dans le PREMIER MESSAGE.
Voyez comment faire : http://user.services.openoffice.org/fr/ ... f=1&t=3299
christophe.joyau a écrit :Décidément j'ai bien des choses à apprendre sur les us et coutumes locales !
Et pas seulement.
Il suffisait de ne pas lire en diagonale le message de toucan

Merci de votre collaboration
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS