                                  XTel 3.1

                         Emulateur minitel sous X11

                    Pierre Ficheux (pierre@rd.lectra.fr)

                               Septembre 1996

0. Prambule

Par PITIE, lisez ce fichier avant de vous poser (ou de ME poser) des
question sur l'installation !

Merci  ceux qui m'ont transmis leurs remarques et problmes sur les
versions 2.2/2.3/2.4/3.0 et/ou contribu  l'volution et la diffusion de
XTEL avec entre-autres :

   * Michel Fingerhut (Michel.Fingerhut@ircam.fr)
   * Laurent.Ghys (Laurent.Ghys@ircam.fr)
   * Christophe De Traversay
   * Christophe Wolfhugel (wolf@pasteur.fr)
   * Ren Cougnenc +
   * Remy Card (card@ibp.fr)
   * Eric Dumas (dumas@freenix.fr)
   * Daniel Roche (dan@rd.lectra.fr), conseiller artistique pour les icnes
     :-)

Je tiens a remercier particulirement :

   * Bernard Fouche (CPIO S.A.) et Florent Pillet (ex CPIO S.A.) pour les
     multiples corrections de bugs concernant le dcodage Vidotex.
   * Pierre Beyssac pour:
        o l'amlioration du demon xteld
        o l'intgration du code pour utiliser le Minitel 2 comme
        o le code d'utilisation du dmon syslogd
   * Bertrand Petit pour son floppy de pages d'exemples DRCS.
   * Sylvain Meunier pour:
        o les bases du code d'mulation tl-informatique
        o les bases des macros de conversion des fontes BDF en OpenWindows

Une pense spciale pour Ren Cougnenc, R.I.P ;-(

Pour connaitre les diffrences entre les versions, voir le fichier HISTOIRE.

Pour voir ce que donne un cran XTEL, vous pouvez visualiser le fichier
xtel.gif.

1. Prsentation

1.1 But

XTEL permet d'muler un Minitel 1B, 2 ou TVR (Tltel Vitesse Rapide) sur un
terminal X, ou une station de travail couleur, monochrome ou  niveaux de
gris.

Il est utilisable en rseau, c'est a dire qu'une des machines du rseau
commande les MODEMS et dialogue avec les services Tltel, les utilisateurs
de XTEL dialoguent avec cette machine "serveur" par socket internet
(utilisation d'un service TCP et du super-dmon "inetd").

La version 2.4 et > permet galement une utilisation en "local". Cela permet
d'utiliser XTEL sur des machines autonomes sur lequel aucun package TCP/IP
n'est install. XTEL utilise alors des sockets "unix" (AF_UNIX).

On peut gnrer XTEL avec 2 toolkits (interfaces graphiques) possibles :

   * Toolkit Athena (gratuit, livr avec X11)
   * Toolkit OSF-Motif (produit commercial)

L'mulation "Tltel Vitesse Rapide" ncessite de modifier le fichier
"Config.tmpl" pour commenter la ligne:

        #define NO_TVR

L'mulation n'est pas disponible par dfaut car elle est trs peu utilise
vu que les serveurs TVR (3623) sont assez peu nombreux et que la modulation
est spcifique  FT... A ma connaissance, les seuls modems supportant cette
modulation sont les Djinn Flash vendus par FT et fabriqus par la socit
bordelaise COM1.

Cette mulation ncessite galement la "libjpeg" (du JPEG independent
group). Cette librairie est disponible sur ftp.uu.net:/graphics/jpeg.

Elle normalement prsente sur la majorit des distributions LINUX.

J'utilise XTEL sur Linux (xtel et xteld), SunOS 4.1.3, System V 3.2, SVR4...

J'ai personnellement test la partie xtel sur:

   * Linux 1.0, 1.2, 2.0
   * Lectra SVR4.0
   * SunOS 4.1.1 et >
   * Solaris 2.3 et >
   * SGI Irix 5.3

Pour la partie xteld (en particulier la gestion des lignes sries), je n'ai
*vraiment* test que sur System V 3.2, SVR4, Solaris et Linux.

1.2 Description des rpertoires

 ./        le source de XTEL + des exemples de fichiers de configuration
           (xtel.lignes, xtel.services)
 ./Videotexle widget de dcodage Vidotex
 ./Widgets les autres widgets spciaux utilises par XTEL

 ./Xsra    le slecteur de fichier pour Athena (venant de SRA, Tokyo,
           Japon, et dja utilis dans GhostView, Pixmap, etc...)
 ./fonts   les fontes
 ./bitmaps bitmaps particuliers  XTEL
 ./pixmaps pixmaps (.xpm) particuliers  XTEL
 ./exemplesquelques pages vidotex, DRCS et TVR

1.3 Mthode de simulation des couleurs en monochrome

Sur un cran monochrome (1 plan mmoire), on simule les 8 couleurs du
MINITEL en utilisant des "pixmaps" et en les affectant au "stipple"
d'criture (XSetStipple). On passe ainsi la couleur standard d'criture (le
blanc) au travers d'une "passoire" ce qui simule des niveaux de gris (si on
utilise la version "petit cran" de XTEL, option -p, certains affichages, de
caractres en particulier, ne sont pas tres lisibles).

2 Gnration

La gnration de XTEL utilise le systme des "Imakefile". Les options de
configurations sont dans le fichier "Config.tmpl".

A partir du fichier "Imakefile" fourni sur la distribution, vous pouvez
alors gnrer un "Makefile" par :

                xmkmf

Puis pour gnrer la disribution XTEL :

                make Xtel

Si tout se passe bien (!!!), vous devez avoir aprs le "make all" :

   * xtel, client XTEL
   * xteld, dmon lance sur la machine "serveur"
   * les fontes, fonts/*.snf si X11R4, fonts/*.pcf si X11R5 ou +

3 Installation et configuration

3.1 Introduction

La configuration de XTEL se dcompose en :

   * installation et configuration du dmon "xteld" sur la machine serveur
     (ou bien sur la machine locale dans le cas de la version sans rseau)
   * installation du client "xtel" sur toutes les machines du rseau
     dsirant l'utiliser
   * dans le cas d'une installation avec rseau :

       1. ajouter la ligne :


                  xtel    1313/tcp

          dans le fichier "/etc/services" (ajout d'un nouveau service TCP).
       2. ajouter la ligne :

                  xtel stream tcp nowait root /usr/X11R6/bin/xteld xteld

          dans le fichier "/usr/etc/inetd.conf" (ou "/etc/inetd.conf"), pour
          informer le super-dmon "inetd" que l'on a cr un nouveau demon
          "xteld" (ATTENTION, sur certains systmes, les champs doivent tre
          spars par des TAB et non des blancs). Le chemin d'accs absolu 
          "xteld" varie bien videmment suivant les systmes.
       3. forcer "inetd"  relire le fichier "inetd.conf" par :

                  kill -1 le_pid_de_inetd

   * Dans le cas d'une installation sans rseau :

       1. ajouter le lancement automatique du dmon "xteld" dans le(s)
          fichier(s) de dmarrage de votre systme (/etc/rc, ou autre, a
          dpend du systme)
       2. le premier coup, vous pouvez lancer le dmon  la main en faisant:

                  xteld

          en tant que root. ATTENTION, ne *jamais* lancer "xteld"  la main
          dans le cas d'une installation avec rseau !

3.2 Installation du dmon xteld

Cette installation s'effectue sur la machine serveur (supportant le(s)
Modem(s)) . Si la machine serveur est galement celle sur laquelle vous
gnrez XTEL, vous pouvez crer la rgle d'installation par :

        #define INSTALLDEMON

dans "Config.tmpl"

puis un

        make install

L'installation du dmon xteld se dcompose en

  1. copier le programme "xteld" sur le rpertoire $(BINDIR) (/usr/X11R6/bin
     sous XFree86-3.1.x).
  2. copier les fichier "xtel.lignes" et "xtel.services" sur le rpertoire
     $(LIBDIR)/xtel (/usr/X11R6/lib/X11/xtel sous XFree86-3.1.x).

Le fichier "xtel.lignes" dfinit les lignes "tty" utilisables par "xteld".
Une ligne du fichier dfinit une ligne "tty" :

 [device,]nom_tty[:rtscts],[vitesse,][nb de bits,][parit,]chat_script,dlai_connexion
 [device,]nom_tty[:rtscts],[vitesse,][nb de bits,][parite,]chat_script,dlai_connexion

            device              nom symbolique du device associ  cette
                                configuration de la ligne physique. Ce nom est
                                choisi par l'utilisateur (par exemple v23, tvr)
                                et sera utilis dans le fichier "xtel.services"

            nom_tty             nom du tty (/dev/cuax sur Linux), avec
                                ventuellement le flag "rtscts" de contrle de
                                flux hardware (pour TVR par exemple)

            vitesse             vitesse en bauds de la lignes. Les valeurs
                                supportes sont: 50, 75 110, 134, 150, 200,
                                300, 600, 1200, 1800, 2400, 4800, 9600,
                                19200, 38400.

            nb de bits          nombre de bits. Les valeurs supportes sont:
                                5, 6, 7, 8.

            parite              parit. Les valeurs supportes sont E (pair),
                                O (impair), N (sans parite).

            chat_script         Description du chat-script entre xteld et le
                                modem. La syntaxe du chat-script est similaire
                                 celle utilise par UUCP. L'intrt du
                                chat-script est de permettre une phase
                                d'initialisation du modem avant la composition
                                du numro (par exemple, passer le modem en
                                modem V.23 - et non pas en automode - avant de
                                composer ==> augmentation de la vitesse de
                                connexion). Si le chat-script est
                                remplac par la chane:

                                        minitel2

                                la ligne utilisera un Minitel 2 comme modem
                                (idem pour un minitel1, mais il faudra alors
                                composer les numros a la main...)

                Les squences reconnues par le chat-script sont :

                        \n      met un LF
                        \r              CR
                        \t              VT
                        \d      tempo de 1 s
                        \a      bip (^G)
                        \T      remplace par le numro de tlphone courant
                        \xyz    met le caractre code en DECIMAL par xyz
                                (3 digits OBLIGATOIRES)
                        \xab    met le caractre en HEXADECIMAL (2 digits)


            dlai_connexion     dlai maxi d'attente de la chane ci-dessus
                                en secondes

L'ancienne syntaxe (sans la notion de device) est toujours supportes (elle
est dtecte par la prsence d'un '/' en debut de ligne)

    exemples:

        le_v23,/dev/cua0,1200,7,E,\dat\r OK atdt\T\r CONNECT,30

        - nom du device = le_v23

        - ligne /dev/cua1, 1200 bauds, 7 bits, parit paire

        - le chat-script dcrit la conversation suivante (to chat =
          converser)

                xteld met                      Modem doit rpondre

                \d                              Delai de 1s pour
                                                attendre le dmarrage
                                                du soft du modem
                                                (SOUVENT NECESSAIRE)
                at + CR                         OK
                atdt + numro tlphone + CR    CONNECT


        - dlai maxi = 30 s

        le_tvr,/dev/cua2:rtscts,9600,8,N,\dat\r OK at+xm3\r OK atdt\T\r CONNECT,30

        - config en Tltel Vitesse Rapide (avec contrle de flux hard  RTS/CTS
        sur la ligne)

        /dev/cua1,minitel2,30

        - ligne /dev/cua1

        - on utilise un Minitel 2 comme modem, dlai maxi = 30s

Le fichier "xtel.services" dfinit les services accessibles aux utilisateurs
de XTEL. Une ligne du fichier dfinit un service :

  [Device,]Nom_du_service,numro_de_tlphone[liste_d_utilisateurs]

                Device                  Device utilise (doit tre dfini dans
                                        "xtel.lignes")

                Nom_du_service          Chaine de caractres affiche dans le
                                        menu "Services" de "xtel"

                numro_de_tlphone[:nom]     numro du service

                liste_d_utilisateurs    liste des utilisateurs autoriss
                                        et des temps maxis de connexion pour
                                        un service donn (optionnel, syntaxe
                                        "user=delai")

             exemples :

                le_v23,Annuaire electronique,3611,=180
                le_v23,Teletel 1,3613,pierre=120:olivier
                le_v23,Mteo,3615:METEO
                le_tvr,Teletel TVR,3623
                le_v23,Direct,0,pierre

Dans cet exemple le service d'\fIAnnuaire\fP est autoris  tous pendant 180
secondes (=180). Le \fITltel1\fP est accessible  l'utilisateurs pierre
pendant 120 secondes (pierre=120), il n'y a pas de limite d'accs pour
l'utilisateur olivier. L'accs au 3615 est limit au service METEO.

La dernire ligne "Direct,0" permet de fournir aux utilisateurs l'accs  la
composition directe des numros (dangereux car certains services Tltel
sont hors de prix ! ==>  protger).

La configuration de ces 2 fichiers est de sous responsabilit de
l'administrateur systme suivant le budget tlphonique allou !

3.3 Installation du client xtel

Cette installation doit tre effectue sur chaque machine du rseau dsirant
utiliser XTEL. Elle se decompose en :

   * configuration du fichier de ressources, qui permet de dfinir l'aspect
     et le comportement de "xtel" :
        o nom du serveur (ressource "serveur")

                  ! localhost ==> serveur local
                  *serveur:       localhost

        o format de la commande d'impression de page (ressource
          "commandeImpression")

                  *commandeImpression: xwdtopnm %s | pnmflip -r90 | pnmtops | lpr

          On utilise le package PBMPLUS pour convertir la fentre
          d'mulation du format XWD --> POSTSCRIPT (voir fichier
          "imprime.c").
        o nom du service (ressource "nomService")

                  *nomService:    xtel

           priori, pas de raison de changer ...
        o taille de la fentre d'mulation (ressource "petiteFonte")

                  *petiteFonte: False

          par dfaut, on utilise la grande fonte (mulation sur 640x500
          pixels).
   * installation, qui est effectue par :

             make install

     qui installe :
        o xtel sur $(BINDIR) (et xteld si INSTALLDEMON est defini)
        o XTel (ou XTelm si version Motif) sur $(LIBDIR)/app-defaults
        o les fontes sur $(LIBDIR)/fonts/xtel
        o xtel.lignes et xtel.services si INSTALLDEMON est defini
   * ajout du nom du service "xtel", par ajout de la ligne:

             xtel    1313/tcp

     dans le fichier "/etc/services" (ajout d'un nouveau service TCP). Ceci
     n'est vrai que dans la version reseau.
   * information au serveur X de la prsence de nouvelles fontes sur

             $(LIBDIR)/fonts/xtel

     par exemple avec :

             xset +fp /usr/X11R6/lib/X11/fonts/xtel

     A T T E N T I O N !

     Si vous installez XTEL sur XFree-86 (version 2 ou 3), vous pouvez (et
     mme devez) indiquer au serveur le rpertoire des fontes XTEL.

     Pour XFree86-2.1: ajouter le path des fontes XTEL dans le "FontPath" :

             FontPath        "/usr/X386/lib/X11/fonts/misc/,/usr/X386/lib/X11/fonts/75dpi/,/usr/X386/lib/X11/fonts/xtel/"

     Pour XFree86-3.1: ajouter une ligne du type :

             FontPath    "/usr/X11R6/lib/X11/fonts/xtel/"

     bien sr, il faut relancer le serveur...
   * installation du manuel par :

             make install.man

                  L'INSTALLATION DE XTEL EST TERMINEE !!!

Remarques :

   * Si vous disposez d'un cran couleur, et d'un window-manager supportant
     les icnes au format XPM (fvwm par exemple), vous pouvez utiliser le
     fichier "xtel.xpm" comme icne. Pour cel, il faut ajouter les lignes
     suivantes dans le .fvwm :

             Style "xtel"       Icon xtel.xpm

     Pour tvtwm :

             # indispensable pour inhiber l'icone initial de XTEL
             ForceIcons

             Icons {
                     "xtel"  "xtel.xpm"
             }

   * Si vous utilisez AIX (pauvre de vous !), il semble qu'il faille dfinir
     NO_TERMIO dans le fichier "Config.tmpl"

4 Remarque sur l'utilisation

Lorsqu'un utilisateur est connect a un service, "xteld" cre un fichier
".xtel-nom_utilisateur" sur le rpertoire /tmp. Ce fichier contient des
infos sur la connexion (pid du dmon, nom de ligne, nom de service).

Les caractristiques de la connexion (heure, dure, service, ...) sont
sauves sur un fichier de "log" (par dfaut $(LIBDIR)/xtel/xtel.log).

5 Bugs et limitations

   * Les squence CSI ne sont pas entirement traites (XTEL ne traite que
     les positionnements et les dbuts/fins d'insertion...)
   * Le dcodage VIDEOTEX est relativement complexe et il reste certainement
     des bugs de decodage. Si vous en trouvez un, merci de m'envoyer un mail
     explicitant le bug (service Tltel, moyen de parvenir  la page et
     surtout la page incrimine code par exemple avec "uuencode").
   * Le TVR n'est certainement pas gr compltement...

Je suis bien entendu  l'coute de toutes les remarques constructives.

Ave feune,

Pierre Ficheux
Lectra Systmes
service R & D
ZI Marticot
33610 Cestas, FRANCE

tl : +33 57 97 80 00 (poste 1335)
fax : +33 57 97 82 32
E-mail: pierre@rd.lectra.fr
WWW : http://www.alienor.fr/~pierre
