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 critères de recherche utilisés.
- L'URL permettant d'accéder au fichier zip regroupant les
fichiers sélectionnés (dans notre exemple:
http://machine/sgde-extractions/sgdo38567.zip).
- Une pièce jointe detailnnn.txt
donnant la liste des fichiers retournés (dans notre exemple:
detail38567.txt).
- Des informations sur la facon de citer les résultats
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.
- La colonne drt_acce_jd
de la table jeu_donnees
définit les droits d'accès aux fichiers du SGDE.
- Un fichier dont le droit d'accès est PUBLIC est toujours
retourné.
- Sinon, le droit d'accès s'interprète comme le nom
du groupe SGDE
auquel l'usager doit appartenir pour avoir droit au fichier. Autrement
dit, l'usager doit être un intervenant
(être listé dans la table intervenant),
et figurer dans un couple (intervenant,groupe)
de la table intervenant_groupe.
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
fichiers de type ODF-CTD;
la commande "add type
ODF-CTD" est celle qu'exécute l'explorateur graphique
suite à la sélection du type ODF-CTD
dans l'onglet Data types;
- les
fichiers de la mission IML0835;
l'explorateur graphique exécute une commande "add type
IML0835" suite à la sélection de la misssion IML0835
dans l'onglet Missions;
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>
.
- <typ_jd>
permet de limiter les types de jeux de données affichés dans
l'onglet DataTypes
de l'explorateur graphique
au moyen d'une expression SQL appliquée aux colonnes de la table typ_jd.
Par exemple:
<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.
- <jeu_donnees>
permet de définir une expression SQL complexe faisant intervenir toutes
les colonnes de la table jeu_donnees.
Par exemple, pour limiter l'accès aux fichiers de plus d'au plus 250K,
on pourrait recourir à une expression SQL impliquant la colonne vol_jd.
<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 :
- 5 fichiers sont d'un type (colonne typ_jd)
dont le nom débute par BRUTE,
et sont donc éliminés;
- parmi les fichiers restants, 4 ont une taille (colonne vol_jd)
supérieure à 250, et sont donc eux aussi éliminés;
- 9 fichiers au total sont éliminés, et 6 demeurent
disponibles pour la sélection, sans égard aux privilèges des
utilisateurs.
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