Skip to content

Latest commit

 

History

History
583 lines (433 loc) · 34.8 KB

README_fr.md

File metadata and controls

583 lines (433 loc) · 34.8 KB

Documentation

This document in english.

L'utilisation de ce logiciel vous soumet à nos Conditions d'Utilisation et à notre Politique de Protection des Données.

version 1.3.9

Introduction:

OAuth2OOo fait partie d'une Suite d'extensions LibreOffice et/ou OpenOffice permettant de vous offrir des services inovants dans ces suites bureautique.

Cette extension est l'implémentation du protocole OAuth 2.0. Protocole permettant d'obtenir votre consentement pour qu'une application puisse accéder à vos données présentes chez les GAFA.

Elle permet d'exécuter des requêtes HTTP en BASIC et fournit les macros suivantes à titre d'exemple:

Si au préalable vous ouvrez un document, vous pouvez les lancer par:
Outils -> Macros -> Exécuter la macro... -> Mes macros -> OAuth2OOo -> nom-macro -> Main -> Exécuter

Elle permet également de récupérer des données Internet dans une feuille Calc. Voir les fichiers Calc suivants à titre d'exemple:

Et enfin, elle permet de piloter Firefox par un fichier Calc (ou tout autre navigateur pris en charge par Selenium). Voir les fichiers suivant:

Etant un logiciel libre je vous encourage:

  • A dupliquer son code source.
  • A apporter des modifications, des corrections, des ameliorations.
  • D'ouvrir un dysfonctionnement si nécessaire.

Bref, à participer au developpement de cette extension. Car c'est ensemble que nous pouvons rendre le Logiciel Libre plus intelligent.


Prérequis:

Afin de profiter des dernières versions des bibliothèques Python utilisées dans OAuth2OOo, la version 2 de Python a été abandonnée au profit de Python 3.8 minimum.
Cela signifie que OAuth2OOo ne supporte plus OpenOffice et LibreOffice 6.x sous Windows depuis sa version 1.1.0. Je ne peux que vous conseiller de migrer vers LibreOffice 7.x.

Les prérequis dépendent de la plateforme (architecture) sur laquelle l'extension est installée:

  • Si vous êtes sous Windows (win32 or win_amd64) vous devez utiliser LibreOffice version 7.x minimum.

  • Si vous êtes sous Linux (x86_64) avec une version Python de 3.8 à 3.12 vous devez utiliser LibreOffice version 6.x ou supérieure (LibreOffice version 7.x est fortement recommandée).

  • Pour toutes les autres plateformes / architectures (Linux, macOS... / aarch64, arm64...) ou version de Python, vous devez:

    • Vous assurez que votre version de Python est 3.8 minimum.
    • Télécharger le fichier requirements.txt.
    • Installer à l'aide de pip, les paquets Python nécessaires à l'extension avec la commande:
      pip install requirements.txt
    • Installer l'extension sous LibreOffice version 6.x ou supérieure.

Sous Linux et macOS les paquets utilisés par l'extension, peuvent s'il sont déja installé provenir du système et donc, peuvent ne pas être à jour.
Afin de s'assurer que vos paquets Python sont à jour il est recommandé d'utiliser l'option Info système dans les Options de l'extension accessible par:
Outils -> Options -> Internet -> Protocole OAuth2 -> Voir journal -> Info système
Si des paquets obsolètes apparaissent, vous pouvez les mettre à jour avec la commande:
sudo -i pip3 install --upgrade <package-name>

Pour plus d'information voir: Ce qui a été fait pour la version 1.3.0.

Si vous voulez piloter Firefox dans Calc sous Ubuntu alors il vous faut reinstaller Firefox à partir du PPA de Mozilla.
Pour installer le PPA de Mozilla veuillez taper la commande:
sudo add-apt-repository ppa:mozillateam/ppa


Installation:

Il semble important que le fichier n'ait pas été renommé lors de son téléchargement.
Si nécessaire, renommez-le avant de l'installer.

Redémarrez LibreOffice après l'installation.
Attention, redémarrer LibreOffice peut ne pas suffire.

  • Sous Windows pour vous assurer que LibreOffice redémarre correctement, utilisez le Gestionnaire de tâche de Windows pour vérifier qu'aucun service LibreOffice n'est visible après l'arrêt de LibreOffice (et tuez-le si ç'est le cas).
  • Sous Linux ou macOS vous pouvez également vous assurer que LibreOffice redémarre correctement, en le lançant depuis un terminal avec la commande soffice et en utilisant la combinaison de touches Ctrl + C si après l'arrêt de LibreOffice, le terminal n'est pas actif (pas d'invité de commande).

Utilisation:

Cette extension n'est pas faite pour être utilisée seule, mais fournit le service OAuth2 à d'autres extensions LibreOffice / OpenOffice.
Voici comment nous utilisons son API:

Créer le service OAuth2:

identifier = "io.github.prrvchr.OAuth2OOo.OAuth2Service"
service = ctx.ServiceManager.createInstanceWithContext(identifier, ctx)

Initialiser la Session ou au moins l'Url:

  • Initialiser la Session:

initialized = service.initializeSession(registered_url, user_account)

La valeur renvoyée: initialized est True si user_account est déjà autorisé pour registered_url.

  • Initialiser l'Url:

initialized = service.initializeUrl(registered_url)

La valeur renvoyée: initialized est True si registered_url a été trouvé avec succès dans la configuration du service OAuth2.

Obtenir le jeton d'accès:

format = 'Bearer %s'
token = service.getToken(format)


Uno OAuth2.0 API pour LibreOffice.

OAuth2OOo Wizard Page1 screenshot

OAuth2OOo Wizard Page2 screenshot

OAuth2OOo Wizard Page3 screenshot

OAuth2OOo Browser Page1 screenshot

OAuth2OOo Browser Page2 screenshot

OAuth2OOo Browser Page3 screenshot

OAuth2OOo Browser Page4 screenshot

OAuth2OOo Wizard Page4 screenshot

Le protocole OAuth2 permet d'accéder aux ressources de serveurs, après acceptation de l'autorisation de connexion, en échangeant des jetons.

La révocation a lieu dans la gestion des applications associées à votre compte.

Plus aucun mot de passe n'est stocké dans LibreOffice.


A été testé avec:

  • LibreOffice 7.3.7.2 - Lubuntu 22.04 - Python version 3.10.12

  • LibreOffice 7.5.4.2(x86) - Windows 10 - Python version 3.8.16 (sous Lubuntu 22.04 / VirtualBox 6.1.38)

  • LibreOffice 7.4.3.2(x64) - Windows 10(x64) - Python version 3.8.15 (sous Lubuntu 22.04 / VirtualBox 6.1.38)

  • LibreOffice 24.8.0.3 (X86_64) - Windows 10(x64) - Python version 3.9.19 (sous Lubuntu 22.04 / VirtualBox 6.1.38)

  • Ne fonctionne pas avec OpenOffice voir dysfonctionnement 128569. N'ayant aucune solution, je vous encourrage d'installer LibreOffice.

Je vous encourage en cas de problème 😕
de créer un dysfonctionnement
J'essaierai de le résoudre 😄


Historique:

Ce qui a été fait pour la version 0.0.5:

  • Ecriture d'une nouvelle interface XWizard afin de remplacer le service Wizard devenu défectueux avec les versions 6.4.x et 7.x de LibreOffice (voir bug 132110).

    Cette nouvelle interface corrige également le bug 132661 et le bug 132666 et permet d'accéder aux versions 6.4.x et 7.x de LibreOffice...

    De plus, ce nouveau XWizard ajoute de nouvelles fonctionnalités telles que:

    • Redimensionnement automatique de l'assistant aux dimensions de la première page affichée.
    • Déplacement automatique vers la page X à l'ouverture si possible.
  • Correction d'un problème avec les jetons sans expiration (tels qu'utilisés par Dropbox) lors du test de leur validité...

  • Beaucoup d'autres correctifs...

Ce qui a été fait pour la version 0.0.6:

  • Réécriture de l'assistant OAuth2 (Wizard) en essayant de suivre au mieux le modèle MVA. Cet assistant est composé de 5 pages héritant de l'interface UNO XWizardPage:

  • Réécriture des trois services UNO fournis par l'extension OAuth2OOo dans trois fichiers distincts:

  • Réécriture de la fenêtre des options accessible par Outils -> Options -> Internet -> Protocole OAuth2. Cette fenêtre est composée de deux fenêtres:

    • La fenêtre de journalisation: Adapteur et Vue.
    • La fenêtre des options de configuration de l'extension OAuth2OOo: Adapteur et Vue.
  • Réécriture d'un modèle de données unique OAuth2Model gérant l'assistant, les services, et la fenêtre des options.

  • L'erreur de flux de bouclage Google a été corrigée. Voir Dysfonctionnement #10

  • Utilisation pour Dropbox de leur nouvelle API avec des jetons expirables.

  • Beaucoup d'autres correctifs...

Ce qui a été fait pour la version 1.0.0:

  • Portage de l'API Python Requests vers l'API LibreOffice / OpenOffice UNO. Deux interfaces UNO sont accessibles:

    L'interface XRequestParameter prend en charge la gestion des jetons de synchronisation ainsi que la pagination des requêtes HTTP, telles qu'elles sont utilisées dans les API HTTP Rest.

  • La mise à jour et le téléchargement des fichiers est possible grâce aux méthodes ou propriétés:

    • XOAuth2Service.download() permettant le téléchargement de fichiers avec reprise.
    • XOAuth2Service.upload() permettant la mise à jour de fichiers avec reprise.
    • XOAuth2Service.getInputStream() pour obtenir un flux d'entrée.
    • XRequestParameter.DataSink pour définir un flux d'entrée.
    • XRequestResponse.getInputStream() pour obtenir un flux d'entrée.
  • Portage de l'API Java javax.json vers l'API LibreOffice / OpenOffice UNO comme défini dans les fichiers idl: com.sun.star.json.*

    • Une fabrique de structures JSON est accessible via l'interface getJsonBuilder() de XRequestParameter.
    • Un analyseur Json est renvoyé par l'interface getJson() de XRequestResponse.

Cela rend les requêtes HTTP utilisant JSON facilement utilisable dans le langage BASIC de LibreOffice.

Ce qui a été fait pour la version 1.0.1:

  • Ecriture de 15 fonctions en AddIns de Calc comme décrit dans les fichiers suivants:

    • Le fichier OAuth2Plugin.idl qui declare à UNO les nouvelles interfaces.
    • Le fichier CalcAddIns.xcu qui rend disponible ces nouvelles interface dans le liste des fonctions de Calc.
    • Le fichier OAuth2Plugin.py qui est l'implementation du service UNO com.sun.star.auth.Oauth2Plugin founissant ces nouvelles interfaces.
    • Le fichier plugin.py qui est la bibliotheque implementant les interface de ce nouveau service UNO.
  • Ces 4 nouveaux fichiers donne acces à 15 nouvelles formules Calc qui sont:

    • GETHTTPBOBY(URL,METHOD,ENCODING,PARAMETERS)
    • PARSEHTML(DATA,PATH,BASEURL)
    • PARSEXML(DATA,PATH,BASEURL)
    • PARSEJSON(DATA,PATH)
    • JAVASCRIPT2XML(DATA,PATH)
    • XML2JSON(DATA,PATH)
    • JAVASCRIPT2JSON(DATA,PATH)
    • DUBLINCORE2JSON(DATA,BASEURL)
    • JSONLD2JSON(DATA,BASEURL)
    • MICRODATA2JSON(DATA,BASEURL)
    • MICROFORMAT2JSON(DATA,BASEURL)
    • OPENGRAPH2JSON(DATA,BASEURL)
    • RDFA2JSON(DATA,BASEURL)
    • FLATTENJSON(DATA,TYPENAME,PATH,SEPARATOR)
    • SPLITJSON(DATA,TYPENAME,PATH,SEPARATOR)

Ce qui a été fait pour la version 1.1.0:

  • Fin du support de Python 2.x et donc d'OpenOffice.

  • Intégration de Selenium version 4.10 dans l'extension afin de rendre LibreOffice capable de piloter un navigateur via des formules Calc insérées dans une feuille de calcul.

  • Utilisation de webdriver_manager version 3.8.6 permettant d'automatiser l'installation du WebDriver du navigateur.

  • Création de 5 formules Calc permettant le pilotage du navigateur:

    • BROWSEROPEN(BROWSER,PATH,INIT,OPTIONS)
    • BROWSERCLICK(SESSION,BY,PATH,URL,INIT,WAIT)
    • BROWSERFIELD(SESSION,BY,PATH,VALUE,URL,INIT,WAIT)
    • BROWSERFORM(SESSION,FORM,URL,INIT,WAIT)
    • BROWSERCONTENT(SESSION,URL,ENCODING)
  • Création d'une formule Calc permettant l'authentification HTTP Basic Auth pour les requêtes HTTP:

    • HTTPAUTH(NAME,PASSWORD)
  • La formule Calc GETHTTPBOBY a été renommée en HTTPCONTENT.

Ce qui a été fait pour la version 1.1.1:

Ce qui a été fait pour la version 1.1.2:

Ce qui a été fait pour la version 1.2.0:

  • Il existe désormais deux méthodes pour créer le service OAuth2Service qui sont :

    • create() sans paramètre, renvoie une instance du service.
    • createWithOAuth2([in] string sUrl, [in] string sUser) avec une Url et l'adresse de l'utilisateur, renvoie une instance du service avec le protocole OAuth2.
      Dans sa deuxième forme, l'assistant d'autorisation OAuth2 (Wizard) se lancera automatiquement si l'étendue des droits de l'Url n'a pas encore été accordée par l'utilisateur (ie : première connexion).
      Si tel est le cas et que l'assistant est abandonné, une valeur nulle sera renvoyée à la place du service demandé.
  • Deux macros BASIC: GoogleAPIRequest et GraphAPIRequest permettent d'effectuer des requêtes HTTP sur les API de Google Contact et Microsoft Graph.
    Le protocole OAuth2 indispensable à l'utilisation de ces API est intégré de manière automatique et transparente aux requêtes HTTP. Vous n'aurez pas à vous en soucier.

Ce qui a été fait pour la version 1.2.1:

  • Ajout d'une nouvelle méthode isAuthorized() à l'interface XOAuth2Service prise en charge par le service OAuth2Service. Cette méthode permet de lancer l'assistant de configuration OAuth2 si l'utilisateur n'est pas autorisé.

Ce qui a été fait pour la version 1.2.2:

  • Correction d'une erreur lors de l'actualisation des jetons OAuth2.

Ce qui a été fait pour la version 1.2.3:

  • Correction d'une erreur sur isAuthorized() du OAuth2Service.

Ce qui a été fait pour la version 1.2.4:

  • Mise à jour des paquets python embarqués.

Ce qui a été fait pour la version 1.3.0:

  • Utilisation de la nouvelle version 3.6.2 de pyRdfa3.
  • Tous les paquets Python nécessaires à l'extension sont désormais enregistrés dans un fichier requirements.txt suivant la PEP 508.
  • Désormais si vous n'êtes pas sous Windows alors les paquets Python nécessaires à l'extension peuvent être facilement installés avec la commande:
    sudo -i pip3 install requirements.txt
  • Simplification de la section Prérequis.
  • De nombreuses corrections...

Ce qui a été fait pour la version 1.3.1:

  • Correction de la propriété Headers dans l'implémentation de l'interface UNO XRequestResponse permettant d'obtenir les en-têtes d'une réponse HTTP.
  • De nombreuses corrections...

Ce qui a été fait pour la version 1.3.2:

  • Intégration des binaires Python 3.8 pour Linux x86_64 et Darwin x86_64, afin d'être compatible avec la version de LibreOffice 24.2.x sous Linux, pour les paquets lxml, ijson, cffi et charset-normalizer.
  • Ouverture du dysfonctionnement #159988 pour impossibilité d'importer des bibliothèques Python contenant des fichiers binaires avec LibreOffice 24.2.x sous Linux.

Ce qui a été fait pour la version 1.3.3:

  • Mise en oeuvre d'une solution de contournement pour le dysfonctionnement #159988 dont la résolution risque de prendre du temps.

Ce qui a été fait pour la version 1.3.4:

Ce qui a été fait pour la version 1.3.5:

Ce qui a été fait pour la version 1.3.6:

La mise à jour de tous ces paquets Python devrait permettre d'utiliser Python 3.8, 3.9, 3.10, 3.11 et 3.12 sous l'architecture ManyLinux x86_64.
Pour les architectures win32 et win_amd64, seule la version 3.8 de Python est prise en charge. Cela signifie, puisque Python est intégré à LibreOffice pour ces architectures, que seules les versions 7.x et 24.x de LibreOffice sont prises en charge.
Si votre architecture n'est pas encore supportée par OAuth2OOo (Mac OSX, arm...), je vous conseille d'ouvrir un dysfonctionnement pour que je puisse ajouter les fichiers binaires manquants.

Ce qui a été fait pour la version 1.3.7:

  • Mise à jour du paquet Python attrs vers la version 24.2.0.
  • Mise à jour du paquet Python cffi vers la version 1.17.0.
  • Mise à jour du paquet Python idna vers la version 3.8.
  • Mise à jour du paquet Python lxml vers la version 5.3.0.
  • Mise à jour du paquet Python pyparsing vers la version 3.1.4.
  • Mise à jour du paquet Python setuptools vers la version 73.0.1.
  • Mise à jour du paquet Python soupsieve vers la version 2.6.
  • Mise à jour du paquet Python tqdm vers la version 4.66.5.
  • Mise à jour du paquet Python trio vers la version 0.26.2.
  • La journalisation accessible dans les options de l’extension s’affiche désormais correctement sous Windows.
  • Les modifications apportées aux options de l'extension, qui nécessitent un redémarrage de LibreOffice, entraîneront l'affichage d'un message.
  • Afin de fonctionner avec LibreOffice 24.8.x pour Windows (32 et 64 bits), ajout des fichiers binaires, pour Python version 3.9 et les architectures win32 ou win_adm64, à tous les paquets Python inclus dans l'extension.

Ce qui a été fait pour la version 1.3.8:

  • Modification des options de l'extension accessibles via : Outils -> Options... -> Internet -> Protocole OAuth2 afin de respecter la nouvelle charte graphique.

Ce qui a été fait pour la version 1.3.9:

  • Ajout d'une nouvelle méthode fromJson() à l'interface XRequestParameter pour faciliter l'exécution d'une requête HTTP à partir de paramètres provenant de fichiers de configuration LibreOffice (ie: fichiers XML xcu/xcs).
  • Préparation à la migration des périmètres de droits spécifiques aux connexions aux serveurs de Google.
  • Quelques corrections...

Ce qui a été fait pour la version 1.4.0:

  • Toutes les données nécessaires à la gestion du flux du code d'autorisation OAuth2 sont désormais stockées dans le fichier de configuration de LibreOffice Options.xcu.
  • L'API OAuth2 de Yahoo a été intégrée et sera disponible dans l'extension eMailerOOo prochainement.
  • Il est désormais possible d'avoir une uri de redirection OAuth2 (ie: redirect_uri) en mode https comme l'impose l'utilisation de l'API de Yahoo. Merci à JavaScript et Github.
  • Le port TCP/IP permettant la réception du code d'autorisation des GAFA est désormais choisi au hasard parmi les ports libres (ie: plus de problèmes de conflits).

Que reste-t-il à faire pour la version 1.4.0:

  • Ajouter de nouvelles langue pour l'internationalisation...

  • Tout ce qui est bienvenu...