Serveur WEB en V4.30 / 4.40

BoTTom |    Changer de couleur
                    AS/400 Serveur HTTP
                    -------------------
 
  Il s'agit d'un job dans le sous système QHTTPSVR
    il est à l'écoute sur le port 80
 
 
  EN V510, deux serveurs sont disponibles
 
     A/ IBM HTTP serveur (Original), disponible depuiis la V3R70
        (sa configuration est stockée dans un membre de QUSRSYS/QATMHTTPC)
 
     B/ IBM HTTP Serveur (Powered by Apache), disponile depuis la V4R50
        (sa configuration est stockée dans un répertoire IFS [/www].)
 
 Deux commandes : 
 
  - CHGHTTPA permet la configuration du nombre de jobs démarrés et des
      paramètres liés à la langue (NLS)
 
  - WRKHTTPCFG permet le paramétrage du serveur HTTP (Original uniquement)
      par le biais de "directives".


|    Changer de couleur
      Rappel des directives reconnues par le serveur WEB en V3R70.
      ------------------------------------------------------------
 
 pass 
 
    -autorise une partie de l'arborescence IFS
 
       pass /QDLS/DOCUMENTS/*
 
        autorise le serveur HTTP à utiliser la branche /QDLS/DOCUMENTS.
 
     peut être utilisée sous la forme pass /img/* /images/*
 
        autorise alors /img tout en le remplacant par /images
 map 
 
     remplace un nom par un autre et continue la lecture des directives.
 
       map /image/* /QDLS/DOCUMENTS/IMAGE/*
 
 indique que l'URL  http://www.as400.com/image/photo.gif
 doit être traitée  http://www.as400.com/QDLS/DOCUMENTS/IMAGE/photo.gif.


|    Changer de couleur
 
 redirect 
 
    même syntaxe que pass, mais la substitution renvoie sur un autre serveur.
 
 fail 
 
     interdit un ou plusieurs documents ou répertoires :
 
       fail /QDLS/DOCUMENTS/IMAGE/MOI.GIF
 
 
il faut bien voir que le serveur lit vos directives dans l'ordre de saisie
 
ainsi :
 
         pass QSYS.LIB/QGPL.LIB/QHTMLSRC.FILE/*
         pass QSYS.LIB/AF4SRC.LIB/*
         fail QSYS.LIB/*
 
 n'est pas contradictoire, cela interdit l'accès à QSYS.LIB sauf pour
       le fichier HTMLSRC dans QGPL et la bibliothèque AF4SRC.


|    Changer de couleur
 
 exec 
 
     autorise le serveur à utiliser des programmes CGI :
 
       exec /QSYS.LIB/MACGIBIB.LIB/*
 
 welcome 
 
    définition de la page d'acceuil
 
      welcome homepage.html
 
 la directive welcome est traitée à chaque fois que l'url indique un nom
     de répertoire: on cherche une page portant le nom indiqué par welcome.
 
 il peut donc y avoir plusieurs directives welcome, elles seront traitées
     en séquence et ce à chaque répertoire.
 
 Alwayswelcome  (on!off)
 
     affichage forcé de la page d'acceuil (voir diraccess)


|    Changer de couleur
 
 DirAccess 
     Définit la possibilité de lister le contenu d'un répertoire
 
      on        = oui             off       = non
      selective = uniquement s'il y a un document nommé "wwwbrws"
 
     On peut compléter en indiquant ce qui doit apparaitre sur la liste
 
      DirShowDate                       On
      DirShowSize                       On
      DirShowBytes                      On
      DirShowDescription                On
      DirShowOwner                      Off
      DirShowMaxDescrLength             25
      DirShowMinLength                  15
      DirShowMaxLength                  25
 
 DirReadme top | Bot | off
 
      indique si l'on doit chercher un fichier appellé "README". Si oui,
       (et qu'il existe) son contenu précede chaque liste de répertoire.


|    Changer de couleur
 
 logformat common | DDS indique si les logs sont faites dans un fichier
                        srteam ou dans un fichier PF.
 
 accesslog 
     définition d'un fichier qui historise tous les accès
 
 
 errorlog 
     définition d'un fichier qui historise les erreurs
 
 
 HostName nom
 
     définition du nom du serveur
 
 
 DNSlookup on | off
 
     indique si le serveur doit faire une recherche DNS inverse afin de
      recherche le nom du client à partir de son adresse IP.
 


|    Changer de couleur
 
La version 4 ammène la notion de protection par mot de passe
 
 
           ==>  nouvelles directives et un nouvel objet :
 
                  *VLDL permettant de stocker une liste d'utilisateurs
                         autorisés ainsi qu'une clé associée (mot de passe)
 
                   il ne s'agit PAS d'utilisateurs au sens OS/400 mais
                     plutôt d'utilisateurs Internet.
 
 
 
 dans les directives HTTP nous allons pouvoir décrire une directive
  "protection"  que vous devez assimiler à une règle.
 
 ici mesdocuments-sec est le nom de la directive de protection
     (comme on écrirait un nom de sous programme)
 
 puis on associe cette directive à un ou plusieurs répertoires
 


|    Changer de couleur
 
 Protection    mesdocuments-sec {
  ServerID     s44r7480
  PasswdFile    qgpl/motdepas
  AuthType     Basic
  Mask         All@*
  Userid       webdoc
 }
 
 .../...
 
 Protect       /mesdocuments/*     mesdocuments-sec
 pass          /mesdocuments/*     /html/doc/*
 
 
 on peut aussi saisir en ligne :
 
 Protect       /mesdocuments/*     {
                                     ServerID     s44r7480
                                     PasswFile    qgpl/motdepas
                                     ...
                                   }


|    Changer de couleur
 
 
 ServerID  :   nom du serveur dans la fenêtre d'authentification
 
 passwdFile :  %%SYSTEM%% indique qu'on doit saisir un profil OS/400
 
               un-nom fait référence à un objet *VLDL,
 
               il existe deux cdes CRTVLDL et DLTVLDL, plus des APIs.
 
                une liste de validation contient une série de noms
                 avec un mot de passe associé, encrypté.
 
 
 
 AuthType  :    pour l'instant Basic est la seule valeur admise
 
 
 Mask      :    à gauche du @, on indique All ou un groupe d'utilisateurs
 
                à droite, * ou une série d'adresses IP.
 


|    Changer de couleur
 
 
 UserID    :    indique sous quel profil OS/400 le job va s'exécuter.
 
                un nom = nom du profil OS/400
 
                %%SYSTEM%% = le profil par défaut du serveur (QTMHHTTP)
 
                %%CLIENT%% = le profil saisie dans la fenêtre
                              d'authentification.
 
 
 
  ..................................................................
  :                                                                :
  :  V4R20 et suivantes :                                          :
  :                                                                :
  :    la création et la maintenance des listes de validation      :
  :     (et donc des "utilisateurs internet") se fait via          :
  :     l'administration graphique. [voir plus loin]               :
  :................................................................:
 


|    Changer de couleur
 
exemple réel :
 
    Protection  acluser  {
        PasswdFile   %%SYSTEM%%
        ACLOverride  Off
        Mask         ALL@10.3.*.*
        AuthType     BASIC
        ServerID     ACLUSER
        UserID       %%CLIENT%%
    }
  Protect  /html/ACL/acl_user/*  acluser
 
 
  ici il faut saisir un profil système QSECOFR, QPGMR ou un profil "maison"
   avec le mot de passe associé pour avoir accès au répertoire :
 
        /html/ACL/acl_user
 
 
  le profil de référence (au niveau du JOB 400) sera le profil saisi.
 


|    Changer de couleur
 
    Protection  aclvldl  {
          PasswdFile   QSYS/ACL
          ACLOverride  Off
          Mask         ALL@10.3.*.*
          AuthType     BASIC
          ServerID     ACLVLDL
          UserID       QUSER
    }
  Protect  /html/ACL/acl_vldl/*  aclvldl
 
  on a créé une liste de validation par CRTVLDL VLDL(QSYS/ACL)
  puis à l'aide de l'API  QSYADVLE  on a ajouté - clé: user1, donnée: pwd1
                                                - clé: user2, donnée: pwd2
 
  ici il faut saisir user1 ou user2 avec le mot de passe associé
   pour avoir accès au répertoire :
                                   /html/ACL/acl_vldl
 
  le profil de référence sera QUSER (attention il faut le droit *USE sur
  QUSER pour pouvoir démarrer le serveur HTTP)
 


|    Changer de couleur
 
 Exemple avec un groupe d'utilisateurs :
 
 il faut créer un fichier des groupes (ASCII dans IFS)
 
       ..............................  
       :  grp1 : user1,user2,user3  :  
       :  grp2 : user4,user5,user6  :  
       :............................:  
 
 puis on associe par :
 
 Protection    mesdocuments-sec {
  ServerID     s44r7480
  PasswdFile    qgpl/motdepas
  GroupFile    /web/grp/ficgroupe.GRP
  AuthType     Basic
  Userid       qpgmr
 }
 .../...
 Protect       /mesdocuments/*     mesdocuments-sec
 pass          /mesdocuments/*     /html/doc/*


|    Changer de couleur
 
 ensuite, dans chaque répertoire à protéger plus finement, il faut créer
  un fichier nommé www_acl :
 
 il contient la liste des utilisateurs ou des groupes autorisés
  à ce répertoire :
 
 
 * : GET,POST : grp1  
 
 ^
 !--indique l'adresse IP d'origine (* = pas de restriction)
 
 
    GET, POST précise la méthode autorisée (vous pouvez indiquer les deux)
 
    grp1 liste les utilisateurs OU les groupes autorisés à ce répertoire
 
 
si l'authentification d'origine à été réalisée avec un des profils de grp1 
 la page est affichée, sinon l'utilisateur est invité à se ressigner.
 


|    Changer de couleur
 
les versions suivantes ammènent la notion d'instances
 
 on peut "lancer" plusieurs versions du serveur WEB
                                                                            .
    une instance c'est un membre dans le fichier QATMHINSTC
    portant le nom du serveur WEB et indiquant les paramètres,
     particulièrement les coordonnées du fichier de config :
 
    -r /QSYS.LIB/QUSRSYS.LIB/QATMHTTPC.FILE/VOLUBIS.MBR
 
 une instance doit être unique sur le couple adresse-ip/port 
 
 
 plusieurs instances peuvent avoir le même fichier de config.
 
 
   le fichier de config se gère par WRKHTTPCFG CFG(VOLUBIS)
 
 
 là aussi le plus simple est d'utiliser l'administration du serveur WEB
 


|    Changer de couleur
 
pour lancer plusieurs serveurs, il faut le faire :
 
 1/ sur plusieurs n° de port différents       [différentes instances]
 
    port 81
 
 
 2/ sur plusieurs adresses IP (multihoming)   [différentes instances]
 
    - soit par hostname et bindspecific
 
        hostname 192.168.1.1,  puis
 
        bindspecific on        qui indique qu'on ne sert que cette adresse
 
 
    - ou avec welcome                         [même instance]
 
        welcome home.html 192.168.1.1
        welcome index.htm 212.155.67.210
 


|    Changer de couleur
 
 3/ sur plusieurs noms différents (virtual host, depuis V4R40)
                                                     [même instance]
    - les directives supportant cette notion sont
 
        map                      map     /*  /dir1/*   www.volubis.fr
   et
        welcome                  welcome index.htm     www.volubis.fr
 
 4/ vous pouvez depuis la V4R40, héberger facilement des pages, par :
 
        userdir directory
 
    si vous recevez comme URL   http://www.societe.fr/~toto
 
       et que le profil toto existe, le serveur va rechercher le répertoire
       par défaut de cet utilisateur (paramètre homedir), ajouter le
       répertoire indiqué par userdir et retourner la page "welcome".
 
   soit le profil "client" ayant HOMEDIR('/home/client')
        et la directive    userdir WWW
   ==> la page d'acceuil sera recherchée dans /home/client/WWW


|    Changer de couleur
 
 la version 4.30 apporte aussi la possibilité d'associer des icones
    aux types de fichier lors des listes de répertoire (diraccess)
 
 # >>> V4R30 : Icones associées aux fichiers
 #             définition (et autorisation) du répertorie
 #
 pass /QIBM/HTTPSVR/Icons/* /QIBM/ProdData/HTTP/Protect/   >
 Iconpath /QIBM/HTTPSVR/Icons/
 
 # 1/ associations
 #    type de fichier <-> icone
 #
 AddIcon text.gif    text    text/*
 AddIcon html.gif    html    text/html
 AddIcon binary.gif  bin     application/*
 AddIcon compress.giz z      application/x-compress
 AddIcon compress.giz gzip   application/x-gzip
 AddIcon image.gif    img    image/*
 AddIcon movie.gif    vid    video/*
 AddIcon sound.gif    au     audio/*
 


|    Changer de couleur
 
 # 2/ définition des types de fichiers (MIME)
 #    fonction de l'extension
 #
 AddType .java text/plain binary 1.0
 AddType .html text/html 8bit    1.0
 AddType .htm  text/html 8bit    1.0
 AddType .gif  image/gif binary
 
 
 vous pouvez préciser les codes page (CCSID)
 
 
 DefaultNetCcsid 00850  : code page des données venant du réseau
 DefaultFsCcsid  00297  : code page par défaut des fichiers (html et texte)
 
 
 ET ENFIN, l'administration du serveur à l'aide d'un explorateur
 
    vous devez démarrer la fonction administration par :
 
               STRTCPSVR *HTTP HTTPSVR(*ADMIN)


|    Changer de couleur
 
 cela démarre en fait un instance sur le port 2001.
 
  vous pouvez donc accèder à ce serveur par http://adresse-ip:2001
 
 
le serveur vous demande alors de vous signer
 
   puis vous avez le choix entre :
 
 
        - IBM http server for AS/400
 
        - gestionnaire de certificats numériques
 
 gestionnaire de certificats numérique représente le produit
 
 "cryptographic access provider" (5769ss1 option 35)
 
 
 il faut choisir la première option.
 


|    Changer de couleur
 
 
 la page html est affichée, il s'agit d' un système à base de frames
 (cadres) et vous devez choisir dans le cadre de gauche
 
 
 "configuration et administration"
 
 
 pour gagner du temps vous pouvez mémoriser l'url suivante :
 
 
 http://votre-adresse:2001/QIBM/HTTPSVR/Admin/qzhamain.ndm/mainpage
 
 nous voici enfin sur la page d'administration:
 
 
- le cadre de gauche constitue le menu de navigation
 
- le cadre de droite, la page de travail.
 
 









©AF400