Le service Telnet (dhsTelnet)
Préconisations
Il est conseillé d'utiliser un serveur dédié à l'exécution du Telnet, et donc de ne pas installer directement ce service sur le XLAN. Le serveur peut être virtualisé.
Il faut considérer le serveur Telnet comme n'importe quel poste client. Hors telnet, Divalto doit donc déjà y être fonctionnel, environnements montés et autres configurations comme pour n'importe quel client en place sur le site : licence, xlogf...
Les préconisations (version d'OS Windows, implicites...) sont les mêmes que pour un serveur applicatif. Les ressources prises sont moindres qu'un client RDP classique, car seul xrtdiva.exe tourne. Il n'y a pas de xwpf, et donc pas d'affichage à gérer.
Installation et paramétrage du service dhsTelnet
dhsTelnet est un service qui assure l'interface entre un (ou plusieurs) programme(s) Diva et un (ou plusieurs) client(s) Telnet (douchettes, écrans passifs, …). Il attend la connexion des clients et, pour chaque client qui se connecte, lance l'exécution d'un programme Diva. Ce dernier peut alors dialoguer avec le client Telnet via des commandes spécifiques d'entrée-sortie.
Installation
Pour installer le service dhsTelnet, lancez le programme diva InstallTelnet.dhop (qui se trouve dans Divalto/Sys).
Liste des fichiers livrés
dhsTelnet.exe | Service dhsTelnet |
dhsTelnet.txt | Fichier paramètres de dhsTelnet |
Ytelnet.dhop | Module de traitement |
Ttelnet.txt | Définition des touches de base |
Tvt220.txt | Définition des touches en émulation vt52/vt100/vt220 |
TestTelnet.bat | Lancement de l'émulateur Telnet de Windows |
DemoTelnet.dhop | Programme de démonstration. |
Paramétrage
Au démarrage, le service dhsTelnet charge le fichier paramètres dhsTelnet.txt. Ce fichier doit préciser la liste des connexions Telnet à gérer, à raison d'un type de connexion par ligne.
Une ligne doit respecter la syntaxe suivante :
<port>numéro_de_port_à_écouter<prog>programme_à_lancer<user>code_utilisateur<env>environnement <show>visibilité<paramsytelnet>"<codage>codage_pc8<timeoutmn>valeur_du_timeout<fic>fichier_des_touches<debug>débogueur"<paramsharmony>"paramètre_à_transmettre"
Exemple :
<port>2248<prog>wmpprf001.dhop<user>UTILISATEUR<paramsytelnet>"fictouche>tvt220<codage>PC8<timeoutmn>45<entersanslf>0<ErpUser>UTILISATEUR<ErpPassWord>MOTDEPASSE<lignes>16<colonnes>24<AffToucheLegende>1<nbtouchefctaff>5<debug>0<Language>FR<touchepiano>K_F6"
Balise HMP | Obligatoire | Valeur syntaxe | Description |
---|---|---|---|
port | Oui | numéro_de_port_à_écouter | Numéro du port TCP/IP utilisé par un client Telnet. (couramment 2247, 2248...) |
prog | Oui | programme_à_lancer | Nom du programme à lancer par le service Divalto Telnet lorsque le client Telnet se connecte sur ce port
|
user | Oui | code_utilisateur | Utilisateur ERP permettant d'ouvrir une tâche Divalto, sous lequel le programme diva doit s'exécuter Remarque : toutes les tâches du Telnet sont lancées avec le login NT indiqué sur le service, quel que soit l'utilisateur ERP utilisé ensuite dans l'application. |
env | Non | environnement | Nom de l'environnement de chargement (production/test...) Attention : La mise en œuvre des environnements est facultative mais si elle est activée, elle concerne obligatoirement tous les services dhsTelnet d'un même fichier paramètres. |
paramsytelnet | Oui | (voir tableau plus bas) | Paramètres complémentaires pour le module Ytelnet (à indiquer entre guillemets) : Paramètres transmis au programme gtpprf001.dhop ou wmpprf001.dhop |
show | Non | visibilité | Affichage de caractères du client 1 pour que les caractères en provenance du client Telnet soient affichés à l'écran. |
login | Oui à partir des versions X |
| Ce paramètre est obligatoire à partir de la version X, hors kit 500 000. Il faut positionner la valeur à 1 : <login>1 Ce paramètre forcera une connexion système. |
paramsharmony | Non | paramètre_à_transmettre | Paramètres complémentaires pour le programme diva (à indiquer entre guillemets) : Chaîne de caractères libre qui sera transmise au programme dans la variable d'environnement HARMONY_PARAM. Utilisez la fonction diva GetEnv ("HARMONY_PARAM") pour la récupérer (les guillemets ne sont pas transmis). Remarque : cette chaîne peut être au format HMP. |
Exemples/démonstration sur des traitements de test
<port>2260<prog>PanneauAffichage.dhop<user>AFF
<port>2247<prog>demoxtelnet.dhop<user>DEMO<env>ERP210
<port>2248<prog>resultatbalance1.dhop<user>RB<paramsytelnet>"<pc8>1<timeout>0<crlf>1"
<port>2350<prog>resultatbalance2.dhop<user>RB<paramsytelnet>"<pc8>1<timeout>0<crlf>1"
<port>2247<prog>demo.dhop<user>DEMO<paramsytelnet>"<timeout>15"<paramsharmony>"<demo>1"
Remarque : le fichier dhsTelnet.txt livré contient une première ligne de commentaires rappelant la syntaxe d'une ligne de paramètres et une deuxième ligne d'exemple permettant de lancer le programme de démonstration DemoTelnet.dhop :
<port>2247<prog>demotelnet.dhop<user>DEMO
La balise paramsytelnet contient elle-même un contenu HMP encadré de guillemets droits " ", et utilisé par la module ‘telnet’.
Balise HMP paramsytelnet | Obligatoire | Valeur syntaxe | Valeurs possibles | Description |
---|---|---|---|---|
AffToucheLegende | Oui |
| 0 non activé 1 activé | Afficher la légende de la touche (F1, F2...) Cela permet de gagner une ligne d'affichage, mais on perd beaucoup en ergonomie. |
codage | Non | codage_pc8 | PC8 (défaut) ANSI | Indique le jeu de caractères à utiliser (gestion des accents notamment) : ANSI pour les terminaux, PC8 pour le client Telnet Windows On paramètre donc couramment deux ports dans le fichier, l'un utilisé par le client des terminaux, l'autre pour les clients Windows. |
colonnes | Oui |
| 24... | Nombre de colonnes de l'écran Telnet (configurer le client Telnet des terminaux de manière adéquate également) |
debug | Non | débogueur | 0 non activé (défaut) 1 activé | Si activé, un fichier de log bas niveau est généré dans /divalto/divaltolog/ErpDivalto/Tnt. (fichier Ytelnet.log (*) ) |
entersanslf | Non |
| 0 (défaut) 1 | input avec cr puis lf input avec cr uniquement |
erpPassWord | Non |
|
| Si ErpUser est renseigné, on peut également indiquer ici le mot de passe ERP pour éviter de le saisir. Intérêt uniquement sur un poste développeur |
erpUser | Non |
|
| Si cette balise est renseignée, le login indiqué est prérempli au lancement. Cela évite de le remplir. Intérêt uniquement sur un poste développeur |
fictouche | Oui |
| tvt220... | Les terminaux Telnet utilisent en général soit une émulation type « vt220 » soit une émulation « Telnet de base » pour les touches de fonction F1 à F10 et les touches Suppr et Flèches haut/bas/gauche/droite. Si votre terminal utilise une émulation vt52/vt100/vt220, indiquez ici le fichier Tvt220.txt. Si ce paramètre est absent (*), Ytelnet utilisera le fichier de définition des touches Ttelnet.txt, correspondant à l'émulation Telnet de base. Ouvre donc le fichier indiqué (+.txt) situé dans le dossier sys pour faire la correspondance entre ce que l'on reçoit du client Telnet et les touches. Ce fichier n'a en principe pas besoin d'être modifié. On utilise le fichier standard fourni tvt220.txt. |
language | Non |
| FR EN ... | Permet de forcer une langue au niveau du port. Remarque : la langue peut être indiquée par utilisateur (table RFUSER), et même être changée par un menu Telnet dynamiquement. Si le dossier est uniquement francophone, aucune intervention n'est nécessaire. Si le dossier est international et que le serveur Telnet est commun à plusieurs langues, on peut par exemple indiquer « EN » pour une saisie de son login et de son mot de passe avec des labels en anglais, puis paramétrer chaque utilisateur avec la langue souhaitée dans cette table ERP RFUSER. |
lignes | Oui |
| 16... | Nombre de lignes de l'écran Telnet (configurer le client Telnet des terminaux de manière adéquate également) |
nbtouchefctaff | Oui |
| 5 ... | Nombre de touches maximum affichable. Si le masque en décrit plus, elles ne seront pas affichées (mais accessibles avec le piano F6). Ce nombre doit être en rapport avec le nombre de colonnes maximum du client Telnet. Par exemple, en 24 colonnes, et 5 boutons à afficher, cela ne laisse déjà que 4 colonnes pour décrire le bouton. |
timeoutmn | Non |
| Temps en minutes | Si cette balise est renseignée, le client sera raccroché en cas de non-activité. Attention, cela n'est pas toujours possible suivant l'action en cours de l'opérateur. Si ce paramètre est absent (*) ou si la valeur 0 est indiquée ici, aucun time-out n'est mis en route et il n'y aura pas de déconnexion automatique. |
touchepiano | Non |
| K_F6 (défaut) ... | DISPONIBLE POUR LES TRAITEMENT WMS UNIQUEMENT Touche qui permettra d'afficher le piano en saisie de page sous Telnet. |
(*) Les valeurs par défaut sont paramétrées dans Divalto.ini, au chapitre [ytelnet].
Exemples sur des traitements standard ERP
;WMS :
<port>2249<prog>wmpprf001.dhop<user>DEMO<paramsytelnet>"<fictouche>tvt220<codage>ANSI<timeoutmn>32<entersanslf>0<ErpUser>DEMO<ErpPassWord><lignes>16<colonnes>24<AffToucheLegende>1<nbtouchefctaff>5<debug>0<touchepiano>K_F6"
<port>2250<prog>wmpprf001.dhop<user>DEMO<paramsytelnet>"<fictouche>tvt220<codage>PC8<timeoutmn>45<entersanslf>0<ErpUser>DEMO<ErpPassWord><lignes>16<colonnes>24<AffToucheLegende>1<nbtouchefctaff>5<debug>0<touchepiano>K_F6"
Gestion des licences nommées dans Telnet
Une application Telnet, s'exécutant sur un site pour lequel la gestion des licences nommées est active, doit être adaptée afin de prendre en compte cette nouvelle gestion. En effet, l'utilisateur de l'application Telnet doit s'authentifier avant de pouvoir exécuter l'application. Pour cela, les paramètres suivants doivent être spécifiés dans le fichier Dhstelnet.txt :
Balise <Login> | La valeur 1 indique que l'on souhaite mettre en œuvre l'authentification de l'utilisateur. Dans ce cas, le service Dhstelnet demande à l'utilisateur de s'authentifier en saisissant son compte et son mot de passe Windows. Le service lance alors le programme Diva associé au port en s'impersonnant sous le compte de l'utilisateur. Il vérifie que l'utilisateur est un utilisateur nommé sur le serveur de licences. |
Balise <msgconnect> | Cette balise permet de personnaliser le texte d'accueil, dont la valeur par défaut est "Connexion". Elle comporte trois sous-balises :
|
Balises <Lang> et <Langimp> | Ces balises permettent de définir les codes langue pour l'affichage et l'impression. |
Balise <User> | Dans ce contexte, le contenu de la balise <User> est ignoré. |
Programme Diva
Le programme Diva associé au port telnet peut récupérer les paramètres suivants :
Le mode Login, renvoyé par la fonction GetEnv ("TELNET_LOGIN"). Vaudra 1 si la balise <Login> est active dans le fichier paramètre. Ceci permet de développer des programmes Telnet compatibles avec les deux modes de licences.
Le compte de l'utilisateur est renvoyé par la fonction GetUserName. Il s'agit du compte de l'utilisateur Windows qui a effectué la connexion, soit en principe le compte de l'utilisateur Divalto, sauf si un alias est associé à ce compte.
La variable System.User contient le code de l'utilisateur Divalto.
Programmation d'un serveur Telnet
Un exemple de programmation de serveur Telnet est livré avec Harmony (DemoTelnet.dhsp dans le sous-projet Xtelnet du projet Exemples).
Vous y trouverez la liste des commandes du module Ytelnet (commentaires en début de source).
Pour exécuter cette démonstration, lancez au préalable le fichier batch TestTelnet.bat, qui fait appel à l'émulateur Telnet de Windows sur le port 2247.
DemoTelnet propose un menu avec les choix suivants (utilisez les touches du clavier a, p, c, l, x, y pour changer les paramètres de fonctionnement de Ytelnet) :
a = codage ANSI ; p = codage PC8
x = vt220 (fichier des touches tvt220.txt) ; y = telnet (fichier des touches dhsTelnet.txt)
c = crlf ; l = cr seul
Remarque : le logiciel d'émulation de terminal utilisé pour la démonstration est livré et installé avec le système Windows mais il diffère suivant les versions (2000 ou XP). Celui de Windows 2000 ne renvoie que CR alors que celui de Windows XP renvoie CR+LF.
Attention : ce programme de démonstration est un exemple « général » qu'il faudra évidemment adapter au(x) client(s) Telnet concerné(s).
Voir aussi la rubrique Gestion des licences nommées dans Telnet.