Démonstration du système sgdebrowser


Table des matières

Introduction

Ce document montre comment installer un catalogue de données test dans le SGDE et procéder à des sélections simples sur ce catalogue à l'aide du système sgdebrowser. On aura ainsi un moyen de vérifier le bon fonctionnement du système, et d'expérimenter les diverses fonctionnalités du sgdebrowser.

Prérequis

Le système sgdebrowser doit avoir été installé tel que décrit dans le document sgdebrowser - Installation. En particulier, les fichier de configuration XML config.xml doit avoir été correctement initialisé. Pour avoir une meilleure idée des possibilités de suivi offertes par les fichiers-journaux, il est suggéré d'activer les trois options <SQL>, <exec> et <read> disponibles dans les balises <log> :

<sasd>
    ...
    <log>
        <file>logs/sasd-%Y-%M.log</file>
        <SQL>true</SQL>
        <exec>true</exec>
        <read>true</read>
    </log>
</sasd>

<sesd>
    ...
    <log>
        <file>logs/sesd-%Y-%M.log</file>
        <SQL>true</SQL>
        <exec>true</exec>
        <read>true</read>
    </log>
</sesd>

$SERVER_ROOT
désigne ici le répertoire d'installation (par ex.: /opt/sgde) et $SGDESRVUSER l'usager propriétaire de $SERVER_ROOT.

On suppose que l'on a respecté la structure par défaut de l'arborescence d'installation (i.e. le répertoire d'archives est $SERVER_ROOT/archives, le répertoire d'extractions est $SERVER_ROOT/extractions, etc).

Installation des données de démonstration

Compte utilisé pour l'installation

On fera l'installation en tant qu'usager $SGDESRVUSER. Le privilège root sera requis à quelques occasions, ce qui est indiqué par le caractère d'invite '#' devant la commande.

Fichiers de données

 Désarchiver le jeu de fichiers de démonstration sous $SERVER_ROOT/archives .

$ cd $SERVER_ROOT/archives
$ tar xfz $SERVER_ROOT/demo/demodata.tar.gz

Les fichiers suivants sont créés, un pour chacune des lignes de la table jeu_donnees.  Leur contenu n'est pas important, et ils sont  tous initialisés avec une ligne bidon.

    $ tree $SERVER_ROOT/archives
    /opt/sgde/archives
    |-- BRUTE-SEABIRD
    |   |-- IML0963103.CON
    |   |-- IML0963103.HEX
    |   |-- Q08035-009.CON
    |   |-- Q08035-010.CON
    |   `-- Q08035-010.HEX
    `-- ODF-CTD
        |-- CTD_2008035_10_1_DN.ODF
        |-- CTD_2008035_11_1_DN.ODF
        |-- CTD_2008035_12_1_DN.ODF
        |-- CTD_2008035_13_1_DN.ODF
        |-- CTD_2008035_9_1_DN.ODF
        |-- CTD_2009063_100_1_DN.ODF
        |-- CTD_2009063_101_1_DN.ODF
        |-- CTD_2009063_102_1_DN.ODF
        |-- CTD_2009063_103_1_DN.ODF
        `-- CTD_2009063_104_1_DN.ODF
    `

Définir ensuite les privilèges d'accès aux fichiers. Pour les fins de la  demonstration, on pourra rendre $SGDESRVUSER et $SGDESRVGROUP propriétaire des fichiers en faisant (privilège root requis) :

# chown -R $SGDESRVUSER:$SGDESRVGROUP $SERVER_ROOT/archives
# chmod -R o= $SERVER_ROOT/archives

IMPORTANT. En pratique toutefois , les fichiers devraient plutôt appartenir à l'administrateur du SGDE. En raison des clauses de confidentialité pouvant être rattachées à certains fichiers, il est important de bien contrôler  l'acces par les usagers ordinaires. Il est essentiel que  l'usager unix $SGDESRVUSER au nom duquel fonctionnent les services ait accès en lecture aux fichiers (par ex., en rendant cet usager membre du groupe unix propriétaire des fichiers).

Chargement des données test dans le SGDE


On suppose que la base de données du SGDE a été créée en utilisant les valeurs par défaut (nom: sgde, schema: sgde, usager: sgde).

Exécuter :

$ cd $SERVER_ROOT/demo
psql -U sgde -d sgde < loaddemodata.sql
Password for user sgde: ...
messages informatifs en provenance de PostgreSQL ...

Le script purge et réinitialise les tables suivantes :

      GROUPES_SGDE
      INTERVENANT
      INTERVENANT_GROUPE,
      JEU_DONNEES
      MISSION_EXP
      TYP_JD

Sommaire du contenu des tables

Des commandes SQL select permettront de vérifier le contenu des tables.

jeu_donnees

sgde=> select nom_fich_jd,vol_jd,drt_acce_jd,typ_jd,acr_miss,nom_fich_arch,loca_fich_arch from jeu_donnees;

       nom_fich_jd        |  vol_jd   | drt_acce_jd |    typ_jd     | acr_miss |      nom_fich_arch       | loca_fich_arch
--------------------------+-----------+-------------+---------------+----------+--------------------------+----------------
 IML0963103.HEX           | 1665.0000 | PUBLIC      | BRUTE-SEABIRD | IML0963  | IML0963103.HEX           | BRUTE-SEABIRD
 IML0963103.CON           |    5.0000 | LABO-3      | BRUTE-SEABIRD | IML0963  | IML0963103.CON           | BRUTE-SEABIRD
 CTD_2009063_100_1_DN.ODF |  322.0000 | LABO-1      | ODF-CTD       | IML0963  | CTD_2009063_100_1_DN.ODF | ODF-CTD
 CTD_2009063_101_1_DN.ODF |  264.0000 | LABO-2      | ODF-CTD       | IML0963  | CTD_2009063_101_1_DN.ODF | ODF-CTD
 CTD_2009063_102_1_DN.ODF |  252.0000 | PUBLIC      | ODF-CTD       | IML0963  | CTD_2009063_102_1_DN.ODF | ODF-CTD
 CTD_2009063_103_1_DN.ODF |   77.0000 | PUBLIC      | ODF-CTD       | IML0963  | CTD_2009063_103_1_DN.ODF | ODF-CTD
 CTD_2009063_104_1_DN.ODF |  133.0000 | PUBLIC      | ODF-CTD       | IML0963  | CTD_2009063_104_1_DN.ODF | ODF-CTD
 Q08035-009.CON           |    5.0000 | PUBLIC      | BRUTE-SEABIRD | IML0835  | Q08035-009.CON           | BRUTE-SEABIRD
 Q08035-010.HEX           | 1572.0000 | LABO-2      | BRUTE-SEABIRD | IML0835  | Q08035-010.HEX           | BRUTE-SEABIRD
 Q08035-010.CON           |    5.0000 | LABO-3      | BRUTE-SEABIRD | IML0835  | Q08035-010.CON           | BRUTE-SEABIRD
 CTD_2008035_9_1_DN.ODF   |  183.0000 | LABO-2      | ODF-CTD       | IML0835  | CTD_2008035_9_1_DN.ODF   | ODF-CTD
 CTD_2008035_10_1_DN.ODF  |  215.0000 | LABO-3      | ODF-CTD       | IML0835  | CTD_2008035_10_1_DN.ODF  | ODF-CTD
 CTD_2008035_11_1_DN.ODF  |  212.0000 | PUBLIC      | ODF-CTD       | IML0835  | CTD_2008035_11_1_DN.ODF  | ODF-CTD
 CTD_2008035_12_1_DN.ODF  |  194.0000 | PUBLIC      | ODF-CTD       | IML0835  | CTD_2008035_12_1_DN.ODF  | ODF-CTD
 CTD_2008035_13_1_DN.ODF  |  277.0000 | PUBLIC      | ODF-CTD       | IML0835  | CTD_2008035_13_1_DN.ODF  | ODF-CTD

Les valeurs du couple de colonnes  local_fich_arch/nom_fich_arch correspondent au chemin d'accès des fichiers installés sous $SERVER_ROOT/archives. Les valeurs de la colonne vol_jd (volume de données en K) sont fictives : les fichiers du répertoire $SERVER_ROOT/archives installés à partir de la demo se limitent à une seule ligne de données bidon.

intervenant

sgde=> select acr_nom_int,nom_int,courriel from intervenant;

 acr_nom_int |     nom_int      |         courriel
-------------+------------------+--------------------------
 SGDE        | SGDE             |
 USAG1       | Prenom1 Nom1     | prenom1.nom1@qqepart.net
 USAG2       | Prenom2 Nom2     | prenom2.nom2@qqepart.net
 HECTOR      | Hector Le Brave  | hector@qqepart.net
 ULYSSE      | Ulysse Voyageur  | ulysse@qqepart.net

intervenant_groupe

select * from intervenant_groupe;

 acr_nom_int | acr_nom_groupe
-------------+----------------
 SGDE        | SGDE
 USAG1       | USAG1
 USAG2       | USAG2
 HECTOR      | HECTOR
 ULYSSE      | ULYSSE
 HECTOR      | LABO-1
 HECTOR      | LABO-2
 ULYSSE      | LABO-1

Remarquer que chaque intervenant est associé à son propre groupe.

groupes_sgde

sgde=> select * from groupes_sgde;

 acr_nom_groupe | responsable | description
----------------+-------------+-------------
 SGDE           |             |
 USAG1          |             |
 USAG2          |             |
 HECTOR         |             |
 ULYSSE         |             |
 PUBLIC         |             |
 LABO-1         |             |
 LABO-2         |             |
 LABO-3         |             |


mission_exp

select acr_miss,nom_miss from mission_exp;

 acr_miss |     nom_miss
----------+-------------------
 IML0963  | Ice Forecast 2009
 IML0835  | IML0835


typ_jd

select * from typ_jd;

 typ_jd        | seq_typ_jd |                                       desc_typ_jd
---------------+------------+-----------------------------------------------------------------------------------------
 BRUTE-SEABIRD |        126 | données brutes (.HEX,.CON) des appareils de marque Sea Bird (associé au format ODF-CTD)
 ODF-CTD       |         46 | Format ODF (Ocean Data Format) pour les données de CTD.


Fichiers d'utilisateurs sasd et sesd

Les identifiants sasd et sesd nécessaires à l'exécution de la démo sont disponibles dans deux fichiers placés sous $SERVER_ROOT/tools.

$ cd $SERVER_ROOT/tools
$ cat sasd-users-demo.txt
ulysse   odyssee
hector   iliade
achille  talon

$ cat sesd-users-demo.txt
SgdoExtractorBrowser sgdo
ulysse   odyssee
hector   iliade

Pour les deux services sasd et sesd, on utilise (admin, secret) comme identifiant administrateur. Les ports utilisés (30102 et 30203) sont les ports-réseau par défaut. On les modifiera en fonction des ports indiqués dans le fichier de configuration $SERVER_ROOT/config.xml.

S'il est possible de se servir des scripts create-sasd-users et create-sesd-users (tcl et expect sont disponibles), on fera :

$ cd $SERVER_ROOT/tools
$ rm -f $SERVER_ROOT/sasd/users
$ service sasd restart
$ ./create-sasd-users admin secret 30102 sasd-users-demo.txt
added user: ulysse
added user: hector
added user: achille

$ rm -f $SERVER_ROOT/sesd/users
$ service sesd restart
$ ./create-sesd-users admin secret 30203 sesd-users-demo.txt
added user: SgdoExtractorBrowser
added user: ulysse
added user: hector


Si on ne peut utiliser ces deux scripts, on initialisera manuellement les fichiers d'utilisateurs en se connectant directement aux services par telnet.

$ cd $SERVER_ROOT/tools
$ rm -f $SERVER_ROOT/sasd/users
$ service sasd restart
$ telnet localhost 30102
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Sgdo Archival Server 1.0.3 (2010-04-09)
New administrator login:admin
New administrator password:secret
10:OK
>set mode administrator
10:OK
>add user ulysse odyssee 255.255.255.255
10:OK
>add user hector iliade 255.255.255.255
10:OK
>add user achille talon 255.255.255.255
10:OK
>exit

$ rm -f $SERVER_ROOT/sesd/users
$ service sesd restart
$ telnet localhost 30203
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
SGDO Extractor Server 1.3.1 (2010-04-09)
New administrator login:admin
New administrator password:secret
10:OK
>set mode administrator
10:OK
>add user SgdoExtractorBrowser sgdo 255.255.255.255
10:OK
>add user ulysse odyssee 255.255.255.255
10:OK
>add user hector iliade 255.255.255.255
10:OK
>exit

Monitorage des fichiers-journaux

Pour faciliter le suivi de la démonstration, il est suggéré d'ouvrir des consoles pour monitorer le contenu des fichiers-journaux alimentés par les services sasd et sesd.

Suite au redémarrage des services et à l'initialisation des fichiers d'usagers, on verra s'ajouter des lignes similaires aux suivantes dans les fichiers-journaux.

# tail -f  $SERVER_ROOT/logs/sasd-2010-08.log
...
2010-08-03 16:44:45 Service started
2010-08-03 16:45:01 admin 127.0.0.1 communication (thread 12) started

# tail -f $SERVER_ROOT/logs/sesd-2010-08.log
...
2010-08-03 16:45:54 Service started
2010-08-03 16:46:01 admin 127.0.0.1 communication (thread 13) started

Exemples d'extractions

Un utilisateur a normalement recours à l'application graphique sgdebrowser pour extraire des fichiers des archives SGDE. Cette application communique alors au nom de l'usager avec le service sesd, lui transmettant les requêtes effectués par l'intermédiaire de l'interface graphique. Le service sesd communique lui-même avec le service sasd pour obtenir les fichiers sélectionnés.

Le protocole de communication utilisé dans ces échanges peut, en grande partie, être simulé au clavier en établissant une connexion telnet sur le port réseau associé au service sesd. Ceci permet de tester rapidement le bon fonctionnement du système, en réduisant au minimum les couches d'interface. Dans ces exemples, on suppose que le service sesd fonctionne sur le port par défaut 30203, sur la machine locale. :

$ telnet localhost 30203
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
SGDO Extractor Server 1.3.1 (2010-04-09)
login: ...

Les sections suivantes présentent des exemples simples d'extraction, réalisés selon chacun de ces deux modes.

Des commandes SQL sont quelques fois illustrées pour mieux faire comprendre comment se font les interactions avec la base de données. Pour exécuter ces commandes, utiliser l'utilitaire de son choix pour établir une connexion  avec la base de données et entrer les commandes SQL indiquées.  L'outil standard psql en est un exemple.

$ psql -U user -d bd -h machine
Password for user ...
...
bd=> select count(*) from jeu_donnees;
 count
-------
    15
(1 row)

Le contenu ajouté aux fichiers-journaux après l'exécution de l'exemple 1 est aussi illustré de manière détaillée. Ceci aidera à mieux comprendre comment l'explorateur graphique interagit avec le service sesd.

Exemple 1.

Utilisation de l'explorateur graphique

Lancer l'explorateur sgdebrowser. La fenêtre suivante apparaît pendant le chargement de l'application en mémoire :



suivie de la fenêtre principale de l'application :


On lit dans le coin inférieur droit : "Dataset count (max 50): 15", ce qui signifie que 15 fichiers sont potentiellement accessibles. "max 50" indique le maximum de fichiers pouvant être sélectionnés dans un même opération d'extraction.

Activer  ensuite l'onglet "Missions" et sélectionner la mission "IML0963" en cliquant sur la ligne correspondante.



Remarquer dans le coin inférieur droit que le nombre de jeux de données est passé à 7.

Pour récupérer les fichiers, cliquer sur le bouton Submit (premier icône en haut à gauche), ou sélectionner le menu Data > Submit.



Une boîte de dialogue s'affiche, demandant à l'utilisateur de s'identifier. Ce dernier doit alors entrer son identifiant SGDE (conservé dans $SGDE_ROOT/sasd/users), et l'adresse-courriel à laquelle retourner les résultats. L'usager est ici "achille" et son mot-de-passe "talon".



Cliquer sur Submit. La boîte de dialogue suivante s'affiche.



La valeur 7 rapportée dans le message est une indication du nombre maximal de fichiers ayant pu être retournés à l'utilisateur. Le nombre effectif dépend des droits d'accès aux fichiers et des privilèges de l'utilisateur, et peut être inférieur. Voir les explications plus bas..

Cliquer sur le bouton OK pour retourner à la fenêtre de l'explorateur. Un courriel acompagné d'une pièce jointe devraient avoir été acheminés à l'adresse indiquée, détaillant la liste des fichiers sélectionnés, et indiquant l'URL à utiliser pour récupérer ces fichiers du site web associé au sgdebrowser.

Connexion directe au service sesd

L'équivalent de la session précédente menée avec l'explorateur sgdebrowser peut être réalisé en mode ligne de commande en se connectant directement au service sesd sur la machine serveur au moyen de l'application telnet. En effet, l'essentiel du protocole de communication utilisé pour la communication entre le sgdebrowser sur la machine client et le service sesd sur la machine serveur peut être reproduit manuellement au moyen de commandes textuelles acheminée au serveur.

$ telnet serveur 30203
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
SGDO Extractor Server 1.3.1 (2010-04-09)
login:ulysse
password:odyssee
10:OK
>show max
50
10:OK
>show count
15
10:OK
>add mission IML0963
10:OK
>show count
7
10:OK
>extract achille talon adresse@domaine
10:OK
>exit
Connection closed by foreign host.

La connexion au service sesd demande d'être identifié dans le fichier d'utilisateurs du service ($SERVER_ROOT/sesd/users). Dans cet exemple, l'usager est ulysse, avec odyssee comme mot de passe. On notera que cet usager est sans lien avec celui auquel les fichiers de ldonnées seront destinés. De son côté, l'explorateur sgdebrowser établit toujours la connexion en tant qu'utilisateur SgdoExtractorBrowser.

Explications

Les commandes show max et  show count retournent respectivement le nombre maximal de fichiers sélectionnables dans une même session (ici: 50), et le nombre de fichiers accessibles dans les archives du SGDE (ici: 15). L'explorateur graphique exécute ces deux mêmes  commandes pour afficher "Dataset count (max m): n" dans le coin inférieur de la fenêtre de l'application. On a vu plus haut qu'on voyait alors "Dataset count (max 50): 15".

Le nombre maximal 50 fait référence à la valeur de la balise <sesd><mde> du fichier config.xm.

On peut vérifier que le nombre de fichiers disponibles (15) correspond au nombre de fichiers contenus dans le répertoire $SERVER_ROOT/archives, ainsi qu'au nombre de lignes de la table jeu_donnees de la base de données.

select count(*) from jeu_donnees;
 count
 -------
     15
(1 row)

On entre ensuite un critère de selection avec la commande "add mission IML0963", qui limite la portée de la recherche aux jeux de données associés à la mission "IML0963". Cette commande est celle exécutée par l'explorateur lorsqu'on clique sur la ligne IML0963 dans l'onglet Missions.  La commande "show count" qui suit retourne la valeur 7. L'explorateur fait de même pour indiquer maintenant "Dataset count (max 50): 7" au bas à droite de la fenêtre. On peut vérifier qu'il s'agit de la valeur retournée par la commande SQL suivante, appliquée sur la base de données par la commande "add mission".

select count(*) from jeu_donnees where acr_miss='IML0963';
 count
-------
     7
(1 row)

La commande "extract usager motpasse adr-courriel" permet d'extraire les fichiers sélectionnés et de les rendre accessibles à un usager du SGDE. La sélection du menu Data > Submit dans l'explorateur graphique affiche la boîte de dialogue Submit permettant d'exécuter la commande équivalente. L'usager doit figurer dans la liste d'usagers sasd (fichier $SERVER_ROOT/sasd/users). Dans notre exemple, l'usager est "achille" et son mot de passe "talon".

Une fois les fichiers extraits, ces derniers seront regroupés dans un fichier au format zip associé à un URL unique sur le serveur web utilisé pour diffuser le résultat des recherches. Un courriel sera ensuite envoyé à l'adresse courriel entrée comme 3e argument de la commande extract. Ce courriel est reproduit ici.

Le courriel contient principalement :
La liste des fichiers répondant aux critères de recherche (ici au nombre de 7) n'est pas toujours équivalente à celle des fichiers retournés à l'usager. Ce dernier aura accès seulement à un sous-ensemble de ces fichiers, en fonction des privilèges d'accès qui lui sont conférés.
L'usager achille utilisé dans notre exemple ne fait partie d'aucun groupe SGDE, ce que confirme la commande SQL suivante (voir aussi le contenu des tables intervenant et  intervenant_groupe):

select count(*) from intervenant_groupe where acr_nom_int = 'achille';
 count
-------
     0
(1 row)
 
achille n'a donc accès qu'aux fichiers de la mission IML0963 avec droit d'accès  PUBLIC.

En se reportant au contenu de la table jeu_donnees, on voit que parmi les 7 fichiers disponibles de la mission IML0963, 3 sont marqués LABO-1, LABO-2 et LABO-3 et sont donc interdits d'accès à achille. 4 seulement peuvent être extraits. Le fichier de détail joint au courriel (reproduit ici) donne la liste de ces 4 fichiers :

CTD_2009063_102_1_DN.ODF
CTD_2009063_103_1_DN.ODF
CTD_2009063_104_1_DN.ODF
IML0963103.HEX

Contenu des fichiers-journaux

Il est plus simple de comprendre les ajouts aux fichiers-journaux si on examine tout d'abord ce qui résulte de la connexion exécutée avec telnet.

Journal du service sesd

# tail -f $SERVER_ROOT/logs/sesd-2010-08.log
...
La connexion produit :
2010-08-03 17:32:58 ulysse 127.0.0.1 communication (thread 16) started
La commande "show max" est lue, puis exécutée. Son résultat est 50.
2010-08-03 17:33:12 ulysse 127.0.0.1 read : show max
2010-08-03 17:33:12 ulysse 127.0.0.1 exec : SHOW MAX result: 50
La commande "show count" est lue. Son exécution demande d'exécuter un énoncé SQL. Le résultat est 15.
2010-08-03 17:33:18 ulysse 127.0.0.1 read : show count
2010-08-03 17:33:18 ulysse 127.0.0.1 SQL  : SELECT count(*) from jeu_donnees
2010-08-03 17:33:18 ulysse 127.0.0.1 exec : SHOW COUNT result: 15
La commande "add mission IML0963" est lue puis exécutée.
2010-08-03 17:33:28 ulysse 127.0.0.1 read : add mission IML0963
2010-08-03 17:33:28 ulysse 127.0.0.1 exec : ADD MISSION IML0963
La commande "show count" demande l'exécution d'une requête SQL impliquant une condition sur la valeur de la colonne "jeu_donnees.acr_miss". Le résultat est 7.
2010-08-03 17:33:35 ulysse 127.0.0.1 read : show count
2010-08-03 17:33:35 ulysse 127.0.0.1 SQL  : SELECT count(*) from jeu_donnees WHERE (acr_miss = 'IML0963')
2010-08-03 17:33:35 ulysse 127.0.0.1 exec : SHOW COUNT result: 7
La commande "extract" génère une commande SQL pour compter le nombre de fichiers. Une seconde sert à obtenir les valeurs des champs nécessaires à la localisation du fichier dans les archives, et à la production de la pièce jointe du courriel.
2010-08-03 17:33:44 ulysse 127.0.0.1 read : extract achille talon adresse@domaine
2010-08-03 17:33:44 ulysse 127.0.0.1 SQL  : SELECT count(*) from jeu_donnees WHERE (acr_miss = 'IML0963')
2010-08-03 17:33:44 ulysse 127.0.0.1 SQL  : SELECT loca_fich_arch, nom_fich_arch, nom_fich_jd, lat_1_jd, lngt_1_jd, lat_2_jd, lngt_2_jd, TO_CHAR(dat_min_jd, 'YYYY/MM/DD'), TO_CHAR(dat_max_jd, 'YYYY/MM/DD'), profd_min_jd, profd_max_jd, acr_miss, typ_jd, acr_nom_int_prod, drt_acce_jd, statut_jd from jeu_donnees WHERE (acr_miss = 'IML0963') ORDER BY nom_fich_jd
Les droits d'accès sont vérifiés. Pour chaque fichier non PUBLIC, une commande SQL est exécutée pour s'assurer que l'usager est membre du groupe correspondant.
2010-08-03 17:33:44 ulysse 127.0.0.1 Begin extraction with account achille
2010-08-03 17:33:44 ulysse 127.0.0.1 SQL  : SELECT COUNT(*)  from intervenant_groupe WHERE acr_nom_int = 'ACHILLE' AND acr_nom_groupe ='LABO-1';
2010-08-03 17:33:44 ulysse 127.0.0.1 SQL  : SELECT COUNT(*)  from intervenant_groupe WHERE acr_nom_int = 'ACHILLE' AND acr_nom_groupe ='LABO-2';
2010-08-03 17:33:44 ulysse 127.0.0.1 exec : EXTRACT achille **** adresse@domaine
2010-08-03 17:33:44 ulysse 127.0.0.1 SQL  : SELECT COUNT(*)  from intervenant_groupe WHERE acr_nom_int = 'ACHILLE' AND acr_nom_groupe ='LABO-3';
4 fichiers sur 7 ont été retenus et compressés dans un fichier zip déposé dans le répertoire $SERVER_ROOT/extractions.
2010-08-03 17:33:45 ulysse 127.0.0.1 End extraction of 4 datasets with account achille in 0.443 seconds, compressed inside /opt/sgde/extractions/sgdo64921.zip 1480 bytes

Journal du service sasd

# tail -f $SERVER_ROOT/logs/sasd-2010-08.log
...
La commande "extract" envoyée au service sesd provoque une connexion au service sasd, en utilisant l'identifiant de l'usager SGDE.
2010-08-03 17:33:44 achille 127.0.0.1 communication (thread 14) started
Une commande ADD est lue, puis exécutée pour extraire du répertoire $SERVER_ROOT/archives chacun des 4 fichiers accessibles à l'usager, .
read : ADD ODF-CTD CTD_2009063_102_1_DN.ODF CTD_2009063_102_1_DN.ODF 49.2727 -59.6437 49.2726 -59.6399 2009/11/10 2009/11/10 1.78 251.68 IML0963 ODF-CTD USAG1 PUBLIC Archive
2010-08-03 17:33:44 achille 127.0.0.1 exec : ADD ODF-CTD CTD_2009063_102_1_DN.ODF CTD_2009063_102_1_DN.ODF 49.2727 -59.6399 49.2726 -59.6399 2009/11/10 2009/11/10 1.78 251.68 IML0963 ODF-CTD USAG1 PUBLIC Archive
2010-08-03 17:33:44 achille 127.0.0.1 extracted: /opt/sgde/archives/ODF-CTD/CTD_2009063_102_1_DN.ODF 14 bytes
...
2010-08-03 17:33:44 achille 127.0.0.1 extracted: /opt/sgde/archives/ODF-CTD/CTD_2009063_103_1_DN.ODF 14 bytes
...
2010-08-03 17:33:44 achille 127.0.0.1 extracted: /opt/sgde/archives/ODF-CTD/CTD_2009063_104_1_DN.ODF 14 bytes
...
2010-08-03 17:33:44 achille 127.0.0.1 extracted: /opt/sgde/archives/BRUTE-SEABIRD/IML0963103.HEX 13 bytes
Une commande "GET" est recue puis exécutée. Elle retourne au service sesd le contenu de la pièce jointe.
2010-08-03 17:33:44 achille 127.0.0.1 read : GET detail64921.txt
2010-08-03 17:33:45 achille 127.0.0.1 exec : GET detail64921.txt
Fin de l'extraction.
2010-08-03 17:33:45 achille 127.0.0.1 extraction summary: 4 files, total size: 55 bytes,  archive size: 1480 bytes


Lorsque la session est exécutée avec l'explorateur graphique, on voit d'abord apparaître les lignes suivantes dans le fichier-journal du sesd suite à la phase l'initialisation. Remarquer que toutes les communications avec le sesd sont faites au nom de l'usager SgdoExtractorBrowser.

# tail -f $SERVER_ROOT/logs/sesd-2010-08.log
...
L'explorateur lance plusieurs threads d'exécution pour initialiser les onglets de l'application. Un premier thread obtient les limites temporelles des jeux de données.
2010-08-03 17:22:17 SgdoExtractorBrowser 142.130.50.192 communication (thread 14) started
Une commande "SHOW LIMIT TEMPORAL" est recue et exécutée en appliquant une requête SQL à la bd.
2010-08-03 17:22:17 SgdoExtractorBrowser 142.130.50.192 read : SHOW LIMIT TEMPORAL
2010-08-03 17:22:17 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT MIN(dat_min_jd), MAX(dat_max_jd) from jeu_donnees
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 exec : SHOW LIMIT TEMPORAL result: 2008/05/24 2009/11/11
Un second thread est lancé pour obtenir les limites de profondeur.
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 communication (thread 15) started
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 read : SHOW LIMIT DEPTH
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT MIN(profd_min_jd), MAX(profd_max_jd) from jeu_donnees
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 exec : SHOW LIMIT DEPTH result: 0.2 331.9
Un 3e thread est lancé pour initialiser le contenu des onglets de l'application. Une commande existe pour chaque onglet, laquelle génère une requête SQL appropriée.
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 communication (thread 16) started
Onglet ¨Missions"
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 read : GET MISSION
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT acr_miss, nom_miss, TO_CHAR(dat_deb_miss, 'YYYY/MM/DD'),TO_CHAR(dat_fin_miss,'YYYY/MM/DD'), nom_nav_miss, nom_int, desc_miss FROM mission_exp, intervenant WHERE mission_exp.acr_nom_int = intervenant.acr_nom_int ORDER BY dat_deb_miss, dat_fin_miss, acr_miss
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 exec : GET MISSION
Onglet "Areas"
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 read : GET AREA
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT acr_sta_fix, nom_sta_fix, typ_sta_fix, def_sta_fix FROM sta_trans_fix ORDER BY acr_sta_fix
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 exec : GET AREA
Onglet "Data types"
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 read : GET TYPE
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT typ_jd, desc_typ_jd FROM typ_jd  ORDER BY typ_jd
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 exec : GET TYPE
Onglet "Keywords"
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 read : GET KEY
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT nom_mot_clef, desc_mot_clef FROM mots_clefs ORDER BY nom_mot_clef
2010-08-03 17:22:18 SgdoExtractorBrowser 142.130.50.192 exec : GET KEY
Un thread d'exécution est lancé pour initialiser le décompte de fichiers affiché dans le coin inférieur droit de la fenêtre de l'application.
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 communication (thread 17) started
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 read : SHOW MAX
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 exec : SHOW MAX result: 50
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 read : SHOW COUNT
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT count(*) from jeu_donnees
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 exec : SHOW COUNT result: 15



Chacune des sélections effectuées dans les onglets provoque l'envoi d'une commande au service sesd, similaire à celle entrée lors de la connexion directe avec telnet.  Par exemple, la sélection dans l'onglet "Missions" provoque :

2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 communication (thread 17) started
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 read : ADD MISSION IML0963
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 exec : ADD MISSION IML0963
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 read : SHOW MAX
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 exec : SHOW MAX result: 50
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 read : SHOW COUNT
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 SQL  : SELECT count(*) from jeu_donnees
2010-08-03 17:22:19 SgdoExtractorBrowser 142.130.50.192 exec : SHOW COUNT result: 7

Le clic sur le bouton "Submit" du dialogue identifiant l'utilisateur du SGDE envoie une commande "Extract" au sesd :

2010-08-03 17:25:01 SgdoExtractorBrowser 142.130.50.192 read : EXTRACT achille talon adresse@domaine

A partir de ce point, le dialogue avec le sesd ainsi que le sasd est identique à celui illustré plus haut à propos de la connexion directe avec telnet.

Exemple 2

Cet exemple montre l'utilisation de deux critères de recherche.

Utilisation de l'explorateur graphique

On démarre l'explorateur graphique comme à l'exemple 1. L'onglet Data types est activé. Le type ODF-CTD et sélectionné.


Le nombre de fichiers accessibles est affiché dans le coin inférieur droit : 10. Un second critère de recherche est ensuite entré, en activant l'onglet Missions et en sélectionnant la mission IML0835.


Lorsque plusieurs critères de recherche sont utilisés, ils sont combinés par un ET logique. Le décompte de fichiers disponibles est passé de 10 à 5 : 5 fichiers comportent des données de type ODF-CTD provenant de la mission IML0835.

On clique sur le bouton Submit (en haut à gauche) pour entrer l'identifiant SGDE et l'adresse-courriel à laquelle envoyer les résultats.


L'identification entrée est celle de l'usager hector (mot de passe : iliade). On soumet la demande avec le bouton Submit. On obtient :



Les fichiers disponibles sont au nombre de 5. Le nombre de fichiers accessibles pourra être inférieur, selon les droits d'accès associés aux fichiers et les privilèges de l'usager. En effet, le courriel et la pièce jointe envoyés à l'adresse-courriel indiquée font état de 4 fichiers. L'explication de ce résultat se trouve plus bas.

Connexion directe au service sesd

L'équivalent de la précédente session avec l'explorateur graphique peut être réalisé en acheminant les commandes suivantes au service sesd.

$ telnet localhost 30203
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
SGDO Extractor Server 1.3.1 (2010-04-09)
login:ulysse
password:odyssee
10:OK
>add type ODF-CTD
10:OK
>show count
10
10:OK
>add mission IML0835
10:OK
>show count
5
>extract hector iliade adr-courriel
10:OK
>exit
Connection closed by foreign host.

Explications

On recourt cette fois à deux critères de recherche :
Les commandes "show count" indiquent le nombre de fichiers disponibles suite à l'entrée de chaque critère, et sont exécutées par l'explorateur pour actualiser le nombre de fichiers affichés au bas de la fenêtre. Les deux critères sont reliés par un ET logique : on sélectionnera donc les fichiers de type ODF-CTD de la mission IML0835.  La requête SQL suivante est ainsi effectuée sur la base de données :

select count(*) from jeu_donnees where typ_jd='ODF-CTD' and acr_miss='IML0835';
 count
-------
     5
(1 row)

Le dialogue Submit exécute la commande "extract hector iliade adr-courriel" , qui destine les résultats à l'usager SGDE nommé "hector" (mot de passe: "iliade").

Ce courriel est envoyé.

En consultant le contenu de la table intervenant_groupe, on voit que hector est membre des groupes LABO-1 et LABO-2. Parmi les 5 fichiers de type ODF-CTD de la mission ILM0835 entrés dans la table jeu_donnees, il a donc accès à ceux dont le droit d'accès est marqué  PUBLIC, LABO-1 ou LABO-2. Ceux marqués LABO-3 lui sont interdits. 4 fichiers satisfont à ces critères. Il sont listés dans la pièce jointe au courriel.

CTD_2008035_9_1_DN.ODF
CTD_2008035_11_1_DN.ODF
CTD_2008035_12_1_DN.ODF
CTD_2008035_13_1_DN.ODF

Exemple 3

Cet exemple est une variante de l'exemple 1, enployant un critère de recherche et un utilisateur différent.

Utilisation de l'explorateur graphique

L'usager "ulysse" (mot de passe: "odyssee") s'intéresse à tous les fichiers de type BRUTE-SEABIRD. Il sélectionne BRUTE-SEABIRD dans l'onglet Data types :


Après avoir actionné le bouton Submit :

       

Le courriel et la pièce jointe envoyés font état de 2 fichiers, sur un total possible de 5.

Connexion directe au service sesd

Voici l'équivalent en se connectant directement au service sesd par telnet.  

$ telnet localhost 30203
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
SGDO Extractor Server 1.3.1 (2010-04-09)
login:hector
password:iliade
10:OK
>add type BRUTE-SEABIRD
10:OK
>show count
5
10:OK
>extract ulysse odyssee adr-courriel
10:OK
>exit
Connection closed by foreign host.

Explications

L'explorateur graphique effectue la sélection au moyen d'une commande "add type BRUTE-SEABIRD". La commande "show count" indique que 5 fichiers se qualifient, et ce nombre est affiché au base de la fenêtre. La commande SQL exécutée est :

select count(*) from jeu_donnees where typ_jd='BRUTE-SEABIRD';
 count
-------
     5
(1 row)

La commande "extract ulysse odyssee adr-courriel" envoie les résultats à l'usager SGDE nommé "ulysse" (mot de passe: "odyssee"). On peut consulter le courriel envoyé, et sa pièce jointe.

ulysse est membre du groupe LABO-1 seulement, ce que l'on vérifie dans le contenu de la table intervenant_groupe. Parmi les fichiers de type BRUTE-SEABIRD, il n'a donc accès qu'aux fichiers dont le droit d'accès est PUBLIC ou LABO-1. On voit en consultant la table jeu_donnees que ces fichiers sont au nombre 2, tels que décrits dans la pièce jointe :

Q08035-009.CON
IML0963103.HEX


Exemple 4  

Définition d'un filtre

L'administrateur du système SGDE dispose dans le fichier $SERVER_ROOT/config.xml d'une méthode lui permettant de limiter automatiquement l'accès à certains jeux de données pour tous les utilisateurs.

La balise <filter> du fichier de configuration permet d'appliquer aux requêtes génerées par les critères de recherche spécifiés par l'utilisateur des expressions SQL destinées à modifier la portée de ces requêtes. Ces expressions soint alors jointes aux précédentes par un ET logique.

 <filter> regroupe deux balises internes: <typ_jd> et <jeu_donnees> .
<filter>
    <typ_jd>typ_jd LIKE 'ODF%'</typ_jd>
</filter>

Cette définition fait en sorte que les types de fichiers affiches dans l'onglet DataTypes sont ceux dont le nom débute par le prefixe ODF. Les fichiers dont le type ne satisfait pas cette exigence seront absents de l'onglet, et ne pourront donc pas être sélectionnés.

Ce type de filtre est interessant si on veut systématiquement restreindre l'accès à certains types de fichiers.

<filter>
    <jeu_donnees>vol_jd between 0 and 250</jeu_donnees>
</filter>

L'exemple qui suit suppose l'on a édité le fichier $SERVER_ROOT/config.xml en y définissant ainsi la balise <filter> :

<filter>
    <typ_jd>typ_jd NOT LIKE 'BRUTE%'</typ_jd>
    <jeu_donnees>vol_jd between 0 and 250</jeu_donnees>
</filter>

IMPORTANT. Les services sasd et sesd doivent être redémarrés suite à la modification du fichier de configuration. Le privilège root est requis.

# service sasd restart
# service sesd restart

Utilisation de l'explorateur graphique

Suite au démarrage de l'explorateur, le décompte affiché au bas de la fenêtre indique que 6 fichiers sont disponibles. On comparera avec le nombre de 15 affiché à la même étape dans les exemples précédents. Ceci indique que le filtrage défini dans le fichier de configuration a éliminé 9 de ces 15 fichiers.



On clique immédiatement sur le bouton Submit, sans définir de critères de recherche. Tous les fichiers disponibles des archives SGDE (après filtrage) doivent figurer dans les résultats envoyés à l'utilisateur (nom: "achille" mot de passe : "talon").


 

6 fichiers sont potentiellement disponibles. 4 sont effectivement accessibles, tel qu'indiqué dans le courriel et la pièce jointe envoyés à l'utilisateur.

Connexion directe au service sesd

Deux simples commandes "show count" et "extract achille talon adresse" permettent de réaliser l'équivalent par connexion telnet au service sesd.

$ telnet localhost 30203
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
SGDO Extractor Server 1.3.1 (2010-04-09)
login:ulysse
password:odyssee
10:OK
>show count
6
10:OK
>extract achille talon adr-courriel
10:OK
>exit
Connection closed by foreign host.

Explications

La commande "show count" indique que 6 fichiers sont disponibles, comparativement à 15 lorsqu'aucun filtre n'était défini dans le fichier config.xml. En consultant la table jeu_donnees on voit en effet que :
La commande "extract" exécute la sélection en fonction des privilèges de l'usager achille, qui recoit ce courriel et cette pièce jointe. L'usager achille n'appartient à aucun groupe. Parmi les 6 fichiers possibles, il ne peut donc obtenir que ceux dont le droit d'accès est PUBLIC, au nombre de 4. Ces fichiers sont :

CTD_2008035_11_1_DN.ODF
CTD_2008035_12_1_DN.ODF
CTD_2009063_103_1_DN.ODF
CTD_2009063_104_1_DN.ODF