Exit point pour TELNET

BoTTom |
      *
      *
      * ce pgm est associé au point d'exit QIBM_QTG_DEVINIT
      *
      *    il peut :  refuser une connexion entrante
      *               forcer un nom d'unité
      *               by-passer le signon et forcer un profil.
      *
      *=====================================================================
 
      * pseudo types de variables
     Dbinaire          S             10I 0
     Dnomvalide        S             10
 
      * déclaration des variables
     Duser             ds
     D  userlg                             like(binaire)
     D  profil                             like(nomvalide)
     D  curlib                             like(nomvalide)
     D  menu                               like(nomvalide)
 
 
     Ddevice           ds
     D  unite                              like(nomvalide)
     D  format                        8
     D    filler                      2
     D  offset                             like(binaire)
     D  dspd0100lg                         like(binaire)
     d  dspd0100                     12
     d    clavier                     3    overlay(dspd0100)
     d    codepage                         overlay(dspd0100:5) like(binaire)
     d    charset                          overlay(dspd0100:9) like(binaire)
 
 
     Dconnection       ds
     D  connectlg                          like(binaire)
     D  adresseclient                20
     D     adrtaille                  1    overlay(adresseclient)
     D     adrtype                    1    overlay(adresseclient:2)
     D     adrport                    2    overlay(adresseclient:3)
     D     adresse                   16    overlay(adresseclient:5)
     D       ip12                     5I 0 overlay(adresse)
     D       ip34                     5I 0 overlay(adresse:3)
     D  password                      1


|
 
     D adresseip       c                   x'02'
     D adresseipx      c                   x'06'
 
     D pas_de_pwd      c                   0
     D pwd_en_clair    c                   1
     D pwd_crypte      c                   2
 
     Denv              S             32
     Denvlg            S                   like(binaire)
 
     Dconnect          S              1
     D connect_refus   c                   '0'
     D connect_ok      c                   '1'
 
     Dsaut_signon      S              1
     D saut_refus      c                   '0'
     D saut_ok         c                   '1'
 
     Dmessage          s           1024
     Dmessagelg        s                   inz(%size(message)) like(binaire)
     Dmessagetype      s             10    inz('*INFO')
     Dmessageq         s             20    inz('DSP01     *LIBL')
     Dmessageqnb       s                   inz(1) like(binaire)
     DCODERR           DS
     D  LGCOD                              like(binaire)   INZ(16)
     D  LGUTIL                             like(binaire)
     D  MSGID                         7
     D  RESERV                        1
 
     Dadrchar          ds
     D  dec1                          3  0
     D  dec2                          3  0
     D  dec3                          3  0
     D  dec4                          3  0
 
     C     *entry        plist
     C                   parm                    user
     C                   parm                    device
     C                   parm                    connection
     C                   parm                    env
     C                   parm                    envlg
     C                   parm                    connect
     C                   parm                    saut_signon


|
 
     c     ip12          div       256           dec1
     c                   mvr                     dec2
     c     ip34          div       256           dec3
     c                   mvr                     dec4
 
 
      * adresse LAN valide ?
     c                   if        (dec1 = 10)  and
     c                              (dec2 = 2 or dec2 = 3)
 
     c                   eval      connect = connect_ok
     c                   eval      saut_signon = saut_refus
 
     c                   eval      format = 'DSPD0100'
     c                   eval      offset = 29
     c                   eval      dspd0100lg = 12
 
      * si euro compatible
     c                   eval      clavier = 'FAE'
     c                   eval      codepage = 1147
     c                   eval      charset = 695
      * sinon
     c*                  eval      clavier = 'FAB'
     c*                  eval      codepage = 297
     c*                  eval      charset = 697
 
     c                   select
      * machines linux
     c                   when      dec3 = 1 and dec4 = 9
     c                   eval      unite = 'LINUX'
     c                   when      dec3 = 1 and dec4 = 10
     c                   eval      unite = 'LINUX2'
      *
      * etc .... (sauf à envisager les noms d'unité dans un fichier BdeD)
      *
     c                   endsl
 
      * pour accepter le saut de signon (TN5250 uniquement)
     c*                  eval      saut_signon = saut_OK
     c*                  eval      PROFIL = 'QPGMR'
     c*                  eval      USERLG = %SIZE(userlg) + %size(profil)
 
     c                   else


|
      * machine ne venant pas du lan (autre que 10.2.* ou 10.3.*)
 
     c                   eval      connect = connect_refus
 
     c                   eval      message = 'demande recue depuis ' +
     c                               adrchar + '(' + %trim(profil) + ')'
     c                               + 'rejetée !'
     c                   call      'QMHSNDBM'
     c                   parm                    message
     c                   parm                    messagelg
     c                   parm                    messagetype
     c                   parm                    messageq
     c                   parm                    messageqnb
     c                   parm                    messageq
     c                   parm                    coderr
 
     c                   endif
 
      * fin
     c                   eval      *inlr = *on




©AF400