SATO 4.4, Manuel de référence (mars 2007)
Table des matières | Définitions
Guide de programmation des interfaces HTML  
Ce mini-guide indique comment on peut programmer des interfaces à SATO-HTML en utilisant la passerelle satox.exe appelée selon le standard CGI-BIN.



Principes de fonctionnement de la passerelle satox.exe

satox.exe est une passerelle générale qui permet de contrôler une session SATO ou tout autre programme qui se conforme au même protocole. La passerelle permet de démarrer un programme et de dialoguer avec un programme déjà en exécution.

satox.exe est un programme exécutable écrit en Pascal qui est démarré par le serveur WEB suite à une requête du client. La passerelle dialogue avec le serveur WEB en utilisant le protocole standard CGI-BIN. Le programme satox.exe termine en retournant un fichier HTML dans l'unité standard de sortie.

Le nom du fichier HTML retourné par la passerelle satox.exe peut être spécifié dans le champ formulaire qui est transmis à satox.exe avec la requête. En l'absence du champ formulaire, le fichier retourné sera satohtm.htm, ou satocat.htm selon la nature de la requête.

Le formulaire sera cherché à partir du répertoire sato dont la localisation est définie dans le fichier satox.ini situé dans le répertoire du CGI (celui où l'on a installé satox.exe). Par exemple

formulaire=lister.htm

entrainera la recherche du fichier lister.htm dans le répertoire des formulaires de SATO. Si le paramètre langue a été spécifié lors de l'ouverure de la session, la passerelle cherchera en priorité un fichier avec le nom de la langue selon le modèle fichier-langue.htm, par exemple lister-fr.htm. Si le fichier n'existe pas, le fichier par défaut (lister.htm) sera cherché.

Le nom du fichier retourné par satox.exe peut aussi être associé à la valeur d'un autre champ sous la forme d'une chaîne spéciale qui a la syntaxe suivante: ((nom-du-fichier-à-retourner)). Ainsi, il sera possible de lier le nom du fichier à retourner à la réponse fournie par le client et transmise dans un bordereau de saisie HTML.

Le fichier HTML spécifié dans le champ formulaire a un rôle de contrôle. Des balises spéciales inscrites dans ce fichier servent à contrôler le dialogue avec les programmes qui tournent dans l'espace de travail de la session. C'est aussi une de ces balises spéciales qui permettra de mettre fin à une session. Une session de travail avec SATO se construit donc par un enchaînement successif d'appels à la passerelle satox.exe. En d'autres mots, le fichier HTML retourné par la passerelle doit contenir un ou plusieurs hyperliens ou bordereaux HTML qui permettront de rappeler à nouveau la passerelle et de contrôler ainsi la prochaine étape de la session de travail. Aussi, par l'utilisation des fenêtres multiples (cadres), l'utilisateur se verra offrir un ensemble d'hyperliens permettant de contrôler sa session de travail.

En plus de champs réservés qui, tel formulaire, s'adressent directement à satox.exe, on peut avoir des champs qui seront interprétés comme des variables dont les valeurs seront transmises au fichier HTML retourné par la passerelle. Par exemple, les champs v0, v1 ...v9 seront, si présents, conservés par la passerelle afin d'être réinjectés dans le fichier de retour en lieu et place des entités correspondantes &sato.v0; &sato.v1; ... &sato.v9; apparaissant dans le fichier transmis. Les champs v0...v9 servent donc de variables destinées à paramétrer le fichier retourné par la passerelle.

Tous les autres champs faisant partie de la requête verront leur valeurs inscrites sur un fichier qui sera transmis, à titre de commande, à un programme qui, tel SATO, produira un résultat qui sera réinjecté dans le fichier de retour.

[Index]


Démarrage d'une session

Ce protocole suppose l'existence d'une session de travail qui associe un numéro d'IP à un nom d'utilisateur. Ce nom est en fait un pseudonyme formé de lettres et de chiffres. Le programme satox.exe va normaliser ce pseudonyme en transformant les lettres en minuscules non-accentuées et en éliminant les caractères illégaux, en particulier les espaces. Chaque session est associée à un fichier de contrôle et à un espace de travail sur le disque du serveur. En plus du fichier d'inscription de l'usager, des fichiers seront créés lors de l'ouverture d'une session de travail.
Nom du fichier d'inscription : pseudonyme.txt
Nom du fichier de contrôle : pseudonyme.log
Nom du répertoire de la session : pseudonyme

Ces fichiers se trouvent dans l'espace de travail de l'usager sato, nom d'office du gestionnaire du système.

Pour que l'utilisateur puisse ouvrir une session, il faut d'abord l'inscrire et lui créer un espace de travail. Voici un exemple de formulaire permettant de définir un nouvel utilisateur.

En-tête du formulaire <FORM ACTION="/cgi-bin/satox.exe/" METHOD=POST>
Pseudonyme <INPUT TYPE="text" NAME="pseudo">
Mot de passe <INPUT TYPE="password" NAME="pw">
Nom complet <INPUT TYPE="text" NAME="nom">
Courriel <INPUT TYPE="text" NAME="email">
Nom du compte partagé (optionnel) <INPUT TYPE="text" NAME="groupe">
Mot de passe du compte partagé <INPUT TYPE="password" NAME="pwg">
Langue <INPUT TYPE="hidden" NAME="langue" VALUE="fr">
Nom du formulaire à retourner <INPUT TYPE="hidden" NAME="formulaire" VALUE="creation.htm">
Envoi <INPUT TYPE="submit" VALUE="Appliquer">
<INPUT TYPE="reset" VALUE="Recommencer">
Fin du formulaire </FORM>

La création d'un usager entraîne automatiquement l'ouverture d'une première session de travail. Il faudra donc mettre dans le formulaire de retour une balise de fermeture de session ou un lien vers un formulaire de sortie. Dans notre implantation de l'interface SATO, le formulaire est inscrit dans un champ de type SELECT qui permet de choisir le type d'application à démarrer afin d'amorcer immédiatement une session SATO.

Le formulaire d'inscription sert aussi de formulaire de modification des champs nom et pw si le couple pseudo-pw existe déjà.

Si les champs nom et pw sont laissés vides, le formulaire d'inscription se transforme en formulaire d'ouverture de session en autant que le couple pseudo-pw soit valide. Si le champ pseudo est absent ou vide, alors on ouvre une session anonyme. Les champs pw et nom sont alors ignorés.

Les champs optionnels groupe et pwg permettent d'accéder en lecture aux fichiers d'un autre compte. Le propriétaire du compte peut définir ou modifier son mot de passe de partage en laissant vide le champ groupe.

Le champ optionnel langue permet d'accéder à une version des formulaires dans la langue spécifiée.

[Index]


Appel de la passerelle en cours de session

Le premier appel à la passerelle satox.exe ouvre une nouvelle session de travail par un appel explicite au programme satox.exe. Une fois la session démarrée, les appels ultérieurs à la passerelle seront inclus dans les fichiers HTML retournés par satox.exe. Ces appels sont exprimés sous la forme d'hyperliens HREF ou de requêtes de type FORM. Dans tous les cas, l'adresse HTTP fournie sera une adresse relative commençant par l'identificateur de la session SATO, ce qui correspond au nom du répertoire de l'usager. Pour référer à ce nom de manière générale, on utilise l'entité générale &sato.session;.

Une entité est, en quelque sorte, un alias ou une variable référant à un contenu qui sera actualisée par le programme satox.exe.

Par exemple:

<A HREF="&sato.session;?formulaire=gestion.htm">

retournera le fichier gestion.htm après qu'il aura été interprété par la passerelle satox.exe. L'entité &sato.session;, une fois actualisée par la passerelle, designera le répertoire de l'usager. Le fureteur Internet assumera que la partie gauche de l'URL sera identique à l'adresse de la page affichée, c'est-à-dire l'adresse de la passerelle. L'adresse IP de l'utilisateur sera utilisée pour vérifier que la session invoquée est bien utilisée par celui qui l'a initiée.

[Index]


Construire un fichier de données

On peut se servir de la passerelle pour construire un fichier de données dans le répertoire de travail de la session. Pour ce faire, on utilise généralement la méthode POST. Voici un exemple.

En-tête du formulaire <FORM ACTION="/cgi-bin/satox.exe/&sato.session;" METHOD=POST>
Nom du formulaire de retour <INPUT TYPE="hidden" NAME="formulaire" VALUE="gestion\fic-voir.htm">
Action <INPUT TYPE="hidden" NAME="action" VALUE="creer">
Extension du fichier <INPUT TYPE="hidden" NAME="v0" VALUE="sat">
Nom du fichier <INPUT TYPE="hidden" NAME="v1" VALUE="texte1">
Contenu du fichier <TEXTAREA NAME="texte"> </TEXTAREA>
Envoi <INPUT TYPE="reset" VALUE="Recommencer">
<INPUT TYPE="submit" VALUE="Envoi du fichier">
Fin du formulaire </FORM>

Les champs v0 et v1 sont utilisées pour construire le nom du fichier de données sous la forme v1.v0, donc ici «texte1.sat». Elles doivent donc précéder les champs qui contiennent des données à inscrire dans le fichier. Le champ caché action avec la valeur creer indique à la passerelle que les champs de données seront inscrits dans le fichier de données plutôt que d'être passées au programme en exécution.

Le champ formulaire contient, comme toujours, le nom du formulaire à retourner.

Les valeurs des autres champs seront inscrites dans le fichier v1.v0 alors que les noms de champ seront ignorés. Si toutefois un nom de champ se terminait par «%», il serait aussi inscrit dans le fichier de données en remplaçant % par un espace. Par exemple,

NAME="Alphabet%" VALUE="fr"

provoquerait l'écriture de la chaîne Alphabet fr dans le fichier de données. Chaque écriture se termine par une fin de ligne. Toutefois, si un nom de champ se termine par «!», sa valeur sera écrite précédée et suivie d'un espace sans fin de ligne.

[Index]


Le champ prog

Normalement la passerelle transmet l'information au programme qu'il contrôle via le fichier sato.cmd et récupère les résultats produits via le fichier sato.htm. Aussi, le fichier de contrôle sato.log est généré lors du démarrage du programme. Il est détruit par le programme appelé lorsqu'il termine ou par la lecture d'une balise <fin> dans le formulaire de retour. Pour permettre à l'usager de contrôler plus d'un programme à la fois, on peut spécifier un autre nom de fichier de communication via le champ prog. Par ce dispositif, on peut disposer de plusieurs canaux de communication permettant de contrôler plusieurs programmes s'exécutant en parallèle. Dans la suite du texte, on fera référence au canal standard sato sachant que les mêmes informations sont valides pour tout autre canal dont le nom est transmis par le champ prog.

[Index]


Démarrer un programme

Si la requête passée à satox.exe contient le champ exe, sa valeur sera interprétée comme le nom d'un programme à exécuter. Le programme sera démarré dans le répertoire associé à la session. Pour des raisons de sécurité, le nom du programme à démarrer est en fait un alias qui devra être inscrit dans la section [Exe] du fichier de configuration satox.ini. La valeur de l'alias devra correspondre à la localisation complète du fichier à exécuter.

Si on tente de démarrer un programme sur un canal où un programme est déjà en exécution, l'appel sera ignoré et un diagnostic d'erreur non fatale sera émis. Un programme est considéré en exécution si le fichier .log (par ex. sato.log) existe.

Les paramètres à transmettre au programme suivent le nom du programme en remplaçant les espaces par des «+». Par exemple

sato+fable

exécutera le programme sato.exe fable. On peut aussi utiliser le dispositif des variables pour avoir un formulaire d'appel générique. Par exemple, dans

sato+&sato.v1;

&sato.v1; sera remplacé par la valeur du champ v1 transmis lors de l'appel de la passerelle. Autrement, les autres champs de l'appel seront transmis au programme à exécuter par le dispositif décrit au paragraphe qui suit. En absence de commandes à transmettre au programme, l'adresse IP de l'appelant sera transmise au programme dans le fichier .cmd.

[Index]


Transmettre des commandes à un programme en exécution

Une des fonctions premières de la passerelle satox.exe est de transmettre des commandes au programme en exécution et de récupérer les résultats qui seront intégrés au formulaire de sortie. Ces commandes sont transmises par l'intermédiaire du fichier sato.cmd. Voici comment ces données sont transmises du CGI au programme en exécution.

Tout champ, dont le nom n'est pas réservé pour gérer la passerelle, verra sa valeur inscrite dans le fichier sato.cmd. Les champs peuvent être codés directement dans la requête CGI ou faire partie d'un formulaire.

Voici un exemple de requête transmise au moyen d'un HREF codé selon le protocole GET (le + désigne un espace dans la méthode GET)

&sato.session;?cmd=*Texte+afficher&formulaire=texte.htm&v1=Affichage+du+texte&filtre=$

Dans cet exemple, *Texte+afficher est une chaîne de caractères qui sera transmise au programme en exécution via le fichier sato.cmd. Le + sera remplacé par un espace. La valeur du champ filtre, c'est-à-dire la chaîne composée du caractère $ sera concaténée à *Texte+afficher précédée d'un espace. Donc, la chaîne *Texte afficher $ sera écrite dans sato.cmd et le résultat sera inséré dans le formulaire texte.htm en lieu et place de la balise <sato> (voir plus bas). Aussi, la valeur du champ v1 (Affichage du texte, après remplacement des + par des espaces) pourra aussi être insérée dans le formulaire en lieu et place de l'entité &sato.v1;.

Chaque requête transmise à SATO via la passerelle débute par un caractère de contrôle, ou paramètre d'état, qui permet d'indiquer le statut de la chaîne de caractères transmise à SATO. En voici la définition.

Si une requête transmise par la passerelle se termine par ** et si SATO doit générer un menu pour compléter la commande, ce menu sera généré sans déclaration de formulaire et sans bouton soumettre, présumant que ces informations se trouvent dans le formulaire.

[Index]


Balises et entités SATO

La passerelle satox.exe agit de deux façons. D'abord, elle décode les paramètres de la requête CGI, via les méthodes GET et POST, et elle bâtit le fichier de commandes à soumettre au programme démarré par la passerelle. Ensuite, la passerelle interprète le contenu du fichier à retourner en réponse à la requête, fichier qui contient des balises et des entités spéciales interprétables par la passerelle satox.exe. En fait, plusieurs des champs transmis à la passerelle par la requête HTTP ne deviendront opérationnels qu'au moment de la lecture de ce fichier dont le nom est généralement transmis dans le champ formulaire.

Les balises SATO sont des balises conformes à la syntaxe SGML/XML. comprises, comme à l'habitude, entre parenthèses angulaires (< > ). Les entités suivent aussi la syntaxe SGML/XML : ce sont des chaînes de caractères comprises entre les caractères «&» et «;» En fait, elles sont de la forme &sato.xxx; où xxx désigne un des identificateurs dont la description suit. Les entités peuvent être vues comme des noms de variables que satox.exe remplacera par leur contenu. Les bailises sont des éléments plus complexes qui contiennent elles-mêmes des paramètres et qui vont activer des actions.

[Index]


Fichier de configuration de la passerelle

Le fichier de configuration de la passerelle satox.exe se trouve dans le répertoire où est installée la passerelle, généralement cgi-bin. Le nom du fichier de configuration est satox.ini. En voici un exemple

[Env]
usagerrep=c:\sato\usagers\
[Exe]
sato=c:\sato\sato.exe
gestion=c:\sato\bin\gestion.pl
calibrer=c:\sato\bin\calibrer.exe
loc=c:\sato\loc.pl
locbloc=c:\sato\locbloc.pl
[Var]
v0=
v1=
v2=
v3=
v4=
v5=
v6=
v7=
v8=
v9=
mot_cle=mots à chercher
satoman=http://localhost

La section [Env] contient le paramètre usagerrep qui indique la racine à partir de laquelle seront crées les espaces de travail des usagers. Si ce paramètre est absent les répertoires des usagers seront crées à partir du sous-répertoire usagers du répertoire sato. Notre exemple ne fait donc que confirmer la chose en donnant le chemin complet du répertoire.

La section [Exe] contient la liste des noms de programmes qui peuvent être démarrés par la passerelle. La valeur du paramètre correspond à la localisation exacte du programme à démarrer.

Enfin, la section [Var] contient la liste de variables que l'on utilise dans les fichiers HTML de l'interface SATO. La valeur définie pour chaque variable sera utilisée si une nouvelle valeur n'est pas transmise avec l'appel de la passerelle. L'appel de la variable dans le formulaire retourné par la passerelle suit la syntaxe des entités SATO: par exemple &sato.v1; &sato.mot_cle; &sato.satoman;

[Index]